mirror of
https://github.com/crazywhalecc/static-php-cli.git
synced 2026-03-18 21:04:52 +08:00
174 lines
16 KiB
Markdown
174 lines
16 KiB
Markdown
|
|
---
|
||
|
|
aside: false
|
||
|
|
---
|
||
|
|
|
||
|
|
# Environment variables
|
||
|
|
|
||
|
|
All environment variables mentioned in the list on this page have default values unless otherwise noted.
|
||
|
|
You can override the default values by setting these environment variables.
|
||
|
|
|
||
|
|
Generally, you don't need to modify any of the following environment variables as they are already set to optimal values.
|
||
|
|
However, if you have special needs, you can set these environment variables to meet your needs
|
||
|
|
(for example, you need to debug PHP performance under different compilation parameters).
|
||
|
|
|
||
|
|
If you want to use custom environment variables, you can use the `export` command in the terminal or set the environment variables directly before the command, for example:
|
||
|
|
|
||
|
|
```shell
|
||
|
|
# export first
|
||
|
|
export SPC_CONCURRENCY=4
|
||
|
|
bin/spc build mbstring,pcntl --build-cli
|
||
|
|
|
||
|
|
# or direct use
|
||
|
|
SPC_CONCURRENCY=4 bin/spc build mbstring,pcntl --build-cli
|
||
|
|
```
|
||
|
|
|
||
|
|
## General environment variables
|
||
|
|
|
||
|
|
General environment variables can be used by all build targets.
|
||
|
|
|
||
|
|
| var name | default value | comment |
|
||
|
|
|------------------------------|---------------------------|-------------------------------------------------|
|
||
|
|
| `BUILD_ROOT_PATH` | `{pwd}/buildroot` | The root directory of the build target |
|
||
|
|
| `BUILD_LIB_PATH` | `{pwd}/buildroot/lib` | The root directory of compilation libraries |
|
||
|
|
| `BUILD_INCLUDE_PATH` | `{pwd}/buildroot/include` | Header file directory for compiling libraries |
|
||
|
|
| `BUILD_BIN_PATH` | `{pwd}/buildroot/bin` | Compiled binary file directory |
|
||
|
|
| `PKG_ROOT_PATH` | `{pwd}/pkgroot` | Directory where precompiled tools are installed |
|
||
|
|
| `SOURCE_PATH` | `{pwd}/source` | The source code extract directory |
|
||
|
|
| `DOWNLOAD_PATH` | `{pwd}/downloads` | Downloaded file directory |
|
||
|
|
| `SPC_CONCURRENCY` | Depends on CPU cores | Number of parallel compilations |
|
||
|
|
| `SPC_SKIP_PHP_VERSION_CHECK` | empty | Skip PHP version check when set to `yes` |
|
||
|
|
|
||
|
|
## OS specific variables
|
||
|
|
|
||
|
|
These environment variables are system-specific and will only take effect on a specific OS.
|
||
|
|
|
||
|
|
### Windows
|
||
|
|
|
||
|
|
| var name | default value | comment |
|
||
|
|
|----------------|------------------------------|---------------------------|
|
||
|
|
| `PHP_SDK_PATH` | `{pwd}\php-sdk-binary-tools` | PHP SDK tools path |
|
||
|
|
| `UPX_EXEC` | `$PKG_ROOT_PATH\bin\upx.exe` | UPX compression tool path |
|
||
|
|
|
||
|
|
### macOS
|
||
|
|
|
||
|
|
| var name | default value | comment |
|
||
|
|
|--------------------------------------|--------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------|
|
||
|
|
| `CC` | `clang` | C Compiler |
|
||
|
|
| `CXX` | `clang++` | C++ Compiler |
|
||
|
|
| `SPC_DEFAULT_C_FLAGS` | `--target=arm64-apple-darwin` or `--target=x86_64-apple-darwin` | Default C flags (not the same as `CFLAGS`) |
|
||
|
|
| `SPC_DEFAULT_CXX_FLAGS` | `--target=arm64-apple-darwin` or `--target=x86_64-apple-darwin` | Default C flags (not the same as `CPPFLAGS`) |
|
||
|
|
| `SPC_CMD_PREFIX_PHP_BUILDCONF` | `./buildconf --force` | PHP `buildconf` command prefix |
|
||
|
|
| `SPC_CMD_PREFIX_PHP_CONFIGURE` | `./configure --prefix= --with-valgrind=no --enable-shared=no --enable-static=yes --disable-all --disable-cgi --disable-phpdbg` | PHP `configure` command prefix |
|
||
|
|
| `SPC_CMD_PREFIX_PHP_MAKE` | `make -j$SPC_CONCURRENCY` | PHP `make` command prefix |
|
||
|
|
| `SPC_CMD_VAR_PHP_CONFIGURE_CFLAGS` | `$SPC_DEFAULT_C_FLAGS -Werror=unknown-warning-option` | `CFLAGS` variable of PHP `configure` command |
|
||
|
|
| `SPC_CMD_VAR_PHP_CONFIGURE_CPPFLAGS` | `-I$BUILD_INCLUDE_PATH` | `CPPFLAGS` variable of PHP `configure` command |
|
||
|
|
| `SPC_CMD_VAR_PHP_CONFIGURE_LDFLAGS` | `-L$BUILD_LIB_PATH` | `LDFLAGS` variable of PHP `configure` command |
|
||
|
|
| `SPC_CMD_VAR_PHP_MAKE_EXTRA_CFLAGS` | `-g0 -Os` or `-g -O0` (the latter when using `--no-strip`) | `EXTRA_CFLAGS` variable of PHP `make` command |
|
||
|
|
| `SPC_CMD_VAR_PHP_MAKE_EXTRA_LIBS` | `-lresolv` | Extra `EXTRA_LIBS` variables for PHP `make` command |
|
||
|
|
|
||
|
|
### Linux
|
||
|
|
|
||
|
|
| var name | default value | comment |
|
||
|
|
|----------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------|
|
||
|
|
| `UPX_EXEC` | `$PKG_ROOT_PATH/bin/upx` | UPX compression tool path |
|
||
|
|
| `GNU_ARCH` | `x86_64` or `aarch64` | CPU architecture |
|
||
|
|
| `CC` | Alpine: `gcc`, Other: `$GNU_ARCH-linux-musl-gcc` | C Compiler |
|
||
|
|
| `CXX` | Alpine: `g++`, Other: `$GNU_ARCH-linux-musl-g++` | C++ Compiler |
|
||
|
|
| `AR` | Alpine: `ar`, Other: `$GNU_ARCH-linux-musl-ar` | Static library tools |
|
||
|
|
| `LD` | `ld.gold` | Linker |
|
||
|
|
| `PATH` | `/usr/local/musl/bin:/usr/local/musl/$GNU_ARCH-linux-musl/bin:$PATH` | System PATH |
|
||
|
|
| `SPC_DEFAULT_C_FLAGS` | empty | Default C flags |
|
||
|
|
| `SPC_DEFAULT_CXX_FLAGS` | empty | Default C++ flags |
|
||
|
|
| `SPC_CMD_PREFIX_PHP_BUILDCONF` | `./buildconf --force` | PHP `buildconf` command prefix |
|
||
|
|
| `SPC_CMD_PREFIX_PHP_CONFIGURE` | `LD_LIBRARY_PATH={ld_lib_path} ./configure --prefix= --with-valgrind=no --enable-shared=no --enable-static=yes --disable-all --disable-cgi --disable-phpdbg` | PHP `configure` command prefix |
|
||
|
|
| `SPC_CMD_PREFIX_PHP_MAKE` | `make -j$SPC_CONCURRENCY` | PHP `make` command prefix |
|
||
|
|
| `SPC_CMD_VAR_PHP_CONFIGURE_CFLAGS` | `$SPC_DEFAULT_C_FLAGS` | `CFLAGS` variable of PHP `configure` command |
|
||
|
|
| `SPC_CMD_VAR_PHP_CONFIGURE_CPPFLAGS` | `-I$BUILD_INCLUDE_PATH` | `CPPFLAGS` variable of PHP `configure` command |
|
||
|
|
| `SPC_CMD_VAR_PHP_CONFIGURE_LDFLAGS` | `-L$BUILD_LIB_PATH` | `LDFLAGS` variable of PHP `configure` command |
|
||
|
|
| `SPC_CMD_VAR_PHP_CONFIGURE_LIBS` | `-ldl -lpthread` | `LIBS` variable of PHP `configure` command |
|
||
|
|
| `SPC_CMD_VAR_PHP_MAKE_EXTRA_CFLAGS` | `-g0 -Os -fno-ident -fPIE` or `-g -O0 -fno-ident -fPIE` (the latter when using `--no-strip`) | `EXTRA_CFLAGS` variable of PHP `make` command |
|
||
|
|
| `SPC_CMD_VAR_PHP_MAKE_EXTRA_LIBS` | empty | Extra `EXTRA_LIBS` variables for PHP `make` command |
|
||
|
|
| `SPC_CMD_VAR_PHP_MAKE_EXTRA_LDFLAGS_PROGRAM` | `-all-static` (when using `clang`: `-Xcompiler -fuse-ld=lld -all-static`) | Additional `LDFLAGS` variable for `make` command |
|
||
|
|
| `SPC_NO_MUSL_PATH` | empty | Whether to not insert the PATH of the musl toolchain (not inserted when the value is `yes`) |
|
||
|
|
> `{ld_lib_path}` value is `/usr/local/musl/$GNU_ARCH-linux-musl/lib`。
|
||
|
|
|
||
|
|
### FreeBSD
|
||
|
|
|
||
|
|
Due to the small number of users of the FreeBSD system, we do not provide environment variables for the FreeBSD system for the time being.
|
||
|
|
|
||
|
|
### Unix
|
||
|
|
|
||
|
|
For Unix systems such as macOS, Linux, FreeBSD, etc., the following environment variables are common.
|
||
|
|
|
||
|
|
| var name | default value | comment |
|
||
|
|
|-------------------|------------------------------|----------------------------|
|
||
|
|
| `PATH` | `$BUILD_BIN_PATH:$PATH` | System PATH |
|
||
|
|
| `PKG_CONFIG_PATH` | `$BUILD_LIB_PATH/pkgconfig` | pkg-config search path |
|
||
|
|
| `PKG_CONFIG` | `$BUILD_BIN_PATH/pkg-config` | pkg-config executable path |
|
||
|
|
|
||
|
|
## Library Environment variables (Unix only)
|
||
|
|
|
||
|
|
Starting from 2.2.0, static-php-cli supports custom environment variables for all compilation dependent library commands of macOS, Linux, FreeBSD and other Unix systems.
|
||
|
|
|
||
|
|
In this way, you can adjust the behavior of compiling dependent libraries through environment variables at any time.
|
||
|
|
For example, you can set the optimization parameters for compiling the xxx library through `xxx_CFLAGS=-O0`.
|
||
|
|
|
||
|
|
Of course, not every library supports the injection of environment variables.
|
||
|
|
We currently provide three wildcard environment variables with the suffixes:
|
||
|
|
|
||
|
|
- `_CFLAGS`: CFLAGS for the compiler
|
||
|
|
- `_LDFLAGS`: LDFLAGS for the linker
|
||
|
|
- `_LIBS`: LIBS for the linker
|
||
|
|
|
||
|
|
The prefix is the name of the dependent library, and the specific name of the library is subject to `lib.json`.
|
||
|
|
Among them, the library name with `-` needs to replace `-` with `_`.
|
||
|
|
|
||
|
|
Here is an example of an optimization option that replaces the openssl library compilation:
|
||
|
|
|
||
|
|
```shell
|
||
|
|
openssl_CFLAGS="-O0"
|
||
|
|
```
|
||
|
|
|
||
|
|
The library name uses the same name listed in `lib.json` and is case-sensitive.
|
||
|
|
|
||
|
|
::: tip
|
||
|
|
When no relevant environment variables are specified, except for the following variables, the remaining values are empty by default:
|
||
|
|
|
||
|
|
| var name | var default value |
|
||
|
|
|-----------------------|-------------------------------------------------------------------------------------------------|
|
||
|
|
| `pkg_config_CFLAGS` | macOS: `$SPC_DEFAULT_C_FLAGS -Wimplicit-function-declaration -Wno-int-conversion`, Other: empty |
|
||
|
|
| `pkg_config_LDFLAGS` | Linux: `--static`, Other: empty |
|
||
|
|
| `imagemagick_LDFLAGS` | Linux: `-static`, Other: empty |
|
||
|
|
| `imagemagick_LIBS` | macOS: `-liconv`, Other: empty |
|
||
|
|
| `ldap_LDFLAGS` | `-L$BUILD_LIB_PATH` |
|
||
|
|
| `openssl_CFLAGS` | Linux: `$SPC_DEFAULT_C_FLAGS`, Other: empty |
|
||
|
|
| others... | empty |
|
||
|
|
:::
|
||
|
|
|
||
|
|
The following table is a list of library names that support customizing the above three variables:
|
||
|
|
|
||
|
|
| lib name |
|
||
|
|
|-------------|
|
||
|
|
| brotli |
|
||
|
|
| bzip |
|
||
|
|
| curl |
|
||
|
|
| freetype |
|
||
|
|
| gettext |
|
||
|
|
| gmp |
|
||
|
|
| imagemagick |
|
||
|
|
| ldap |
|
||
|
|
| libargon2 |
|
||
|
|
| libavif |
|
||
|
|
| libcares |
|
||
|
|
| libevent |
|
||
|
|
| openssl |
|
||
|
|
|
||
|
|
::: tip
|
||
|
|
Because adapting custom environment variables to each library is a particularly tedious task,
|
||
|
|
and in most cases you do not need custom environment variables for these libraries,
|
||
|
|
so we currently only support custom environment variables for some libraries.
|
||
|
|
|
||
|
|
If the library you need to customize environment variables is not listed above,
|
||
|
|
you can submit your request through [GitHub Issue](https://github.com/crazywhalecc/static-php-cli/issues).
|
||
|
|
:::
|