You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Bash script used to compile PHP on MacOS and Linux platforms. Make sure you have make autoconf automake libtool m4 wget getconf gzip bzip2 bison g++ git cmake pkg-config re2c ca-certificates.
Recommendations
If you're going to use the compiled binary only on the machine you're build it on, remove the -t option for best performance - this will allow the script to optimize for the current machine rather than a generic one.
ext-gd2 is NOT included unless the -g flag is provided, as PocketMine-MP doesn't need it. However, if your plugins need it, don't forget to enable it using -g.
The -c and -l options can be used to specify cache folders to speed up recompiling if you're recompiling many times (e.g. to improve the script).
Common pitfalls
Avoid using the script in directory trees containing spaces. Some libraries don't like trying to be built in directory trees containing spaces, e.g. /home/user/my folder/pocketmine-mp/ might experience problems.
Avoid directory trees containing special (non-English) symbols. For example, Développement might cause issues.
Additional notes
Mac OSX (native compile)
Most dependencies can be installed using Homebrew
You will additionally need glibtool (GNU libtool, xcode libtool won't work)
Android 64-bit (cross-compile)
Only aarch64 targets are supported for Android cross-compile.
The aarch64-linux-musl toolchain is required. You can compile and install it using https://github.com/pmmp/musl-cross-make (PMMP fork includes musl-libc patches for DNS resolver config path and increasing stack size limit for LevelDB)
Script flags
Description
-c
Uses the folder specified for caching downloaded tarballs, zipballs etc.
-d
Compiles with debugging symbols and disables optimizations (slow, but useful for debugging segfaults)
-D
Compiles with separated debugging symbols, but leaves optimizations enabled (used for distributed binaries)
-g
Will compile GD2
-j
Set make threads to #
-l
Uses the folder specified for caching compilation artifacts (useful for rapid rebuild and testing)
-n
Don't remove sources after completing compilation
-s
Will compile everything statically
-t
Set target
-v
Enable Valgrind support in PHP
-x
Specifies we are doing cross-compile
-P
Set target to the specified major PocketMine-MP version specified (currently only 5 is supported)
-z
PHP version to build, e.g 8.2 (optional, if not specified, will be auto-selected by PM version)
Example:
Target
Arguments
linux64
-t linux64 -j4 -P5
linux64, PM4
-t linux64 -j4 -P4
mac64
-t mac-x86-64 -j4 -P5
android-aarch64
-t android-aarch64 -x -j4 -P5
windows-compile-vs.ps1
Uses Visual Studio toolsets to compile PHP binaries on Windows.
You need to install git, cmake and Visual Studio 2019 to use this script.
This script doesn't accept parameters, but the following environment variables are influential:
Variable
Description
PHP_DEBUG_BUILD
Disables optimisations and builds PHP with detailed debugging information (useful for debugging segfaults)
SOURCES_PATH
Where to put the downloaded sources for compilation
PM_VERSION_MAJOR
Major version of PocketMine-MP to build for (currently only 5 is supported)
PHP_VERSION_BASE
PHP version to build, e.g 8.2 (optional, if not specified, will be auto-selected by PM version)
PHP_JIT_SUPPORT
Whether to compile with OPcache JIT, set to 1 for yes