mirror of
https://github.com/crazywhalecc/static-php-cli.git
synced 2026-07-11 10:55:35 +08:00
Compare commits
16 Commits
57b3db4814
...
2.2.0
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3fcb7ebf03 | ||
|
|
7416b8079b | ||
|
|
bde18054e5 | ||
|
|
954f8f4ddc | ||
|
|
0fee628842 | ||
|
|
69e6d82e83 | ||
|
|
e1e6270d86 | ||
|
|
30af182aff | ||
|
|
3ecc603770 | ||
|
|
15c2935d48 | ||
|
|
7a8e0a7e67 | ||
|
|
d98d6aeffb | ||
|
|
aaa4510f25 | ||
|
|
b14894fab7 | ||
|
|
1a87ce4194 | ||
|
|
6b96feb538 |
32
.github/workflows/build-linux-arm.yml
vendored
32
.github/workflows/build-linux-arm.yml
vendored
@@ -45,14 +45,30 @@ jobs:
|
|||||||
name: build ${{ inputs.version }} on ${{ inputs.operating-system }}
|
name: build ${{ inputs.version }} on ${{ inputs.operating-system }}
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
# Cache composer dependencies
|
||||||
|
- id: cache-composer-deps
|
||||||
|
uses: actions/cache@v4
|
||||||
|
with:
|
||||||
|
path: vendor
|
||||||
|
key: composer-dependencies
|
||||||
|
|
||||||
|
# If there's no Composer cache, install dependencies
|
||||||
|
- if: steps.cache-composer-deps.outputs.cache-hit != 'true'
|
||||||
|
run: composer update --no-dev --classmap-authoritative
|
||||||
|
|
||||||
|
- name: Generate hashed key for download cache
|
||||||
|
run: |
|
||||||
|
INPUT_HASH=$(echo "${{ runner.os }}-${{ inputs.version }}-${{ inputs.extensions }}" | sha256sum | awk '{print $1}')
|
||||||
|
echo "INPUT_HASH=${INPUT_HASH}" >> $GITHUB_ENV
|
||||||
|
|
||||||
# Cache downloaded source
|
# Cache downloaded source
|
||||||
- id: cache-download
|
- id: cache-download
|
||||||
uses: actions/cache@v3
|
uses: actions/cache@v4
|
||||||
with:
|
with:
|
||||||
path: downloads
|
path: downloads
|
||||||
key: php-${{ inputs.version }}-dependencies-${{ inputs.extensions }}
|
key: php-${{ env.INPUT_HASH }}
|
||||||
|
|
||||||
# With or without debug
|
# With or without debug
|
||||||
- if: inputs.debug == true
|
- if: inputs.debug == true
|
||||||
@@ -75,31 +91,31 @@ jobs:
|
|||||||
|
|
||||||
# Upload cli executable
|
# Upload cli executable
|
||||||
- if: ${{ inputs.build-cli == true }}
|
- if: ${{ inputs.build-cli == true }}
|
||||||
uses: actions/upload-artifact@v3
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: php-${{ inputs.version }}-linux-${{ inputs.operating-system }}
|
name: php-${{ inputs.version }}-linux-${{ inputs.operating-system }}
|
||||||
path: buildroot/bin/php
|
path: buildroot/bin/php
|
||||||
|
|
||||||
# Upload micro self-extracted executable
|
# Upload micro self-extracted executable
|
||||||
- if: ${{ inputs.build-micro == true }}
|
- if: ${{ inputs.build-micro == true }}
|
||||||
uses: actions/upload-artifact@v3
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: micro-${{ inputs.version }}-linux-${{ inputs.operating-system }}
|
name: micro-${{ inputs.version }}-linux-${{ inputs.operating-system }}
|
||||||
path: buildroot/bin/micro.sfx
|
path: buildroot/bin/micro.sfx
|
||||||
|
|
||||||
# Upload fpm executable
|
# Upload fpm executable
|
||||||
- if: ${{ inputs.build-fpm == true }}
|
- if: ${{ inputs.build-fpm == true }}
|
||||||
uses: actions/upload-artifact@v3
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: php-fpm-${{ inputs.version }}-linux-${{ inputs.operating-system }}
|
name: php-fpm-${{ inputs.version }}-linux-${{ inputs.operating-system }}
|
||||||
path: buildroot/bin/php-fpm
|
path: buildroot/bin/php-fpm
|
||||||
|
|
||||||
# Upload extensions metadata
|
# Upload extensions metadata
|
||||||
- uses: actions/upload-artifact@v3
|
- uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: license-files
|
name: license-files
|
||||||
path: buildroot/license/
|
path: buildroot/license/
|
||||||
- uses: actions/upload-artifact@v3
|
- uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: build-meta
|
name: build-meta
|
||||||
path: |
|
path: |
|
||||||
|
|||||||
23
.github/workflows/build-linux-x86_64.yml
vendored
23
.github/workflows/build-linux-x86_64.yml
vendored
@@ -39,11 +39,11 @@ jobs:
|
|||||||
name: build ${{ inputs.version }} on Linux x86_64
|
name: build ${{ inputs.version }} on Linux x86_64
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
# Cache composer dependencies
|
# Cache composer dependencies
|
||||||
- id: cache-composer-deps
|
- id: cache-composer-deps
|
||||||
uses: actions/cache@v3
|
uses: actions/cache@v4
|
||||||
with:
|
with:
|
||||||
path: vendor
|
path: vendor
|
||||||
key: composer-dependencies
|
key: composer-dependencies
|
||||||
@@ -52,12 +52,17 @@ jobs:
|
|||||||
- if: steps.cache-composer-deps.outputs.cache-hit != 'true'
|
- if: steps.cache-composer-deps.outputs.cache-hit != 'true'
|
||||||
run: composer update --no-dev --classmap-authoritative
|
run: composer update --no-dev --classmap-authoritative
|
||||||
|
|
||||||
|
- name: Generate hashed key for download cache
|
||||||
|
run: |
|
||||||
|
INPUT_HASH=$(echo "${{ runner.os }}-${{ inputs.version }}-${{ inputs.extensions }}" | sha256sum | awk '{print $1}')
|
||||||
|
echo "INPUT_HASH=${INPUT_HASH}" >> $GITHUB_ENV
|
||||||
|
|
||||||
# Cache downloaded source
|
# Cache downloaded source
|
||||||
- id: cache-download
|
- id: cache-download
|
||||||
uses: actions/cache@v3
|
uses: actions/cache@v4
|
||||||
with:
|
with:
|
||||||
path: downloads
|
path: downloads
|
||||||
key: php-${{ inputs.version }}-dependencies-${{ inputs.extensions }}
|
key: php-${{ env.INPUT_HASH }}
|
||||||
|
|
||||||
# With or without debug
|
# With or without debug
|
||||||
- if: inputs.debug == true
|
- if: inputs.debug == true
|
||||||
@@ -80,31 +85,31 @@ jobs:
|
|||||||
|
|
||||||
# Upload cli executable
|
# Upload cli executable
|
||||||
- if: ${{ inputs.build-cli == true }}
|
- if: ${{ inputs.build-cli == true }}
|
||||||
uses: actions/upload-artifact@v3
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: php-${{ inputs.version }}-${{ env.SPC_BUILD_OS }}
|
name: php-${{ inputs.version }}-${{ env.SPC_BUILD_OS }}
|
||||||
path: buildroot/bin/php
|
path: buildroot/bin/php
|
||||||
|
|
||||||
# Upload micro self-extracted executable
|
# Upload micro self-extracted executable
|
||||||
- if: ${{ inputs.build-micro == true }}
|
- if: ${{ inputs.build-micro == true }}
|
||||||
uses: actions/upload-artifact@v3
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: micro-${{ inputs.version }}-${{ env.SPC_BUILD_OS }}
|
name: micro-${{ inputs.version }}-${{ env.SPC_BUILD_OS }}
|
||||||
path: buildroot/bin/micro.sfx
|
path: buildroot/bin/micro.sfx
|
||||||
|
|
||||||
# Upload fpm executable
|
# Upload fpm executable
|
||||||
- if: ${{ inputs.build-fpm == true }}
|
- if: ${{ inputs.build-fpm == true }}
|
||||||
uses: actions/upload-artifact@v3
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: php-fpm-${{ inputs.version }}-${{ env.SPC_BUILD_OS }}
|
name: php-fpm-${{ inputs.version }}-${{ env.SPC_BUILD_OS }}
|
||||||
path: buildroot/bin/php-fpm
|
path: buildroot/bin/php-fpm
|
||||||
|
|
||||||
# Upload extensions metadata
|
# Upload extensions metadata
|
||||||
- uses: actions/upload-artifact@v3
|
- uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: license-files
|
name: license-files
|
||||||
path: buildroot/license/
|
path: buildroot/license/
|
||||||
- uses: actions/upload-artifact@v3
|
- uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: build-meta
|
name: build-meta
|
||||||
path: |
|
path: |
|
||||||
|
|||||||
23
.github/workflows/build-macos-aarch64.yml
vendored
23
.github/workflows/build-macos-aarch64.yml
vendored
@@ -39,7 +39,7 @@ jobs:
|
|||||||
name: build ${{ inputs.version }} on macOS arm64
|
name: build ${{ inputs.version }} on macOS arm64
|
||||||
runs-on: macos-14
|
runs-on: macos-14
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
# Install macOS missing packages and mark os suffix
|
# Install macOS missing packages and mark os suffix
|
||||||
- run: |
|
- run: |
|
||||||
@@ -58,7 +58,7 @@ jobs:
|
|||||||
|
|
||||||
# Cache composer dependencies
|
# Cache composer dependencies
|
||||||
- id: cache-composer-deps
|
- id: cache-composer-deps
|
||||||
uses: actions/cache@v3
|
uses: actions/cache@v4
|
||||||
with:
|
with:
|
||||||
path: vendor
|
path: vendor
|
||||||
key: composer-dependencies
|
key: composer-dependencies
|
||||||
@@ -67,12 +67,17 @@ jobs:
|
|||||||
- if: steps.cache-composer-deps.outputs.cache-hit != 'true'
|
- if: steps.cache-composer-deps.outputs.cache-hit != 'true'
|
||||||
run: composer update --no-dev --classmap-authoritative
|
run: composer update --no-dev --classmap-authoritative
|
||||||
|
|
||||||
|
- name: Generate hashed key for download cache
|
||||||
|
run: |
|
||||||
|
INPUT_HASH=$(echo "${{ runner.os }}-${{ inputs.version }}-${{ inputs.extensions }}" | sha256sum | awk '{print $1}')
|
||||||
|
echo "INPUT_HASH=${INPUT_HASH}" >> $GITHUB_ENV
|
||||||
|
|
||||||
# Cache downloaded source
|
# Cache downloaded source
|
||||||
- id: cache-download
|
- id: cache-download
|
||||||
uses: actions/cache@v3
|
uses: actions/cache@v4
|
||||||
with:
|
with:
|
||||||
path: downloads
|
path: downloads
|
||||||
key: php-${{ inputs.version }}-dependencies-${{ inputs.extensions }}
|
key: php-${{ env.INPUT_HASH }}
|
||||||
|
|
||||||
# With or without debug
|
# With or without debug
|
||||||
- if: inputs.debug == true
|
- if: inputs.debug == true
|
||||||
@@ -95,31 +100,31 @@ jobs:
|
|||||||
|
|
||||||
# Upload cli executable
|
# Upload cli executable
|
||||||
- if: ${{ inputs.build-cli == true }}
|
- if: ${{ inputs.build-cli == true }}
|
||||||
uses: actions/upload-artifact@v3
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: php-${{ inputs.version }}-${{ env.SPC_BUILD_OS }}
|
name: php-${{ inputs.version }}-${{ env.SPC_BUILD_OS }}
|
||||||
path: buildroot/bin/php
|
path: buildroot/bin/php
|
||||||
|
|
||||||
# Upload micro self-extracted executable
|
# Upload micro self-extracted executable
|
||||||
- if: ${{ inputs.build-micro == true }}
|
- if: ${{ inputs.build-micro == true }}
|
||||||
uses: actions/upload-artifact@v3
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: micro-${{ inputs.version }}-${{ env.SPC_BUILD_OS }}
|
name: micro-${{ inputs.version }}-${{ env.SPC_BUILD_OS }}
|
||||||
path: buildroot/bin/micro.sfx
|
path: buildroot/bin/micro.sfx
|
||||||
|
|
||||||
# Upload fpm executable
|
# Upload fpm executable
|
||||||
- if: ${{ inputs.build-fpm == true }}
|
- if: ${{ inputs.build-fpm == true }}
|
||||||
uses: actions/upload-artifact@v3
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: php-fpm-${{ inputs.version }}-${{ env.SPC_BUILD_OS }}
|
name: php-fpm-${{ inputs.version }}-${{ env.SPC_BUILD_OS }}
|
||||||
path: buildroot/bin/php-fpm
|
path: buildroot/bin/php-fpm
|
||||||
|
|
||||||
# Upload extensions metadata
|
# Upload extensions metadata
|
||||||
- uses: actions/upload-artifact@v3
|
- uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: license-files
|
name: license-files
|
||||||
path: buildroot/license/
|
path: buildroot/license/
|
||||||
- uses: actions/upload-artifact@v3
|
- uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: build-meta
|
name: build-meta
|
||||||
path: |
|
path: |
|
||||||
|
|||||||
33
.github/workflows/build-macos-x86_64.yml
vendored
33
.github/workflows/build-macos-x86_64.yml
vendored
@@ -37,18 +37,26 @@ env:
|
|||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
name: build ${{ inputs.version }} on macOS x86_64
|
name: build ${{ inputs.version }} on macOS x86_64
|
||||||
runs-on: macos-latest
|
runs-on: macos-13
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
# Install macOS missing packages and mark os suffix
|
# Install macOS missing packages and mark os suffix
|
||||||
- run: |
|
- run: |
|
||||||
brew install automake gzip
|
brew install automake gzip
|
||||||
echo "SPC_BUILD_OS=macos" >> $GITHUB_ENV
|
echo "SPC_BUILD_OS=macos" >> $GITHUB_ENV
|
||||||
|
|
||||||
|
- name: "Setup PHP"
|
||||||
|
uses: shivammathur/setup-php@v2
|
||||||
|
with:
|
||||||
|
php-version: 8.1
|
||||||
|
tools: pecl, composer
|
||||||
|
extensions: curl, openssl, mbstring, tokenizer
|
||||||
|
ini-values: memory_limit=-1
|
||||||
|
|
||||||
# Cache composer dependencies
|
# Cache composer dependencies
|
||||||
- id: cache-composer-deps
|
- id: cache-composer-deps
|
||||||
uses: actions/cache@v3
|
uses: actions/cache@v4
|
||||||
with:
|
with:
|
||||||
path: vendor
|
path: vendor
|
||||||
key: composer-dependencies
|
key: composer-dependencies
|
||||||
@@ -57,12 +65,17 @@ jobs:
|
|||||||
- if: steps.cache-composer-deps.outputs.cache-hit != 'true'
|
- if: steps.cache-composer-deps.outputs.cache-hit != 'true'
|
||||||
run: composer update --no-dev --classmap-authoritative
|
run: composer update --no-dev --classmap-authoritative
|
||||||
|
|
||||||
|
- name: Generate hashed key for download cache
|
||||||
|
run: |
|
||||||
|
INPUT_HASH=$(echo "${{ runner.os }}-${{ inputs.version }}-${{ inputs.extensions }}" | sha256sum | awk '{print $1}')
|
||||||
|
echo "INPUT_HASH=${INPUT_HASH}" >> $GITHUB_ENV
|
||||||
|
|
||||||
# Cache downloaded source
|
# Cache downloaded source
|
||||||
- id: cache-download
|
- id: cache-download
|
||||||
uses: actions/cache@v3
|
uses: actions/cache@v4
|
||||||
with:
|
with:
|
||||||
path: downloads
|
path: downloads
|
||||||
key: php-${{ inputs.version }}-dependencies-${{ inputs.extensions }}
|
key: php-${{ env.INPUT_HASH }}
|
||||||
|
|
||||||
# With or without debug
|
# With or without debug
|
||||||
- if: inputs.debug == true
|
- if: inputs.debug == true
|
||||||
@@ -85,31 +98,31 @@ jobs:
|
|||||||
|
|
||||||
# Upload cli executable
|
# Upload cli executable
|
||||||
- if: ${{ inputs.build-cli == true }}
|
- if: ${{ inputs.build-cli == true }}
|
||||||
uses: actions/upload-artifact@v3
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: php-${{ inputs.version }}-${{ env.SPC_BUILD_OS }}
|
name: php-${{ inputs.version }}-${{ env.SPC_BUILD_OS }}
|
||||||
path: buildroot/bin/php
|
path: buildroot/bin/php
|
||||||
|
|
||||||
# Upload micro self-extracted executable
|
# Upload micro self-extracted executable
|
||||||
- if: ${{ inputs.build-micro == true }}
|
- if: ${{ inputs.build-micro == true }}
|
||||||
uses: actions/upload-artifact@v3
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: micro-${{ inputs.version }}-${{ env.SPC_BUILD_OS }}
|
name: micro-${{ inputs.version }}-${{ env.SPC_BUILD_OS }}
|
||||||
path: buildroot/bin/micro.sfx
|
path: buildroot/bin/micro.sfx
|
||||||
|
|
||||||
# Upload fpm executable
|
# Upload fpm executable
|
||||||
- if: ${{ inputs.build-fpm == true }}
|
- if: ${{ inputs.build-fpm == true }}
|
||||||
uses: actions/upload-artifact@v3
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: php-fpm-${{ inputs.version }}-${{ env.SPC_BUILD_OS }}
|
name: php-fpm-${{ inputs.version }}-${{ env.SPC_BUILD_OS }}
|
||||||
path: buildroot/bin/php-fpm
|
path: buildroot/bin/php-fpm
|
||||||
|
|
||||||
# Upload extensions metadata
|
# Upload extensions metadata
|
||||||
- uses: actions/upload-artifact@v3
|
- uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: license-files
|
name: license-files
|
||||||
path: buildroot/license/
|
path: buildroot/license/
|
||||||
- uses: actions/upload-artifact@v3
|
- uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: build-meta
|
name: build-meta
|
||||||
path: |
|
path: |
|
||||||
|
|||||||
108
.github/workflows/build-windows-x86_64.yml
vendored
Normal file
108
.github/workflows/build-windows-x86_64.yml
vendored
Normal file
@@ -0,0 +1,108 @@
|
|||||||
|
name: CI on x86_64 Windows
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
inputs:
|
||||||
|
version:
|
||||||
|
required: true
|
||||||
|
description: php version to compile
|
||||||
|
default: '8.2'
|
||||||
|
type: choice
|
||||||
|
options:
|
||||||
|
- '8.3'
|
||||||
|
- '8.2'
|
||||||
|
- '8.1'
|
||||||
|
- '8.0'
|
||||||
|
- '7.4'
|
||||||
|
build-cli:
|
||||||
|
description: build cli binary
|
||||||
|
default: true
|
||||||
|
type: boolean
|
||||||
|
build-micro:
|
||||||
|
description: build phpmicro binary
|
||||||
|
type: boolean
|
||||||
|
extensions:
|
||||||
|
description: extensions to compile (comma separated)
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
debug:
|
||||||
|
type: boolean
|
||||||
|
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
name: build ${{ inputs.version }} on Windows x86_64
|
||||||
|
runs-on: windows-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
# Cache composer dependencies
|
||||||
|
- id: cache-composer-deps
|
||||||
|
uses: actions/cache@v4
|
||||||
|
with:
|
||||||
|
path: vendor
|
||||||
|
key: composer-dependencies
|
||||||
|
|
||||||
|
# If there's no Composer cache, install dependencies
|
||||||
|
- if: steps.cache-composer-deps.outputs.cache-hit != 'true'
|
||||||
|
run: composer update --no-dev --classmap-authoritative
|
||||||
|
|
||||||
|
- name: Generate hashed key for download cache
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
INPUT_HASH=$(echo "${{ runner.os }}-${{ inputs.version }}-${{ inputs.extensions }}" | sha256sum | awk '{print $1}')
|
||||||
|
echo "INPUT_HASH=${INPUT_HASH}" >> "$GITHUB_ENV"
|
||||||
|
|
||||||
|
# Cache downloaded source
|
||||||
|
- id: cache-download
|
||||||
|
uses: actions/cache@v4
|
||||||
|
with:
|
||||||
|
path: downloads
|
||||||
|
key: php-${{ env.INPUT_HASH }}
|
||||||
|
|
||||||
|
# With or without debug
|
||||||
|
- if: inputs.debug == true
|
||||||
|
run: echo "SPC_BUILD_DEBUG=--debug" >> $env:GITHUB_ENV
|
||||||
|
|
||||||
|
# With target select: cli, micro or both
|
||||||
|
- if: ${{ inputs.build-cli == true }}
|
||||||
|
run: echo "SPC_BUILD_CLI=--build-cli" >> $env:GITHUB_ENV
|
||||||
|
- if: ${{ inputs.build-micro == true }}
|
||||||
|
run: echo "SPC_BUILD_MICRO=--build-micro" >> $env:GITHUB_ENV
|
||||||
|
|
||||||
|
- run: ./bin/spc doctor
|
||||||
|
|
||||||
|
# If there's no dependencies cache, fetch sources, with or without debug
|
||||||
|
- if: steps.cache-download.outputs.cache-hit != 'true'
|
||||||
|
run: ./bin/spc download --with-php="${{ inputs.version }}" --for-extensions="${{ inputs.extensions }}" ${{ env.SPC_BUILD_DEBUG }}
|
||||||
|
|
||||||
|
# Run build command
|
||||||
|
- run: ./bin/spc build "${{ inputs.extensions }}" ${{ env.SPC_BUILD_DEBUG }} ${{ env.SPC_BUILD_CLI }} ${{ env.SPC_BUILD_MICRO }} ${{ env.SPC_BUILD_FPM }}
|
||||||
|
|
||||||
|
# Upload cli executable
|
||||||
|
- if: ${{ inputs.build-cli == true }}
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: php-${{ inputs.version }}
|
||||||
|
path: buildroot/bin/php.exe
|
||||||
|
|
||||||
|
# Upload micro self-extracted executable
|
||||||
|
- if: ${{ inputs.build-micro == true }}
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: micro-${{ inputs.version }}
|
||||||
|
path: buildroot/bin/micro.sfx
|
||||||
|
|
||||||
|
# Upload extensions metadata
|
||||||
|
- uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: license-files
|
||||||
|
path: buildroot/license/
|
||||||
|
- uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: build-meta
|
||||||
|
path: |
|
||||||
|
buildroot/build-extensions.json
|
||||||
|
buildroot/build-libraries.json
|
||||||
2
.github/workflows/release-build.yml
vendored
2
.github/workflows/release-build.yml
vendored
@@ -17,7 +17,7 @@ jobs:
|
|||||||
php-version:
|
php-version:
|
||||||
- "8.2"
|
- "8.2"
|
||||||
micro-version:
|
micro-version:
|
||||||
- "8.2.16"
|
- "8.2.18"
|
||||||
operating-system:
|
operating-system:
|
||||||
- "linux-x86_64"
|
- "linux-x86_64"
|
||||||
- "macos-x86_64"
|
- "macos-x86_64"
|
||||||
|
|||||||
2
.github/workflows/tests.yml
vendored
2
.github/workflows/tests.yml
vendored
@@ -165,7 +165,7 @@ jobs:
|
|||||||
max_attempts: 3
|
max_attempts: 3
|
||||||
retry_on: error
|
retry_on: error
|
||||||
command: |
|
command: |
|
||||||
bin/spc download --for-extensions="$(php src/globals/test-extensions.php extensions)" --for-libs="$(php src/globals/test-extensions.php libs)" --with-php=${{ matrix.php }} --ignore-cache-sources=php-src --debug
|
bin/spc download --for-extensions="$(php src/globals/test-extensions.php extensions)" --for-libs="$(php src/globals/test-extensions.php libs)" --with-php=${{ matrix.php }} --ignore-cache-sources=php-src --debug --retry=3
|
||||||
|
|
||||||
- name: "Run Build Tests (build)"
|
- name: "Run Build Tests (build)"
|
||||||
run: bin/spc build "$(php src/globals/test-extensions.php extensions)" --with-libs="$(php src/globals/test-extensions.php libs)" --build-cli --build-micro --build-fpm --debug
|
run: bin/spc build "$(php src/globals/test-extensions.php extensions)" --with-libs="$(php src/globals/test-extensions.php libs)" --build-cli --build-micro --build-fpm --debug
|
||||||
|
|||||||
@@ -66,7 +66,7 @@ static-php-cli(简称 `spc`)有许多特性:
|
|||||||
|---------|----------------------|----------------------|
|
|---------|----------------------|----------------------|
|
||||||
| macOS | :octocat: :computer: | :octocat: :computer: |
|
| macOS | :octocat: :computer: | :octocat: :computer: |
|
||||||
| Linux | :octocat: :computer: | :octocat: :computer: |
|
| Linux | :octocat: :computer: | :octocat: :computer: |
|
||||||
| Windows | :computer: | |
|
| Windows | :octocat: :computer: | |
|
||||||
| FreeBSD | :computer: | :computer: |
|
| FreeBSD | :computer: | :computer: |
|
||||||
|
|
||||||
当前支持编译的 PHP 版本:
|
当前支持编译的 PHP 版本:
|
||||||
|
|||||||
@@ -74,7 +74,7 @@ Here is the supported OS and arch, where :octocat: represents support for GitHub
|
|||||||
|---------|----------------------|----------------------|
|
|---------|----------------------|----------------------|
|
||||||
| macOS | :octocat: :computer: | :octocat: :computer: |
|
| macOS | :octocat: :computer: | :octocat: :computer: |
|
||||||
| Linux | :octocat: :computer: | :octocat: :computer: |
|
| Linux | :octocat: :computer: | :octocat: :computer: |
|
||||||
| Windows | :computer: | |
|
| Windows | :octocat: :computer: | |
|
||||||
| FreeBSD | :computer: | :computer: |
|
| FreeBSD | :computer: | :computer: |
|
||||||
|
|
||||||
Currently supported PHP versions for compilation:
|
Currently supported PHP versions for compilation:
|
||||||
|
|||||||
@@ -14,11 +14,11 @@ class imagick extends Extension
|
|||||||
public function patchBeforeMake(): bool
|
public function patchBeforeMake(): bool
|
||||||
{
|
{
|
||||||
// imagick may call omp_pause_all which requires -lgomp
|
// imagick may call omp_pause_all which requires -lgomp
|
||||||
$extra_libs = $this->builder->getOption('extra-libs', '');
|
$extra_libs = getenv('SPC_EXTRA_LIBS') ?: '';
|
||||||
if ($this->builder instanceof LinuxBuilder) {
|
if ($this->builder instanceof LinuxBuilder) {
|
||||||
$extra_libs .= ' -lgomp ';
|
$extra_libs .= (empty($extra_libs) ? '' : ' ') . '-lgomp ';
|
||||||
}
|
}
|
||||||
$this->builder->setOption('extra-libs', $extra_libs);
|
f_putenv('SPC_EXTRA_LIBS=' . $extra_libs);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
26
src/SPC/builder/extension/intl.php
Normal file
26
src/SPC/builder/extension/intl.php
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace SPC\builder\extension;
|
||||||
|
|
||||||
|
use SPC\builder\Extension;
|
||||||
|
use SPC\store\FileSystem;
|
||||||
|
use SPC\util\CustomExt;
|
||||||
|
|
||||||
|
#[CustomExt('intl')]
|
||||||
|
class intl extends Extension
|
||||||
|
{
|
||||||
|
public function patchBeforeBuildconf(): bool
|
||||||
|
{
|
||||||
|
// TODO: remove the following line when https://github.com/php/php-src/pull/14002 will be released
|
||||||
|
FileSystem::replaceFileStr(SOURCE_PATH . '/php-src/ext/intl/config.m4', 'PHP_CXX_COMPILE_STDCXX(11', 'PHP_CXX_COMPILE_STDCXX(17');
|
||||||
|
// Also need to use clang++ -std=c++17 to force override the default C++ standard
|
||||||
|
if (is_string($env = getenv('CXX')) && !str_contains($env, 'std=c++17')) {
|
||||||
|
f_putenv('CXX=' . $env . ' -std=c++17');
|
||||||
|
} else {
|
||||||
|
f_putenv('CXX=clang++ -std=c++17');
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -145,7 +145,19 @@ class LinuxBuilder extends UnixBuilderBase
|
|||||||
]);
|
]);
|
||||||
|
|
||||||
// upx pack and strip for micro
|
// upx pack and strip for micro
|
||||||
|
// but always restore Makefile.frag.bak first
|
||||||
|
if (file_exists(SOURCE_PATH . '/php-src/sapi/micro/Makefile.frag.bak')) {
|
||||||
|
copy(SOURCE_PATH . '/php-src/sapi/micro/Makefile.frag.bak', SOURCE_PATH . '/php-src/sapi/micro/Makefile.frag');
|
||||||
|
}
|
||||||
if ($this->getOption('with-upx-pack', false)) {
|
if ($this->getOption('with-upx-pack', false)) {
|
||||||
|
// judge $(MAKE) micro_2s_objs SFX_FILESIZE=`$(STAT_SIZE) $(SAPI_MICRO_PATH)` count
|
||||||
|
// if 2, replace src/globals/extra/micro-triple-Makefile.frag file content
|
||||||
|
if (substr_count(FileSystem::readFile(SOURCE_PATH . '/php-src/sapi/micro/Makefile.frag'), '$(MAKE) micro_2s_objs SFX_FILESIZE=`$(STAT_SIZE) $(SAPI_MICRO_PATH)`') === 2) {
|
||||||
|
// bak first
|
||||||
|
copy(SOURCE_PATH . '/php-src/sapi/micro/Makefile.frag', SOURCE_PATH . '/php-src/sapi/micro/Makefile.frag.bak');
|
||||||
|
// replace Makefile.frag content
|
||||||
|
FileSystem::writeFile(SOURCE_PATH . '/php-src/sapi/micro/Makefile.frag', FileSystem::readFile(ROOT_DIR . '/src/globals/extra/micro-triple-Makefile.frag'));
|
||||||
|
}
|
||||||
// with upx pack always need strip
|
// with upx pack always need strip
|
||||||
FileSystem::replaceFileRegex(
|
FileSystem::replaceFileRegex(
|
||||||
SOURCE_PATH . '/php-src/sapi/micro/Makefile.frag',
|
SOURCE_PATH . '/php-src/sapi/micro/Makefile.frag',
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ class icu extends LinuxLibraryBase
|
|||||||
protected function build(): void
|
protected function build(): void
|
||||||
{
|
{
|
||||||
$cppflags = 'CPPFLAGS="-DU_CHARSET_IS_UTF8=1 -DU_USING_ICU_NAMESPACE=1 -DU_STATIC_IMPLEMENTATION=1"';
|
$cppflags = 'CPPFLAGS="-DU_CHARSET_IS_UTF8=1 -DU_USING_ICU_NAMESPACE=1 -DU_STATIC_IMPLEMENTATION=1"';
|
||||||
$cxxflags = 'CXXFLAGS="-std=c++11"';
|
$cxxflags = 'CXXFLAGS="-std=c++17"';
|
||||||
$ldflags = 'LDFLAGS="-static"';
|
$ldflags = 'LDFLAGS="-static"';
|
||||||
shell()->cd($this->source_dir . '/source')
|
shell()->cd($this->source_dir . '/source')
|
||||||
->exec(
|
->exec(
|
||||||
|
|||||||
@@ -1,20 +1,4 @@
|
|||||||
<?php
|
<?php
|
||||||
/**
|
|
||||||
* Copyright (c) 2022 Yun Dou <dixyes@gmail.com>
|
|
||||||
*
|
|
||||||
* lwmbs is licensed under Mulan PSL v2. You can use this
|
|
||||||
* software according to the terms and conditions of the
|
|
||||||
* Mulan PSL v2. You may obtain a copy of Mulan PSL v2 at:
|
|
||||||
*
|
|
||||||
* http://license.coscl.org.cn/MulanPSL2
|
|
||||||
*
|
|
||||||
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED,
|
|
||||||
* INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
|
|
||||||
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
|
|
||||||
*
|
|
||||||
* See the Mulan PSL v2 for more details.
|
|
||||||
*/
|
|
||||||
|
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ trait imagemagick
|
|||||||
protected function build(): void
|
protected function build(): void
|
||||||
{
|
{
|
||||||
// TODO: imagemagick build with bzip2 failed with bugs, we need to fix it in the future
|
// TODO: imagemagick build with bzip2 failed with bugs, we need to fix it in the future
|
||||||
$extra = '--without-jxl --without-x --disable-openmp --without-bzlib ';
|
$extra = '--without-jxl --without-x --enable-openmp --without-bzlib ';
|
||||||
$required_libs = '';
|
$required_libs = '';
|
||||||
$optional_libs = [
|
$optional_libs = [
|
||||||
'libzip' => 'zip',
|
'libzip' => 'zip',
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ trait ncurses
|
|||||||
'--with-curses-h ' .
|
'--with-curses-h ' .
|
||||||
'--enable-pc-files ' .
|
'--enable-pc-files ' .
|
||||||
'--enable-echo ' .
|
'--enable-echo ' .
|
||||||
// '--enable-widec ' .
|
'--disable-widec ' .
|
||||||
'--with-normal ' .
|
'--with-normal ' .
|
||||||
'--with-ticlib ' .
|
'--with-ticlib ' .
|
||||||
'--without-tests ' .
|
'--without-tests ' .
|
||||||
|
|||||||
@@ -8,8 +8,8 @@ trait pkgconfig
|
|||||||
{
|
{
|
||||||
protected function build(): void
|
protected function build(): void
|
||||||
{
|
{
|
||||||
$cflags = PHP_OS_FAMILY === 'Darwin' ? "{$this->builder->arch_c_flags} -Wimplicit-function-declaration -Wno-int-conversion" : '';
|
$cflags = PHP_OS_FAMILY !== 'Linux' ? "{$this->builder->arch_c_flags} -Wimplicit-function-declaration -Wno-int-conversion" : '';
|
||||||
$ldflags = PHP_OS_FAMILY === 'Darwin' ? '' : '--static';
|
$ldflags = PHP_OS_FAMILY !== 'Linux' ? '' : '--static';
|
||||||
|
|
||||||
shell()->cd($this->source_dir)
|
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()])
|
||||||
|
|||||||
@@ -20,7 +20,6 @@ trait xz
|
|||||||
'./configure ' .
|
'./configure ' .
|
||||||
'--enable-static ' .
|
'--enable-static ' .
|
||||||
'--disable-shared ' .
|
'--disable-shared ' .
|
||||||
"--host={$this->builder->getOption('gnu-arch')}-unknown-linux " .
|
|
||||||
'--disable-scripts ' .
|
'--disable-scripts ' .
|
||||||
'--disable-doc ' .
|
'--disable-doc ' .
|
||||||
'--with-libiconv ' .
|
'--with-libiconv ' .
|
||||||
|
|||||||
@@ -25,6 +25,8 @@ class nghttp2 extends WindowsLibraryBase
|
|||||||
'-DCMAKE_BUILD_TYPE=Release ' .
|
'-DCMAKE_BUILD_TYPE=Release ' .
|
||||||
'-DENABLE_SHARED_LIB=OFF ' .
|
'-DENABLE_SHARED_LIB=OFF ' .
|
||||||
'-DENABLE_STATIC_LIB=ON ' .
|
'-DENABLE_STATIC_LIB=ON ' .
|
||||||
|
'-DBUILD_STATIC_LIBS=ON ' .
|
||||||
|
'-DBUILD_SHARED_LIBS=OFF ' .
|
||||||
'-DENABLE_STATIC_CRT=ON ' .
|
'-DENABLE_STATIC_CRT=ON ' .
|
||||||
'-DENABLE_LIB_ONLY=ON ' .
|
'-DENABLE_LIB_ONLY=ON ' .
|
||||||
'-DCMAKE_INSTALL_PREFIX=' . BUILD_ROOT_PATH . ' '
|
'-DCMAKE_INSTALL_PREFIX=' . BUILD_ROOT_PATH . ' '
|
||||||
|
|||||||
@@ -131,8 +131,8 @@ class BuildCliCommand extends BuildCommand
|
|||||||
if (!empty($not_included)) {
|
if (!empty($not_included)) {
|
||||||
$indent_texts['Extra Exts (' . count($not_included) . ')'] = implode(', ', $not_included);
|
$indent_texts['Extra Exts (' . count($not_included) . ')'] = implode(', ', $not_included);
|
||||||
}
|
}
|
||||||
$this->printFormatInfo($indent_texts);
|
|
||||||
$this->printFormatInfo($this->getDefinedEnvs(), true);
|
$this->printFormatInfo($this->getDefinedEnvs(), true);
|
||||||
|
$this->printFormatInfo($indent_texts);
|
||||||
logger()->notice('Build will start after 2s ...');
|
logger()->notice('Build will start after 2s ...');
|
||||||
sleep(2);
|
sleep(2);
|
||||||
|
|
||||||
|
|||||||
@@ -62,12 +62,17 @@ class DependencyUtil
|
|||||||
|
|
||||||
if ($include_suggested_libs) {
|
if ($include_suggested_libs) {
|
||||||
foreach ($dep_list as $name => $obj) {
|
foreach ($dep_list as $name => $obj) {
|
||||||
|
$del_list = [];
|
||||||
foreach ($obj['suggests'] as $id => $suggest) {
|
foreach ($obj['suggests'] as $id => $suggest) {
|
||||||
if (!str_starts_with($suggest, 'ext@')) {
|
if (!str_starts_with($suggest, 'ext@')) {
|
||||||
$dep_list[$name]['depends'][] = $suggest;
|
$dep_list[$name]['depends'][] = $suggest;
|
||||||
array_splice($dep_list[$name]['suggests'], $id, 1);
|
$del_list[] = $id;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
foreach ($del_list as $id) {
|
||||||
|
unset($dep_list[$name]['suggests'][$id]);
|
||||||
|
}
|
||||||
|
$dep_list[$name]['suggests'] = array_values($dep_list[$name]['suggests']);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -93,12 +98,17 @@ class DependencyUtil
|
|||||||
if ($include_suggested_exts) {
|
if ($include_suggested_exts) {
|
||||||
// check every deps suggests contains ext@
|
// check every deps suggests contains ext@
|
||||||
foreach ($dep_list as $name => $obj) {
|
foreach ($dep_list as $name => $obj) {
|
||||||
|
$del_list = [];
|
||||||
foreach ($obj['suggests'] as $id => $suggest) {
|
foreach ($obj['suggests'] as $id => $suggest) {
|
||||||
if (str_starts_with($suggest, 'ext@')) {
|
if (str_starts_with($suggest, 'ext@')) {
|
||||||
$dep_list[$name]['depends'][] = $suggest;
|
$dep_list[$name]['depends'][] = $suggest;
|
||||||
array_splice($dep_list[$name]['suggests'], $id, 1);
|
$del_list[] = $id;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
foreach ($del_list as $id) {
|
||||||
|
unset($dep_list[$name]['suggests'][$id]);
|
||||||
|
}
|
||||||
|
$dep_list[$name]['suggests'] = array_values($dep_list[$name]['suggests']);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -106,12 +116,17 @@ class DependencyUtil
|
|||||||
if ($include_suggested_libs) {
|
if ($include_suggested_libs) {
|
||||||
// check every deps suggests
|
// check every deps suggests
|
||||||
foreach ($dep_list as $name => $obj) {
|
foreach ($dep_list as $name => $obj) {
|
||||||
|
$del_list = [];
|
||||||
foreach ($obj['suggests'] as $id => $suggest) {
|
foreach ($obj['suggests'] as $id => $suggest) {
|
||||||
if (!str_starts_with($suggest, 'ext@')) {
|
if (!str_starts_with($suggest, 'ext@')) {
|
||||||
$dep_list[$name]['depends'][] = $suggest;
|
$dep_list[$name]['depends'][] = $suggest;
|
||||||
array_splice($dep_list[$name]['suggests'], $id, 1);
|
$del_list[] = $id;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
foreach ($del_list as $id) {
|
||||||
|
unset($dep_list[$name]['suggests'][$id]);
|
||||||
|
}
|
||||||
|
$dep_list[$name]['suggests'] = array_values($dep_list[$name]['suggests']);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -63,6 +63,7 @@ class GlobalEnvManager
|
|||||||
{
|
{
|
||||||
// Windows need php-sdk binary tools
|
// Windows need php-sdk binary tools
|
||||||
self::initIfNotExists('PHP_SDK_PATH', WORKING_DIR . DIRECTORY_SEPARATOR . 'php-sdk-binary-tools');
|
self::initIfNotExists('PHP_SDK_PATH', WORKING_DIR . DIRECTORY_SEPARATOR . 'php-sdk-binary-tools');
|
||||||
|
self::initIfNotExists('UPX_EXEC', PKG_ROOT_PATH . DIRECTORY_SEPARATOR . 'bin' . DIRECTORY_SEPARATOR . 'upx.exe');
|
||||||
}
|
}
|
||||||
|
|
||||||
private static function initLinuxEnv(BuilderBase $builder): void
|
private static function initLinuxEnv(BuilderBase $builder): void
|
||||||
@@ -79,7 +80,9 @@ class GlobalEnvManager
|
|||||||
self::initIfNotExists('CXX', "{$arch}-linux-musl-g++");
|
self::initIfNotExists('CXX', "{$arch}-linux-musl-g++");
|
||||||
self::initIfNotExists('AR', "{$arch}-linux-musl-ar");
|
self::initIfNotExists('AR', "{$arch}-linux-musl-ar");
|
||||||
self::initIfNotExists('LD', 'ld.gold');
|
self::initIfNotExists('LD', 'ld.gold');
|
||||||
self::putenv("PATH=/usr/local/musl/bin:/usr/local/musl/{$arch}-linux-musl/bin:" . getenv('PATH'));
|
if (getenv('SPC_NO_MUSL_PATH') !== 'yes') {
|
||||||
|
self::putenv("PATH=/usr/local/musl/bin:/usr/local/musl/{$arch}-linux-musl/bin:" . getenv('PATH'));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Init arch-specific cflags
|
// Init arch-specific cflags
|
||||||
@@ -105,12 +108,11 @@ class GlobalEnvManager
|
|||||||
'SPC_CMD_VAR_PHP_CONFIGURE_CFLAGS' => getenv('SPC_DEFAULT_C_FLAGS'),
|
'SPC_CMD_VAR_PHP_CONFIGURE_CFLAGS' => getenv('SPC_DEFAULT_C_FLAGS'),
|
||||||
'SPC_CMD_VAR_PHP_CONFIGURE_CPPFLAGS' => '-I' . BUILD_INCLUDE_PATH,
|
'SPC_CMD_VAR_PHP_CONFIGURE_CPPFLAGS' => '-I' . BUILD_INCLUDE_PATH,
|
||||||
'SPC_CMD_VAR_PHP_CONFIGURE_LDFLAGS' => '-L' . BUILD_LIB_PATH,
|
'SPC_CMD_VAR_PHP_CONFIGURE_LDFLAGS' => '-L' . BUILD_LIB_PATH,
|
||||||
'SPC_CMD_VAR_PHP_CONFIGURE_LIBS' => '-ldl -lpthread',
|
'SPC_CMD_VAR_PHP_CONFIGURE_LIBS' => '-ldl -lpthread -lm',
|
||||||
'SPC_CMD_VAR_PHP_MAKE_EXTRA_CFLAGS' => $php_extra_cflags_optimize . ' -fno-ident -fPIE',
|
'SPC_CMD_VAR_PHP_MAKE_EXTRA_CFLAGS' => $php_extra_cflags_optimize . ' -fno-ident -fPIE',
|
||||||
'SPC_CMD_VAR_PHP_MAKE_EXTRA_LIBS' => '',
|
'SPC_CMD_VAR_PHP_MAKE_EXTRA_LIBS' => '',
|
||||||
'SPC_CMD_VAR_PHP_MAKE_EXTRA_LDFLAGS_PROGRAM' => $clang_use_lld . '-all-static',
|
'SPC_CMD_VAR_PHP_MAKE_EXTRA_LDFLAGS_PROGRAM' => $clang_use_lld . '-all-static',
|
||||||
];
|
];
|
||||||
|
|
||||||
foreach ($init_spc_cmd_maps as $name => $value) {
|
foreach ($init_spc_cmd_maps as $name => $value) {
|
||||||
self::initIfNotExists($name, $value);
|
self::initIfNotExists($name, $value);
|
||||||
}
|
}
|
||||||
|
|||||||
51
src/globals/extra/micro-triple-Makefile.frag
Normal file
51
src/globals/extra/micro-triple-Makefile.frag
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
|
||||||
|
micro: $(SAPI_MICRO_PATH)
|
||||||
|
|
||||||
|
micro_2s_objs:
|
||||||
|
rm $(MICRO_2STAGE_OBJS) || :
|
||||||
|
$(MAKE) $(MICRO_2STAGE_OBJS)
|
||||||
|
|
||||||
|
EXTRA_MICRO_BUILD_COMMANDS=
|
||||||
|
POST_MICRO_BUILD_COMMANDS=$(STRIP) $(MICRO_STRIP_FLAGS) $(SAPI_MICRO_PATH)
|
||||||
|
|
||||||
|
$(SAPI_MICRO_PATH): $(PHP_GLOBAL_OBJS) $(PHP_BINARY_OBJS) $(PHP_MICRO_OBJS)
|
||||||
|
$(MAKE) micro_2s_objs SFX_FILESIZE=0xcafebabe
|
||||||
|
$(BUILD_MICRO)
|
||||||
|
$(EXTRA_MICRO_BUILD_COMMANDS)
|
||||||
|
$(POST_MICRO_BUILD_COMMANDS)
|
||||||
|
$(MAKE) micro_2s_objs SFX_FILESIZE=`$(STAT_SIZE) $(SAPI_MICRO_PATH)`
|
||||||
|
$(BUILD_MICRO)
|
||||||
|
$(EXTRA_MICRO_BUILD_COMMANDS)
|
||||||
|
$(POST_MICRO_BUILD_COMMANDS)
|
||||||
|
$(MAKE) micro_2s_objs SFX_FILESIZE=`$(STAT_SIZE) $(SAPI_MICRO_PATH)`
|
||||||
|
$(BUILD_MICRO)
|
||||||
|
$(EXTRA_MICRO_BUILD_COMMANDS)
|
||||||
|
$(POST_MICRO_BUILD_COMMANDS)
|
||||||
|
$(MAKE) micro_2s_objs SFX_FILESIZE=`$(STAT_SIZE) $(SAPI_MICRO_PATH)`
|
||||||
|
$(BUILD_MICRO)
|
||||||
|
$(EXTRA_MICRO_BUILD_COMMANDS)
|
||||||
|
$(POST_MICRO_BUILD_COMMANDS)
|
||||||
|
|
||||||
|
MICRO_EXES = sapi/micro/tests/simpleecho.exe sapi/micro/tests/fakecmd.exe
|
||||||
|
|
||||||
|
$(MICRO_EXES): $(SAPI_MICRO_PATH)
|
||||||
|
@binname=$@;\
|
||||||
|
cat $(SAPI_MICRO_PATH) $${binname%.exe}.php > $@ || {\
|
||||||
|
rm $@; \
|
||||||
|
exit 1; \
|
||||||
|
}
|
||||||
|
@chmod 0755 $@
|
||||||
|
|
||||||
|
MICRO_FAKECMD=sapi/micro/tests/fakecmd.exe
|
||||||
|
|
||||||
|
micro_test: $(SAPI_MICRO_PATH) $(MICRO_EXES)
|
||||||
|
@[ x"hello world" = "x`sapi/micro/tests/simpleecho.exe nonce world`" ] || {\
|
||||||
|
echo sanity check for micro.sfx failed, the sfx generated may be corrupt. >&2 ;\
|
||||||
|
exit 1;\
|
||||||
|
}
|
||||||
|
@SKIP_IO_CAPTURE_TESTS=yes \
|
||||||
|
TEST_PHP_EXECUTABLE=$(MICRO_FAKECMD) \
|
||||||
|
TEST_PHP_SRCDIR=$(top_srcdir) \
|
||||||
|
CC="$(CC)" \
|
||||||
|
$(MICRO_FAKECMD) -n $(PHP_TEST_SETTINGS) $(top_srcdir)/run-tests.php -n $(TESTS); \
|
||||||
|
exit $$?;
|
||||||
@@ -13,7 +13,7 @@ declare(strict_types=1);
|
|||||||
|
|
||||||
// If you want to test your added extensions and libs, add below (comma separated, example `bcmath,openssl`).
|
// If you want to test your added extensions and libs, add below (comma separated, example `bcmath,openssl`).
|
||||||
$extensions = match (PHP_OS_FAMILY) {
|
$extensions = match (PHP_OS_FAMILY) {
|
||||||
'Linux', 'Darwin' => 'uuid',
|
'Linux', 'Darwin' => 'readline,pgsql,xml,dom,mbstring,mbregex,pdo_pgsql',
|
||||||
'Windows' => 'mbstring,pdo_sqlite,mbregex',
|
'Windows' => 'mbstring,pdo_sqlite,mbregex',
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -27,7 +27,7 @@ $with_libs = match (PHP_OS_FAMILY) {
|
|||||||
// You can use `common`, `bulk`, `minimal` or `none`.
|
// You can use `common`, `bulk`, `minimal` or `none`.
|
||||||
// note: combination is only available for *nix platform. Windows must use `none` combination
|
// note: combination is only available for *nix platform. Windows must use `none` combination
|
||||||
$base_combination = match (PHP_OS_FAMILY) {
|
$base_combination = match (PHP_OS_FAMILY) {
|
||||||
'Linux', 'Darwin' => 'minimal',
|
'Linux', 'Darwin' => 'none',
|
||||||
'Windows' => 'none',
|
'Windows' => 'none',
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user