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++
.
- Most dependencies can be installed using Homebrew
- You will additionally need
glibtool
(GNU libtool, xcode libtool won't work) - You also MUST specify target as
mac
ormac64
if building for Mac, on Mac.
- Only aarch64 targets are supported for Android cross-compile.
- The
aarch64-linux-musl
(for ARMv8) orarm-linux-musleabi
(for ARMv7) 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) - Android cross-compile binaries MUST be compiled statically (using
-s
) or the binary will not work correctly. - It is strongly recommended that you enable abusive optimizations for Android targets (
-f
flag) for best performance.
Script flags | Description |
---|---|
-c | Will force compile cURL |
-d | Will compile with debug and the xdebug PHP extension |
-f | Enabling abusive optimizations... |
-g | Will compile GD2 |
-j | Set make threads to # |
-l | Will compile with LevelDB support (experimental with PHP7) |
-s | Will compile everything statically |
-t | Set target |
-u | Will compile PocketMine-ChunkUtils C extension (recommended if using PC Anvil worlds) |
-x | Specifies we are doing cross-compile |
Target | Arguments |
---|---|
linux64 | -t linux64 -l -j4 -c -f x86_64 |
mac64 | -t mac64 -l -j4 -c -f |
android-aarch64 | -t android-aarch64 -x -s -j4 -f |
android-armv7 | -t android-armv7 -x -s -j4 -f |
- If used, the
-t
option (target) MUST be specified BEFORE the-f
option (optimizations) - 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.
Api for getting last links to download PHP binaries