-$(srcdir)/pecl-$(PECL_EXTENSION):
- test -e $@ || ln -s $(CURDIR) $@
-
-$(srcdir)/pecl-$(PECL_EXTENSION)/config.m4:
- mkdir -p $(srcdir)/pecl-$(PECL_EXTENSION)
- curl -Ss $(PECL_MIRROR)/$(PECL_EXTENSION)$(if $(PECL_VERSION),/$(PECL_VERSION)) | tar xz --strip-components 1 -C $(srcdir)/pecl-$(PECL_EXTENSION)
-
-$(srcdir)/pecl-$(PECL_EXTENSION)/configure: $(srcdir)/pecl-$(PECL_EXTENSION)/config.m4
- cd $(srcdir)/pecl-$(PECL_EXTENSION) && $(bindir)/phpize
-
-$(srcdir)/pecl-$(PECL_EXTENSION)/Makefile: $(srcdir)/pecl-$(PECL_EXTENSION)/configure
- cd $(srcdir)/pecl-$(PECL_EXTENSION) && ./configure -C
-
-$(srcdir)/pecl-$(PECL_EXTENSION)/.libs/$(PECL_SONAME).so: $(srcdir)/pecl-$(PECL_EXTENSION)/Makefile
- cd $(srcdir)/pecl-$(PECL_EXTENSION) && make -j $(JOBS) || make
-
-$(extdir)/$(PECL_SONAME).so: $(srcdir)/pecl-$(PECL_EXTENSION)/.libs/$(PECL_SONAME).so
- cd $(srcdir)/pecl-$(PECL_EXTENSION) && make install
+$(PECL_DIR)/config.m4:
+ if test "$(PECL_VERSION)" = "master"; then \
+ if test -d $(PECL_DIR); then \
+ cd $(PECL_DIR); \
+ git pull; \
+ else \
+ git clone -b $(PECL_VERSION) \
+ $$(dirname $$(git remote get-url $$(git remote)))/$(PECL_EXTENSION) $(PECL_DIR); \
+ fi; \
+ else \
+ mkdir -p $(PECL_DIR); \
+ curl -Ss $(PECL_MIRROR)/$(PECL_EXTENSION)$(if $(PECL_VERSION),/$(PECL_VERSION)) \
+ | tar xz --strip-components 1 -C $(PECL_DIR); \
+ fi
+
+$(PECL_DIR)/configure: $(PECL_DIR)/config.m4
+ cd $(PECL_DIR) && $(bindir)/phpize
+
+$(PECL_DIR)/Makefile: $(PECL_DIR)/configure
+ 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)
+ cd $(PECL_DIR) && make -j $(JOBS) install INSTALL=install