Files

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: