From f6dba50f57a5e8de6d75b8168f988104991ebaeb Mon Sep 17 00:00:00 2001 From: Ben Fuhrmannek Date: Tue, 11 Jan 2022 17:46:40 +0100 Subject: make src-dir variable in makefile and use bash as default shell --- Makefile | 69 +++++++++++++++++++++++++++++++++------------------------------- 1 file changed, 36 insertions(+), 33 deletions(-) (limited to 'Makefile') diff --git a/Makefile b/Makefile index e7b0a1c..cbe9b3b 100644 --- a/Makefile +++ b/Makefile @@ -1,58 +1,61 @@ .DEFAULT_GOAL=help .PHONY=help +SHELL = /bin/bash + +SRC := src clean: ## clean everything - make -C src clean - cd src; phpize --clean + make -C $(SRC) clean + cd $(SRC); phpize --clean release: ## compile with releases flags - cd src; phpize - cd src; ./configure --enable-snuffleupagus - make -C src -j4 clean all + cd $(SRC); phpize + cd $(SRC); ./configure --enable-snuffleupagus + make -C $(SRC) -j4 clean all install: release ## compile and install snuffleupagus - make -C src install + make -C $(SRC) install compile_debug: ## compile a debug build - cd src; if [[ ! -f configure ]]; then phpize; fi; \ - ./configure --enable-snuffleupagus --enable-debug --enable-debug-stderr - make -C src -j4 clean all + cd $(SRC); if [[ ! -f configure ]]; then phpize; fi; \ + ./configure --enable-snuffleupagus --enable-debug --enable-debug-stderr && \ + make clean ; make -j4 DOCKER_IMAGE := php:latest docker: ## start docker container with current PHP - @echo "starting new docker container with snuffleupagus bind-mounted to /sp" + @echo "Starting new docker container with snuffleupagus bind-mounted to /sp" docker run -it -v "$$(pwd)":/sp $(DOCKER_IMAGE) /bin/bash linked-clone: - @if [[ "$(CLONE)" == "" ]]; then echo "Please provide clone name, e.g.\n make linked-clone CLONE=php8.1"; exit 1; fi - @if [[ -d "src-$(CLONE)" ]]; then echo "Clone '$(CLONE)' already exists."; exit 1; fi - @echo "creating linked clone in 'src-$(CLONE)'..." + @if [[ "$(CLONE)" == "" ]]; then echo "==> Please provide clone name, e.g.\n make linked-clone CLONE=php8.1"; exit 1; fi + @if [[ -d "src-$(CLONE)" ]]; then echo "==> Clone '$(CLONE)' already exists."; exit 1; fi + @echo "==> CREATING LINKED CLONE IN 'src-$(CLONE)' <==" mkdir "src-$(CLONE)"; cd "src-$(CLONE)"; \ - SRC=../src; ln -s $$SRC/*.[hc] $$SRC/config.m4 $$SRC/snuffleupagus.php $$SRC/Makefile.frag $$SRC/*.re .; \ - cp -r $$SRC/tests . - @echo "done. go ahead and do phpize/configure/make" + SRCDIR=../src; ln -s $$SRC/*.[hc] $$SRCDIR/config.m4 $$SRCDIR/snuffleupagus.php $$SRCDIR/Makefile.frag $$SRCDIR/*.re .; \ + cp -r $$SRCDIR/tests . + @echo "==> DONE. <==\nCompile a debug build with\n make compile_debug SRC=src-$(CLONE)" tests: release ## compile a release build and run the testsuite - TEST_PHP_ARGS='-q' REPORT_EXIT_STATUS=1 SP_SKIP_OLD_PHP_CHECK=1 make -C src test + TEST_PHP_ARGS='-q' REPORT_EXIT_STATUS=1 SP_SKIP_OLD_PHP_CHECK=1 make -C $(SRC) test coverage: ## compile snuffleugpaus, and run the testsuite with coverage - cd src; phpize + cd $(SRC); phpize ifeq ($(CC),clang) - cd src; CFLAGS="-fprofile-instr-generate -fcoverage-mapping" ./configure --enable-snuffleupagus - make -C src - sed -i "s/\$$ext_params -d display_errors=0 -r/-d display_errors=0 -r/" src/run-tests.php - LLVM_PROFILE_FILE="sp_%p_%m.profraw" TEST_PHP_ARGS='-q' REPORT_EXIT_STATUS=1 make -C src test - llvm-profdata-4.0 merge ./src/*.profraw -o ./src/sp.profdata - llvm-cov report -instr-profile=./src/sp.profdata ./src/modules/snuffleupagus.so + cd $(SRC); CFLAGS="-fprofile-instr-generate -fcoverage-mapping" ./configure --enable-snuffleupagus + make -C $(SRC) + sed -i "s/\$$ext_params -d display_errors=0 -r/-d display_errors=0 -r/" $(SRC)/run-tests.php + LLVM_PROFILE_FILE="sp_%p_%m.profraw" TEST_PHP_ARGS='-q' REPORT_EXIT_STATUS=1 make -C $(SRC) test + llvm-profdata-4.0 merge ./$(SRC)/*.profraw -o ./$(SRC)/sp.profdata + llvm-cov report -instr-profile=./$(SRC)/sp.profdata ./$(SRC)/modules/snuffleupagus.so else - cd src; ./configure --enable-snuffleupagus --enable-coverage - make -C src - rm -Rf src/COV.html - sed -i "s/\$$ext_params -d display_errors=0 -r/-d display_errors=0 -r/" src/run-tests.php - TEST_PHP_ARGS='-q' REPORT_EXIT_STATUS=1 make -C src test - lcov --base-directory ./src --directory ./src -c -o ./src/COV.info --rc lcov_branch_coverage=1 - lcov --remove src/COV.info '/usr/*' --remove src/COV.info '*tweetnacl.c' -o src/COV.info --rc lcov_branch_coverage=1 - genhtml --show-details -o src/COV.html ./src/COV.info --branch-coverage + cd $(SRC); ./configure --enable-snuffleupagus --enable-coverage + make -C $(SRC) + rm -Rf $(SRC)/COV.html + sed -i "s/\$$ext_params -d display_errors=0 -r/-d display_errors=0 -r/" $(SRC)/run-tests.php + TEST_PHP_ARGS='-q' REPORT_EXIT_STATUS=1 make -C $(SRC) test + lcov --base-directory ./$(SRC) --directory ./$(SRC) -c -o ./$(SRC)/COV.info --rc lcov_branch_coverage=1 + lcov --remove $(SRC)/COV.info '/usr/*' --remove $(SRC)/COV.info '*tweetnacl.c' -o $(SRC)/COV.info --rc lcov_branch_coverage=1 + genhtml --show-details -o $(SRC)/COV.html ./$(SRC)/COV.info --branch-coverage endif bench: joomla ## run the benchmark @@ -63,7 +66,7 @@ joomla: fi cd joomla-cms; composer install >/dev/null 2>/dev/null echo "\nWith snuffleupagus:" - cd joomla-cms; time php -d "extension=../src/modules/snuffleupagus.so" -d "sp.configuration_file=../config/default.rules" libraries/vendor/phpunit/phpunit/phpunit --no-coverage >/dev/null + cd joomla-cms; time php -d "extension=../$(SRC)/modules/snuffleupagus.so" -d "sp.configuration_file=../config/default.rules" libraries/vendor/phpunit/phpunit/phpunit --no-coverage >/dev/null echo "\nWithout snuffleupagus:" cd joomla-cms; time php libraries/vendor/phpunit/phpunit/phpunit --no-coverage >/dev/null -- cgit v1.3