mirror of
https://github.com/crazywhalecc/static-php-cli.git
synced 2026-07-02 22:35:43 +08:00
Compare commits
20 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3f3767e4a4 | ||
|
|
fe2bc9e4e1 | ||
|
|
161a3924d2 | ||
|
|
7b6fae6d92 | ||
|
|
d0a66ab16b | ||
|
|
744e066d5f | ||
|
|
e850df505c | ||
|
|
918223e7da | ||
|
|
1552d992df | ||
|
|
f0a895691b | ||
|
|
1f7c805da4 | ||
|
|
1ad33556e9 | ||
|
|
6b5e83b98e | ||
|
|
6fb9c2df3b | ||
|
|
1b29803ed2 | ||
|
|
3477857584 | ||
|
|
0ce2c894e9 | ||
|
|
92470a35da | ||
|
|
6447fec028 | ||
|
|
0bc143cac3 |
@@ -68,7 +68,7 @@
|
||||
"libcurl.a"
|
||||
],
|
||||
"static-libs-windows": [
|
||||
"libcurl.lib"
|
||||
"libcurl_a.lib"
|
||||
],
|
||||
"headers": [
|
||||
"curl"
|
||||
@@ -78,7 +78,6 @@
|
||||
"zlib"
|
||||
],
|
||||
"lib-depends-windows": [
|
||||
"openssl",
|
||||
"zlib",
|
||||
"libssh2",
|
||||
"nghttp2"
|
||||
@@ -589,6 +588,12 @@
|
||||
"openssl"
|
||||
]
|
||||
},
|
||||
"mimalloc": {
|
||||
"source": "mimalloc",
|
||||
"static-libs-unix": [
|
||||
"mimalloc.o"
|
||||
]
|
||||
},
|
||||
"ncurses": {
|
||||
"source": "ncurses",
|
||||
"static-libs-unix": [
|
||||
|
||||
@@ -636,6 +636,16 @@
|
||||
"path": "LICENSE"
|
||||
}
|
||||
},
|
||||
"mimalloc": {
|
||||
"type": "ghtagtar",
|
||||
"repo": "microsoft/mimalloc",
|
||||
"match": "v2.+",
|
||||
"provide-pre-built": false,
|
||||
"license": {
|
||||
"type": "file",
|
||||
"path": "LICENSE"
|
||||
}
|
||||
},
|
||||
"mongodb": {
|
||||
"type": "ghrel",
|
||||
"repo": "mongodb/mongo-php-driver",
|
||||
|
||||
@@ -76,8 +76,7 @@ and this extension cannot be compiled into php by static linking, so it cannot b
|
||||
|
||||
## xdebug
|
||||
|
||||
1. Xdebug is a Zend extension. The functions of Xdebug depend on PHP's Zend engine and underlying code.
|
||||
If you want to statically compile it into PHP, you may need a huge amount of patch code, which is not feasible.
|
||||
1. Xdebug is only buildable as a shared extension. On Linux, you need to use static-php-cli with SPC_LIBC=glibc and then compile php-xdebug from source with the option `--with-php-config=/path/to/buildroot/bin/php-config`.
|
||||
2. The macOS platform can compile an xdebug extension under PHP compiled on the same platform,
|
||||
extract the `xdebug.so` file, and then use the `--no-strip` parameter in static-php-cli to retain the debug symbol table and add the `ffi` extension.
|
||||
The compiled `./php` binary can be configured and run by specifying the INI, eg `./php -d 'zend_extension=/path/to/xdebug.so' your-code.php`.
|
||||
@@ -149,3 +148,9 @@ Parallel is only supported on PHP 8.0 ZTS and above.
|
||||
|
||||
1. The [SPX extension](https://github.com/NoiseByNorthwest/php-spx) only supports NTS mode.
|
||||
2. SPX does not support Windows, and the official repository does not support static compilation. static-php-cli uses a [modified version](https://github.com/static-php/php-spx).
|
||||
|
||||
## mimalloc
|
||||
|
||||
1. This is not technically an extension, but a library.
|
||||
2. Building with `--with-libs="mimalloc"` on Linux or macOS will override the default allocator.
|
||||
3. This is experimental for now, but is recommended in threaded environments.
|
||||
@@ -70,7 +70,7 @@ bin/spc build gd --with-libs=freetype,libjpeg,libavif,libwebp --build-cli
|
||||
|
||||
## xdebug
|
||||
|
||||
1. Xdebug 是一个 Zend 扩展,Xdebug 的功能依赖于 PHP 的 Zend 引擎和底层代码,如果要将其静态编译到 PHP 中,可能需要巨量的 patch 代码,这是不可行的。
|
||||
1. Xdebug 只能作为共享扩展构建。在 Linux 上,您需要使用带有 `SPC_LIBC=glibc` 的 static-php-cli,然后使用选项 `--with-php-config=/path/to/buildroot/bin/php-config` 从源代码编译 php-xdebug。
|
||||
2. macOS 平台可以通过在相同平台编译的 PHP 下编译一个 xdebug 扩展,并提取其中的 `xdebug.so` 文件,再在 static-php-cli 中使用 `--no-strip` 参数保留调试符号表,同时加入 `ffi` 扩展。
|
||||
编译的 `./php` 二进制可以通过指定 INI 配置并运行,例如`./php -d 'zend_extension=xdebug.so' your-code.php`。
|
||||
|
||||
@@ -136,3 +136,9 @@ parallel 扩展只支持 PHP 8.0 及以上版本,并只支持 ZTS 构建(`--
|
||||
|
||||
1. [SPX 扩展](https://github.com/NoiseByNorthwest/php-spx) 只支持非线程模式。
|
||||
2. SPX 目前不支持 Windows,且官方仓库也不支持静态编译,static-php-cli 使用了 [修改版本](https://github.com/static-php/php-spx)。
|
||||
|
||||
## mimalloc
|
||||
|
||||
1. 从技术上讲,这不是扩展,而是一个库。
|
||||
2. 在 Linux 或 macOS 上使用 `--with-libs="mimalloc"` 进行构建将覆盖默认分配器。
|
||||
3. 目前,这还处于实验阶段,但建议在线程环境中使用。
|
||||
@@ -32,7 +32,7 @@ use Symfony\Component\Console\Application;
|
||||
*/
|
||||
final class ConsoleApplication extends Application
|
||||
{
|
||||
public const VERSION = '2.5.0';
|
||||
public const VERSION = '2.5.1';
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
|
||||
@@ -150,12 +150,13 @@ class LinuxBuilder extends UnixBuilderBase
|
||||
$enable_micro = ($build_target & BUILD_TARGET_MICRO) === BUILD_TARGET_MICRO;
|
||||
$enable_embed = ($build_target & BUILD_TARGET_EMBED) === BUILD_TARGET_EMBED;
|
||||
|
||||
$mimallocLibs = $this->getLib('mimalloc') !== null ? BUILD_LIB_PATH . '/mimalloc.o ' : '';
|
||||
// prepare build php envs
|
||||
$envs_build_php = SystemUtil::makeEnvVarString([
|
||||
'CFLAGS' => getenv('SPC_CMD_VAR_PHP_CONFIGURE_CFLAGS'),
|
||||
'CPPFLAGS' => getenv('SPC_CMD_VAR_PHP_CONFIGURE_CPPFLAGS'),
|
||||
'LDFLAGS' => getenv('SPC_CMD_VAR_PHP_CONFIGURE_LDFLAGS'),
|
||||
'LIBS' => getenv('SPC_CMD_VAR_PHP_CONFIGURE_LIBS'),
|
||||
'LIBS' => $mimallocLibs . getenv('SPC_CMD_VAR_PHP_CONFIGURE_LIBS'),
|
||||
]);
|
||||
|
||||
// process micro upx patch if micro sapi enabled
|
||||
@@ -310,7 +311,15 @@ class LinuxBuilder extends UnixBuilderBase
|
||||
shell()->cd(SOURCE_PATH . '/php-src')
|
||||
->exec('sed -i "s|//lib|/lib|g" Makefile')
|
||||
->exec(getenv('SPC_CMD_PREFIX_PHP_MAKE') . ' INSTALL_ROOT=' . BUILD_ROOT_PATH . " {$vars} install");
|
||||
FileSystem::replaceFileStr(BUILD_BIN_PATH . '/php-config', 'prefix=""', 'prefix="' . BUILD_ROOT_PATH . '"');
|
||||
FileSystem::replaceFileStr(BUILD_BIN_PATH . '/phpize', "prefix=''", "prefix='" . BUILD_ROOT_PATH . "'");
|
||||
FileSystem::replaceFileStr(BUILD_BIN_PATH . '/phpize', 's##', 's#/usr/local#');
|
||||
$php_config_str = FileSystem::readFile(BUILD_BIN_PATH . '/php-config');
|
||||
str_replace('prefix=""', 'prefix="' . BUILD_ROOT_PATH . '"', $php_config_str);
|
||||
// move mimalloc to the beginning of libs
|
||||
$php_config_str = preg_replace('/(libs=")(.*?)\s*(' . preg_quote(BUILD_LIB_PATH, '/') . '\/mimalloc\.o)\s*(.*?)"/', '$1$3 $2 $4"', $php_config_str);
|
||||
// move lstdc++ to the end of libs
|
||||
$php_config_str = preg_replace('/(libs=")(.*?)\s*(-lstdc\+\+)\s*(.*?)"/', '$1$2 $4 $3"', $php_config_str);
|
||||
FileSystem::writeFile(BUILD_BIN_PATH . '/php-config', $php_config_str);
|
||||
}
|
||||
|
||||
private function getMakeExtraVars(): array
|
||||
|
||||
12
src/SPC/builder/linux/library/mimalloc.php
Normal file
12
src/SPC/builder/linux/library/mimalloc.php
Normal file
@@ -0,0 +1,12 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace SPC\builder\linux\library;
|
||||
|
||||
class mimalloc extends LinuxLibraryBase
|
||||
{
|
||||
use \SPC\builder\unix\library\mimalloc;
|
||||
|
||||
public const NAME = 'mimalloc';
|
||||
}
|
||||
@@ -148,10 +148,12 @@ class MacOSBuilder extends UnixBuilderBase
|
||||
$enableEmbed = ($build_target & BUILD_TARGET_EMBED) === BUILD_TARGET_EMBED;
|
||||
|
||||
// prepare build php envs
|
||||
$mimallocLibs = $this->getLib('mimalloc') !== null ? BUILD_LIB_PATH . '/mimalloc.o ' : '';
|
||||
$envs_build_php = SystemUtil::makeEnvVarString([
|
||||
'CFLAGS' => getenv('SPC_CMD_VAR_PHP_CONFIGURE_CFLAGS'),
|
||||
'CPPFLAGS' => getenv('SPC_CMD_VAR_PHP_CONFIGURE_CPPFLAGS'),
|
||||
'LDFLAGS' => getenv('SPC_CMD_VAR_PHP_CONFIGURE_LDFLAGS'),
|
||||
'LIBS' => $mimallocLibs . getenv('SPC_CMD_VAR_PHP_CONFIGURE_LIBS'),
|
||||
]);
|
||||
|
||||
if ($this->getLib('postgresql')) {
|
||||
@@ -298,6 +300,13 @@ class MacOSBuilder extends UnixBuilderBase
|
||||
->exec('rm ' . BUILD_ROOT_PATH . '/lib/libphp.a')
|
||||
->exec('ar rcs ' . BUILD_ROOT_PATH . '/lib/libphp.a *.o')
|
||||
->exec('rm -Rf ' . BUILD_ROOT_PATH . '/lib/php-o');
|
||||
FileSystem::replaceFileStr(BUILD_BIN_PATH . '/phpize', "prefix=''", "prefix='" . BUILD_ROOT_PATH . "'");
|
||||
FileSystem::replaceFileStr(BUILD_BIN_PATH . '/phpize', 's##', 's#/usr/local#');
|
||||
$php_config_str = FileSystem::readFile(BUILD_BIN_PATH . '/php-config');
|
||||
str_replace('prefix=""', 'prefix="' . BUILD_ROOT_PATH . '"', $php_config_str);
|
||||
// move mimalloc to the beginning of libs
|
||||
$php_config_str = preg_replace('/(libs=")(.*?)\s*(' . preg_quote(BUILD_LIB_PATH, '/') . '\/mimalloc\.o)\s*(.*?)"/', '$1$3 $2 $4"', $php_config_str);
|
||||
FileSystem::writeFile(BUILD_BIN_PATH . '/php-config', $php_config_str);
|
||||
}
|
||||
|
||||
private function getMakeExtraVars(): array
|
||||
|
||||
12
src/SPC/builder/macos/library/mimalloc.php
Normal file
12
src/SPC/builder/macos/library/mimalloc.php
Normal file
@@ -0,0 +1,12 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace SPC\builder\macos\library;
|
||||
|
||||
class mimalloc extends MacOSLibraryBase
|
||||
{
|
||||
use \SPC\builder\unix\library\mimalloc;
|
||||
|
||||
public const NAME = 'mimalloc';
|
||||
}
|
||||
@@ -17,13 +17,17 @@ trait gettext
|
||||
$ldflags = $this->builder->getOption('enable-zts') ? '-lpthread' : '';
|
||||
|
||||
shell()->cd($this->source_dir)
|
||||
->setEnv(['CFLAGS' => "{$this->getLibExtraCFlags()} {$cflags}", 'LDFLAGS' => $this->getLibExtraLdFlags() ?: $ldflags, 'LIBS' => $this->getLibExtraLibs()])
|
||||
->setEnv([
|
||||
'CFLAGS' => "{$this->getLibExtraCFlags()} {$cflags}",
|
||||
'LDFLAGS' => $this->getLibExtraLdFlags() ?: $ldflags,
|
||||
'LIBS' => $this->getLibExtraLibs(),
|
||||
])
|
||||
->execWithEnv(
|
||||
'./configure ' .
|
||||
'--enable-static ' .
|
||||
'--disable-shared ' .
|
||||
'--disable-java ' .
|
||||
'--disable-c+ ' .
|
||||
'--disable-c++ ' .
|
||||
$zts .
|
||||
$extra .
|
||||
'--with-included-gettext ' .
|
||||
|
||||
38
src/SPC/builder/unix/library/mimalloc.php
Normal file
38
src/SPC/builder/unix/library/mimalloc.php
Normal file
@@ -0,0 +1,38 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace SPC\builder\unix\library;
|
||||
|
||||
use SPC\exception\FileSystemException;
|
||||
use SPC\exception\RuntimeException;
|
||||
use SPC\store\FileSystem;
|
||||
|
||||
trait mimalloc
|
||||
{
|
||||
/**
|
||||
* @throws RuntimeException
|
||||
* @throws FileSystemException
|
||||
*/
|
||||
protected function build(): void
|
||||
{
|
||||
$args = '';
|
||||
if (getenv('SPC_LIBC') === 'musl') {
|
||||
$args .= '-DMI_LIBC_MUSL=ON ';
|
||||
}
|
||||
$args .= '-DMI_BUILD_SHARED=OFF ';
|
||||
$args .= '-DMI_INSTALL_TOPLEVEL=ON ';
|
||||
FileSystem::resetDir($this->source_dir . '/build');
|
||||
shell()->cd($this->source_dir . '/build')
|
||||
->execWithEnv(
|
||||
'cmake ' .
|
||||
'-DCMAKE_INSTALL_PREFIX=' . BUILD_ROOT_PATH . ' ' .
|
||||
"-DCMAKE_TOOLCHAIN_FILE={$this->builder->cmake_toolchain_file} " .
|
||||
'-DCMAKE_BUILD_TYPE=Release ' .
|
||||
$args .
|
||||
'..'
|
||||
)
|
||||
->execWithEnv("make -j{$this->builder->concurrency}")
|
||||
->execWithEnv('make install');
|
||||
}
|
||||
}
|
||||
@@ -95,8 +95,9 @@ class WindowsBuilder extends BuilderBase
|
||||
|
||||
if (($logo = $this->getOption('with-micro-logo')) !== null) {
|
||||
// realpath
|
||||
$logo = realpath($logo);
|
||||
// $logo = realpath($logo);
|
||||
$micro_logo = '--enable-micro-logo=' . $logo . ' ';
|
||||
copy($logo, SOURCE_PATH . '\php-src\\' . $logo);
|
||||
} else {
|
||||
$micro_logo = '';
|
||||
}
|
||||
|
||||
@@ -37,6 +37,8 @@ class curl extends WindowsLibraryBase
|
||||
'-DBUILD_EXAMPLES=OFF ' . // disable examples
|
||||
'-DUSE_LIBIDN2=OFF ' . // disable libidn2
|
||||
'-DCURL_USE_LIBPSL=OFF ' . // disable libpsl
|
||||
'-DCURL_USE_SCHANNEL=ON ' . // use Schannel instead of OpenSSL
|
||||
'-DCURL_USE_OPENSSL=OFF ' . // disable openssl due to certificate issue
|
||||
'-DCURL_ENABLE_SSL=ON ' .
|
||||
'-DUSE_NGHTTP2=ON ' . // enable nghttp2
|
||||
'-DCURL_USE_LIBSSH2=ON ' . // enable libssh2
|
||||
@@ -48,5 +50,7 @@ class curl extends WindowsLibraryBase
|
||||
$this->builder->makeSimpleWrapper('cmake'),
|
||||
"--build cmakebuild --config Release --target install -j{$this->builder->concurrency}"
|
||||
);
|
||||
// move libcurl.lib to libcurl_a.lib
|
||||
rename(BUILD_LIB_PATH . '\libcurl.lib', BUILD_LIB_PATH . '\libcurl_a.lib');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -69,14 +69,19 @@ class Downloader
|
||||
retry: self::getRetryTime()
|
||||
), true);
|
||||
|
||||
if (($source['prefer-stable'] ?? false) === false) {
|
||||
$url = $data[0]['tarball_url'];
|
||||
} else {
|
||||
$id = 0;
|
||||
while ($data[$id]['prerelease'] === true) {
|
||||
++$id;
|
||||
$url = null;
|
||||
for ($i = 0; $i < count($data); ++$i) {
|
||||
if (($data[$i]['prerelease'] ?? false) === true && ($source['prefer-stable'] ?? false)) {
|
||||
continue;
|
||||
}
|
||||
if (!($source['match'] ?? null)) {
|
||||
$url = $data[$i]['tarball_url'] ?? null;
|
||||
break;
|
||||
}
|
||||
if (preg_match('|' . $source['match'] . '|', $data[$i]['tarball_url'])) {
|
||||
$url = $data[$i]['tarball_url'];
|
||||
break;
|
||||
}
|
||||
$url = $data[$id]['tarball_url'] ?? null;
|
||||
}
|
||||
if (!$url) {
|
||||
throw new DownloaderException("failed to find {$name} source");
|
||||
|
||||
@@ -42,6 +42,10 @@ class SPCConfigUtil
|
||||
if ($this->builder->hasCpp()) {
|
||||
$libs .= $this->builder instanceof MacOSBuilder ? ' -lc++' : ' -lstdc++';
|
||||
}
|
||||
// mimalloc must come first
|
||||
if (str_contains($libs, BUILD_LIB_PATH . '/mimalloc.o')) {
|
||||
$libs = BUILD_LIB_PATH . '/mimalloc.o ' . str_replace(BUILD_LIB_PATH . '/mimalloc.o', '', $libs);
|
||||
}
|
||||
return [
|
||||
'cflags' => $cflags,
|
||||
'ldflags' => $ldflags,
|
||||
|
||||
@@ -3,3 +3,16 @@
|
||||
declare(strict_types=1);
|
||||
|
||||
assert(function_exists('curl_init'));
|
||||
assert(function_exists('curl_setopt'));
|
||||
assert(function_exists('curl_exec'));
|
||||
assert(function_exists('curl_close'));
|
||||
$curl_version = curl_version();
|
||||
if (stripos($curl_version['ssl_version'], 'schannel') !== false) {
|
||||
$curl = curl_init();
|
||||
curl_setopt($curl, CURLOPT_URL, 'https://example.com/');
|
||||
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
|
||||
curl_setopt($curl, CURLOPT_HEADER, 0);
|
||||
$data = curl_exec($curl);
|
||||
curl_close($curl);
|
||||
assert($data !== false);
|
||||
}
|
||||
|
||||
@@ -6,25 +6,25 @@ declare(strict_types=1);
|
||||
|
||||
/**
|
||||
* This is GitHub Actions automatic test extension args generator.
|
||||
* You can edit $extensions, $with_libs and $base_combination.
|
||||
* You can edit $test_php_version, $test_os, $zts, $no_strip, $upx, $prefer_pre_built, $extensions, $with_libs and $base_combination.
|
||||
*/
|
||||
|
||||
// --------------------------------- edit area ---------------------------------
|
||||
|
||||
// test php version
|
||||
// test php version (8.1 ~ 8.4 available, multiple for matrix)
|
||||
$test_php_version = [
|
||||
// '8.1',
|
||||
// '8.2',
|
||||
'8.1',
|
||||
'8.2',
|
||||
'8.3',
|
||||
'8.4',
|
||||
];
|
||||
|
||||
// test os (macos-13, macos-14, ubuntu-latest, windows-latest are available)
|
||||
$test_os = [
|
||||
'macos-13',
|
||||
'macos-14',
|
||||
// 'macos-13',
|
||||
// 'macos-14',
|
||||
'ubuntu-latest',
|
||||
// 'windows-latest',
|
||||
'windows-latest',
|
||||
];
|
||||
|
||||
// whether enable thread safe
|
||||
@@ -40,13 +40,13 @@ $prefer_pre_built = false;
|
||||
|
||||
// If you want to test your added extensions and libs, add below (comma separated, example `bcmath,openssl`).
|
||||
$extensions = match (PHP_OS_FAMILY) {
|
||||
'Linux', 'Darwin' => 'gd',
|
||||
'Windows' => 'bcmath',
|
||||
'Linux', 'Darwin' => '',
|
||||
'Windows' => 'mbstring,tokenizer,phar,curl,openssl',
|
||||
};
|
||||
|
||||
// If you want to test lib-suggests feature with extension, add them below (comma separated, example `libwebp,libavif`).
|
||||
$with_libs = match (PHP_OS_FAMILY) {
|
||||
'Linux', 'Darwin' => 'freetype',
|
||||
'Linux', 'Darwin' => '',
|
||||
'Windows' => '',
|
||||
};
|
||||
|
||||
|
||||
14
vcpkg-configuration.json
Normal file
14
vcpkg-configuration.json
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"default-registry": {
|
||||
"kind": "git",
|
||||
"baseline": "a76b33254af4092ff45f08ec5adcd9fd06468b43",
|
||||
"repository": "https://github.com/microsoft/vcpkg"
|
||||
},
|
||||
"registries": [
|
||||
{
|
||||
"kind": "artifact",
|
||||
"location": "https://github.com/microsoft/vcpkg-ce-catalog/archive/refs/heads/main.zip",
|
||||
"name": "microsoft"
|
||||
}
|
||||
]
|
||||
}
|
||||
7
vcpkg-triplets/x64-linux-glibc-toolchain.cmake
Normal file
7
vcpkg-triplets/x64-linux-glibc-toolchain.cmake
Normal file
@@ -0,0 +1,7 @@
|
||||
set(CMAKE_C_COMPILER /usr/bin/gcc)
|
||||
set(CMAKE_CXX_COMPILER /usr/bin/g++)
|
||||
set(CMAKE_AR /usr/bin/ar)
|
||||
set(CMAKE_LINKER /usr/bin/ld.gold)
|
||||
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
|
||||
set(ENV{CFLAGS} "-fPIC -fPIE")
|
||||
set(ENV{CXXFLAGS} "-fPIC -fPIE")
|
||||
17
vcpkg-triplets/x64-linux-glibc.cmake
Normal file
17
vcpkg-triplets/x64-linux-glibc.cmake
Normal file
@@ -0,0 +1,17 @@
|
||||
set(VCPKG_TARGET_ARCHITECTURE x64)
|
||||
set(VCPKG_CRT_LINKAGE static)
|
||||
set(VCPKG_LIBRARY_LINKAGE static)
|
||||
set(VCPKG_CMAKE_SYSTEM_NAME Linux)
|
||||
set(VCPKG_BUILD_TYPE release)
|
||||
|
||||
set(VCPKG_C_FLAGS "-fPIC -fPIE")
|
||||
set(VCPKG_CXX_FLAGS "-fPIC -fPIE")
|
||||
|
||||
set(VCPKG_CMAKE_CONFIGURE_OPTIONS
|
||||
-DBUILD_SHARED_LIBS=OFF
|
||||
-DWITH_EXAMPLES=OFF
|
||||
-DWITH_GDK_PIXBUF=OFF
|
||||
-DBUILD_TESTING=OFF
|
||||
)
|
||||
|
||||
set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${CMAKE_CURRENT_LIST_DIR}/x64-linux-glibc-toolchain.cmake")
|
||||
5
vcpkg-triplets/x64-linux-musl-toolchain.cmake
Normal file
5
vcpkg-triplets/x64-linux-musl-toolchain.cmake
Normal file
@@ -0,0 +1,5 @@
|
||||
set(CMAKE_C_COMPILER /usr/local/musl/bin/x86_64-linux-musl-gcc)
|
||||
set(CMAKE_CXX_COMPILER /usr/local/musl/bin/x86_64-linux-musl-g++)
|
||||
set(CMAKE_AR /usr/local/musl/bin/x86_64-linux-musl-ar)
|
||||
set(CMAKE_LINKER /usr/local/musl/bin/x86_64-linux-musl-ld.gold)
|
||||
set(CMAKE_CROSSCOMPILING TRUE)
|
||||
10
vcpkg-triplets/x64-linux-musl.cmake
Normal file
10
vcpkg-triplets/x64-linux-musl.cmake
Normal file
@@ -0,0 +1,10 @@
|
||||
set(VCPKG_TARGET_ARCHITECTURE x64)
|
||||
set(VCPKG_CRT_LINKAGE static)
|
||||
set(VCPKG_LIBRARY_LINKAGE static)
|
||||
set(VCPKG_CMAKE_SYSTEM_NAME Linux)
|
||||
set(VCPKG_BUILD_TYPE release)
|
||||
|
||||
set(VCPKG_C_FLAGS "-fPIC -fPIE -static")
|
||||
set(VCPKG_CXX_FLAGS "-fPIC -fPIE -static")
|
||||
|
||||
set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${CMAKE_CURRENT_LIST_DIR}/x64-linux-musl-toolchain.cmake")
|
||||
66
vcpkg.json
Normal file
66
vcpkg.json
Normal file
@@ -0,0 +1,66 @@
|
||||
{
|
||||
"dependencies": [
|
||||
"acl",
|
||||
"aom",
|
||||
"argon2",
|
||||
"brotli",
|
||||
"bzip2",
|
||||
"c-ares",
|
||||
"curl",
|
||||
"freetype",
|
||||
"gettext",
|
||||
"gmp",
|
||||
"grpc",
|
||||
"icu",
|
||||
"libavif",
|
||||
"libde265",
|
||||
"libevent",
|
||||
"libffi",
|
||||
{
|
||||
"name": "libgd",
|
||||
"features": [
|
||||
"fontconfig",
|
||||
"freetype",
|
||||
"jpeg",
|
||||
"png",
|
||||
"tiff",
|
||||
"webp"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "libheif",
|
||||
"features": [
|
||||
"aom",
|
||||
"jpeg",
|
||||
"hevc"
|
||||
]
|
||||
},
|
||||
"libiconv",
|
||||
"libpng",
|
||||
"librabbitmq",
|
||||
"librdkafka",
|
||||
"libsodium",
|
||||
"libssh2",
|
||||
"libuuid",
|
||||
"libuv",
|
||||
"libwebp",
|
||||
"libxml2",
|
||||
"libxslt",
|
||||
"libyaml",
|
||||
"libzip",
|
||||
"lz4",
|
||||
"mimalloc",
|
||||
"ncurses",
|
||||
"nghttp2",
|
||||
"nghttp3",
|
||||
"openldap",
|
||||
"pkgconf",
|
||||
"readline",
|
||||
"snappy",
|
||||
"sqlite3",
|
||||
"tidy-html5",
|
||||
"tiff",
|
||||
"zlib",
|
||||
"zstd"
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user