mirror of
https://github.com/bdnugget/php-wasm.git
synced 2026-11-07 09:07:28 +00:00
430 lines
17 KiB
Makefile
430 lines
17 KiB
Makefile
-include .env
|
|
|
|
SHELL=bash -euxo pipefail
|
|
|
|
USERID?=1000
|
|
|
|
ENVIRONMENT ?=web
|
|
INITIAL_MEMORY ?=1024MB
|
|
PRELOAD_ASSETS ?=preload/
|
|
ASSERTIONS ?=0
|
|
OPTIMIZE ?=-O3
|
|
RELEASE_SUFFIX ?=
|
|
|
|
PHP_VERSION ?=8.2
|
|
PHP_BRANCH ?=php-8.2.11
|
|
PHP_AR ?=libphp
|
|
|
|
# PHP_VERSION ?=7.4
|
|
# PHP_BRANCH ?=php-7.4.20
|
|
# PHP_AR ?=libphp7
|
|
|
|
VRZNO_BRANCH ?=DomAccess8.2
|
|
ICU_TAG ?=release-74-rc
|
|
LIBXML2_TAG ?=v2.9.10
|
|
TIDYHTML_TAG ?=5.6.0
|
|
ICONV_TAG ?=v1.17
|
|
SQLITE_VERSION ?=3410200
|
|
SQLITE_DIR ?=sqlite3.41-src
|
|
|
|
PKG_CONFIG_PATH ?=/src/lib/lib/pkgconfig
|
|
|
|
DOCKER_ENV=USERID=${UID} docker-compose -p phpwasm run --rm \
|
|
-e PKG_CONFIG_PATH=${PKG_CONFIG_PATH} \
|
|
-e PRELOAD_ASSETS='${PRELOAD_ASSETS}' \
|
|
-e INITIAL_MEMORY=${INITIAL_MEMORY} \
|
|
-e ENVIRONMENT=${ENVIRONMENT} \
|
|
-e PHP_BRANCH=${PHP_BRANCH} \
|
|
-e EMCC_CORES=`nproc`
|
|
|
|
DOCKER_ENV_SIDE=USERID=${UID} docker-compose -p phpwasm run --rm \
|
|
-e PRELOAD_ASSETS='${PRELOAD_ASSETS}' \
|
|
-e INITIAL_MEMORY=${INITIAL_MEMORY} \
|
|
-e ENVIRONMENT=${ENVIRONMENT} \
|
|
-e PHP_BRANCH=${PHP_BRANCH} \
|
|
-e EMCC_CORES=`nproc` \
|
|
-e CFLAGS=" -I/root/lib/include " \
|
|
-e EMCC_FLAGS=" -sSIDE_MODULE=1 -sERROR_ON_UNDEFINED_SYMBOLS=0 "
|
|
|
|
DOCKER_RUN =${DOCKER_ENV} emscripten-builder
|
|
DOCKER_RUN_IN_PHP =${DOCKER_ENV} -w /src/third_party/php${PHP_VERSION}-src/ emscripten-builder
|
|
DOCKER_RUN_IN_PHPSIDE=${DOCKER_ENV_SIDE} -w /src/third_party/php${PHP_VERSION}-src/ emscripten-builder
|
|
DOCKER_RUN_IN_ICU4C =${DOCKER_ENV} -w /src/third_party/libicu-src/icu4c/source/ emscripten-builder
|
|
DOCKER_RUN_IN_LIBXML =${DOCKER_ENV} -w /src/third_party/libxml2/ emscripten-builder
|
|
DOCKER_RUN_IN_SQLITE =${DOCKER_ENV_SIDE} -w /src/third_party/${SQLITE_DIR}/ emscripten-builder
|
|
DOCKER_RUN_IN_TIDY =${DOCKER_ENV_SIDE} -w /src/third_party/tidy-html5/ emscripten-builder
|
|
DOCKER_RUN_IN_ICU =${DOCKER_ENV_SIDE} -w /src/third_party/libicu-src/icu4c/source emscripten-builder
|
|
DOCKER_RUN_IN_ICONV =${DOCKER_ENV_SIDE} -w /src/third_party/libiconv-1.17/ emscripten-builder
|
|
|
|
TIMER=(which pv > /dev/null && pv --name '${@}' || cat)
|
|
.PHONY: web all clean show-ports image js hooks push-image pull-image
|
|
|
|
all: cjs mjs js
|
|
cjs: php-web-drupal.js php-web.js php-webview.js php-node.js php-shell.js php-worker.js
|
|
mjs: php-web-drupal.mjs php-web.mjs php-webview.mjs php-node.mjs php-shell.mjs php-worker.mjs
|
|
web-drupal: lib/pib_eval.o php-web-drupal.wasm
|
|
web: lib/pib_eval.o php-web.wasm
|
|
@ echo "Done!"
|
|
|
|
########### Collect & patch the source code. ###########
|
|
|
|
# third_party/${SQLITE_DIR}/sqlite3.c: patch/sqlite3-wasm.patch
|
|
# @ echo -e "\e[33mDownloading and patching SQLite"
|
|
# @ wget https://sqlite.org/2023/sqlite-amalgamation-${SQLITE_VERSION}.zip
|
|
# @ ${DOCKER_RUN} unzip sqlite-amalgamation-${SQLITE_VERSION}.zip
|
|
# @ ${DOCKER_RUN} rm -r sqlite-amalgamation-${SQLITE_VERSION}.zip
|
|
# @ ${DOCKER_RUN} mv sqlite-amalgamation-${SQLITE_VERSION} third_party/${SQLITE_DIR}
|
|
# @ ${DOCKER_RUN} git apply --no-index patch/sqlite3.41-wasm.patch
|
|
|
|
third_party/${SQLITE_DIR}/sqlite3.c:
|
|
@ echo -e "\e[33mDownloading and patching SQLite"
|
|
@ wget https://sqlite.org/2023/sqlite-autoconf-${SQLITE_VERSION}.tar.gz
|
|
@ ${DOCKER_RUN} tar -xzf sqlite-autoconf-${SQLITE_VERSION}.tar.gz
|
|
@ ${DOCKER_RUN} rm -r sqlite-autoconf-${SQLITE_VERSION}.tar.gz
|
|
@ ${DOCKER_RUN} rm -rf third_party/${SQLITE_DIR}
|
|
@ ${DOCKER_RUN} mv sqlite-autoconf-${SQLITE_VERSION} third_party/${SQLITE_DIR}
|
|
|
|
third_party/php${PHP_VERSION}-src/patched: third_party/${SQLITE_DIR}/sqlite3.c
|
|
@ echo -e "\e[33mDownloading and patching PHP"
|
|
@ ${DOCKER_RUN} git clone https://github.com/php/php-src.git third_party/php${PHP_VERSION}-src \
|
|
--branch ${PHP_BRANCH} \
|
|
--single-branch \
|
|
--depth 1
|
|
@ ${DOCKER_RUN} git apply --no-index patch/php${PHP_VERSION}.patch
|
|
@ ${DOCKER_RUN} mkdir -p third_party/php${PHP_VERSION}-src/preload/Zend
|
|
@ ${DOCKER_RUN} cp third_party/php${PHP_VERSION}-src/Zend/bench.php third_party/php${PHP_VERSION}-src/preload/Zend
|
|
@ ${DOCKER_RUN} touch third_party/php${PHP_VERSION}-src/patched
|
|
|
|
# source/sqlite3.c: third_party/${SQLITE_DIR}/sqlite3.c third_party/php${PHP_VERSION}-src/patched
|
|
# @ echo -e "\e[33mImporting SQLite"
|
|
# @ ${DOCKER_RUN} cp -v third_party/${SQLITE_DIR}/sqlite3.c source/sqlite3.c
|
|
# @ ${DOCKER_RUN} cp -v third_party/${SQLITE_DIR}/sqlite3.h source/sqlite3.h
|
|
# @ ${DOCKER_RUN} cp -v third_party/${SQLITE_DIR}/sqlite3.h third_party/php${PHP_VERSION}-src/main/sqlite3.h
|
|
# @ ${DOCKER_RUN} cp -v third_party/${SQLITE_DIR}/sqlite3.c third_party/php${PHP_VERSION}-src/main/sqlite3.c
|
|
|
|
third_party/php${PHP_VERSION}-src/ext/vrzno/vrzno.c: third_party/php${PHP_VERSION}-src/patched
|
|
@ echo -e "\e[33mDownloading and importing VRZNO"
|
|
@ ${DOCKER_RUN} git clone https://github.com/seanmorris/vrzno.git third_party/php${PHP_VERSION}-src/ext/vrzno \
|
|
--branch ${VRZNO_BRANCH} \
|
|
--single-branch \
|
|
--depth 1
|
|
|
|
third_party/drupal-7.95/README.txt:
|
|
@ echo -e "\e[33mDownloading and patching Drupal"
|
|
@ wget https://ftp.drupal.org/files/projects/drupal-7.95.zip
|
|
@ ${DOCKER_RUN} unzip drupal-7.95.zip
|
|
@ ${DOCKER_RUN} rm -v drupal-7.95.zip
|
|
@ ${DOCKER_RUN} mv drupal-7.95 third_party/drupal-7.95
|
|
@ ${DOCKER_RUN} git apply --no-index patch/drupal-7.95.patch
|
|
@ ${DOCKER_RUN} cp -r extras/drupal-7-settings.php third_party/drupal-7.95/sites/default/settings.php
|
|
@ ${DOCKER_RUN} cp -r extras/drowser-files/.ht.sqlite third_party/drupal-7.95/sites/default/files/.ht.sqlite
|
|
@ ${DOCKER_RUN} cp -r extras/drowser-files/* third_party/drupal-7.95/sites/default/files
|
|
@ ${DOCKER_RUN} cp -r extras/drowser-logo.png third_party/drupal-7.95/sites/default/logo.png
|
|
@ ${DOCKER_RUN} rm -rf third_party/php${PHP_VERSION}-src/preload/drupal-7.95
|
|
@ ${DOCKER_RUN} mkdir -p third_party/php${PHP_VERSION}-src/preload
|
|
@ ${DOCKER_RUN} cp -r third_party/drupal-7.95 third_party/php${PHP_VERSION}-src/preload/
|
|
|
|
third_party/libxml2/.gitignore:
|
|
@ echo -e "\e[33mDownloading LibXML2"
|
|
@ ${DOCKER_RUN} env GIT_SSL_NO_VERIFY=true git clone https://gitlab.gnome.org/GNOME/libxml2.git third_party/libxml2 \
|
|
--branch ${LIBXML2_TAG} \
|
|
--single-branch \
|
|
--depth 1;
|
|
|
|
third_party/tidy-html5/.gitignore:
|
|
git clone https://github.com/htacg/tidy-html5.git third_party/tidy-html5 \
|
|
--branch ${TIDYHTML_TAG} \
|
|
--single-branch \
|
|
--depth 1;
|
|
cd third_party/tidy-html5 && \
|
|
git apply --no-index ../../patch/tidy-html.patch
|
|
|
|
third_party/libicu-src/.gitignore:
|
|
@ ${DOCKER_RUN} git clone https://github.com/unicode-org/icu.git third_party/libicu-src \
|
|
--branch ${ICU_TAG} \
|
|
--single-branch \
|
|
--depth 1;
|
|
|
|
third_party/libiconv-1.17/README:
|
|
wget https://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.17.tar.gz
|
|
tar -xvzf libiconv-1.17.tar.gz -C third_party
|
|
rm libiconv-1.17.tar.gz
|
|
|
|
########### Build the objects. ###########
|
|
|
|
lib/${PHP_AR}.a: third_party/php${PHP_VERSION}-src/configured third_party/php${PHP_VERSION}-src/patched third_party/php${PHP_VERSION}-src/**.c
|
|
@ echo -e "\e[33mBuilding PHP symbol files"
|
|
@ ${DOCKER_RUN_IN_PHPSIDE} emmake make -B -j`nproc` EXTRA_CFLAGS='-Wno-int-conversion -Wno-incompatible-function-pointer-types'
|
|
@ ${DOCKER_RUN} cp -v \
|
|
third_party/php${PHP_VERSION}-src/.libs/${PHP_AR}.la \
|
|
third_party/php${PHP_VERSION}-src/.libs/${PHP_AR}.a lib/
|
|
|
|
lib/lib/libxml2.la: third_party/libxml2/.gitignore
|
|
@ echo -e "\e[33mBuilding LibXML2"
|
|
${DOCKER_RUN_IN_LIBXML} ./autogen.sh
|
|
${DOCKER_RUN_IN_LIBXML} emconfigure ./configure --with-http=no --with-ftp=no --with-python=no --with-threads=no --enable-shared=no --prefix=/src/lib/ | ${TIMER}
|
|
${DOCKER_RUN_IN_LIBXML} emmake make -j`nproc` EXTRA_CFLAGS='-fPIC' | ${TIMER}
|
|
${DOCKER_RUN_IN_LIBXML} emmake make install | ${TIMER}
|
|
|
|
lib/lib/libsqlite3.a: third_party/${SQLITE_DIR}/sqlite3.c
|
|
@ echo -e "\e[33mBuilding LibSqlite3"
|
|
${DOCKER_RUN_IN_SQLITE} emconfigure ./configure --with-http=no --with-ftp=no --with-python=no --with-threads=no --enable-shared=no --prefix=/src/lib/ | ${TIMER}
|
|
${DOCKER_RUN_IN_SQLITE} emmake make -j`nproc` EXTRA_CFLAGS='-fPIC' | ${TIMER}
|
|
${DOCKER_RUN_IN_SQLITE} emmake make install | ${TIMER}
|
|
|
|
lib/lib/libtidy.a: third_party/tidy-html5/.gitignore
|
|
@ echo -e "\e[33mBuilding LibTidy"
|
|
${DOCKER_RUN_IN_TIDY} emcmake cmake . \
|
|
-DCMAKE_INSTALL_PREFIX=/src/lib/ \
|
|
-DCMAKE_BUILD_TYPE=Release \
|
|
-DCMAKE_C_FLAGS="-I/emsdk/upstream/emscripten/system/lib/libc/musl/include/ -fpic"; \
|
|
${DOCKER_RUN_IN_TIDY} emmake make
|
|
${DOCKER_RUN_IN_TIDY} emmake make install
|
|
|
|
# lib/lib/libicudata.a: third_party/libicu-src/.gitignore
|
|
# @ echo -e "\e[33mBuilding LibIcu"
|
|
# ${DOCKER_RUN_IN_ICU} emconfigure ./configure --prefix=/src/lib/ --target=wasm32-unknown-emscripten --enable-icu-config --enable-extras=no --enable-tools=no --enable-samples=no --enable-tests=no --enable-shared=no --enable-static=yes
|
|
# ${DOCKER_RUN_IN_ICU} emmake make clean install
|
|
|
|
lib/lib/libiconv.a: third_party/libiconv-1.17/README
|
|
@ echo -e "\e[33mBuilding LibIconv"
|
|
${DOCKER_RUN_IN_ICONV} autoconf
|
|
${DOCKER_RUN_IN_ICONV} emconfigure ./configure --prefix=/src/lib/ --target=wasm32-unknown-emscripten --enable-shared=no --enable-static=yes
|
|
${DOCKER_RUN_IN_ICONV} emmake make -B EMCC_CFLAGS='-fPIC'
|
|
${DOCKER_RUN_IN_ICONV} emmake make install
|
|
|
|
third_party/php${PHP_VERSION}-src/configured: third_party/php${PHP_VERSION}-src/ext/vrzno/vrzno.c lib/lib/libxml2.la lib/lib/libtidy.a lib/lib/libiconv.a lib/lib/libsqlite3.a # lib/lib/libicudata.a
|
|
@ echo -e "\e[33mBuilding PHP object files"
|
|
${DOCKER_RUN_IN_PHPSIDE} ./buildconf --force
|
|
${DOCKER_RUN_IN_PHPSIDE} emconfigure ./configure \
|
|
PKG_CONFIG_PATH=${PKG_CONFIG_PATH} \
|
|
--target=wasm32-unknown-emscripten \
|
|
--enable-embed=static \
|
|
--with-layout=GNU \
|
|
--with-libxml \
|
|
--disable-cgi \
|
|
--disable-cli \
|
|
--disable-all \
|
|
--enable-session \
|
|
--enable-filter \
|
|
--enable-calendar \
|
|
--enable-dom \
|
|
--disable-rpath \
|
|
--disable-phpdbg \
|
|
--without-pear \
|
|
--with-valgrind=no \
|
|
--without-pcre-jit \
|
|
--enable-bcmath \
|
|
--enable-json \
|
|
--enable-ctype \
|
|
--enable-mbstring \
|
|
--disable-mbregex \
|
|
--enable-tokenizer \
|
|
--enable-vrzno \
|
|
--enable-xml \
|
|
--enable-simplexml \
|
|
--with-gd \
|
|
--with-sqlite3 \
|
|
--enable-pdo \
|
|
--with-pdo-sqlite=/src/lib \
|
|
--with-iconv=/src/lib \
|
|
--with-tidy=/src/lib \
|
|
--disable-fiber-asm
|
|
${DOCKER_RUN_IN_PHPSIDE} touch /src/third_party/php${PHP_VERSION}-src/configured
|
|
|
|
########### Build the final files. ###########
|
|
|
|
FINAL_BUILD=${DOCKER_RUN_IN_PHP} emcc ${OPTIMIZE} \
|
|
-s EXPORTED_FUNCTIONS='["_pib_init", "_pib_destroy", "_pib_run", "_pib_exec", "_pib_refresh", "_main", "_php_embed_init", "_php_embed_shutdown", "_php_embed_shutdown", "_zend_eval_string", "_exec_callback", "_del_callback"]' \
|
|
-s EXPORTED_RUNTIME_METHODS='["ccall", "UTF8ToString", "lengthBytesUTF8"]' \
|
|
-s ENVIRONMENT=${ENVIRONMENT} \
|
|
-s MAXIMUM_MEMORY=2048mb \
|
|
-s INITIAL_MEMORY=${INITIAL_MEMORY} \
|
|
-s ALLOW_MEMORY_GROWTH=1 \
|
|
-s ASSERTIONS=${ASSERTIONS} \
|
|
-s ERROR_ON_UNDEFINED_SYMBOLS=0 \
|
|
-s EXPORT_NAME="'PHP'" \
|
|
-s MODULARIZE=1 \
|
|
-s INVOKE_RUN=0 \
|
|
-s USE_ZLIB=1 \
|
|
-I . \
|
|
-I Zend \
|
|
-I main \
|
|
-I TSRM/ \
|
|
-I /src/third_party/libxml2 \
|
|
-I ext/pdo_sqlite \
|
|
-o ../../build/php-${ENVIRONMENT}${RELEASE_SUFFIX}.${BUILD_TYPE} \
|
|
--llvm-lto 2 \
|
|
/src/third_party/php8.2-src/.libs/${PHP_AR}.a \
|
|
/src/lib/lib/libxml2.a \
|
|
/src/lib/lib/libtidy.a \
|
|
/src/lib/lib/libiconv.a \
|
|
/src/lib/lib/libsqlite3.a \
|
|
ext/pdo_sqlite/pdo_sqlite.c \
|
|
ext/pdo_sqlite/sqlite_driver.c \
|
|
ext/pdo_sqlite/sqlite_statement.c \
|
|
/src/source/pib_eval.c
|
|
|
|
DEPENDENCIES=lib/${PHP_AR}.a lib/lib/libxml2.a lib/lib/libiconv.a lib/lib/libtidy.a lib/${PHP_AR}.a source/pib_eval.c lib/lib/libxml2.la lib/lib/libsqlite3.a
|
|
BUILD_TYPE ?=js
|
|
|
|
php-web-drupal.js: ENVIRONMENT=web-drupal
|
|
php-web-drupal.js: ${DEPENDENCIES} third_party/drupal-7.95/README.txt
|
|
@ echo -e "\e[33mBuilding PHP for web (drupal)"
|
|
@ ${FINAL_BUILD} --preload-file ${PRELOAD_ASSETS} -s ENVIRONMENT=web
|
|
@ ${DOCKER_RUN} cp -v build/php-${ENVIRONMENT}${RELEASE_SUFFIX}.* ./
|
|
@ ${DOCKER_RUN} cp -v build/php-${ENVIRONMENT}${RELEASE_SUFFIX}.* ./docs-source/app/assets
|
|
@ ${DOCKER_RUN} cp -v build/php-${ENVIRONMENT}${RELEASE_SUFFIX}.* ./docs-source/public
|
|
@ ${DOCKER_RUN} cp -v build/php-${ENVIRONMENT}${RELEASE_SUFFIX}.* ./dist
|
|
|
|
php-web-drupal.mjs: BUILD_TYPE=mjs
|
|
php-web-drupal.mjs: ENVIRONMENT=web-drupal
|
|
php-web-drupal.mjs: ${DEPENDENCIES} third_party/drupal-7.95/README.txt
|
|
@ ${FINAL_BUILD} --preload-file ${PRELOAD_ASSETS} -s ENVIRONMENT=web
|
|
@ ${DOCKER_RUN} cp -v build/php-${ENVIRONMENT}${RELEASE_SUFFIX}.* ./
|
|
|
|
php-web.js: ENVIRONMENT=web
|
|
php-web.js: ${DEPENDENCIES}
|
|
@ echo -e "\e[33mBuilding PHP for web"
|
|
@ ${FINAL_BUILD}
|
|
@ ${DOCKER_RUN} cp -v build/php-${ENVIRONMENT}${RELEASE_SUFFIX}.* ./
|
|
@ ${DOCKER_RUN} cp -v build/php-${ENVIRONMENT}${RELEASE_SUFFIX}.* ./docs-source/app/assets
|
|
@ ${DOCKER_RUN} cp -v build/php-${ENVIRONMENT}${RELEASE_SUFFIX}.* ./docs-source/public
|
|
@ ${DOCKER_RUN} cp -v build/php-${ENVIRONMENT}${RELEASE_SUFFIX}.* ./dist
|
|
|
|
php-web.mjs: BUILD_TYPE=mjs
|
|
php-web.mjs: ENVIRONMENT=web
|
|
php-web.mjs: ${DEPENDENCIES}
|
|
@ ${FINAL_BUILD}
|
|
@ ${DOCKER_RUN} cp -v build/php-${ENVIRONMENT}${RELEASE_SUFFIX}.* ./
|
|
@ ${DOCKER_RUN} cp -v build/php-${ENVIRONMENT}${RELEASE_SUFFIX}.* ./dist
|
|
|
|
php-worker.js: ENVIRONMENT=worker
|
|
php-worker.js: ${DEPENDENCIES}
|
|
@ echo -e "\e[33mBuilding PHP for workers"
|
|
@ ${FINAL_BUILD}
|
|
@ ${DOCKER_RUN} cp -v build/php-${ENVIRONMENT}${RELEASE_SUFFIX}.* ./
|
|
@ ${DOCKER_RUN} cp -v build/php-${ENVIRONMENT}${RELEASE_SUFFIX}.* ./docs-source/app/assets
|
|
@ ${DOCKER_RUN} cp -v build/php-${ENVIRONMENT}${RELEASE_SUFFIX}.* ./docs-source/public
|
|
@ ${DOCKER_RUN} cp -v build/php-${ENVIRONMENT}${RELEASE_SUFFIX}.* ./dist
|
|
|
|
php-worker.mjs: BUILD_TYPE=mjs
|
|
php-worker.mjs: ENVIRONMENT=worker
|
|
php-worker.mjs: ${DEPENDENCIES}
|
|
@ ${FINAL_BUILD}
|
|
@ ${DOCKER_RUN} cp -v build/php-${ENVIRONMENT}${RELEASE_SUFFIX}.* ./
|
|
@ ${DOCKER_RUN} cp -v build/php-${ENVIRONMENT}${RELEASE_SUFFIX}.* ./dist
|
|
|
|
php-node.js: ENVIRONMENT=node
|
|
php-node.js: ${DEPENDENCIES}
|
|
@ echo -e "\e[33mBuilding PHP for node"
|
|
@ ${FINAL_BUILD}
|
|
@ ${DOCKER_RUN} cp -v build/php-${ENVIRONMENT}${RELEASE_SUFFIX}.* ./
|
|
@ ${DOCKER_RUN} cp -v build/php-${ENVIRONMENT}${RELEASE_SUFFIX}.* ./docs-source/app/assets
|
|
@ ${DOCKER_RUN} cp -v build/php-${ENVIRONMENT}${RELEASE_SUFFIX}.* ./docs-source/public
|
|
@ ${DOCKER_RUN} cp -v build/php-${ENVIRONMENT}${RELEASE_SUFFIX}.* ./dist
|
|
|
|
php-node.mjs: BUILD_TYPE=mjs
|
|
php-node.mjs: ENVIRONMENT=node
|
|
php-node.mjs: ${DEPENDENCIES}
|
|
@ ${FINAL_BUILD}
|
|
@ ${DOCKER_RUN} cp -v build/php-${ENVIRONMENT}${RELEASE_SUFFIX}.* ./
|
|
@ ${DOCKER_RUN} cp -v build/php-${ENVIRONMENT}${RELEASE_SUFFIX}.* ./dist
|
|
|
|
|
|
php-shell.js: ENVIRONMENT=shell
|
|
php-shell.js: ${DEPENDENCIES}
|
|
@ echo -e "\e[33mBuilding PHP for shell"
|
|
@ ${FINAL_BUILD}
|
|
@ ${DOCKER_RUN} cp -v build/php-${ENVIRONMENT}${RELEASE_SUFFIX}.* ./
|
|
@ ${DOCKER_RUN} cp -v build/php-${ENVIRONMENT}${RELEASE_SUFFIX}.* ./docs-source/app/assets
|
|
@ ${DOCKER_RUN} cp -v build/php-${ENVIRONMENT}${RELEASE_SUFFIX}.* ./docs-source/public
|
|
@ ${DOCKER_RUN} cp -v build/php-${ENVIRONMENT}${RELEASE_SUFFIX}.* ./dist
|
|
|
|
php-shell.mjs: BUILD_TYPE=mjs
|
|
php-shell.mjs: ENVIRONMENT=shell
|
|
php-shell.mjs: ${DEPENDENCIES}
|
|
@ ${FINAL_BUILD}
|
|
@ ${DOCKER_RUN} cp -v build/php-${ENVIRONMENT}${RELEASE_SUFFIX}.* ./
|
|
@ ${DOCKER_RUN} cp -v build/php-${ENVIRONMENT}${RELEASE_SUFFIX}.* ./dist
|
|
|
|
php-webview.js: ENVIRONMENT=webview
|
|
php-webview.js: ${DEPENDENCIES}
|
|
@ echo -e "\e[33mBuilding PHP for webview"
|
|
@ ${FINAL_BUILD}
|
|
@ ${DOCKER_RUN} cp -v build/php-${ENVIRONMENT}${RELEASE_SUFFIX}.* ./
|
|
@ ${DOCKER_RUN} cp -v build/php-${ENVIRONMENT}${RELEASE_SUFFIX}.* ./docs-source/app/assets
|
|
@ ${DOCKER_RUN} cp -v build/php-${ENVIRONMENT}${RELEASE_SUFFIX}.* ./docs-source/public
|
|
@ ${DOCKER_RUN} cp -v build/php-${ENVIRONMENT}${RELEASE_SUFFIX}.* ./dist
|
|
|
|
php-webview.mjs: BUILD_TYPE=mjs
|
|
php-webview.mjs: ENVIRONMENT=webview
|
|
php-webview.mjs: ${DEPENDENCIES}
|
|
@ ${FINAL_BUILD}
|
|
@ ${DOCKER_RUN} cp -v build/php-${ENVIRONMENT}${RELEASE_SUFFIX}.* ./
|
|
@ ${DOCKER_RUN} cp -v build/php-${ENVIRONMENT}${RELEASE_SUFFIX}.* ./dist
|
|
|
|
########### Clerical stuff. ###########
|
|
|
|
clean:
|
|
@ ${DOCKER_RUN} rm -fv *.js *.mjs *.wasm *.data
|
|
@ ${DOCKER_RUN} rm -rfv build/* lib/* docs/php-*.js docs/php-*.wasm \
|
|
/src/lib/pib_eval.o /src/lib/${PHP_AR}.a
|
|
@ ${DOCKER_RUN_IN_PHP} make clean
|
|
|
|
php-clean:
|
|
@ ${DOCKER_RUN} rm -fv third_party/php${PHP_VERSION}-src/configure
|
|
|
|
deep-clean:
|
|
@ ${DOCKER_RUN} rm -fv *.js *.mjs *.wasm *.data
|
|
@ ${DOCKER_RUN} rm -rfv build/* lib/* third_party/php${PHP_VERSION}-src \
|
|
third_party/drupal-7.95 third_party/libxml2 third_party/tidy-html5 \
|
|
third_party/libicu-src third_party/${SQLITE_DIR} third_party/libiconv-1.17 \
|
|
dist/* docs/php-*.js docs/php-*.wasm \
|
|
sqlite-*.* \
|
|
|
|
show-ports:
|
|
@ ${DOCKER_RUN} emcc --show-ports
|
|
|
|
show-version:
|
|
@ ${DOCKER_RUN} emcc --version
|
|
|
|
show-files:
|
|
@ ${DOCKER_RUN} cat /root/.bashrc
|
|
|
|
hooks:
|
|
@ git config core.hooksPath githooks
|
|
|
|
js:
|
|
@ echo -e "\e[33mBuilding JS"
|
|
@ npx babel source --out-dir .
|
|
@ find source -name "*.js" | while read JS; \
|
|
do cp $${JS} $$(basename $${JS%.js}.mjs); \
|
|
sed -i -E "s~\\b(import.+ from )(['\"])([^'\"]+)\2~\1\2\3.mjs\2~g" $$(basename $${JS%.js}.mjs); \
|
|
sed -i -E "s~\\brequire(\()(['\"])([^'\"]+)\2(\))~(await import\1\2\3.mjs\2\4).default~g" $$(basename $${JS%.js}.mjs); \
|
|
done;
|
|
|
|
image:
|
|
@ docker-compose build
|
|
|
|
pull-image:
|
|
@ docker-compose pull
|
|
|
|
push-image:
|
|
@ docker-compose push
|
|
|
|
demo: php-web-drupal.js
|
|
make js
|
|
cd docs-source && brunch b -p
|
|
|
|
NPM_PUBLISH_DRY?=--dry-run
|
|
|
|
publish:
|
|
npm publish ${NPM_PUBLISH_DRY}
|
|
|
|
########### NOPS ###########
|
|
third_party/php${PHP_VERSION}-src/**.c:
|
|
third_party/php${PHP_VERSION}-src/**.h:
|
|
source/**.c:
|
|
source/**.h:
|