add cppcheck
[m6w6/travis-pecl] / Makefile
index 7e0f3bf1120b22eca5c84a1564a135094f0b801a..4f315ee60e8b1b8178324c257a7b834b096ecf72 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -3,15 +3,19 @@ export
 PHP ?= 5.6
 JOBS ?= 2
 PHP_MIRROR ?= http://us1.php.net/distributions/
+TMPDIR ?= /tmp
+
+tmpnam := $(TMPDIR)/php-$(PHP)-$(shell env |grep -E '^with_|^enable_' | tr -c '[a-zA-Z_]' -)
+makdir := $(dir $(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST)))
 
 ifdef TRAVIS_JOB_NUMBER
 prefix ?= $(HOME)/job-$(TRAVIS_JOB_NUMBER)
 else
-prefix ?= $(HOME)
+prefix ?= $(tmpnam)
 endif
 exec_prefix ?= $(prefix)
 bindir = $(exec_prefix)/bin
-srcdir := $(dir $(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST)))
+srcdir := $(prefix)/src
 ifdef TRAVIS_BUILD_DIR
 curdir ?= $(TRAVIS_BUILD_DIR)
 else
@@ -37,7 +41,9 @@ PECL_DIR := $(if $(filter ext ext%, $(MAKECMDGOALS)), $(curdir), $(srcdir)/pecl-
 
 PHP_VERSION_MAJOR = $(firstword $(subst ., ,$(PHP)))
 PHP_VERSIONS_JSON = $(srcdir)/php-versions$(PHP_VERSION_MAJOR).json
-PHP_VERSION ?= $(shell test -e $(PHP_VERSIONS_JSON) && cat $(PHP_VERSIONS_JSON) | $(srcdir)/php-version.php $(PHP))
+PHP_VERSION ?= $(shell test -e $(PHP_VERSIONS_JSON) && cat $(PHP_VERSIONS_JSON) | $(makdir)/php-version.php $(PHP))
+
+CPPCHECK ?= -v -j $(JOBS) --std=c89 --enable=warning,portability,style --error-exitcode=42 --suppressions-list=$(makdir)/cppcheck.suppressions -I.
 
 .SUFFIXES:
 
@@ -56,7 +62,7 @@ check: $(PHP_VERSIONS_JSON)
 
 .PHONY: reconf
 reconf: check $(srcdir)/php-$(PHP_VERSION)/configure
-       cd $(srcdir)/php-$(PHP_VERSION) && ./configure -C --prefix=$(prefix)
+       cd $(srcdir)/php-$(PHP_VERSION) && ./configure --cache-file=config.cache --prefix=$(prefix)
 
 .PHONY: php
 php: check $(bindir)/php | $(PECL_INI)
@@ -67,7 +73,7 @@ php: check $(bindir)/php | $(PECL_INI)
                fi \
        done
 
-$(PHP_VERSIONS_JSON): $(srcdir)/php-version.php
+$(PHP_VERSIONS_JSON): $(makdir)/php-version.php | $(srcdir)
        curl -Sso $@ "http://php.net/releases/index.php?json&version=$(PHP_VERSION_MAJOR)&max=-1"
 
 $(srcdir)/php-$(PHP_VERSION)/configure: | $(PHP_VERSIONS_JSON)
@@ -78,7 +84,7 @@ $(srcdir)/php-$(PHP_VERSION)/configure: | $(PHP_VERSIONS_JSON)
        fi
 
 $(srcdir)/php-$(PHP_VERSION)/Makefile: $(srcdir)/php-$(PHP_VERSION)/configure | $(PHP_VERSIONS_JSON)
-       cd $(srcdir)/php-$(PHP_VERSION) && ./configure -C --prefix=$(prefix)
+       cd $(srcdir)/php-$(PHP_VERSION) && ./configure --cache-file=config.cache --prefix=$(prefix)
 
 $(srcdir)/php-$(PHP_VERSION)/sapi/cli/php: $(srcdir)/php-$(PHP_VERSION)/Makefile | $(PHP_VERSIONS_JSON)
        cd $(srcdir)/php-$(PHP_VERSION) && make -j $(JOBS) || make
@@ -86,7 +92,7 @@ $(srcdir)/php-$(PHP_VERSION)/sapi/cli/php: $(srcdir)/php-$(PHP_VERSION)/Makefile
 $(bindir)/php: $(srcdir)/php-$(PHP_VERSION)/sapi/cli/php | $(PHP_VERSIONS_JSON)
        cd $(srcdir)/php-$(PHP_VERSION) && make install
 
-$(with_config_file_scan_dir):
+$(srcdir) $(extdir) $(with_config_file_scan_dir):
        mkdir -p $@
 
 ## -- PECL
@@ -114,12 +120,12 @@ $(PECL_DIR)/configure: $(PECL_DIR)/config.m4
        cd $(PECL_DIR) && $(bindir)/phpize
 
 $(PECL_DIR)/Makefile: $(PECL_DIR)/configure
-       cd $(PECL_DIR) && ./configure -C
+       cd $(PECL_DIR) && ./configure --cache-file=config.cache
 
 $(PECL_DIR)/.libs/$(PECL_SONAME).so: $(PECL_DIR)/Makefile
        cd $(PECL_DIR) && make -j $(JOBS) || make
 
-$(extdir)/$(PECL_SONAME).so: $(PECL_DIR)/.libs/$(PECL_SONAME).so
+$(extdir)/$(PECL_SONAME).so: $(PECL_DIR)/.libs/$(PECL_SONAME).so $(extdir)
        cd $(PECL_DIR) && make install
 
 .PHONY: pecl
@@ -134,11 +140,15 @@ ext-rm: pecl-rm
 
 .PHONY: ext
 ext: pecl-check pecl
-       $(srcdir)/check-packagexml.php package.xml
+       $(makdir)/check-packagexml.php package.xml
 
-.PHONY: php
+.PHONY: test
 test: php
        REPORT_EXIT_STATUS=1 $(bindir)/php run-tests.php -q -p $(bindir)/php --set-timeout 300 --show-diff tests
 
+.PHONY: cppcheck
+cppcheck:
+       cppcheck $(CPPCHECK) $$(awk -F= '/^CPPFLAGS|^INCLUDES/{print $$2}' <Makefile) .
+
 pharext/%: $(PECL_INI) php | $(srcdir)/../%.ext.phar
        for phar in $|; do $(bindir)/php $$phar --prefix=$(prefix) --ini=$(PECL_INI); done