-php: check $(bindir)/php
-
-$(srcdir)/php-versions.json: $(srcdir)/php-version.php
- curl -Sso $@ http://php.net/releases/active.php
-
-$(srcdir)/php-$(PHP_VERSION)/configure: | $(srcdir)/php-versions.json
- curl -Ss $(PHP_MIRROR)/php-$(PHP_VERSION).tar.bz2 | tar xj -C $(srcdir)
-
-$(srcdir)/php-$(PHP_VERSION)/Makefile: $(srcdir)/php-$(PHP_VERSION)/configure | $(srcdir)/php-versions.json
+.PHONY: php
+php: check $(bindir)/php | $(PECL_INI)
+ -for EXT_SONAME in $(extdir)/*.so; do \
+ EXT_SONAME=$$(basename $$EXT_SONAME); \
+ if ! grep -q extension=$$EXT_SONAME $(PECL_INI); then \
+ echo extension=$$EXT_SONAME >> $(PECL_INI); \
+ fi \
+ done
+
+$(PHP_VERSIONS_JSON): $(srcdir)/php-version.php
+ curl -Sso $@ "http://php.net/releases/index.php?json&version=$(PHP_VERSION_MAJOR)&max=-1"
+
+$(srcdir)/php-$(PHP_VERSION)/configure: | $(PHP_VERSIONS_JSON)
+ if test $(PHP_VERSION) = "master"; then \
+ cd $(srcdir) && git clone --depth 1 -b master https://github.com/php/php-src php-master && cd php-master && ./buildconf; \
+ else \
+ curl -Ss $(PHP_MIRROR)/php-$(PHP_VERSION).tar.bz2 | tar xj -C $(srcdir); \
+ fi
+
+$(srcdir)/php-$(PHP_VERSION)/Makefile: $(srcdir)/php-$(PHP_VERSION)/configure | $(PHP_VERSIONS_JSON)