[Libreoffice-commits] core.git: apache-commons/ExternalProject_apache_commons_codec.mk apache-commons/ExternalProject_apache_commons_httpclient.mk apache-commons/ExternalProject_apache_commons_lang.mk apache-commons/ExternalProject_apache_commons_logging.mk beanshell/ExternalProject_beanshell.mk cairo/ExternalProject_cairo.mk cairo/ExternalProject_pixman.mk cppunit/ExternalProject_cppunit.mk curl/ExternalProject_curl.mk expat/ExternalProject_expat.mk fontconfig/ExternalProject_fontconfig.mk hsqldb/ExternalProject_hsqldb.mk hunspell/ExternalProject_hunspell.mk hyphen/ExternalProject_hyphen.mk icu/ExternalProject_icu.mk jfreereport/ExternalProject_jfreereport_flow_engine.mk jfreereport/ExternalProject_jfreereport_flute.mk jfreereport/ExternalProject_jfreereport_libbase.mk jfreereport/ExternalProject_jfreereport_libfonts.mk jfreereport/ExternalProject_jfreereport_libformula.mk jfreereport/ExternalProject_jfreereport_liblayout.mk jfreereport/ExternalProject_jfreereport_libloader.mk jfreerepor t/ExternalProject_jfreereport_librepository.mk jfreereport/ExternalProject_jfreereport_libserializer.mk jfreereport/ExternalProject_jfreereport_libxml.mk jfreereport/ExternalProject_jfreereport_sac.mk lcms2/ExternalProject_lcms2.mk libcdr/ExternalProject_libcdr.mk libexttextcat/ExternalProject_exttextcat.mk liblangtag/ExternalProject_langtag.mk libmspub/ExternalProject_libmspub.mk liborcus/ExternalProject_liborcus.mk libvisio/ExternalProject_libvisio.mk libwpd/ExternalProject_libwpd.mk libxml2/ExternalProject_xml2.mk libxmlsec/ExternalProject_xmlsec.mk libxslt/ExternalProject_xslt.mk lpsolve/ExternalProject_lpsolve.mk mythes/ExternalProject_mythes.mk nss/ExternalProject_nss.mk openldap/ExternalProject_openldap.mk openssl/ExternalProject_openssl.mk postgresql/ExternalProject_postgresql.mk python3/ExternalProject_python3.mk pyuno/CustomTarget_zipcore.mk redland/ExternalProject_raptor.mk redland/ExternalProject_rasqal.mk redland/ExternalProject_redland.mk rhino/ExternalProject_ rhino.mk solenv/gbuild tomcat/ExternalProject_tomcat.mk xpdf/ExternalProject_xpdf.mk

Norbert Thiebaud nthiebaud at gmail.com
Fri Feb 22 00:26:15 PST 2013


 apache-commons/ExternalProject_apache_commons_codec.mk      |    6 
 apache-commons/ExternalProject_apache_commons_httpclient.mk |    8 -
 apache-commons/ExternalProject_apache_commons_lang.mk       |    6 
 apache-commons/ExternalProject_apache_commons_logging.mk    |    6 
 beanshell/ExternalProject_beanshell.mk                      |    6 
 cairo/ExternalProject_cairo.mk                              |   13 +
 cairo/ExternalProject_pixman.mk                             |   16 +-
 cppunit/ExternalProject_cppunit.mk                          |   58 ++++----
 curl/ExternalProject_curl.mk                                |   52 +++----
 expat/ExternalProject_expat.mk                              |    8 -
 fontconfig/ExternalProject_fontconfig.mk                    |   20 +-
 hsqldb/ExternalProject_hsqldb.mk                            |   22 +--
 hunspell/ExternalProject_hunspell.mk                        |   17 +-
 hyphen/ExternalProject_hyphen.mk                            |   16 +-
 icu/ExternalProject_icu.mk                                  |   69 +++++-----
 jfreereport/ExternalProject_jfreereport_flow_engine.mk      |   30 ++--
 jfreereport/ExternalProject_jfreereport_flute.mk            |   30 ++--
 jfreereport/ExternalProject_jfreereport_libbase.mk          |   30 ++--
 jfreereport/ExternalProject_jfreereport_libfonts.mk         |   30 ++--
 jfreereport/ExternalProject_jfreereport_libformula.mk       |   30 ++--
 jfreereport/ExternalProject_jfreereport_liblayout.mk        |   34 ++--
 jfreereport/ExternalProject_jfreereport_libloader.mk        |   30 ++--
 jfreereport/ExternalProject_jfreereport_librepository.mk    |   30 ++--
 jfreereport/ExternalProject_jfreereport_libserializer.mk    |   30 ++--
 jfreereport/ExternalProject_jfreereport_libxml.mk           |   30 ++--
 jfreereport/ExternalProject_jfreereport_sac.mk              |   26 +--
 lcms2/ExternalProject_lcms2.mk                              |   34 ++--
 libcdr/ExternalProject_libcdr.mk                            |   78 +++++------
 libexttextcat/ExternalProject_exttextcat.mk                 |   14 +-
 liblangtag/ExternalProject_langtag.mk                       |   32 ++--
 libmspub/ExternalProject_libmspub.mk                        |   82 ++++++------
 liborcus/ExternalProject_liborcus.mk                        |   66 ++++-----
 libvisio/ExternalProject_libvisio.mk                        |   76 +++++------
 libwpd/ExternalProject_libwpd.mk                            |   42 +++---
 libxml2/ExternalProject_xml2.mk                             |   50 +++----
 libxmlsec/ExternalProject_xmlsec.mk                         |   58 ++++----
 libxslt/ExternalProject_xslt.mk                             |   58 ++++----
 lpsolve/ExternalProject_lpsolve.mk                          |   30 ++--
 mythes/ExternalProject_mythes.mk                            |   12 -
 nss/ExternalProject_nss.mk                                  |   82 ++++++------
 openldap/ExternalProject_openldap.mk                        |   45 +++---
 openssl/ExternalProject_openssl.mk                          |   55 ++++----
 postgresql/ExternalProject_postgresql.mk                    |   36 ++---
 python3/ExternalProject_python3.mk                          |   34 ++--
 pyuno/CustomTarget_zipcore.mk                               |    2 
 redland/ExternalProject_raptor.mk                           |   67 ++++-----
 redland/ExternalProject_rasqal.mk                           |   58 ++++----
 redland/ExternalProject_redland.mk                          |   66 ++++-----
 rhino/ExternalProject_rhino.mk                              |   28 ++--
 solenv/gbuild/ExternalProject.mk                            |   14 ++
 solenv/gbuild/Helper.mk                                     |    4 
 solenv/gbuild/gbuild.mk                                     |    6 
 tomcat/ExternalProject_tomcat.mk                            |   25 +--
 xpdf/ExternalProject_xpdf.mk                                |   37 ++---
 54 files changed, 934 insertions(+), 910 deletions(-)

New commits:
commit ed26c01be15ebc9031ee5ef709d88d524f0fc16d
Author: Norbert Thiebaud <nthiebaud at gmail.com>
Date:   Thu Feb 21 08:15:39 2013 -0600

    quiet external module build log unless failure
    
    ExternalProject usually involve a configure and a make
    step that produce a bunch of output usually irrelevant
    including a large number of warning and other mess.
    now that everything is pretty much in tail_build
    these output get interleaved with useful output from
    the build of the product and actually drown them in a logorrhea
    of messy noise.
    This store the output of external modules in a log file
    and only print them as a whole if the module failed do build.
    on a non-verbose build.
    
    Change-Id: I3abfcccd6d16821a9e061a71e031b427cc283647
    Reviewed-on: https://gerrit.libreoffice.org/2304
    Reviewed-by: Norbert Thiebaud <nthiebaud at gmail.com>
    Tested-by: Norbert Thiebaud <nthiebaud at gmail.com>

diff --git a/apache-commons/ExternalProject_apache_commons_codec.mk b/apache-commons/ExternalProject_apache_commons_codec.mk
index 59d53e5..6a92937 100644
--- a/apache-commons/ExternalProject_apache_commons_codec.mk
+++ b/apache-commons/ExternalProject_apache_commons_codec.mk
@@ -16,7 +16,7 @@ $(eval $(call gb_ExternalProject_register_targets,apache_commons_codec,\
 ))
 
 $(call gb_ExternalProject_get_state_target,apache_commons_codec,build) :
-	cd "$(call gb_UnpackedTarball_get_dir,apache_commons_codec)" && \
+	$(call gb_ExternalProject_run,build,\
 	ANT_OPTS="$$ANT_OPTS -Dfile.encoding=ISO-8859-1" \
 	$(ICECREAM_RUN) "$(ANT)" \
 		-q \
@@ -28,7 +28,7 @@ $(call gb_ExternalProject_get_state_target,apache_commons_codec,build) :
 				-Dant.build.javac.target=$(JAVA_TARGET_VER) \
 		) \
 		$(if $(debug),-Dbuild.debug="on") \
-		jar && \
-	touch $@
+		jar \
+	)
 
 # vim: set noet sw=4 ts=4:
diff --git a/apache-commons/ExternalProject_apache_commons_httpclient.mk b/apache-commons/ExternalProject_apache_commons_httpclient.mk
index c3c1513..5b67c35 100644
--- a/apache-commons/ExternalProject_apache_commons_httpclient.mk
+++ b/apache-commons/ExternalProject_apache_commons_httpclient.mk
@@ -9,7 +9,7 @@
 
 $(eval $(call gb_ExternalProject_ExternalProject,apache_commons_httpclient))
 
-$(eval $(call gb_ExternalProject_use_unpacked,apache_commons_codec,apache_commons_httpclient))
+$(eval $(call gb_ExternalProject_use_unpacked,apache_commons_httpclient,apache_commons_httpclient))
 
 $(eval $(call gb_ExternalProject_use_external,apache_commons_httpclient,commons-codec))
 $(eval $(call gb_ExternalProject_use_external,apache_commons_httpclient,commons-logging))
@@ -19,7 +19,7 @@ $(eval $(call gb_ExternalProject_register_targets,apache_commons_httpclient,\
 ))
 
 $(call gb_ExternalProject_get_state_target,apache_commons_httpclient,build) :
-	cd "$(call gb_UnpackedTarball_get_dir,apache_commons_httpclient)" && \
+	$(call gb_ExternalProject_run,build,\
 	ANT_OPTS="$$ANT_OPTS -Dfile.encoding=ISO-8859-1" \
 	$(ICECREAM_RUN) "$(ANT)" \
 		-q \
@@ -33,7 +33,7 @@ $(call gb_ExternalProject_get_state_target,apache_commons_httpclient,build) :
 				-Dant.build.javac.target=$(JAVA_TARGET_VER) \
 		) \
 		$(if $(debug),-Dbuild.debug="on") \
-		dist && \
-	touch $@
+		dist \
+	)
 
 # vim: set noet sw=4 ts=4:
diff --git a/apache-commons/ExternalProject_apache_commons_lang.mk b/apache-commons/ExternalProject_apache_commons_lang.mk
index b343dc7..283375e 100644
--- a/apache-commons/ExternalProject_apache_commons_lang.mk
+++ b/apache-commons/ExternalProject_apache_commons_lang.mk
@@ -16,7 +16,7 @@ $(eval $(call gb_ExternalProject_register_targets,apache_commons_lang,\
 ))
 
 $(call gb_ExternalProject_get_state_target,apache_commons_lang,build) :
-	cd "$(call gb_UnpackedTarball_get_dir,apache_commons_lang)" && \
+	$(call gb_ExternalProject_run,build,\
 	ANT_OPTS="$$ANT_OPTS -Dfile.encoding=ISO-8859-1" \
 	$(ICECREAM_RUN) "$(ANT)" \
 		-q \
@@ -28,7 +28,7 @@ $(call gb_ExternalProject_get_state_target,apache_commons_lang,build) :
 				-Dant.build.javac.target=$(JAVA_TARGET_VER) \
 		) \
 		$(if $(debug),-Dbuild.debug="on") \
-		jar && \
-	touch $@
+		jar \
+	)
 
 # vim: set noet sw=4 ts=4:
diff --git a/apache-commons/ExternalProject_apache_commons_logging.mk b/apache-commons/ExternalProject_apache_commons_logging.mk
index 6895e39..22ae742 100644
--- a/apache-commons/ExternalProject_apache_commons_logging.mk
+++ b/apache-commons/ExternalProject_apache_commons_logging.mk
@@ -23,7 +23,7 @@ $(eval $(call gb_ExternalProject_register_targets,apache_commons_logging,\
 ))
 
 $(call gb_ExternalProject_get_state_target,apache_commons_logging,build) :
-	cd "$(call gb_UnpackedTarball_get_dir,apache_commons_logging)" && \
+	$(call gb_ExternalProject_run,build,\
 	ANT_OPTS="$$ANT_OPTS -Dfile.encoding=ISO-8859-1" \
 	$(ICECREAM_RUN) "$(ANT)" \
 		-q \
@@ -39,7 +39,7 @@ $(call gb_ExternalProject_get_state_target,apache_commons_logging,build) :
 				-Dant.build.javac.target=$(JAVA_TARGET_VER) \
 		) \
 		$(if $(debug),-Dbuild.debug="on") \
-		compile build-jar && \
-	touch $@
+		compile build-jar \
+	)
 
 # vim: set noet sw=4 ts=4:
diff --git a/beanshell/ExternalProject_beanshell.mk b/beanshell/ExternalProject_beanshell.mk
index 94b1d3a..ce66dea 100644
--- a/beanshell/ExternalProject_beanshell.mk
+++ b/beanshell/ExternalProject_beanshell.mk
@@ -16,7 +16,7 @@ $(eval $(call gb_ExternalProject_register_targets,beanshell,\
 ))
 
 $(call gb_ExternalProject_get_state_target,beanshell,build) :
-	cd "$(call gb_UnpackedTarball_get_dir,beanshell)" && \
+	$(call gb_ExternalProject_run,build,\
 	$(ICECREAM_RUN) "$(ANT)" \
 		-q \
 		-f build.xml \
@@ -26,7 +26,7 @@ $(call gb_ExternalProject_get_state_target,beanshell,build) :
 			,-Dant.build.javac.source=$(JAVA_SOURCE_VER) \
 				-Dant.build.javac.target=$(JAVA_TARGET_VER) \
 		) \
-		$(if $(debug),-Dbuild.debug="on") && \
-	touch $@
+		$(if $(debug),-Dbuild.debug="on") \
+	)
 
 # vim: set noet sw=4 ts=4:
diff --git a/cairo/ExternalProject_cairo.mk b/cairo/ExternalProject_cairo.mk
index 54a220b..8d21189 100644
--- a/cairo/ExternalProject_cairo.mk
+++ b/cairo/ExternalProject_cairo.mk
@@ -20,9 +20,10 @@ $(eval $(call gb_ExternalProject_register_targets,cairo,\
 ifeq ($(OS)$(COM),WNTMSC)
 
 $(call gb_ExternalProject_get_state_target,cairo,build) :
-	cd $(EXTERNAL_WORKDIR) \
-	&& $(MAKE) -f Makefile.win32 CFG=release ZLIB3RDLIB=zlib.lib \
-	&& touch $@
+	$(call gb_ExternalProject_run,build,\
+	$(MAKE) -f Makefile.win32 CFG=release ZLIB3RDLIB=zlib.lib \
+	)
+
 
 else
 
@@ -30,8 +31,8 @@ else
 # from cairo.h in non-overridable way
 
 $(call gb_ExternalProject_get_state_target,cairo,build) :
-	cd $(EXTERNAL_WORKDIR) \
-	&& ./configure \
+	$(call gb_ExternalProject_run,build,\
+	./configure \
 		$(if $(debug),STRIP=" ") \
 		CFLAGS="$(if $(debug),-g) $(SOLARINC)" \
 		LDFLAGS='-L$(OUTDIR)/lib' \
@@ -51,7 +52,7 @@ $(call gb_ExternalProject_get_state_target,cairo,build) :
 		$(if $(filter MACOSX,$(OS)),--prefix=/@.__________________________________________________OOO) \
 	&& cp cairo-version.h src/cairo-version.h \
 	&& cd src && $(MAKE) \
-	&& touch $@
+	)
 
 endif
 
diff --git a/cairo/ExternalProject_pixman.mk b/cairo/ExternalProject_pixman.mk
index 4cc3dc9..c8cad9b 100644
--- a/cairo/ExternalProject_pixman.mk
+++ b/cairo/ExternalProject_pixman.mk
@@ -18,27 +18,27 @@ $(eval $(call gb_ExternalProject_register_targets,pixman,\
 ifeq ($(OS)$(COM),WNTMSC)
 
 $(call gb_ExternalProject_get_state_target,pixman,build) :
-	cd $(EXTERNAL_WORKDIR)/pixman \
-	&& $(MAKE) -f Makefile.win32 MMX=on SSE2=on CFG=release \
-	&& touch $@
+	$(call gb_ExternalProject_run,build,\
+		$(MAKE) -f Makefile.win32 MMX=on SSE2=on CFG=release \
+	,pixman)
 
 else
 
 # ANDROID:
-# The pixman-cpu.c code wants to read /proc/<pid>/auxv, but 
+# The pixman-cpu.c code wants to read /proc/<pid>/auxv, but
 # the Android headers don't define Elf32_auxv_t.
 #
 # Maybe we should instead just patch the arm_has_* booleans in
 # pixman-cpu.c to be hardcoded as TRUE and patch out the run-time
 # check?
 $(call gb_ExternalProject_get_state_target,pixman,build) :
-	cd $(EXTERNAL_WORKDIR) \
-	&& ./configure \
+	$(call gb_ExternalProject_run,build,\
+		./configure \
 		$(if $(filter MACOSX IOS,$(OS)),--disable-shared,--disable-static) \
 		$(if $(filter ANDROID,$(OS)),--disable-arm-simd --disable-arm-neon --disable-arm-iwmmxt) \
 		$(if $(filter YES,$(CROSS_COMPILING)),--build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM)) \
-	&& $(MAKE) \
-	&& touch $@
+		&& $(MAKE) \
+	)
 
 endif
 
diff --git a/cppunit/ExternalProject_cppunit.mk b/cppunit/ExternalProject_cppunit.mk
index b2f75e8..45ed225 100644
--- a/cppunit/ExternalProject_cppunit.mk
+++ b/cppunit/ExternalProject_cppunit.mk
@@ -19,40 +19,40 @@ $(eval $(call gb_ExternalProject_register_targets,cppunit,\
 ifeq ($(OS)$(COM),WNTMSC)
 ifeq ($(VCVER),90)
 $(call gb_ExternalProject_get_state_target,cppunit,build) :
-	cd $(EXTERNAL_WORKDIR)/src/cppunit \
-	&& $(COMPATH)/vcpackages/vcbuild.exe cppunit_dll.vcproj "Release|Win32" \
-	&& cd ../DllPlugInTester \
-	&& $(COMPATH)/vcpackages/vcbuild.exe DllPlugInTester.vcproj "Release|Win32" \
-	&& touch $@
+	$(call gb_ExternalProject_run,build,\
+		$(COMPATH)/vcpackages/vcbuild.exe cppunit_dll.vcproj "Release|Win32" \
+		&& cd ../DllPlugInTester \
+		&& $(COMPATH)/vcpackages/vcbuild.exe DllPlugInTester.vcproj "Release|Win32" \
+	,src/cppunit)
 else
 $(call gb_ExternalProject_get_state_target,cppunit,build) :
-	cd $(EXTERNAL_WORKDIR)/src/cppunit \
-	&& msbuild.exe cppunit_dll.vcxproj /p:Configuration=Release \
-	$(if $(filter 110,$(VCVER)),/p:PlatformToolset=v110 /p:VisualStudioVersion=11.0) \
-	&& cd ../DllPlugInTester \
-	&& msbuild.exe DllPlugInTester.vcxproj /p:Configuration=Release \
-	$(if $(filter 110,$(VCVER)),/p:PlatformToolset=v110 /p:VisualStudioVersion=11.0) \
-	&& touch $@
+	$(call gb_ExternalProject_run,build,\
+		msbuild.exe cppunit_dll.vcxproj /p:Configuration=Release \
+		$(if $(filter 110,$(VCVER)),/p:PlatformToolset=v110 /p:VisualStudioVersion=11.0) \
+		&& cd ../DllPlugInTester \
+		&& msbuild.exe DllPlugInTester.vcxproj /p:Configuration=Release \
+		$(if $(filter 110,$(VCVER)),/p:PlatformToolset=v110 /p:VisualStudioVersion=11.0) \
+	,src/cppunit)
 endif
 else
 $(call gb_ExternalProject_get_state_target,cppunit,build) :
-	cd $(EXTERNAL_WORKDIR) \
-	&& ./configure \
-		--disable-dependency-tracking \
-		$(if $(filter TRUE,$(DISABLE_DYNLOADING)),--disable-shared,--disable-static) \
-		--disable-doxygen \
-		--disable-html-docs \
-		--disable-latex-docs \
-		$(if $(filter YES,$(CROSS_COMPILING)),--build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM)) \
-		$(if $(filter MACOSX,$(OS)),--prefix=/@.__________________________________________________NONE) \
-		$(if $(filter WNT,$(OS)),LDFLAGS="-Wl$(COMMA)--enable-runtime-pseudo-reloc-v2") \
-		$(if $(filter SOLARIS,$(OS)),LIBS="-lm") \
-		$(if $(filter ANDROID,$(OS)),LIBS="-lgnustl_shared -lm") \
-		CXXFLAGS="$(if $(filter GCC,$(COM)),$(if $(filter LINUX FREEBSD OPENBSD NETBSD DRAGONFLY ANDROID,$(OS)),$(if $(filter TRUE,$(ENABLE_DBGUTIL)),-D_GLIBCXX_DEBUG),$(if $(filter WNT,$(OS)),-mthreads))) \
-		$(if $(debug),-g)" \
-	&& cd src \
-	&& $(MAKE) \
-	&& touch $@
+	$(call gb_ExternalProject_run,build,\
+		./configure \
+			--disable-dependency-tracking \
+			$(if $(filter TRUE,$(DISABLE_DYNLOADING)),--disable-shared,--disable-static) \
+			--disable-doxygen \
+			--disable-html-docs \
+			--disable-latex-docs \
+			$(if $(filter YES,$(CROSS_COMPILING)),--build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM)) \
+			$(if $(filter MACOSX,$(OS)),--prefix=/@.__________________________________________________NONE) \
+			$(if $(filter WNT,$(OS)),LDFLAGS="-Wl$(COMMA)--enable-runtime-pseudo-reloc-v2") \
+			$(if $(filter SOLARIS,$(OS)),LIBS="-lm") \
+			$(if $(filter ANDROID,$(OS)),LIBS="-lgnustl_shared -lm") \
+			CXXFLAGS="$(if $(filter GCC,$(COM)),$(if $(filter LINUX FREEBSD OPENBSD NETBSD DRAGONFLY ANDROID,$(OS)),$(if $(filter TRUE,$(ENABLE_DBGUTIL)),-D_GLIBCXX_DEBUG),$(if $(filter WNT,$(OS)),-mthreads))) \
+			$(if $(debug),-g)" \
+		&& cd src \
+		&& $(MAKE) \
+	)
 endif
 
 # vim: set noet sw=4 ts=4:
diff --git a/curl/ExternalProject_curl.mk b/curl/ExternalProject_curl.mk
index e3df128..a503c15 100644
--- a/curl/ExternalProject_curl.mk
+++ b/curl/ExternalProject_curl.mk
@@ -18,40 +18,40 @@ $(eval $(call gb_ExternalProject_register_targets,curl,\
 ifneq ($(OS),WNT)
 
 $(call gb_ExternalProject_get_state_target,curl,build):
-	cd $(EXTERNAL_WORKDIR) \
-	&& PATH=$(OUTDIR_FOR_BUILD)/bin:$$PATH ./configure --with-nss --without-ssl \
-	--without-libidn --enable-ftp --enable-ipv6 --enable-http --disable-gopher \
-	--disable-file --disable-ldap --disable-telnet --disable-dict --without-libssh2 \
-	$(if $(filter YES,$(CROSS_COMPILING)),--build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM)) \
-	$(if $(filter TRUE,$(DISABLE_DYNLOADING)),--disable-shared,--disable-static) \
-	$(if $(filter TRUE,$(ENABLE_DEBUG)),--enable-debug) \
-	$(if $(SYSBASE),CPPFLAGS="-I$(SYSBASE)/usr/include" LDFLAGS="-L$(SYSBASE)/usr/lib") \
-	&& cd lib \
-	&& $(MAKE) \
-	&& touch $@
+	$(call gb_ExternalProject_run,build,\
+		PATH=$(OUTDIR_FOR_BUILD)/bin:$$PATH ./configure --with-nss --without-ssl \
+			--without-libidn --enable-ftp --enable-ipv6 --enable-http --disable-gopher \
+			--disable-file --disable-ldap --disable-telnet --disable-dict --without-libssh2 \
+			$(if $(filter YES,$(CROSS_COMPILING)),--build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM)) \
+			$(if $(filter TRUE,$(DISABLE_DYNLOADING)),--disable-shared,--disable-static) \
+			$(if $(filter TRUE,$(ENABLE_DEBUG)),--enable-debug) \
+			$(if $(SYSBASE),CPPFLAGS="-I$(SYSBASE)/usr/include" LDFLAGS="-L$(SYSBASE)/usr/lib") \
+		&& cd lib \
+		&& $(MAKE) \
+	)
 
 else ifeq ($(OS)$(COM),WNTGCC)
 
 $(call gb_ExternalProject_get_state_target,curl,build):
-	cd $(EXTERNAL_WORKDIR) \
-	&& PATH=$(OUTDIR_FOR_BUILD)/bin:$$PATH ./configure --with-nss --without-ssl --enable-ftp --enable-ipv6 --disable-http --disable-gopher \
-	--disable-file --disable-ldap --disable-telnet --disable-dict --build=i586-pc-mingw32 --host=i586-pc-mingw32 \
-	$(if $(filter TRUE,$(ENABLE_DEBUG)),--enable-debug) \
-	CC="$(CC) -mthreads $(if $(filter YES,$(MINGW_SHARED_GCCLIB)),-shared-libgcc)" \
-	LIBS="-lws2_32 -lwinmm $(if $(filter YES,$(MINGW_SHARED_GXXLIB)),$(MINGW_SHARED_LIBSTDCPP))" \
-	LDFLAGS="$(patsubst ;, -L,$(ILIB))" \
-	CPPFLAGS="$(INCLUDE)" OBJDUMP="objdump" \
-	&& cd lib \
-	&& $(MAKE) \
-	&& touch $@
+	$(call gb_ExternalProject_run,build,\
+		PATH=$(OUTDIR_FOR_BUILD)/bin:$$PATH ./configure --with-nss --without-ssl --enable-ftp --enable-ipv6 --disable-http --disable-gopher \
+			--disable-file --disable-ldap --disable-telnet --disable-dict --build=i586-pc-mingw32 --host=i586-pc-mingw32 \
+			$(if $(filter TRUE,$(ENABLE_DEBUG)),--enable-debug) \
+			CC="$(CC) -mthreads $(if $(filter YES,$(MINGW_SHARED_GCCLIB)),-shared-libgcc)" \
+			LIBS="-lws2_32 -lwinmm $(if $(filter YES,$(MINGW_SHARED_GXXLIB)),$(MINGW_SHARED_LIBSTDCPP))" \
+			LDFLAGS="$(patsubst ;, -L,$(ILIB))" \
+			CPPFLAGS="$(INCLUDE)" OBJDUMP="objdump" \
+		&& cd lib \
+		&& $(MAKE) \
+	)
 
 else ifeq ($(COM),MSC)
 
 $(call gb_ExternalProject_get_state_target,curl,build):
-	cd $(EXTERNAL_WORKDIR)/lib \
-	&& MAKEFLAGS= LIB="$(ILIB)" nmake -f Makefile.vc9 cfg=release-dll \
-		EXCFLAGS="/EHa /Zc:wchar_t- /D_CRT_SECURE_NO_DEPRECATE /DUSE_WINDOWS_SSPI $(SOLARINC)" $(if $(filter X86_64,$(CPUNAME)),MACHINE=X64) \
-	&& touch $@
+	$(call gb_ExternalProject_run,build,\
+		MAKEFLAGS= LIB="$(ILIB)" nmake -f Makefile.vc9 cfg=release-dll \
+			EXCFLAGS="/EHa /Zc:wchar_t- /D_CRT_SECURE_NO_DEPRECATE /DUSE_WINDOWS_SSPI $(SOLARINC)" $(if $(filter X86_64,$(CPUNAME)),MACHINE=X64) \
+	,lib)
 
 endif
 
diff --git a/expat/ExternalProject_expat.mk b/expat/ExternalProject_expat.mk
index d02e201..6b5361c 100644
--- a/expat/ExternalProject_expat.mk
+++ b/expat/ExternalProject_expat.mk
@@ -16,9 +16,9 @@ $(eval $(call gb_ExternalProject_register_targets,expat,\
 ))
 
 $(call gb_ExternalProject_get_state_target,expat,configure) :
-	cd $(EXTERNAL_WORKDIR) \
-	&& ./configure \
-		$(if $(filter YES,$(CROSS_COMPILING)),--build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM)) \
-	&& touch $@
+	$(call gb_ExternalProject_run,configure,\
+		./configure \
+			$(if $(filter YES,$(CROSS_COMPILING)),--build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM)) \
+	,,expat_configure.log)
 
 # vim: set noet sw=4 ts=4:
diff --git a/fontconfig/ExternalProject_fontconfig.mk b/fontconfig/ExternalProject_fontconfig.mk
index d882ecf..a09e923 100644
--- a/fontconfig/ExternalProject_fontconfig.mk
+++ b/fontconfig/ExternalProject_fontconfig.mk
@@ -20,16 +20,16 @@ $(eval $(call gb_ExternalProject_register_targets,fontconfig,\
 ))
 
 $(call gb_ExternalProject_get_state_target,fontconfig,build) :
-	cd $(EXTERNAL_WORKDIR) \
-	&& CFLAGS="$(if $(debug),-g) $(gb_VISIBILITY_FLAGS)" $(if $(filter ANDROID,$(OS)),LIBS="-lm") \
+	$(call gb_ExternalProject_run,build,\
+		CFLAGS="$(if $(debug),-g) $(gb_VISIBILITY_FLAGS)" $(if $(filter ANDROID,$(OS)),LIBS="-lm") \
 		./configure \
-		--disable-shared \
-		--with-arch=arm \
-		--with-expat-includes=$(OUTDIR)/inc/external/expat \
-		--with-expat-lib=$(OUTDIR)/lib \
-		--with-freetype-config=$(OUTDIR)/bin/freetype-config \
-		--build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM) \
-	&& $(MAKE) \
-	&& touch $@
+			--disable-shared \
+			--with-arch=arm \
+			--with-expat-includes=$(OUTDIR)/inc/external/expat \
+			--with-expat-lib=$(OUTDIR)/lib \
+			--with-freetype-config=$(OUTDIR)/bin/freetype-config \
+			--build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM) \
+		&& $(MAKE) \
+	)
 
 # vim: set noet sw=4 ts=4:
diff --git a/hsqldb/ExternalProject_hsqldb.mk b/hsqldb/ExternalProject_hsqldb.mk
index 0ed22a3..8cead35 100644
--- a/hsqldb/ExternalProject_hsqldb.mk
+++ b/hsqldb/ExternalProject_hsqldb.mk
@@ -16,18 +16,18 @@ $(eval $(call gb_ExternalProject_register_targets,hsqldb,\
 ))
 
 $(call gb_ExternalProject_get_state_target,hsqldb,build) :
-	cd $(EXTERNAL_WORKDIR) && \
-	$(ICECREAM_RUN) "$(ANT)" \
-		-q \
-		-f build/build.xml \
-		-Dbuild.label="build-$(LIBO_VERSION_MAJOR).$(LIBO_VERSION_MINOR).$(LIBO_VERSION_MICRO).$(LIBO_VERSION_PATCH)" \
-		$(if $(filter yes,$(JAVACISGCJ))\
+	$(call gb_ExternalProject_run,build,\
+		$(ICECREAM_RUN) "$(ANT)" \
+			-q \
+			-f build/build.xml \
+			-Dbuild.label="build-$(LIBO_VERSION_MAJOR).$(LIBO_VERSION_MINOR).$(LIBO_VERSION_MICRO).$(LIBO_VERSION_PATCH)" \
+			$(if $(filter yes,$(JAVACISGCJ))\
 			,-Dbuild.compiler=gcj \
 			,-Dant.build.javac.source=$(JAVA_SOURCE_VER) \
-				-Dant.build.javac.target=$(JAVA_TARGET_VER) \
-		) \
-		$(if $(debug),-Dbuild.debug="on") \
-		jar && \
-	touch $@
+			 -Dant.build.javac.target=$(JAVA_TARGET_VER) \
+			) \
+			$(if $(debug),-Dbuild.debug="on") \
+			jar \
+	)
 
 # vim: set noet sw=4 ts=4:
diff --git a/hunspell/ExternalProject_hunspell.mk b/hunspell/ExternalProject_hunspell.mk
index c5d89df..569fb7c 100644
--- a/hunspell/ExternalProject_hunspell.mk
+++ b/hunspell/ExternalProject_hunspell.mk
@@ -16,13 +16,14 @@ $(eval $(call gb_ExternalProject_register_targets,hunspell,\
 ))
 
 $(call gb_ExternalProject_get_state_target,hunspell,build):
-	cd $(EXTERNAL_WORKDIR) \
-	&& LIBS="$(gb_STDLIBS) $(LIBS)" ./configure --disable-shared --disable-nls --with-pic \
-	$(if $(filter YES,$(CROSS_COMPILING)),--build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM))\
-	$(if $(filter AIX,$(OS)),CFLAGS="-D_LINUX_SOURCE_COMPAT") \
-	$(if $(filter C53,$(COM)),CFLAGS="-xc99=none") \
-	$(if $(filter-out WNTGCC,$(OS)$(COM)),,LDFLAGS="-Wl,--enable-runtime-pseudo-reloc-v2") \
-	&& $(MAKE) \
-	&& touch $@
+	$(call gb_ExternalProject_run,build,\
+		LIBS="$(gb_STDLIBS) $(LIBS)" \
+		./configure --disable-shared --disable-nls --with-pic \
+			$(if $(filter YES,$(CROSS_COMPILING)),--build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM))\
+			$(if $(filter AIX,$(OS)),CFLAGS="-D_LINUX_SOURCE_COMPAT") \
+			$(if $(filter C53,$(COM)),CFLAGS="-xc99=none") \
+			$(if $(filter-out WNTGCC,$(OS)$(COM)),,LDFLAGS="-Wl,--enable-runtime-pseudo-reloc-v2") \
+		&& $(MAKE) \
+	)
 
 # vim: set noet sw=4 ts=4:
diff --git a/hyphen/ExternalProject_hyphen.mk b/hyphen/ExternalProject_hyphen.mk
index 474e7b2..3126729 100644
--- a/hyphen/ExternalProject_hyphen.mk
+++ b/hyphen/ExternalProject_hyphen.mk
@@ -18,13 +18,13 @@ $(eval $(call gb_ExternalProject_register_targets,hyphen,\
 ))
 
 $(call gb_ExternalProject_get_state_target,hyphen,build):
-	cd $(EXTERNAL_WORKDIR) \
-	&& ./configure --disable-shared \
-	$(if $(filter-out IOS,$(OS)),--with-pic) \
-	$(if $(filter YES,$(CROSS_COMPILING)),--build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM) gio_can_sniff=no) \
-	$(if $(filter C52U,$(COM)$(CPU)),CFLAGS="-m64") \
-	&& $(MAKE) \
-	$(if $(filter YESYES,$(SYSTEM_HYPH)$(WITH_MYSPELL_DICTS)),hyph_en_US.dic) \
-	&& touch $@
+	$(call gb_ExternalProject_run,build,\
+		./configure --disable-shared \
+			$(if $(filter-out IOS,$(OS)),--with-pic) \
+			$(if $(filter YES,$(CROSS_COMPILING)),--build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM) gio_can_sniff=no) \
+			$(if $(filter C52U,$(COM)$(CPU)),CFLAGS="-m64") \
+		&& $(MAKE) \
+			$(if $(filter YESYES,$(SYSTEM_HYPH)$(WITH_MYSPELL_DICTS)),hyph_en_US.dic) \
+	)
 
 # vim: set noet sw=4 ts=4:
diff --git a/icu/ExternalProject_icu.mk b/icu/ExternalProject_icu.mk
index b76b333..a376b4f 100644
--- a/icu/ExternalProject_icu.mk
+++ b/icu/ExternalProject_icu.mk
@@ -23,27 +23,27 @@ ifeq ($(OS),WNT)
 
 ifeq ($(COM),MSC)
 $(call gb_ExternalProject_get_state_target,icu,build) :
-	cd $(EXTERNAL_WORKDIR)/source \
-	&& export LIB="$(ILIB)" \
-	&& CFLAGS="$(SOLARINC)" CPPFLAGS="$(SOLARINC)" CXXFLAGS="$(SOLARINC)" ./runConfigureICU Cygwin/MSVC \
-	&& $(MAKE) \
-	&& touch $@
+	$(call gb_ExternalProject_run,build,\
+		export LIB="$(ILIB)" \
+		&& CFLAGS="$(SOLARINC)" CPPFLAGS="$(SOLARINC)" CXXFLAGS="$(SOLARINC)" ./runConfigureICU Cygwin/MSVC \
+		&& $(MAKE) \
+	,source)
 else
 $(call gb_ExternalProject_get_state_target,icu,build) :
-	cd $(EXTERNAL_WORKDIR)/source \
-	&& CPPFLAGS=$(icu_CPPFLAGS) CFLAGS="-O -D_MT" CXXFLAGS="-O -D_MT" \
-	LIBS="$(if $(filter YES,$(MINGW_SHARED_GXXLIB)),$(MINGW_SHARED_LIBSTDCPP))" \
-	LDFLAGS="-L$(COMPATH)/lib -Wl,--enable-runtime-pseudo-reloc-v2 \
-	$(if $(filter YES,$(MINGW_SHARED_GCCLIB)),-shared-libgcc)" \
-	./configure
-	$(if $(filter YES,$(CROSS_COMPILING)),--build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM) \
-		--with-cross-build=$(subst $(INPATH),$(INPATH_FOR_BUILD),$(call gb_UnpackedTarball_get_dir,icu))/source) \
-	--enable-layout --disable-static --enable-shared --disable-samples \
-	&& $(MAKE) \
-	&& for lib in icudata icuin icuuc icule icutu; do \
-	@touch $$lib; \
-	done \
-	&& touch $@
+	$(call gb_ExternalProject_run,build,\
+		CPPFLAGS=$(icu_CPPFLAGS) CFLAGS="-O -D_MT" CXXFLAGS="-O -D_MT" \
+		LIBS="$(if $(filter YES,$(MINGW_SHARED_GXXLIB)),$(MINGW_SHARED_LIBSTDCPP))" \
+		LDFLAGS="-L$(COMPATH)/lib -Wl,--enable-runtime-pseudo-reloc-v2 \
+				$(if $(filter YES,$(MINGW_SHARED_GCCLIB)),-shared-libgcc)" \
+		./configure
+			$(if $(filter YES,$(CROSS_COMPILING)),--build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM) \
+			--with-cross-build=$(subst $(INPATH),$(INPATH_FOR_BUILD),$(call gb_UnpackedTarball_get_dir,icu))/source) \
+			--enable-layout --disable-static --enable-shared --disable-samples \
+		&& $(MAKE) \
+		&&  for lib in icudata icuin icuuc icule icutu; do \
+			@touch $$lib; \
+			done \
+	,source)
 endif
 
 else # $(OS)
@@ -64,21 +64,22 @@ icu_LDFLAGS:="$(if $(filter TRUE,$(HAVE_LD_HASH_STYLE)),-Wl$(COMMA)--hash-style=
 	    $(if $(filter ANDROID,$(OS)),-lgnustl_shared -lm)"
 
 $(call gb_ExternalProject_get_state_target,icu,build) :
-	cd $(EXTERNAL_WORKDIR)/source \
-	&& CPPFLAGS=$(icu_CPPFLAGS) CFLAGS=$(icu_CFLAGS) \
-	CXXFLAGS=$(icu_CXXFLAGS) LDFLAGS=$(icu_LDFLAGS) \
-	./configure \
-		--enable-layout --disable-samples \
-		$(if $(filter IOS ANDROID,$(OS)),--disable-dyload) \
-		$(if $(filter ANDROID,$(OS)),--disable-strict) \
-		$(if $(filter SOLARIS AIX,$(OS)),--disable-64bit-libs) \
-		$(if $(filter MACOSX,$(OS)),--prefix=/@.__________________________________________________OOO) \
-		$(if $(filter TRUE,$(DISABLE_DYNLOADING)),--enable-static --disable-shared,\
-		--disable-static --enable-shared $(if $(filter ANDROID,$(OS)),--with-library-suffix=lo)) \
-		$(if $(filter YES,$(CROSS_COMPILING)),--build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM)\
-			--with-cross-build=$(subst $(INPATH),$(INPATH_FOR_BUILD),$(call gb_UnpackedTarball_get_dir,icu))/source)\
-	&& $(MAKE) \
-	&& touch $@
+	$(call gb_ExternalProject_run,build,\
+		CPPFLAGS=$(icu_CPPFLAGS) CFLAGS=$(icu_CFLAGS) \
+		CXXFLAGS=$(icu_CXXFLAGS) LDFLAGS=$(icu_LDFLAGS) \
+		./configure \
+			--enable-layout --disable-samples \
+			$(if $(filter IOS ANDROID,$(OS)),--disable-dyload) \
+			$(if $(filter ANDROID,$(OS)),--disable-strict) \
+			$(if $(filter SOLARIS AIX,$(OS)),--disable-64bit-libs) \
+			$(if $(filter MACOSX,$(OS)),--prefix=/@.__________________________________________________OOO) \
+			$(if $(filter TRUE,$(DISABLE_DYNLOADING)),\
+				--enable-static --disable-shared,\
+				--disable-static --enable-shared $(if $(filter ANDROID,$(OS)),--with-library-suffix=lo)) \
+			$(if $(filter YES,$(CROSS_COMPILING)),--build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM)\
+				--with-cross-build=$(subst $(INPATH),$(INPATH_FOR_BUILD),$(call gb_UnpackedTarball_get_dir,icu))/source)\
+		&& $(MAKE) \
+	,source)
 
 endif
 
diff --git a/jfreereport/ExternalProject_jfreereport_flow_engine.mk b/jfreereport/ExternalProject_jfreereport_flow_engine.mk
index 7b2c215..23fd99b 100644
--- a/jfreereport/ExternalProject_jfreereport_flow_engine.mk
+++ b/jfreereport/ExternalProject_jfreereport_flow_engine.mk
@@ -20,21 +20,19 @@ $(eval $(call gb_ExternalProject_register_targets,jfreereport_flow_engine,\
 ))
 
 $(call gb_ExternalProject_get_state_target,jfreereport_flow_engine,build) :
-	cd "$(call gb_UnpackedTarball_get_dir,jfreereport_flow_engine)" && \
-	$(ICECREAM_RUN) "$(ANT)" \
-		-q \
-		-f build.xml \
-		-Dbuild.label="build-$(LIBO_VERSION_MAJOR).$(LIBO_VERSION_MINOR).$(LIBO_VERSION_MICRO).$(LIBO_VERSION_PATCH)" \
-		$(if $(filter YES,$(SYSTEM_APACHE_COMMONS))\
-			,-Dcommons-logging.jar=$(COMMONS_LOGGING_JAR) \
-		)\
-		-Dlib=$(OUTDIR)/bin \
-		$(if $(filter yes,$(JAVACISGCJ))\
-			,-Dbuild.compiler=gcj \
-			,-Dant.build.javac.source=$(JAVA_SOURCE_VER) \
-			-Dant.build.javac.target=$(JAVA_TARGET_VER) \
-		) \
-		$(if $(debug),-Dbuild.debug="on") jar && \
-	touch $@
+	$(call gb_ExternalProject_run,build,\
+		$(ICECREAM_RUN) "$(ANT)" \
+			-q \
+			-f build.xml \
+			-Dbuild.label="build-$(LIBO_VERSION_MAJOR).$(LIBO_VERSION_MINOR).$(LIBO_VERSION_MICRO).$(LIBO_VERSION_PATCH)" \
+			$(if $(filter YES,$(SYSTEM_APACHE_COMMONS)),-Dcommons-logging.jar=$(COMMONS_LOGGING_JAR) )\
+			-Dlib=$(OUTDIR)/bin \
+			$(if $(filter yes,$(JAVACISGCJ))\
+				,-Dbuild.compiler=gcj \
+				,-Dant.build.javac.source=$(JAVA_SOURCE_VER) \
+				 -Dant.build.javac.target=$(JAVA_TARGET_VER) \
+			) \
+			$(if $(debug),-Dbuild.debug="on") jar \
+	)
 
 # vim: set noet sw=4 ts=4:
diff --git a/jfreereport/ExternalProject_jfreereport_flute.mk b/jfreereport/ExternalProject_jfreereport_flute.mk
index bfbf8fb..7175f5d 100644
--- a/jfreereport/ExternalProject_jfreereport_flute.mk
+++ b/jfreereport/ExternalProject_jfreereport_flute.mk
@@ -19,20 +19,20 @@ $(eval $(call gb_ExternalProject_register_targets,jfreereport_flute,\
 ))
 
 $(call gb_ExternalProject_get_state_target,jfreereport_flute,build) :
-	cd "$(call gb_UnpackedTarball_get_dir,jfreereport_flute)" && \
-	$(ICECREAM_RUN) "$(ANT)" \
-		-q \
-		-f build.xml \
-		-Dbuild.label="build-$(LIBO_VERSION_MAJOR).$(LIBO_VERSION_MINOR).$(LIBO_VERSION_MICRO).$(LIBO_VERSION_PATCH)" \
-		$(if $(filter yes,$(JAVACISGCJ))\
-			,-Dbuild.compiler=gcj \
-			,-Dant.build.javac.source=$(JAVA_SOURCE_VER) \
-			-Dant.build.javac.target=$(JAVA_TARGET_VER) \
-		) \
-		-Dantcontrib.available="true" \
-		-Dbuild.id="10682" \
-		-Dproject.revision="$(FLUTE_VERSION)" \
-		$(if $(debug),-Dbuild.debug="on") jar && \
-	touch $@
+	$(call gb_ExternalProject_run,build,\
+		$(ICECREAM_RUN) "$(ANT)" \
+			-q \
+			-f build.xml \
+			-Dbuild.label="build-$(LIBO_VERSION_MAJOR).$(LIBO_VERSION_MINOR).$(LIBO_VERSION_MICRO).$(LIBO_VERSION_PATCH)" \
+			$(if $(filter yes,$(JAVACISGCJ))\
+				,-Dbuild.compiler=gcj \
+				,-Dant.build.javac.source=$(JAVA_SOURCE_VER) \
+				 -Dant.build.javac.target=$(JAVA_TARGET_VER) \
+			) \
+			-Dantcontrib.available="true" \
+			-Dbuild.id="10682" \
+			-Dproject.revision="$(FLUTE_VERSION)" \
+			$(if $(debug),-Dbuild.debug="on") jar \
+	)
 
 # vim: set noet sw=4 ts=4:
diff --git a/jfreereport/ExternalProject_jfreereport_libbase.mk b/jfreereport/ExternalProject_jfreereport_libbase.mk
index 52aa5b3..6b5cf6f 100644
--- a/jfreereport/ExternalProject_jfreereport_libbase.mk
+++ b/jfreereport/ExternalProject_jfreereport_libbase.mk
@@ -19,20 +19,20 @@ $(eval $(call gb_ExternalProject_register_targets,jfreereport_libbase,\
 ))
 
 $(call gb_ExternalProject_get_state_target,jfreereport_libbase,build) :
-	cd "$(call gb_UnpackedTarball_get_dir,jfreereport_libbase)" && \
-	$(ICECREAM_RUN) "$(ANT)" \
-		-q \
-		-f build.xml \
-		-Dbuild.label="build-$(LIBO_VERSION_MAJOR).$(LIBO_VERSION_MINOR).$(LIBO_VERSION_MICRO).$(LIBO_VERSION_PATCH)" \
-		$(if $(filter yes,$(JAVACISGCJ))\
-			,-Dbuild.compiler=gcj \
-			,-Dant.build.javac.source=$(JAVA_SOURCE_VER) \
-			-Dant.build.javac.target=$(JAVA_TARGET_VER) \
-		) \
-		-Dantcontrib.available="true" \
-		-Dbuild.id="10682" \
-		-Dproject.revision="$(LIBBASE_VERSION)" \
-		$(if $(debug),-Dbuild.debug="on") jar && \
-	touch $@
+	$(call gb_ExternalProject_run,build,\
+		$(ICECREAM_RUN) "$(ANT)" \
+			-q \
+			-f build.xml \
+			-Dbuild.label="build-$(LIBO_VERSION_MAJOR).$(LIBO_VERSION_MINOR).$(LIBO_VERSION_MICRO).$(LIBO_VERSION_PATCH)" \
+			$(if $(filter yes,$(JAVACISGCJ))\
+				,-Dbuild.compiler=gcj \
+				,-Dant.build.javac.source=$(JAVA_SOURCE_VER) \
+				 -Dant.build.javac.target=$(JAVA_TARGET_VER) \
+			) \
+			-Dantcontrib.available="true" \
+			-Dbuild.id="10682" \
+			-Dproject.revision="$(LIBBASE_VERSION)" \
+			$(if $(debug),-Dbuild.debug="on") jar \
+	)
 
 # vim: set noet sw=4 ts=4:
diff --git a/jfreereport/ExternalProject_jfreereport_libfonts.mk b/jfreereport/ExternalProject_jfreereport_libfonts.mk
index a612c0a..72e6fb1 100644
--- a/jfreereport/ExternalProject_jfreereport_libfonts.mk
+++ b/jfreereport/ExternalProject_jfreereport_libfonts.mk
@@ -19,20 +19,20 @@ $(eval $(call gb_ExternalProject_register_targets,jfreereport_libfonts,\
 ))
 
 $(call gb_ExternalProject_get_state_target,jfreereport_libfonts,build) :
-	cd "$(call gb_UnpackedTarball_get_dir,jfreereport_libfonts)" && \
-	$(ICECREAM_RUN) "$(ANT)" \
-		-q \
-		-f build.xml \
-		-Dbuild.label="build-$(LIBO_VERSION_MAJOR).$(LIBO_VERSION_MINOR).$(LIBO_VERSION_MICRO).$(LIBO_VERSION_PATCH)" \
-		$(if $(filter yes,$(JAVACISGCJ))\
-			,-Dbuild.compiler=gcj \
-			,-Dant.build.javac.source=$(JAVA_SOURCE_VER) \
-			-Dant.build.javac.target=$(JAVA_TARGET_VER) \
-		) \
-		-Dantcontrib.available="true" \
-		-Dbuild.id="10682" \
-		-Dproject.revision="$(LIBFONTS_VERSION)" \
-		$(if $(debug),-Dbuild.debug="on") jar && \
-	touch $@
+	$(call gb_ExternalProject_run,build,\
+		$(ICECREAM_RUN) "$(ANT)" \
+			-q \
+			-f build.xml \
+			-Dbuild.label="build-$(LIBO_VERSION_MAJOR).$(LIBO_VERSION_MINOR).$(LIBO_VERSION_MICRO).$(LIBO_VERSION_PATCH)" \
+			$(if $(filter yes,$(JAVACISGCJ))\
+				,-Dbuild.compiler=gcj \
+				,-Dant.build.javac.source=$(JAVA_SOURCE_VER) \
+				 -Dant.build.javac.target=$(JAVA_TARGET_VER) \
+			) \
+			-Dantcontrib.available="true" \
+			-Dbuild.id="10682" \
+			-Dproject.revision="$(LIBFONTS_VERSION)" \
+			$(if $(debug),-Dbuild.debug="on") jar \
+	)
 
 # vim: set noet sw=4 ts=4:
diff --git a/jfreereport/ExternalProject_jfreereport_libformula.mk b/jfreereport/ExternalProject_jfreereport_libformula.mk
index 145ad49..b7f6d95 100644
--- a/jfreereport/ExternalProject_jfreereport_libformula.mk
+++ b/jfreereport/ExternalProject_jfreereport_libformula.mk
@@ -19,20 +19,20 @@ $(eval $(call gb_ExternalProject_register_targets,jfreereport_libformula,\
 ))
 
 $(call gb_ExternalProject_get_state_target,jfreereport_libformula,build) :
-	cd "$(call gb_UnpackedTarball_get_dir,jfreereport_libformula)" && \
-	$(ICECREAM_RUN) "$(ANT)" \
-		-q \
-		-f build.xml \
-		-Dbuild.label="build-$(LIBO_VERSION_MAJOR).$(LIBO_VERSION_MINOR).$(LIBO_VERSION_MICRO).$(LIBO_VERSION_PATCH)" \
-		$(if $(filter yes,$(JAVACISGCJ))\
-			,-Dbuild.compiler=gcj \
-			,-Dant.build.javac.source=$(JAVA_SOURCE_VER) \
-			-Dant.build.javac.target=$(JAVA_TARGET_VER) \
-		) \
-		-Dantcontrib.available="true" \
-		-Dbuild.id="10682" \
-		-Dproject.revision="$(LIBFORMULA_VERSION)" \
-		$(if $(debug),-Dbuild.debug="on") jar && \
-	touch $@
+	$(call gb_ExternalProject_run,build,\
+		$(ICECREAM_RUN) "$(ANT)" \
+			-q \
+			-f build.xml \
+			-Dbuild.label="build-$(LIBO_VERSION_MAJOR).$(LIBO_VERSION_MINOR).$(LIBO_VERSION_MICRO).$(LIBO_VERSION_PATCH)" \
+			$(if $(filter yes,$(JAVACISGCJ))\
+				,-Dbuild.compiler=gcj \
+				,-Dant.build.javac.source=$(JAVA_SOURCE_VER) \
+				 -Dant.build.javac.target=$(JAVA_TARGET_VER) \
+			) \
+			-Dantcontrib.available="true" \
+			-Dbuild.id="10682" \
+			-Dproject.revision="$(LIBFORMULA_VERSION)" \
+			$(if $(debug),-Dbuild.debug="on") jar \
+	)
 
 # vim: set noet sw=4 ts=4:
diff --git a/jfreereport/ExternalProject_jfreereport_liblayout.mk b/jfreereport/ExternalProject_jfreereport_liblayout.mk
index 7cd9bc9..4c5d79d 100644
--- a/jfreereport/ExternalProject_jfreereport_liblayout.mk
+++ b/jfreereport/ExternalProject_jfreereport_liblayout.mk
@@ -34,23 +34,21 @@ $(eval $(call gb_ExternalProject_register_targets,jfreereport_liblayout,\
 ))
 
 $(call gb_ExternalProject_get_state_target,jfreereport_liblayout,build) :
-	cd "$(call gb_UnpackedTarball_get_dir,jfreereport_liblayout)" && \
-	$(ICECREAM_RUN) "$(ANT)" \
-		-q \
-		-f build.xml \
-		-Dbuild.label="build-$(LIBO_VERSION_MAJOR).$(LIBO_VERSION_MINOR).$(LIBO_VERSION_MICRO).$(LIBO_VERSION_PATCH)" \
-		$(if $(filter YES,$(SYSTEM_APACHE_COMMONS))\
-			,-Dcommons-logging.jar=$(COMMONS_LOGGING_JAR) \
-		)\
-		$(if $(filter yes,$(JAVACISGCJ))\
-			,-Dbuild.compiler=gcj \
-			,-Dant.build.javac.source=$(JAVA_SOURCE_VER) \
-			-Dant.build.javac.target=$(JAVA_TARGET_VER) \
-		) \
-		-Dantcontrib.available="true" \
-		-Dbuild.id="10682" \
-		-Dlib=$(OUTDIR)/bin \
-		$(if $(debug),-Dbuild.debug="on") jar && \
-	touch $@
+	$(call gb_ExternalProject_run,build,\
+		$(ICECREAM_RUN) "$(ANT)" \
+			-q \
+			-f build.xml \
+			-Dbuild.label="build-$(LIBO_VERSION_MAJOR).$(LIBO_VERSION_MINOR).$(LIBO_VERSION_MICRO).$(LIBO_VERSION_PATCH)" \
+			$(if $(filter YES,$(SYSTEM_APACHE_COMMONS)),-Dcommons-logging.jar=$(COMMONS_LOGGING_JAR) )\
+			$(if $(filter yes,$(JAVACISGCJ))\
+				,-Dbuild.compiler=gcj \
+				,-Dant.build.javac.source=$(JAVA_SOURCE_VER) \
+				 -Dant.build.javac.target=$(JAVA_TARGET_VER) \
+			) \
+			-Dantcontrib.available="true" \
+			-Dbuild.id="10682" \
+			-Dlib=$(OUTDIR)/bin \
+			$(if $(debug),-Dbuild.debug="on") jar \
+	)
 
 # vim: set noet sw=4 ts=4:
diff --git a/jfreereport/ExternalProject_jfreereport_libloader.mk b/jfreereport/ExternalProject_jfreereport_libloader.mk
index 90a97a7..dc3d8d8 100644
--- a/jfreereport/ExternalProject_jfreereport_libloader.mk
+++ b/jfreereport/ExternalProject_jfreereport_libloader.mk
@@ -19,20 +19,20 @@ $(eval $(call gb_ExternalProject_register_targets,jfreereport_libloader,\
 ))
 
 $(call gb_ExternalProject_get_state_target,jfreereport_libloader,build) :
-	cd "$(call gb_UnpackedTarball_get_dir,jfreereport_libloader)" && \
-	$(ICECREAM_RUN) "$(ANT)" \
-		-q \
-		-f build.xml \
-		-Dbuild.label="build-$(LIBO_VERSION_MAJOR).$(LIBO_VERSION_MINOR).$(LIBO_VERSION_MICRO).$(LIBO_VERSION_PATCH)" \
-		$(if $(filter yes,$(JAVACISGCJ))\
-			,-Dbuild.compiler=gcj \
-			,-Dant.build.javac.source=$(JAVA_SOURCE_VER) \
-			-Dant.build.javac.target=$(JAVA_TARGET_VER) \
-		) \
-		-Dantcontrib.available="true" \
-		-Dbuild.id="10682" \
-		-Dproject.revision="$(LIBLOADER_VERSION)" \
-		$(if $(debug),-Dbuild.debug="on") jar && \
-	touch $@
+	$(call gb_ExternalProject_run,build,\
+		$(ICECREAM_RUN) "$(ANT)" \
+			-q \
+			-f build.xml \
+			-Dbuild.label="build-$(LIBO_VERSION_MAJOR).$(LIBO_VERSION_MINOR).$(LIBO_VERSION_MICRO).$(LIBO_VERSION_PATCH)" \
+			$(if $(filter yes,$(JAVACISGCJ))\
+				,-Dbuild.compiler=gcj \
+				,-Dant.build.javac.source=$(JAVA_SOURCE_VER) \
+				 -Dant.build.javac.target=$(JAVA_TARGET_VER) \
+			) \
+			-Dantcontrib.available="true" \
+			-Dbuild.id="10682" \
+			-Dproject.revision="$(LIBLOADER_VERSION)" \
+			$(if $(debug),-Dbuild.debug="on") jar \
+	)
 
 # vim: set noet sw=4 ts=4:
diff --git a/jfreereport/ExternalProject_jfreereport_librepository.mk b/jfreereport/ExternalProject_jfreereport_librepository.mk
index 38c4e56..215bd1c 100644
--- a/jfreereport/ExternalProject_jfreereport_librepository.mk
+++ b/jfreereport/ExternalProject_jfreereport_librepository.mk
@@ -19,20 +19,20 @@ $(eval $(call gb_ExternalProject_register_targets,jfreereport_librepository,\
 ))
 
 $(call gb_ExternalProject_get_state_target,jfreereport_librepository,build) :
-	cd "$(call gb_UnpackedTarball_get_dir,jfreereport_librepository)" && \
-	$(ICECREAM_RUN) "$(ANT)" \
-		-q \
-		-f build.xml \
-		-Dbuild.label="build-$(LIBO_VERSION_MAJOR).$(LIBO_VERSION_MINOR).$(LIBO_VERSION_MICRO).$(LIBO_VERSION_PATCH)" \
-		$(if $(filter yes,$(JAVACISGCJ))\
-			,-Dbuild.compiler=gcj \
-			,-Dant.build.javac.source=$(JAVA_SOURCE_VER) \
-			-Dant.build.javac.target=$(JAVA_TARGET_VER) \
-		) \
-		-Dantcontrib.available="true" \
-		-Dbuild.id="10682" \
-		-Dproject.revision="$(LIBREPOSITORY_VERSION)" \
-		$(if $(debug),-Dbuild.debug="on") jar && \
-	touch $@
+	$(call gb_ExternalProject_run,build,\
+		$(ICECREAM_RUN) "$(ANT)" \
+			-q \
+			-f build.xml \
+			-Dbuild.label="build-$(LIBO_VERSION_MAJOR).$(LIBO_VERSION_MINOR).$(LIBO_VERSION_MICRO).$(LIBO_VERSION_PATCH)" \
+			$(if $(filter yes,$(JAVACISGCJ))\
+				,-Dbuild.compiler=gcj \
+				,-Dant.build.javac.source=$(JAVA_SOURCE_VER) \
+				 -Dant.build.javac.target=$(JAVA_TARGET_VER) \
+			) \
+			-Dantcontrib.available="true" \
+			-Dbuild.id="10682" \
+			-Dproject.revision="$(LIBREPOSITORY_VERSION)" \
+			$(if $(debug),-Dbuild.debug="on") jar \
+	)
 
 # vim: set noet sw=4 ts=4:
diff --git a/jfreereport/ExternalProject_jfreereport_libserializer.mk b/jfreereport/ExternalProject_jfreereport_libserializer.mk
index 2555800..93cdfd5 100644
--- a/jfreereport/ExternalProject_jfreereport_libserializer.mk
+++ b/jfreereport/ExternalProject_jfreereport_libserializer.mk
@@ -19,20 +19,20 @@ $(eval $(call gb_ExternalProject_register_targets,jfreereport_libserializer,\
 ))
 
 $(call gb_ExternalProject_get_state_target,jfreereport_libserializer,build) :
-	cd "$(call gb_UnpackedTarball_get_dir,jfreereport_libserializer)" && \
-	$(ICECREAM_RUN) "$(ANT)" \
-		-q \
-		-f build.xml \
-		-Dbuild.label="build-$(LIBO_VERSION_MAJOR).$(LIBO_VERSION_MINOR).$(LIBO_VERSION_MICRO).$(LIBO_VERSION_PATCH)." \
-		$(if $(filter yes,$(JAVACISGCJ))\
-			,-Dbuild.compiler=gcj \
-			,-Dant.build.javac.source=$(JAVA_SOURCE_VER) \
-			-Dant.build.javac.target=$(JAVA_TARGET_VER) \
-		) \
-		-Dantcontrib.available="true" \
-		-Dbuild.id="10682" \
-		-Dproject.revision="$(LIBSERIALIZER_VERSION)" \
-		$(if $(debug),-Dbuild.debug="on") jar && \
-	touch $@
+	$(call gb_ExternalProject_run,build,\
+		$(ICECREAM_RUN) "$(ANT)" \
+			-q \
+			-f build.xml \
+			-Dbuild.label="build-$(LIBO_VERSION_MAJOR).$(LIBO_VERSION_MINOR).$(LIBO_VERSION_MICRO).$(LIBO_VERSION_PATCH)." \
+			$(if $(filter yes,$(JAVACISGCJ))\
+				,-Dbuild.compiler=gcj \
+				,-Dant.build.javac.source=$(JAVA_SOURCE_VER) \
+				 -Dant.build.javac.target=$(JAVA_TARGET_VER) \
+			) \
+			-Dantcontrib.available="true" \
+			-Dbuild.id="10682" \
+			-Dproject.revision="$(LIBSERIALIZER_VERSION)" \
+			$(if $(debug),-Dbuild.debug="on") jar \
+	)
 
 # vim: set noet sw=4 ts=4:
diff --git a/jfreereport/ExternalProject_jfreereport_libxml.mk b/jfreereport/ExternalProject_jfreereport_libxml.mk
index a43568c..93967f5 100644
--- a/jfreereport/ExternalProject_jfreereport_libxml.mk
+++ b/jfreereport/ExternalProject_jfreereport_libxml.mk
@@ -19,20 +19,20 @@ $(eval $(call gb_ExternalProject_register_targets,jfreereport_libxml,\
 ))
 
 $(call gb_ExternalProject_get_state_target,jfreereport_libxml,build) :
-	cd "$(call gb_UnpackedTarball_get_dir,jfreereport_libxml)" && \
-	$(ICECREAM_RUN) "$(ANT)" \
-		-q \
-		-f build.xml \
-		-Dbuild.label="build-$(LIBO_VERSION_MAJOR).$(LIBO_VERSION_MINOR).$(LIBO_VERSION_MICRO).$(LIBO_VERSION_PATCH)" \
-		$(if $(filter yes,$(JAVACISGCJ))\
-			,-Dbuild.compiler=gcj \
-			,-Dant.build.javac.source=$(JAVA_SOURCE_VER) \
-			-Dant.build.javac.target=$(JAVA_TARGET_VER) \
-		) \
-		-Dantcontrib.available="true" \
-		-Dbuild.id="10682" \
-		-Dproject.revision="$(LIBXML_VERSION)" \
-		$(if $(debug),-Dbuild.debug="on") jar && \
-	touch $@
+	$(call gb_ExternalProject_run,build,\
+		$(ICECREAM_RUN) "$(ANT)" \
+			-q \
+			-f build.xml \
+			-Dbuild.label="build-$(LIBO_VERSION_MAJOR).$(LIBO_VERSION_MINOR).$(LIBO_VERSION_MICRO).$(LIBO_VERSION_PATCH)" \
+			$(if $(filter yes,$(JAVACISGCJ))\
+				,-Dbuild.compiler=gcj \
+				,-Dant.build.javac.source=$(JAVA_SOURCE_VER) \
+				 -Dant.build.javac.target=$(JAVA_TARGET_VER) \
+			) \
+			-Dantcontrib.available="true" \
+			-Dbuild.id="10682" \
+			-Dproject.revision="$(LIBXML_VERSION)" \
+			$(if $(debug),-Dbuild.debug="on") jar \
+	)
 
 # vim: set noet sw=4 ts=4:
diff --git a/jfreereport/ExternalProject_jfreereport_sac.mk b/jfreereport/ExternalProject_jfreereport_sac.mk
index 6b3a476..7500268 100644
--- a/jfreereport/ExternalProject_jfreereport_sac.mk
+++ b/jfreereport/ExternalProject_jfreereport_sac.mk
@@ -16,18 +16,18 @@ $(eval $(call gb_ExternalProject_register_targets,jfreereport_sac,\
 ))
 
 $(call gb_ExternalProject_get_state_target,jfreereport_sac,build) :
-	cd "$(call gb_UnpackedTarball_get_dir,jfreereport_sac)" && \
-	$(ICECREAM_RUN) "$(ANT)" \
-		-q \
-		-f build.xml \
-		-Dbuild.label="build-$(LIBO_VERSION_MAJOR).$(LIBO_VERSION_MINOR).$(LIBO_VERSION_MICRO).$(LIBO_VERSION_PATCH)" \
-		$(if $(filter yes,$(JAVACISGCJ))\
-			,-Dbuild.compiler=gcj \
-			,-Dant.build.javac.source=$(JAVA_SOURCE_VER) \
-			-Dant.build.javac.target=$(JAVA_TARGET_VER) \
-		) \
-		-Dantcontrib.available="true" \
-		$(if $(debug),-Dbuild.debug="on") all && \
-	touch $@
+	$(call gb_ExternalProject_run,build,\
+		$(ICECREAM_RUN) "$(ANT)" \
+			-q \
+			-f build.xml \
+			-Dbuild.label="build-$(LIBO_VERSION_MAJOR).$(LIBO_VERSION_MINOR).$(LIBO_VERSION_MICRO).$(LIBO_VERSION_PATCH)" \
+			$(if $(filter yes,$(JAVACISGCJ))\
+				,-Dbuild.compiler=gcj \
+				,-Dant.build.javac.source=$(JAVA_SOURCE_VER) \
+				 -Dant.build.javac.target=$(JAVA_TARGET_VER) \
+			) \
+			-Dantcontrib.available="true" \
+			$(if $(debug),-Dbuild.debug="on") all \
+	)
 
 # vim: set noet sw=4 ts=4:
diff --git a/lcms2/ExternalProject_lcms2.mk b/lcms2/ExternalProject_lcms2.mk
index da43a43..d76049e 100644
--- a/lcms2/ExternalProject_lcms2.mk
+++ b/lcms2/ExternalProject_lcms2.mk
@@ -19,27 +19,27 @@ ifeq ($(COM),MSC)
 
 ifeq ($(filter-out 14 13,$(COMEX)),)
 $(call gb_ExternalProject_get_state_target,lcms2,build):
-	cd $(EXTERNAL_WORKDIR)/Projects/VC2010/lcms2_DLL \
-	&& MSBuild.exe lcms2_DLL.vcxproj /p:Configuration=Release /p:Platform=Win32 /p:TargetName=lcms2 \
-	$(if $(filter 14,$(COMEX)),/p:PlatformToolset=v110 /p:VisualStudioVersion=11.0) \
-	&& touch $@
+	$(call gb_ExternalProject_run,build,\
+		MSBuild.exe lcms2_DLL.vcxproj /p:Configuration=Release /p:Platform=Win32 /p:TargetName=lcms2 \
+			$(if $(filter 14,$(COMEX)),/p:PlatformToolset=v110 /p:VisualStudioVersion=11.0) \
+	,Projects/VC2010/lcms2_DLL)
 else
 $(call gb_ExternalProject_get_state_target,lcms2,build):
-	cd $(EXTERNAL_WORKDIR)/Projects/VC2008/lcms2_DLL \
-	&& $(COMPATH)/vcpackages/vcbuild.exe lcms2_DLL.vcproj "Release|Win32" \
-	&& touch $@
+	$(call gb_ExternalProject_run,build,\
+		$(COMPATH)/vcpackages/vcbuild.exe lcms2_DLL.vcproj "Release|Win32" \
+	,Projects/VC2008/lcms2_DLL)
 endif
 else
 $(call gb_ExternalProject_get_state_target,lcms2,build):
-	cd $(EXTERNAL_WORKDIR) \
-	&& ./configure --without-jpeg --without-tiff --with-pic \
-	$(if $(filter YES,$(CROSS_COMPILING)),--build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM)) \
-	CPPFLAGS=" $(SOLARINC)" \
-	$(if $(filter-out WNTGCC,$(OS)$(COM)),,CPPFLAGS=" -DCMS_DLL_BUILD") \
-	$(if $(filter IOS ANDROID,$(OS)), --disable-shared --enable-static, --enable-shared --disable-static) \
-	$(if $(filter MACOSX,$(OS)),--prefix=/@.__________________________________________________OOO) \
-	&& cd src \
-	&& $(MAKE) \
-	&& touch $@
+	$(call gb_ExternalProject_run,build,\
+		./configure --without-jpeg --without-tiff --with-pic \
+			$(if $(filter YES,$(CROSS_COMPILING)),--build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM)) \
+			CPPFLAGS=" $(SOLARINC)" \
+			$(if $(filter-out WNTGCC,$(OS)$(COM)),,CPPFLAGS=" -DCMS_DLL_BUILD") \
+			$(if $(filter IOS ANDROID,$(OS)), --disable-shared --enable-static, --enable-shared --disable-static) \
+			$(if $(filter MACOSX,$(OS)),--prefix=/@.__________________________________________________OOO) \
+		&& cd src \
+		&& $(MAKE) \
+	)
 endif
 # vim: set noet sw=4 ts=4:
diff --git a/libcdr/ExternalProject_libcdr.mk b/libcdr/ExternalProject_libcdr.mk
index e1397a6..9bd0cea 100644
--- a/libcdr/ExternalProject_libcdr.mk
+++ b/libcdr/ExternalProject_libcdr.mk
@@ -26,54 +26,54 @@ ifeq ($(OS)$(COM),WNTMSC)
 
 ifeq ($(VCVER),90)
 $(call gb_ExternalProject_get_state_target,libcdr,build) :
-	cd $(EXTERNAL_WORKDIR)/build/win32 \
-	&& export LIBWPD_INCLUDE_DIR=$(OUTDIR)/inc/external \
-	&& export LIBWPG_INCLUDE_DIR=$(OUTDIR)/inc/external \
-	&& export LCMS2_INCLUDE_DIR=$(call gb_UnpackedTarball_get_dir,lcms2/include) \
-	&& export ZLIB_INCLUDE_DIR=$(OUTDIR)/inc/external/zlib \
-	&& export ICU_INCLUDE_DIR=$(OUTDIR)/inc/external \
-	&& $(COMPATH)/vcpackages/vcbuild.exe libcdr.vcproj "Release|Win32" \
-	&& touch $@
+	$(call gb_ExternalProject_run,build,\
+		export LIBWPD_INCLUDE_DIR=$(OUTDIR)/inc/external \
+		&& export LIBWPG_INCLUDE_DIR=$(OUTDIR)/inc/external \
+		&& export LCMS2_INCLUDE_DIR=$(call gb_UnpackedTarball_get_dir,lcms2/include) \
+		&& export ZLIB_INCLUDE_DIR=$(OUTDIR)/inc/external/zlib \
+		&& export ICU_INCLUDE_DIR=$(OUTDIR)/inc/external \
+		&& $(COMPATH)/vcpackages/vcbuild.exe libcdr.vcproj "Release|Win32" \
+	,build/win32)
 else ifeq ($(VCVER),100)
 $(call gb_ExternalProject_get_state_target,libcdr,build) :
-	cd $(EXTERNAL_WORKDIR)/build/win32 \
-	&& export LIBWPD_INCLUDE_DIR=$(OUTDIR)/inc/external \
-	&& export LIBWPG_INCLUDE_DIR=$(OUTDIR)/inc/external \
-	&& export LCMS2_INCLUDE_DIR=$(call gb_UnpackedTarball_get_dir,lcms2/include) \
-	&& export ZLIB_INCLUDE_DIR=$(OUTDIR)/inc/external/zlib \
-	&& export ICU_INCLUDE_DIR=$(OUTDIR)/inc/external \
-	&& msbuild.exe libcdr.vcxproj /p:Configuration=Release \
-	&& touch $@
+	$(call gb_ExternalProject_run,build,\
+		export LIBWPD_INCLUDE_DIR=$(OUTDIR)/inc/external \
+		&& export LIBWPG_INCLUDE_DIR=$(OUTDIR)/inc/external \
+		&& export LCMS2_INCLUDE_DIR=$(call gb_UnpackedTarball_get_dir,lcms2/include) \
+		&& export ZLIB_INCLUDE_DIR=$(OUTDIR)/inc/external/zlib \
+		&& export ICU_INCLUDE_DIR=$(OUTDIR)/inc/external \
+		&& msbuild.exe libcdr.vcxproj /p:Configuration=Release \
+	,build/win32)
 else
 $(call gb_ExternalProject_get_state_target,libcdr,build) :
-	cd $(EXTERNAL_WORKDIR)/build/win32 \
-	&& export LIBWPD_INCLUDE_DIR=$(OUTDIR)/inc/external \
-	&& export LIBWPG_INCLUDE_DIR=$(OUTDIR)/inc/external \
-	&& export LCMS2_INCLUDE_DIR=$(call gb_UnpackedTarball_get_dir,lcms2/include) \
-	&& export ZLIB_INCLUDE_DIR=$(OUTDIR)/inc/external/zlib \
-	&& export ICU_INCLUDE_DIR=$(OUTDIR)/inc/external \
-	&& msbuild.exe libcdr.vcxproj /p:PlatformToolset=v110 /p:VisualStudioVersion=11.0 /p:Configuration=Release \
-	&& touch $@
+	$(call gb_ExternalProject_run,build,\
+		export LIBWPD_INCLUDE_DIR=$(OUTDIR)/inc/external \
+		&& export LIBWPG_INCLUDE_DIR=$(OUTDIR)/inc/external \
+		&& export LCMS2_INCLUDE_DIR=$(call gb_UnpackedTarball_get_dir,lcms2/include) \
+		&& export ZLIB_INCLUDE_DIR=$(OUTDIR)/inc/external/zlib \
+		&& export ICU_INCLUDE_DIR=$(OUTDIR)/inc/external \
+		&& msbuild.exe libcdr.vcxproj /p:PlatformToolset=v110 /p:VisualStudioVersion=11.0 /p:Configuration=Release \
+	,build/win32)
 endif
 
 else
 
 $(call gb_ExternalProject_get_state_target,libcdr,build) :
-	cd $(EXTERNAL_WORKDIR) \
-	&& export PKG_CONFIG="" \
-	&& export ICU_LIBS=" " \
-	$(if $(filter NO,$(SYSTEM_ICU)),&& export ICU_CFLAGS="-I$(OUTDIR)/inc/external") \
-	$(if $(filter YES,$(SYSTEM_ICU)),&& export ICU_CFLAGS=" ") \
-	&& ./configure \
-		--with-pic \
-		--enable-static \
-		--disable-shared \
-		--without-docs \
-		--disable-debug \
-		--disable-werror \
-		$(if $(filter YES,$(CROSS_COMPILING)),--build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM)) \
-	&& (cd $(EXTERNAL_WORKDIR)/src/lib && $(MAKE)) \
-	&& touch $@
+	$(call gb_ExternalProject_run,build,\
+		export PKG_CONFIG="" \
+		&& export ICU_LIBS=" " \
+		$(if $(filter NO,$(SYSTEM_ICU)),&& export ICU_CFLAGS="-I$(OUTDIR)/inc/external") \
+		$(if $(filter YES,$(SYSTEM_ICU)),&& export ICU_CFLAGS=" ") \
+		&& ./configure \
+			--with-pic \
+			--enable-static \
+			--disable-shared \
+			--without-docs \
+			--disable-debug \
+			--disable-werror \
+			$(if $(filter YES,$(CROSS_COMPILING)),--build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM)) \
+		&& (cd $(EXTERNAL_WORKDIR)/src/lib && $(MAKE)) \
+	)
 
 endif
 
diff --git a/libexttextcat/ExternalProject_exttextcat.mk b/libexttextcat/ExternalProject_exttextcat.mk
index f439d08..d9e5a2f 100644
--- a/libexttextcat/ExternalProject_exttextcat.mk
+++ b/libexttextcat/ExternalProject_exttextcat.mk
@@ -16,12 +16,12 @@ $(eval $(call gb_ExternalProject_register_targets,exttextcat,\
 ))
 
 $(call gb_ExternalProject_get_state_target,exttextcat,build):
-	cd $(EXTERNAL_WORKDIR) \
-	&& ./configure --disable-shared --with-pic \
-	$(if $(filter YES,$(CROSS_COMPILING)),--build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM)) \
-	CFLAGS="$(if $(filter TRUE,$(HAVE_GCC_VISIBILITY_FEATURE)),-fvisibility=hidden) \
-	$(if $(filter AIX,$(OS)),-D_LINUX_SOURCE_COMPAT)" \
-	&& $(MAKE) \
-	&& touch $@
+	$(call gb_ExternalProject_run,build,\
+		./configure --disable-shared --with-pic \
+			$(if $(filter YES,$(CROSS_COMPILING)),--build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM)) \
+		CFLAGS="$(if $(filter TRUE,$(HAVE_GCC_VISIBILITY_FEATURE)),-fvisibility=hidden) \
+		$(if $(filter AIX,$(OS)),-D_LINUX_SOURCE_COMPAT)" \
+		&& $(MAKE) \
+	)
 
 # vim: set noet sw=4 ts=4:
diff --git a/liblangtag/ExternalProject_langtag.mk b/liblangtag/ExternalProject_langtag.mk
index 8f6f801..2ddcbc2 100644
--- a/liblangtag/ExternalProject_langtag.mk
+++ b/liblangtag/ExternalProject_langtag.mk
@@ -17,22 +17,22 @@ $(eval $(call gb_ExternalProject_register_targets,langtag,\
 ))
 
 $(call gb_ExternalProject_get_state_target,langtag,build):
-	cd $(EXTERNAL_WORKDIR) \
-	$(if $(filter MSC,$(COM)), \
-		&& export LIB="$(ILIB)" \
+	$(call gb_ExternalProject_run,build,\
+		$(if $(filter MSC,$(COM)), \
+		export LIB="$(ILIB)" \
 		CC="$(CC) -MD -nologo \
 			$(if $(filter TRUE,$(ENABLE_DEBUG)),-Zi) \
-			$(SOLARINC)") \
-	&& ./configure --disable-modules --disable-test --disable-introspection --disable-shared --enable-static --with-pic \
-	$(if $(filter TRUE,$(HAVE_GCC_BUILTIN_ATOMIC)),"lt_cv_has_atomic=yes","lt_cv_has_atomic=no") \
-	$(if $(filter YES,$(CROSS_COMPILING)),--build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM)) \
-	$(if $(filter NO,$(SYSTEM_LIBXML)),LIBXML2_CFLAGS="-I$(call gb_UnpackedTarball_get_dir,xml2)/include" \
-	$(if $(filter MSC,$(COM)),LIBXML2_LIBS="$(OUTDIR)/lib/libxml2.lib",LIBXML2_LIBS="-L$(OUTDIR)/lib -lxml2"),\
-	$(if $(filter MACOSX,$(OS)),LIBXML2_CFLAGS="$(LIBXML_CFLAGS)" LIBXML2_LIBS="$(LIBXML_LIBS)")) \
-	$(if $(filter MACOSX,$(OS)),--prefix=/@.__________________________________________________OOO) \
-	$(if $(filter-out LINUX FREEBSD,$(OS)),,LDFLAGS="-Wl,-z,origin -Wl,-rpath,\\"\$$\$$ORIGIN:'\'\$$\$$ORIGIN/../ure-link/lib) \
-	$(if $(filter-out SOLARIS,$(OS)),,LDFLAGS="-Wl,-z,origin -Wl,-R,\\"\$$\$$ORIGIN:'\'\$$\$$ORIGIN/../ure-link/lib) \
-	$(if $(filter-out WNTGCC,$(OS)$(COM)),,LDFLAGS="-Wl,--enable-runtime-pseudo-reloc-v2") \
-	&& $(MAKE) \
-	&& touch $@
+			$(SOLARINC)" && ) \
+		./configure --disable-modules --disable-test --disable-introspection --disable-shared --enable-static --with-pic \
+		$(if $(filter TRUE,$(HAVE_GCC_BUILTIN_ATOMIC)),"lt_cv_has_atomic=yes","lt_cv_has_atomic=no") \
+		$(if $(filter YES,$(CROSS_COMPILING)),--build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM)) \
+		$(if $(filter NO,$(SYSTEM_LIBXML)),LIBXML2_CFLAGS="-I$(call gb_UnpackedTarball_get_dir,xml2)/include" \
+		$(if $(filter MSC,$(COM)),LIBXML2_LIBS="$(OUTDIR)/lib/libxml2.lib",LIBXML2_LIBS="-L$(OUTDIR)/lib -lxml2"),\
+		$(if $(filter MACOSX,$(OS)),LIBXML2_CFLAGS="$(LIBXML_CFLAGS)" LIBXML2_LIBS="$(LIBXML_LIBS)")) \
+		$(if $(filter MACOSX,$(OS)),--prefix=/@.__________________________________________________OOO) \
+		$(if $(filter-out LINUX FREEBSD,$(OS)),,LDFLAGS="-Wl,-z,origin -Wl,-rpath,\\"\$$\$$ORIGIN:'\'\$$\$$ORIGIN/../ure-link/lib) \
+		$(if $(filter-out SOLARIS,$(OS)),,LDFLAGS="-Wl,-z,origin -Wl,-R,\\"\$$\$$ORIGIN:'\'\$$\$$ORIGIN/../ure-link/lib) \
+		$(if $(filter-out WNTGCC,$(OS)$(COM)),,LDFLAGS="-Wl,--enable-runtime-pseudo-reloc-v2") \
+		&& $(MAKE) \
+	)
 # vim: set noet sw=4 ts=4:
diff --git a/libmspub/ExternalProject_libmspub.mk b/libmspub/ExternalProject_libmspub.mk
index 9fdcce1..73ca1c6 100644
--- a/libmspub/ExternalProject_libmspub.mk
+++ b/libmspub/ExternalProject_libmspub.mk
@@ -26,56 +26,56 @@ ifeq ($(OS)$(COM),WNTMSC)
 
 ifeq ($(VCVER),90)
 $(call gb_ExternalProject_get_state_target,libmspub,build) :
-	cd $(EXTERNAL_WORKDIR)/build/win32 \
-	&& export BOOST_INCLUDE_DIR=$(call gb_UnpackedTarball_get_dir,boost) \
-	&& export LIBWPD_INCLUDE_DIR=$(OUTDIR)/inc/external \
-	&& export LIBWPG_INCLUDE_DIR=$(OUTDIR)/inc/external \
-	&& export ZLIB_INCLUDE_DIR=$(OUTDIR)/inc/external/zlib \
-	&& export ICU_INCLUDE_DIR=$(OUTDIR)/inc/external \
-	&& $(COMPATH)/vcpackages/vcbuild.exe libmspub.vcproj "Release|Win32" \
-	&& touch $@
+	$(call gb_ExternalProject_run,build,\
+		export BOOST_INCLUDE_DIR=$(call gb_UnpackedTarball_get_dir,boost) \
+		&& export LIBWPD_INCLUDE_DIR=$(OUTDIR)/inc/external \
+		&& export LIBWPG_INCLUDE_DIR=$(OUTDIR)/inc/external \
+		&& export ZLIB_INCLUDE_DIR=$(OUTDIR)/inc/external/zlib \
+		&& export ICU_INCLUDE_DIR=$(OUTDIR)/inc/external \
+		&& $(COMPATH)/vcpackages/vcbuild.exe libmspub.vcproj "Release|Win32" \
+	,build/win32)
 else ifeq ($(VCVER),100)
 $(call gb_ExternalProject_get_state_target,libmspub,build) :
-	cd $(EXTERNAL_WORKDIR)/build/win32 \
-	&& export BOOST_INCLUDE_DIR=$(call gb_UnpackedTarball_get_dir,boost) \
-	&& export LIBWPD_INCLUDE_DIR=$(OUTDIR)/inc/external \
-	&& export LIBWPG_INCLUDE_DIR=$(OUTDIR)/inc/external \
-	&& export ZLIB_INCLUDE_DIR=$(OUTDIR)/inc/external/zlib \
-	&& export ICU_INCLUDE_DIR=$(OUTDIR)/inc/external \
-	&& msbuild.exe libmspub.vcxproj /p:Configuration=Release \
-	&& touch $@
+	$(call gb_ExternalProject_run,build,\
+		export BOOST_INCLUDE_DIR=$(call gb_UnpackedTarball_get_dir,boost) \
+		&& export LIBWPD_INCLUDE_DIR=$(OUTDIR)/inc/external \
+		&& export LIBWPG_INCLUDE_DIR=$(OUTDIR)/inc/external \
+		&& export ZLIB_INCLUDE_DIR=$(OUTDIR)/inc/external/zlib \
+		&& export ICU_INCLUDE_DIR=$(OUTDIR)/inc/external \
+		&& msbuild.exe libmspub.vcxproj /p:Configuration=Release \
+	,build/win32)
 else
 $(call gb_ExternalProject_get_state_target,libmspub,build) :
-	cd $(EXTERNAL_WORKDIR)/build/win32 \
-	&& export BOOST_INCLUDE_DIR=$(call gb_UnpackedTarball_get_dir,boost) \
-	&& export LIBWPD_INCLUDE_DIR=$(OUTDIR)/inc/external \
-	&& export LIBWPG_INCLUDE_DIR=$(OUTDIR)/inc/external \
-	&& export ZLIB_INCLUDE_DIR=$(OUTDIR)/inc/external/zlib \
-	&& export ICU_INCLUDE_DIR=$(OUTDIR)/inc/external \
-	&& msbuild.exe libmspub.vcxproj /p:PlatformToolset=v110 /p:VisualStudioVersion=11.0 /p:Configuration=Release \
-	&& touch $@
+	$(call gb_ExternalProject_run,build,\
+		export BOOST_INCLUDE_DIR=$(call gb_UnpackedTarball_get_dir,boost) \
+		&& export LIBWPD_INCLUDE_DIR=$(OUTDIR)/inc/external \
+		&& export LIBWPG_INCLUDE_DIR=$(OUTDIR)/inc/external \
+		&& export ZLIB_INCLUDE_DIR=$(OUTDIR)/inc/external/zlib \
+		&& export ICU_INCLUDE_DIR=$(OUTDIR)/inc/external \
+		&& msbuild.exe libmspub.vcxproj /p:PlatformToolset=v110 /p:VisualStudioVersion=11.0 /p:Configuration=Release \
+	,build/win32)
 endif
 
 else
 
 $(call gb_ExternalProject_get_state_target,libmspub,build) :
-	cd $(EXTERNAL_WORKDIR) \
-	&& export PKG_CONFIG="" \
-	&& export ICU_LIBS=" " && export ICU_CFLAGS="-I$(OUTDIR)/inc/external" \
-	&& export LIBMSPUB_CFLAGS="$(WPG_CFLAGS) $(WPD_CFLAGS)" \
-	&& export LIBMSPUB_LIBS="$(WPG_LIBS) $(WPD_LIBS)" \
-	&& ./configure \
-		--with-pic \
-		--enable-static \
-		--disable-shared \
-		--without-docs \
-		--disable-debug \
-		--disable-werror \
-		--disable-weffc \
-		$(if $(filter NO,$(SYSTEM_BOOST)),CXXFLAGS=-I$(call gb_UnpackedTarball_get_dir,boost),CXXFLAGS=$(BOOST_CPPFLAGS)) \
-		$(if $(filter YES,$(CROSS_COMPILING)),--build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM)) \
-	&& (cd $(EXTERNAL_WORKDIR)/src/lib && $(MAKE)) \
-	&& touch $@
+	$(call gb_ExternalProject_run,build,\
+		export PKG_CONFIG="" \
+		&& export ICU_LIBS=" " && export ICU_CFLAGS="-I$(OUTDIR)/inc/external" \
+		&& export LIBMSPUB_CFLAGS="$(WPG_CFLAGS) $(WPD_CFLAGS)" \
+		&& export LIBMSPUB_LIBS="$(WPG_LIBS) $(WPD_LIBS)" \
+		&& ./configure \
+			--with-pic \
+			--enable-static \
+			--disable-shared \
+			--without-docs \
+			--disable-debug \
+			--disable-werror \
+			--disable-weffc \
+			$(if $(filter NO,$(SYSTEM_BOOST)),CXXFLAGS=-I$(call gb_UnpackedTarball_get_dir,boost),CXXFLAGS=$(BOOST_CPPFLAGS)) \
+			$(if $(filter YES,$(CROSS_COMPILING)),--build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM)) \
+		&& (cd $(EXTERNAL_WORKDIR)/src/lib && $(MAKE)) \
+	)
 
 endif
 
diff --git a/liborcus/ExternalProject_liborcus.mk b/liborcus/ExternalProject_liborcus.mk
index 2bbf2e9..67d5055 100644
--- a/liborcus/ExternalProject_liborcus.mk
+++ b/liborcus/ExternalProject_liborcus.mk
@@ -21,49 +21,49 @@ ifeq ($(OS)$(COM),WNTMSC)
 
 ifeq ($(VCVER),90)
 $(call gb_ExternalProject_get_state_target,liborcus,build) :
-	cd $(EXTERNAL_WORKDIR)/vsprojects/liborcus-static-nozip \
-	&& export BOOST_INCLUDE_DIR=$(call gb_UnpackedTarball_get_dir,boost) \
-	&& export ZLIB_INCLUDE_DIR=$(OUTDIR)/inc/external/zlib \
-	&& export BOOST_LIB_DIR=$(OUTDIR)/lib \
-	&& $(COMPATH)/vcpackages/vcbuild.exe liborcus-static-nozip.vcproj "Release|Win32" \
-	&& touch $@
+	$(call gb_ExternalProject_run,build,\
+		export BOOST_INCLUDE_DIR=$(call gb_UnpackedTarball_get_dir,boost) \
+		&& export ZLIB_INCLUDE_DIR=$(OUTDIR)/inc/external/zlib \
+		&& export BOOST_LIB_DIR=$(OUTDIR)/lib \
+		&& $(COMPATH)/vcpackages/vcbuild.exe liborcus-static-nozip.vcproj "Release|Win32" \
+	,vsprojects/liborcus-static-nozip)
 else ifeq ($(VCVER),100)
 $(call gb_ExternalProject_get_state_target,liborcus,build) :
-	cd $(EXTERNAL_WORKDIR)/vsprojects/liborcus-static-nozip \
-	&& export BOOST_INCLUDE_DIR=$(call gb_UnpackedTarball_get_dir,boost) \
-	&& export ZLIB_INCLUDE_DIR=$(OUTDIR)/inc/external/zlib \
-	&& export BOOST_LIB_DIR=$(OUTDIR)/lib \
-	&& MSBuild.exe liborcus-static-nozip.vcxproj /p:Configuration=Release /p:OutDir=Release/ /p:TargetName=orcus /p:WholeProgramOptimization=no \
-	&& touch $@
+	$(call gb_ExternalProject_run,build,\
+		export BOOST_INCLUDE_DIR=$(call gb_UnpackedTarball_get_dir,boost) \
+		&& export ZLIB_INCLUDE_DIR=$(OUTDIR)/inc/external/zlib \
+		&& export BOOST_LIB_DIR=$(OUTDIR)/lib \
+		&& MSBuild.exe liborcus-static-nozip.vcxproj /p:Configuration=Release /p:OutDir=Release/ /p:TargetName=orcus /p:WholeProgramOptimization=no \
+	,vsprojects/liborcus-static-nozip)
 else
 $(call gb_ExternalProject_get_state_target,liborcus,build) :
-	cd $(EXTERNAL_WORKDIR)/vsprojects/liborcus-static-nozip \
-	&& export BOOST_INCLUDE_DIR=$(call gb_UnpackedTarball_get_dir,boost) \
-	&& export ZLIB_INCLUDE_DIR=$(OUTDIR)/inc/external/zlib \
-	&& export BOOST_LIB_DIR=$(OUTDIR)/lib \
-	&& MSBuild.exe liborcus-static-nozip.vcxproj /p:PlatformToolset=v110 /p:VisualStudioVersion=11.0 /p:Configuration=Release /p:OutDir=Release/ /p:TargetName=orcus /p:WholeProgramOptimization=no \
-	&& touch $@
+	$(call gb_ExternalProject_run,build,\
+		export BOOST_INCLUDE_DIR=$(call gb_UnpackedTarball_get_dir,boost) \
+		&& export ZLIB_INCLUDE_DIR=$(OUTDIR)/inc/external/zlib \
+		&& export BOOST_LIB_DIR=$(OUTDIR)/lib \
+		&& MSBuild.exe liborcus-static-nozip.vcxproj /p:PlatformToolset=v110 /p:VisualStudioVersion=11.0 /p:Configuration=Release /p:OutDir=Release/ /p:TargetName=orcus /p:WholeProgramOptimization=no \
+	,vsprojects/liborcus-static-nozip)
 endif
 
 else
 
 # must be built with debug STL if --enable-dbgutil
 $(call gb_ExternalProject_get_state_target,liborcus,build) :
-	cd $(EXTERNAL_WORKDIR) \
-	&& $(if $(filter ANDROID,$(OS)),LIBS='-lgnustl_shared -lm') \
-	./configure \
-		--with-pic \
-		--enable-static \
-		--disable-shared \
-		--without-libzip \
-		--disable-debug \
-		--disable-spreadsheet-model \
-		--disable-werror \
-		$(if $(filter LINUX FREEBSD OPENBSD NETBSD DRAGONFLY ANDROID,$(OS)),$(if $(gb_ENABLE_DBGUTIL),CPPFLAGS=-D_GLIBCXX_DEBUG)) \
-		$(if $(filter NO,$(SYSTEM_BOOST)),CXXFLAGS=-I$(call gb_UnpackedTarball_get_dir,boost),CXXFLAGS=$(BOOST_CPPFLAGS) LDFLAGS=$(BOOST_LDFLAGS)) \
-		$(if $(filter YES,$(CROSS_COMPILING)),--build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM)) \
-	&& $(MAKE) \
-	&& touch $@
+	$(call gb_ExternalProject_run,build,\
+		$(if $(filter ANDROID,$(OS)),LIBS='-lgnustl_shared -lm') \
+		./configure \
+			--with-pic \
+			--enable-static \
+			--disable-shared \
+			--without-libzip \
+			--disable-debug \
+			--disable-spreadsheet-model \
+			--disable-werror \
+			$(if $(filter LINUX FREEBSD OPENBSD NETBSD DRAGONFLY ANDROID,$(OS)),$(if $(gb_ENABLE_DBGUTIL),CPPFLAGS=-D_GLIBCXX_DEBUG)) \
+			$(if $(filter NO,$(SYSTEM_BOOST)),CXXFLAGS=-I$(call gb_UnpackedTarball_get_dir,boost),CXXFLAGS=$(BOOST_CPPFLAGS) LDFLAGS=$(BOOST_LDFLAGS)) \
+			$(if $(filter YES,$(CROSS_COMPILING)),--build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM)) \
+		&& $(MAKE) \
+	)
 
 endif
 
diff --git a/libvisio/ExternalProject_libvisio.mk b/libvisio/ExternalProject_libvisio.mk
index deee499..dcd61a1 100644
--- a/libvisio/ExternalProject_libvisio.mk
+++ b/libvisio/ExternalProject_libvisio.mk
@@ -26,53 +26,53 @@ ifeq ($(OS)$(COM),WNTMSC)
 
 ifeq ($(VCVER),90)
 $(call gb_ExternalProject_get_state_target,libvisio,build) :
-	cd $(EXTERNAL_WORKDIR)/build/win32 \
-	&& export BOOST_INCLUDE_DIR=$(call gb_UnpackedTarball_get_dir,boost) \
-	&& export LIBWPD_INCLUDE_DIR=$(OUTDIR)/inc/external \
-	&& export LIBWPG_INCLUDE_DIR=$(OUTDIR)/inc/external \
-	&& export LIBXML_INCLUDE_DIR=$(call gb_UnpackedTarball_get_dir,xml2)/include \
-	&& export ZLIB_INCLUDE_DIR=$(OUTDIR)/inc/external/zlib \
-	&& $(COMPATH)/vcpackages/vcbuild.exe libvisio.vcproj "Release|Win32" \
-	&& touch $@
+	$(call gb_ExternalProject_run,build,\
+		export BOOST_INCLUDE_DIR=$(call gb_UnpackedTarball_get_dir,boost) \
+		&& export LIBWPD_INCLUDE_DIR=$(OUTDIR)/inc/external \
+		&& export LIBWPG_INCLUDE_DIR=$(OUTDIR)/inc/external \
+		&& export LIBXML_INCLUDE_DIR=$(call gb_UnpackedTarball_get_dir,xml2)/include \
+		&& export ZLIB_INCLUDE_DIR=$(OUTDIR)/inc/external/zlib \
+		&& $(COMPATH)/vcpackages/vcbuild.exe libvisio.vcproj "Release|Win32" \
+	,build/win32)
 else ifeq ($(VCVER),100)
 $(call gb_ExternalProject_get_state_target,libvisio,build) :
-	cd $(EXTERNAL_WORKDIR)/build/win32 \
-	&& export BOOST_INCLUDE_DIR=$(call gb_UnpackedTarball_get_dir,boost) \
-	&& export LIBWPD_INCLUDE_DIR=$(OUTDIR)/inc/external \
-	&& export LIBWPG_INCLUDE_DIR=$(OUTDIR)/inc/external \
-	&& export LIBXML_INCLUDE_DIR=$(call gb_UnpackedTarball_get_dir,xml2)/include \
-	&& export ZLIB_INCLUDE_DIR=$(OUTDIR)/inc/external/zlib \
-	&& msbuild.exe libvisio.vcxproj /p:Configuration=Release \
-	&& touch $@
+	$(call gb_ExternalProject_run,build,\
+		export BOOST_INCLUDE_DIR=$(call gb_UnpackedTarball_get_dir,boost) \
+		&& export LIBWPD_INCLUDE_DIR=$(OUTDIR)/inc/external \
+		&& export LIBWPG_INCLUDE_DIR=$(OUTDIR)/inc/external \
+		&& export LIBXML_INCLUDE_DIR=$(call gb_UnpackedTarball_get_dir,xml2)/include \
+		&& export ZLIB_INCLUDE_DIR=$(OUTDIR)/inc/external/zlib \
+		&& msbuild.exe libvisio.vcxproj /p:Configuration=Release \
+	,build/win32)
 else
 $(call gb_ExternalProject_get_state_target,libvisio,build) :
-	cd $(EXTERNAL_WORKDIR)/build/win32 \
-	&& export BOOST_INCLUDE_DIR=$(call gb_UnpackedTarball_get_dir,boost) \
-	&& export LIBWPD_INCLUDE_DIR=$(OUTDIR)/inc/external \
-	&& export LIBWPG_INCLUDE_DIR=$(OUTDIR)/inc/external \
-	&& export LIBXML_INCLUDE_DIR=$(call gb_UnpackedTarball_get_dir,xml2)/include \
-	&& export ZLIB_INCLUDE_DIR=$(OUTDIR)/inc/external/zlib \
-	&& msbuild.exe libvisio.vcxproj /p:PlatformToolset=v110 /p:VisualStudioVersion=11.0 /p:Configuration=Release \
-	&& touch $@
+	$(call gb_ExternalProject_run,build,\
+		export BOOST_INCLUDE_DIR=$(call gb_UnpackedTarball_get_dir,boost) \
+		&& export LIBWPD_INCLUDE_DIR=$(OUTDIR)/inc/external \
+		&& export LIBWPG_INCLUDE_DIR=$(OUTDIR)/inc/external \
+		&& export LIBXML_INCLUDE_DIR=$(call gb_UnpackedTarball_get_dir,xml2)/include \
+		&& export ZLIB_INCLUDE_DIR=$(OUTDIR)/inc/external/zlib \
+		&& msbuild.exe libvisio.vcxproj /p:PlatformToolset=v110 /p:VisualStudioVersion=11.0 /p:Configuration=Release \
+	,build/win32)
 endif
 
 else
 
 $(call gb_ExternalProject_get_state_target,libvisio,build) :
-	cd $(EXTERNAL_WORKDIR) \
-	&& PKG_CONFIG="" \
-	./configure \
-		--with-pic \
-		--enable-static \
-		--disable-shared \
-		--without-docs \
-		--disable-debug \
-		--disable-werror \
-		CXXFLAGS="$(if $(filter NO,$(SYSTEM_BOOST)),-I$(call gb_UnpackedTarball_get_dir,boost),$(BOOST_CPPFLAGS)) \
-		$(if $(filter NO,$(SYSTEM_LIBXML)),-I$(call gb_UnpackedTarball_get_dir,xml2)/include)" \
-		$(if $(filter YES,$(CROSS_COMPILING)),--build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM)) \
-	&& (cd $(EXTERNAL_WORKDIR)/src/lib && $(MAKE)) \
-	&& touch $@
+	$(call gb_ExternalProject_run,build,\
+		PKG_CONFIG="" \
+		./configure \
+			--with-pic \
+			--enable-static \
+			--disable-shared \
+			--without-docs \
+			--disable-debug \
+			--disable-werror \
+			CXXFLAGS="$(if $(filter NO,$(SYSTEM_BOOST)),-I$(call gb_UnpackedTarball_get_dir,boost),$(BOOST_CPPFLAGS)) \
+			$(if $(filter NO,$(SYSTEM_LIBXML)),-I$(call gb_UnpackedTarball_get_dir,xml2)/include)" \
+			$(if $(filter YES,$(CROSS_COMPILING)),--build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM)) \
+		&& (cd $(EXTERNAL_WORKDIR)/src/lib && $(MAKE)) \
+	)
 
 endif
 
diff --git a/libwpd/ExternalProject_libwpd.mk b/libwpd/ExternalProject_libwpd.mk
index d92b272..f015c49 100644
--- a/libwpd/ExternalProject_libwpd.mk
+++ b/libwpd/ExternalProject_libwpd.mk
@@ -19,36 +19,36 @@ ifeq ($(OS)$(COM),WNTMSC)
 
 ifeq ($(VCVER),90)
 $(call gb_ExternalProject_get_state_target,libwpd,build) :
-	cd $(EXTERNAL_WORKDIR)/build/win32 \
-	&& $(COMPATH)/vcpackages/vcbuild.exe libwpd.vcproj "Release|Win32" \
-	&& touch $@
+	$(call gb_ExternalProject_run,build,\
+		$(COMPATH)/vcpackages/vcbuild.exe libwpd.vcproj "Release|Win32" \
+	,build/win32)
 else ifeq ($(VCVER),100)
 $(call gb_ExternalProject_get_state_target,libwpd,build) :
-	cd $(EXTERNAL_WORKDIR)/build/win32 \
-	&& msbuild.exe libwpd.vcxproj /p:Configuration=Release \
-	&& touch $@
+	$(call gb_ExternalProject_run,build,\
+		msbuild.exe libwpd.vcxproj /p:Configuration=Release \
+	,build/win32)
 else
 $(call gb_ExternalProject_get_state_target,libwpd,build) :
-	cd $(EXTERNAL_WORKDIR)/build/win32 \
-	&& msbuild.exe libwpd.vcxproj /p:PlatformToolset=v110 /p:VisualStudioVersion=11.0 /p:TargetName=libwpd-0.9 /p:Configuration=Release \
-	&& touch $@
+	$(call gb_ExternalProject_run,build,\
+		msbuild.exe libwpd.vcxproj /p:PlatformToolset=v110 /p:VisualStudioVersion=11.0 /p:TargetName=libwpd-0.9 /p:Configuration=Release \
+	,build/win32)
 endif
 else
 
 $(call gb_ExternalProject_get_state_target,libwpd,build) :
-	cd $(EXTERNAL_WORKDIR) \
-	&& $(if $(filter TRUE,$(DISABLE_DYNLOADING)),CFLAGS="$(CFLAGS) $(gb_VISIBILITY_FLAGS) $(gb_COMPILEROPTFLAGS)" CXXFLAGS="$(CXXFLAGS) $(gb_VISIBILITY_FLAGS) $(gb_COMPILEROPTFLAGS)") \
+	$(call gb_ExternalProject_run,build,\
+		$(if $(filter TRUE,$(DISABLE_DYNLOADING)),CFLAGS="$(CFLAGS) $(gb_VISIBILITY_FLAGS) $(gb_COMPILEROPTFLAGS)" CXXFLAGS="$(CXXFLAGS) $(gb_VISIBILITY_FLAGS) $(gb_COMPILEROPTFLAGS)") \
 		./configure \
-		--with-pic \
-		--enable-static \
-		--disable-shared \
-		--without-stream \
-		--without-docs \
-		--disable-debug \
-		$(if $(filter MACOSX,$(OS)),--disable-werror) \
-		$(if $(filter YES,$(CROSS_COMPILING)),--build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM)) \
-	&& $(MAKE) \
-	&& touch $@
+			--with-pic \
+			--enable-static \
+			--disable-shared \
+			--without-stream \
+			--without-docs \
+			--disable-debug \
+			$(if $(filter MACOSX,$(OS)),--disable-werror) \
+			$(if $(filter YES,$(CROSS_COMPILING)),--build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM)) \
+		&& $(MAKE) \
+	)
 
 endif
 
diff --git a/libxml2/ExternalProject_xml2.mk b/libxml2/ExternalProject_xml2.mk
index b687736..fc68d9d 100644
--- a/libxml2/ExternalProject_xml2.mk
+++ b/libxml2/ExternalProject_xml2.mk
@@ -18,36 +18,36 @@ $(eval $(call gb_ExternalProject_register_targets,xml2,\
 ifeq ($(OS),WNT)
 ifeq ($(COM),GCC)
 $(call gb_ExternalProject_get_state_target,xml2,build):
-	cd $(EXTERNAL_WORKDIR) \
-	&& ./configure --disable-ipv6 --without-python --without-zlib \
-	--disable-static --without-debug lt_cv_cc_dll_switch="-shared" \
-	$(if $(filter YES,$(CROSS_COMPILING)),--build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM)) \
-	CC="$(CC) -mthreads $(if $(filter YES,$(MINGW_SHARED_GCCLIB)),-shared-libgcc)" \
-	LIBS="-lws2_32 $(if $(filter YES,$(MINGW_SHARED_GXXLIB)),$(MINGW_SHARED_LIBSTDCPP))" \
-	LDFLAGS="-Wl,--no-undefined -Wl,--enable-runtime-pseudo-reloc-v2" \
-	OBJDUMP=objdump \
-	&& $(MAKE) \
-	&& touch $@
+	$(call gb_ExternalProject_run,build,\
+		./configure --disable-ipv6 --without-python --without-zlib \
+			--disable-static --without-debug lt_cv_cc_dll_switch="-shared" \
+			$(if $(filter YES,$(CROSS_COMPILING)),--build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM)) \
+			CC="$(CC) -mthreads $(if $(filter YES,$(MINGW_SHARED_GCCLIB)),-shared-libgcc)" \
+			LIBS="-lws2_32 $(if $(filter YES,$(MINGW_SHARED_GXXLIB)),$(MINGW_SHARED_LIBSTDCPP))" \
+			LDFLAGS="-Wl,--no-undefined -Wl,--enable-runtime-pseudo-reloc-v2" \
+			OBJDUMP=objdump \
+		&& $(MAKE) \
+	)
 else # COM=MSC
 $(call gb_ExternalProject_get_state_target,xml2,build):
-	cd $(EXTERNAL_WORKDIR)/win32 \
-	&& cscript configure.js iconv=no sax1=yes \
-	&& unset MAKEFLAGS \
-	&& LIB="$(ILIB)" nmake \
-	&& touch $@
+	$(call gb_ExternalProject_run,build,\
+		cscript configure.js iconv=no sax1=yes \
+		&& unset MAKEFLAGS \
+		&& LIB="$(ILIB)" nmake \
+	,win32)
 endif
 else # OS!=WNT
 $(call gb_ExternalProject_get_state_target,xml2,build):
-	cd $(EXTERNAL_WORKDIR) \
-	&& ./configure --disable-ipv6 --without-python --without-zlib --with-sax1 \
-	$(if $(debug),--with-run-debug) \
-	$(if $(filter YES,$(CROSS_COMPILING)),--build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM)) \
-	$(if $(filter MACOSX,$(OS)),--prefix=/@.__________________________________________________OOO) \
-	LDFLAGS="$(if $(SYSBASE),-L$(SYSBASE)/usr/lib)" \
-	CFLAGS="$(if $(SYSBASE),-I$(SYSBASE)/usr/include) $(if $(debug),-g)" \
-	$(if $(filter TRUE,$(DISABLE_DYNLOADING)),--disable-shared,--disable-static) \
-	&& $(MAKE) \
-	&& touch $@
+	$(call gb_ExternalProject_run,build,\
+		./configure --disable-ipv6 --without-python --without-zlib --with-sax1 \
+			$(if $(debug),--with-run-debug) \
+			$(if $(filter YES,$(CROSS_COMPILING)),--build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM)) \
+			$(if $(filter MACOSX,$(OS)),--prefix=/@.__________________________________________________OOO) \
+			LDFLAGS="$(if $(SYSBASE),-L$(SYSBASE)/usr/lib)" \
+			CFLAGS="$(if $(SYSBASE),-I$(SYSBASE)/usr/include) $(if $(debug),-g)" \
+			$(if $(filter TRUE,$(DISABLE_DYNLOADING)),--disable-shared,--disable-static) \
+		&& $(MAKE) \
+	)
 endif
 
 # vim: set noet sw=4 ts=4:
diff --git a/libxmlsec/ExternalProject_xmlsec.mk b/libxmlsec/ExternalProject_xmlsec.mk
index a0b182b..c589e3d 100644
--- a/libxmlsec/ExternalProject_xmlsec.mk
+++ b/libxmlsec/ExternalProject_xmlsec.mk
@@ -21,43 +21,43 @@ ifeq ($(OS),WNT)
 
 ifeq ($(COM),GCC)
 $(call gb_ExternalProject_get_state_target,xmlsec,build) :
-	cd $(EXTERNAL_WORKDIR) \
-	&& autoreconf \
-	&& ./configure --build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM) \
-	--without-libxslt --without-openssl --without-gnutls --disable-crypto-dl \
-	$(if $(filter NO,$(SYSTEM_NSS)),--disable-pkgconfig) \
-	CC="$(CC) -mthreads $(if $(filter YES,$(MINGW_SHARED_GCCLIB)),-shared-libgcc)" \
-	LDFLAGS="-Wl,--no-undefined $(ILIB:;= -L)" \
-	LIBS="$(if $(filter YES,$(MINGW_SHARED_GXXLIB)),$(MINGW_SHARED__LIBSTDCPP))" \
-	&& $(MAKE) \
-	&& touch $@
+	$(call gb_ExternalProject_run,build,\
+		autoreconf \
+		&& ./configure --build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM) \
+			--without-libxslt --without-openssl --without-gnutls --disable-crypto-dl \
+			$(if $(filter NO,$(SYSTEM_NSS)),--disable-pkgconfig) \
+			CC="$(CC) -mthreads $(if $(filter YES,$(MINGW_SHARED_GCCLIB)),-shared-libgcc)" \
+			LDFLAGS="-Wl,--no-undefined $(ILIB:;= -L)" \
+			LIBS="$(if $(filter YES,$(MINGW_SHARED_GXXLIB)),$(MINGW_SHARED__LIBSTDCPP))" \
+		&& $(MAKE) \
+	)
 
 else
 $(call gb_ExternalProject_get_state_target,xmlsec,build) :
-	cd $(EXTERNAL_WORKDIR)/win32 \
-	&& cscript configure.js crypto=mscrypto xslt=no iconv=no static=no \
-	$(if $(filter TRUE,$(ENABLE_DBGUTIL)),debug=yes) \
-	&& unset MAKEFLAGS \
-	&& LIB="$(ILIB)" nmake \
-	&& touch $@
+	$(call gb_ExternalProject_run,build,\
+		cscript configure.js crypto=mscrypto xslt=no iconv=no static=no \
+			$(if $(filter TRUE,$(ENABLE_DBGUTIL)),debug=yes) \
+		&& unset MAKEFLAGS \
+		&& LIB="$(ILIB)" nmake \
+	,win32)
 endif
 
 else
 
 $(call gb_ExternalProject_get_state_target,xmlsec,build) :
-	cd $(EXTERNAL_WORKDIR) \
-	&& $(if $(filter MACOSX,$(OS)),ACLOCAL="aclocal -I $(SRCDIR)/m4/mac") autoreconf \
-	&& ./configure \
-		--with-pic --disable-shared --disable-crypto-dl --without-libxslt --without-gnutls \
-	$(if $(filter ANDROID,$(OS)),--with-openssl=$(OUTDIR),--without-openssl) \
-	$(if $(filter MACOSX,$(OS)),--prefix=/@.__________________________________________________OOO) \
-	$(if $(filter NO,$(SYSTEM_NSS))$(filter MACOSX,$(OS)),--disable-pkgconfig) \
-	$(if $(filter YES,$(CROSS_COMPILING)),--build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM)) \
-	$(if $(SYSBASE),CFLAGS="-I$(SYSBASE)/usr/include" \
-	LDFLAGS="-L$(SYSBASE)/usr/lib $(if $(filter-out LINUX FREEBSD,$(OS)),,-Wl,-z,origin -Wl,-rpath,\\"\$$\$$ORIGIN:'\'\$$\$$ORIGIN/../ure-link/lib),\
-	$(if $(filter-out MACOSX,$(OS)),,LDFLAGS="-Wl,-dylib_file, at executable_path/libnssutil3.dylib:$(OUTDIR)/lib/libnssutil3.dylib")) \
-	&& $(MAKE) \
-	&& touch $@
+	$(call gb_ExternalProject_run,build,\
+		$(if $(filter MACOSX,$(OS)),ACLOCAL="aclocal -I $(SRCDIR)/m4/mac") autoreconf \
+		&& ./configure \
+			--with-pic --disable-shared --disable-crypto-dl --without-libxslt --without-gnutls \
+			$(if $(filter ANDROID,$(OS)),--with-openssl=$(OUTDIR),--without-openssl) \
+			$(if $(filter MACOSX,$(OS)),--prefix=/@.__________________________________________________OOO) \
+			$(if $(filter NO,$(SYSTEM_NSS))$(filter MACOSX,$(OS)),--disable-pkgconfig) \
+			$(if $(filter YES,$(CROSS_COMPILING)),--build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM)) \
+			$(if $(SYSBASE),CFLAGS="-I$(SYSBASE)/usr/include" \
+			LDFLAGS="-L$(SYSBASE)/usr/lib $(if $(filter-out LINUX FREEBSD,$(OS)),,-Wl,-z,origin -Wl,-rpath,\\"\$$\$$ORIGIN:'\'\$$\$$ORIGIN/../ure-link/lib),\
+			$(if $(filter-out MACOSX,$(OS)),,LDFLAGS="-Wl,-dylib_file, at executable_path/libnssutil3.dylib:$(OUTDIR)/lib/libnssutil3.dylib")) \
+		&& $(MAKE) \
+	)
 
 endif
 
diff --git a/libxslt/ExternalProject_xslt.mk b/libxslt/ExternalProject_xslt.mk
index b64eb93..e468267 100644
--- a/libxslt/ExternalProject_xslt.mk
+++ b/libxslt/ExternalProject_xslt.mk
@@ -19,40 +19,40 @@ $(eval $(call gb_ExternalProject_register_targets,xslt,\
 ifeq ($(OS),WNT)
 ifeq ($(COM),GCC)
 $(call gb_ExternalProject_get_state_target,xslt,build):
-	cd $(EXTERNAL_WORKDIR) \
-	&& ./configure --without-crypto --without-python --disable-static \
-	$(if $(filter YES,$(CROSS_COMPILING)),--build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM)) \
-	CC="$(CC) -mthreads $(if $(filter YES,$(MINGW_SHARED_GCCLIB)),-shared-libgcc)" \
-	$(if $(filter YES,$(MINGW_SHARED_GXXLIB)),LIBS="$(MINGW_SHARED_LIBSTDCPP)") \
-	LDFLAGS="-Wl,--no-undefined -Wl,--enable-runtime-pseudo-reloc-v2" \
-	OBJDUMP=objdump \
-	&& chmod 777 xslt-config \
-	&& $(MAKE) \
-	&& touch $@
+	$(call gb_ExternalProject_run,build,\
+		./configure --without-crypto --without-python --disable-static \
+			$(if $(filter YES,$(CROSS_COMPILING)),--build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM)) \
+			CC="$(CC) -mthreads $(if $(filter YES,$(MINGW_SHARED_GCCLIB)),-shared-libgcc)" \
+			$(if $(filter YES,$(MINGW_SHARED_GXXLIB)),LIBS="$(MINGW_SHARED_LIBSTDCPP)") \
+			LDFLAGS="-Wl,--no-undefined -Wl,--enable-runtime-pseudo-reloc-v2" \
+			OBJDUMP=objdump \
+		&& chmod 777 xslt-config \
+		&& $(MAKE) \
+	)
 else # COM=MSC
 $(call gb_ExternalProject_get_state_target,xslt,build):
-	cd $(EXTERNAL_WORKDIR)/win32 \
-	&& cscript configure.js \
-	&& unset MAKEFLAGS \
-	&& LIB="$(ILIB)" nmake \
-	&& touch $@
+	$(call gb_ExternalProject_run,build,\
+		cscript configure.js \
+		&& unset MAKEFLAGS \
+		&& LIB="$(ILIB)" nmake \
+	,win32)
 endif
 else # OS!=WNT
 $(call gb_ExternalProject_get_state_target,xslt,build):
-	cd $(EXTERNAL_WORKDIR) \
-	&& ./configure --without-crypto --without-python \
-	$(if $(filter YES,$(CROSS_COMPILING)),--build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM)) \
-	$(if $(filter MACOSX,$(OS)),--prefix=/@.__________________________________________________OOO) \
-	LDFLAGS="$(if $(filter LINUX FREEBSD,$(OS)),-Wl$(COMMA)-z$(COMMA)origin -Wl$(COMMA)-rpath$(COMMA)\\"\$$\$$ORIGIN:'\'\$$\$$ORIGIN/../ure-link/lib" -Wl$(COMMA)-noinhibit-exec) \
-		$(if $(SYSBASE),$(if $(filter SOLARIS LINUX,$(OS)),-L$(SYSBASE)/lib -L$(SYSBASE)/usr/lib -lpthread -ldl))" \
-	$(if $(SYSBASE),CPPFLAGS="-I$(SYSBASE)/usr/include") \
-	$(if $(filter TRUE,$(DISABLE_DYNLOADING)), \
-	$(if $(filter IOS,$(OS)),LIBS="-liconv") \
-	--disable-shared,--disable-static) \
-	$(if $(filter NO,$(SYSTEM_LIBXML)),--with-libxml-prefix=$(OUTDIR) LIBXML2LIB=-lxml2) \
-	&& chmod 777 xslt-config \
-	&& $(MAKE) \
-	&& touch $@
+	$(call gb_ExternalProject_run,build,\
+		./configure --without-crypto --without-python \
+			$(if $(filter YES,$(CROSS_COMPILING)),--build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM)) \
+			$(if $(filter MACOSX,$(OS)),--prefix=/@.__________________________________________________OOO) \
+			LDFLAGS="$(if $(filter LINUX FREEBSD,$(OS)),-Wl$(COMMA)-z$(COMMA)origin -Wl$(COMMA)-rpath$(COMMA)\\"\$$\$$ORIGIN:'\'\$$\$$ORIGIN/../ure-link/lib" -Wl$(COMMA)-noinhibit-exec) \
+			$(if $(SYSBASE),$(if $(filter SOLARIS LINUX,$(OS)),-L$(SYSBASE)/lib -L$(SYSBASE)/usr/lib -lpthread -ldl))" \
+			$(if $(SYSBASE),CPPFLAGS="-I$(SYSBASE)/usr/include") \
+			$(if $(filter TRUE,$(DISABLE_DYNLOADING)), \
+			$(if $(filter IOS,$(OS)),LIBS="-liconv") \
+			--disable-shared,--disable-static) \
+			$(if $(filter NO,$(SYSTEM_LIBXML)),--with-libxml-prefix=$(OUTDIR) LIBXML2LIB=-lxml2) \
+		&& chmod 777 xslt-config \
+		&& $(MAKE) \
+	)
 endif
 
 # vim: set noet sw=4 ts=4:
diff --git a/lpsolve/ExternalProject_lpsolve.mk b/lpsolve/ExternalProject_lpsolve.mk
index 1644b0f..7de29e5 100644
--- a/lpsolve/ExternalProject_lpsolve.mk
+++ b/lpsolve/ExternalProject_lpsolve.mk
@@ -18,25 +18,25 @@ $(eval $(call gb_ExternalProject_register_targets,lpsolve,\
 ifeq ($(OS),WNT)
 ifeq ($(COM),GCC)
 $(call gb_ExternalProject_get_state_target,lpsolve,build):
-	cd $(EXTERNAL_WORKDIR)/lpsolve55 \
-	&& $(if $(filter WNT,$(OS_FOR_BUILD)), \
-	$(if $(filter YES,$(MINGW_SHARED_GCCLIB)) lpsolve_LDFLAGS="-shared-libgcc") \
-	$(if $(filter YES,$(MINGW_SHARED_GXXLIB)) lpsolve_LIBS="$(MINGW_SHARED_LIBSTDCPP)") \
-	cmd /c cgcc.bat, sh ccc) \
-	&& touch $@
+	$(call gb_ExternalProject_run,build,\
+		$(if $(filter WNT,$(OS_FOR_BUILD)), \
+		$(if $(filter YES,$(MINGW_SHARED_GCCLIB)) lpsolve_LDFLAGS="-shared-libgcc") \
+		$(if $(filter YES,$(MINGW_SHARED_GXXLIB)) lpsolve_LIBS="$(MINGW_SHARED_LIBSTDCPP)") \
+		cmd /c cgcc.bat, sh ccc) \
+	,lpsolve55)
 else # $(COM)!=GCC
 $(call gb_ExternalProject_get_state_target,lpsolve,build):
-	cd $(EXTERNAL_WORKDIR)/lpsolve55 \
-	&& LIB="$(ILIB)" cmd /c cvc6.bat \
-	&& touch $@
+	$(call gb_ExternalProject_run,build,\
+		LIB="$(ILIB)" cmd /c cvc6.bat \
+	,lpsolve55)
 endif # $(COM)
 else # $(OS)!=WNT
 $(call gb_ExternalProject_get_state_target,lpsolve,build):
-	cd $(EXTERNAL_WORKDIR)/lpsolve55 \
-	&& sh $(if $(filter MACOSX,$(OS)),ccc.osx, \
-	$(if $(filter TRUE,$(DISABLE_DYNLOADING)),ccc.static, \
-	$(if $(filter AIXGCC,$(OS)$(COM)),ccc.aix.gcc, \
-	ccc))) \
-	&& touch $@
+	$(call gb_ExternalProject_run,build,\
+		sh $(if $(filter MACOSX,$(OS)),ccc.osx, \
+		$(if $(filter TRUE,$(DISABLE_DYNLOADING)),ccc.static, \
+		$(if $(filter AIXGCC,$(OS)$(COM)),ccc.aix.gcc, \
+		ccc))) \
+	,lpsolve55)
 endif # $(OS)
 # vim: set noet sw=4 ts=4:
diff --git a/mythes/ExternalProject_mythes.mk b/mythes/ExternalProject_mythes.mk
index 79755af..99ccd61 100644
--- a/mythes/ExternalProject_mythes.mk
+++ b/mythes/ExternalProject_mythes.mk
@@ -18,11 +18,11 @@ $(eval $(call gb_ExternalProject_register_targets,mythes,\
 ))
 
 $(call gb_ExternalProject_get_state_target,mythes,build):
-	cd $(EXTERNAL_WORKDIR) \
-	&& LIBS="$(gb_STDLIBS) $(LIBS)" ./configure --disable-shared --with-pic \
-	$(if $(filter YES,$(CROSS_COMPILING)),--build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM) gio_can_sniff=no) \
-	$(if $(filter C52U,$(COM)$(CPU)),CFLAGS="-m64") \
-	&& $(MAKE) \
-	&& touch $@
+	$(call gb_ExternalProject_run,build,\
+		LIBS="$(gb_STDLIBS) $(LIBS)" ./configure --disable-shared --with-pic \
+		$(if $(filter YES,$(CROSS_COMPILING)),--build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM) gio_can_sniff=no) \
+		$(if $(filter C52U,$(COM)$(CPU)),CFLAGS="-m64") \
+		&& $(MAKE) \
+	)
 
 # vim: set noet sw=4 ts=4:
diff --git a/nss/ExternalProject_nss.mk b/nss/ExternalProject_nss.mk
index 7ddbcae..aa84385 100644
--- a/nss/ExternalProject_nss.mk
+++ b/nss/ExternalProject_nss.mk
@@ -17,62 +17,62 @@ $(eval $(call gb_ExternalProject_register_targets,nss,\
 ))
 
 $(call gb_ExternalProject_get_state_target,nss,configure):
-	cd $(EXTERNAL_WORKDIR) \
-	&& $(if $(filter MSC,$(COM)),LIB="$(ILIB)") \
+	$(call gb_ExternalProject_run,configure,\
+	$(if $(filter MSC,$(COM)),LIB="$(ILIB)") \
 	mozilla/nsprpub/configure --includedir=$(call gb_UnpackedTarball_get_dir,nss)/mozilla/dist/out/include \
-	$(if $(filter YES,$(CROSS_COMPILING)),--build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM)) \
-	$(if $(filter MSCX,$(COM)$(CPU)),--enable-64bit) \
-	$(if $(filter MACOSX,$(OS)),--prefix=/@.__________________________________________________OOO) \
+		$(if $(filter YES,$(CROSS_COMPILING)),--build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM)) \
+		$(if $(filter MSCX,$(COM)$(CPU)),--enable-64bit) \
+		$(if $(filter MACOSX,$(OS)),--prefix=/@.__________________________________________________OOO) \
 	&& sed -e 's%@prefix@%$(OUTDIR)%' \
-	-e 's%@includedir@%$(call gb_UnpackedTarball_get_dir,nss)/mozilla/dist/public/nss%' \
-	-e 's%@MOD_MAJOR_VERSION@%$(NSS_MAJOR)%' \
-	-e 's%@MOD_MINOR_VERSION@%$(NSS_MINOR)%' \
-	-e 's%@MOD_PATCH_VERSION@%$(NSS_PATCH)%' \
-	$(SRCDIR)/nss/nss-config.in > $(EXTERNAL_WORKDIR)/config/nss-config \
+		-e 's%@includedir@%$(call gb_UnpackedTarball_get_dir,nss)/mozilla/dist/public/nss%' \
+		-e 's%@MOD_MAJOR_VERSION@%$(NSS_MAJOR)%' \
+		-e 's%@MOD_MINOR_VERSION@%$(NSS_MINOR)%' \
+		-e 's%@MOD_PATCH_VERSION@%$(NSS_PATCH)%' \
+		$(SRCDIR)/nss/nss-config.in > $(EXTERNAL_WORKDIR)/config/nss-config \
 	&& chmod a+x $(EXTERNAL_WORKDIR)/config/nss-config \
-	&& touch $@
+	,,nss_configure.log)
 
 ifeq ($(OS),WNT)
 ifeq ($(COM),MSC)
 $(call gb_ExternalProject_get_state_target,nss,build): $(call gb_ExternalProject_get_state_target,nss,configure) $(call gb_ExternalExecutable_get_dependencies,python)
-	cd $(EXTERNAL_WORKDIR)/mozilla/security/nss \
-	&& $(if $(debug),,BUILD_OPT=1) \
-	MOZ_MSVCVERSION=9 OS_TARGET=WIN95 \
-	$(if $(filter X,$(CPU)),USE_64=1) \
-	LIB="$(ILIB)" \
-	XCFLAGS="$(SOLARINC)" \
-	$(MAKE) -j1 nss_build_all RC="rc.exe $(SOLARINC)" \
-	NSINSTALL='$(call gb_ExternalExecutable_get_command,python) $(SRCDIR)/nss/nsinstall.py' \
-	&& touch $@
+	$(call gb_ExternalProject_run,build,\
+		$(if $(debug),,BUILD_OPT=1) \
+		MOZ_MSVCVERSION=9 OS_TARGET=WIN95 \
+		$(if $(filter X,$(CPU)),USE_64=1) \
+		LIB="$(ILIB)" \
+		XCFLAGS="$(SOLARINC)" \
+		$(MAKE) -j1 nss_build_all RC="rc.exe $(SOLARINC)" \
+			NSINSTALL='$(call gb_ExternalExecutable_get_command,python) $(SRCDIR)/nss/nsinstall.py' \
+	,mozilla/security/nss)
 
 
 else
 $(call gb_ExternalProject_get_state_target,nss,build): $(call gb_ExternalProject_get_state_target,nss,configure)
-	cd $(EXTERNAL_WORKDIR)/mozilla/security/nss \
-	CC="$(CC) $(if $(filter YES,$(MINGW_SHARED_GCCLIB)),-shared-libgcc)" \
-	CXX="$(CXX) $(if $(filter YES,$(MINGW_SHARED_GCCLIB)),-shared-libgcc)" \
-	OS_LIBS="-ladvapi32 -lws2_32 -lmwsock -lwinm $(if $(filter YES,$(MINGW_SHARED_GXXLIB)),$(MINGW_SHARED_LIBSTDCPP))" \
-	OS_TARGET=WINNT RC="$(WINDRES)" OS_RELEASE="5.0" \
-	IMPORT_LIB_SUFFIX=dll.a \
-	NSPR_CONFIGURE_OPTS="--build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM) --enable-shared --disable-static" \
-	NSINSTALL="$(PYTHON_FOR_BUILD) $(SRCDIR)/nss/nsinstall.py" \
-	$(MAKE) -j1 nss_build_all \
-	&& touch $@
+	$(call gb_ExternalProject_run,build,\
+		CC="$(CC) $(if $(filter YES,$(MINGW_SHARED_GCCLIB)),-shared-libgcc)" \
+		CXX="$(CXX) $(if $(filter YES,$(MINGW_SHARED_GCCLIB)),-shared-libgcc)" \
+		OS_LIBS="-ladvapi32 -lws2_32 -lmwsock -lwinm $(if $(filter YES,$(MINGW_SHARED_GXXLIB)),$(MINGW_SHARED_LIBSTDCPP))" \
+		OS_TARGET=WINNT RC="$(WINDRES)" OS_RELEASE="5.0" \
+		IMPORT_LIB_SUFFIX=dll.a \
+		NSPR_CONFIGURE_OPTS="--build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM) --enable-shared --disable-static" \
+		NSINSTALL="$(PYTHON_FOR_BUILD) $(SRCDIR)/nss/nsinstall.py" \
+		$(MAKE) -j1 nss_build_all \
+	,mozilla/security/nss)
 
 endif
 else # OS!=WNT
 $(call gb_ExternalProject_get_state_target,nss,build): $(call gb_ExternalProject_get_state_target,nss,configure)
-	cd $(EXTERNAL_WORKDIR)/mozilla/security/nss \
-	&& $(if $(filter FREEBSD LINUX MACOSX,$(OS)),$(if $(filter X,$(CPU)),USE_64=1)) \
-	$(if $(filter MACOSX,$(OS)),MACOS_SDK_DIR=$(MACOSX_SDK_PATH) \
-	$(if $(filter 1060 1070 1080,$(MAC_OS_X_VERSION_MIN_REQUIRED)),NSS_USE_SYSTEM_SQLITE=1)) \
-	$(if $(filter SOLARIS,$(OS)),NS_USE_GCC=1) \
-	$(if $(filter YES,$(CROSS_COMPILING)),\
-	$(if $(filter MACOSXP,$(OS)$(CPU)),CPU_ARCH=ppc) \
-	NSINSTALL="$(PYTHON_FOR_BUILD) $(SRCDIR)/nss/nsinstall.py") \
-	NSDISTMODE=copy \
-	$(MAKE) -j1 nss_build_all \
-	&& touch $@
+	$(call gb_ExternalProject_run,build,\
+		$(if $(filter FREEBSD LINUX MACOSX,$(OS)),$(if $(filter X,$(CPU)),USE_64=1)) \
+		$(if $(filter MACOSX,$(OS)),MACOS_SDK_DIR=$(MACOSX_SDK_PATH) \
+		$(if $(filter 1060 1070 1080,$(MAC_OS_X_VERSION_MIN_REQUIRED)),NSS_USE_SYSTEM_SQLITE=1)) \
+		$(if $(filter SOLARIS,$(OS)),NS_USE_GCC=1) \
+		$(if $(filter YES,$(CROSS_COMPILING)),\
+		$(if $(filter MACOSXP,$(OS)$(CPU)),CPU_ARCH=ppc) \
+		NSINSTALL="$(PYTHON_FOR_BUILD) $(SRCDIR)/nss/nsinstall.py") \
+		NSDISTMODE=copy \
+		$(MAKE) -j1 nss_build_all \
+	,mozilla/security/nss)
 
 endif
 
diff --git a/openldap/ExternalProject_openldap.mk b/openldap/ExternalProject_openldap.mk
index e55296a..294bd07 100644
--- a/openldap/ExternalProject_openldap.mk
+++ b/openldap/ExternalProject_openldap.mk
@@ -16,27 +16,28 @@ $(eval $(call gb_ExternalProject_register_targets,openldap,\
 ))
 
 $(call gb_ExternalProject_get_state_target,openldap,build) :
-	cd $(EXTERNAL_WORKDIR) \
-	&& ./configure \
-		--disable-slapd \
-		--with-pic \
-		--with-tls=moznss \
-		--without-cyrus-sasl \
-		--disable-shared \
-		--enable-static \
-		$(if $(filter YES,$(CROSS_COMPILING)), \
-			--build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM) \
-			--with-yielding_select=yes \
-			ac_cv_func_memcmp_working=yes \
-		) \
-		$(if $(filter YES,$(SYSTEM_NSS)), \
-			CPPFLAGS="$(NSS_CFLAGS)" CFLAGS="$(NSS_CFLAGS)" LDFLAGS="$(NSS_LIBS)" \
-			, \
-			CPPFLAGS="-I$(call gb_UnpackedTarball_get_dir,nss)/mozilla/dist/public/nss -I$(call gb_UnpackedTarball_get_dir,nss)/mozilla/dist/out/include" \
-			CFLAGS="-I$(call gb_UnpackedTarball_get_dir,nss)/mozilla/dist/public/nss -I$(call gb_UnpackedTarball_get_dir,nss)/mozilla/dist/out/include" \
-			LDFLAGS="-L$(OUTDIR)/lib" \
-		) \
-	&& MAKEFLAGS= && $(MAKE) \
-	&& touch $@
+	$(call gb_ExternalProject_run,build,\
+		./configure \
+			--disable-slapd \
+			--with-pic \
+			--with-tls=moznss \
+			--without-cyrus-sasl \
+			--disable-shared \
+			--enable-static \
+			$(if $(filter YES,$(CROSS_COMPILING)), \
+				--build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM) \
+				--with-yielding_select=yes \
+				ac_cv_func_memcmp_working=yes \
+			) \
+			$(if $(filter YES,$(SYSTEM_NSS)), \
+				CPPFLAGS="$(NSS_CFLAGS)" CFLAGS="$(NSS_CFLAGS)" LDFLAGS="$(NSS_LIBS)" \
+				, \
+				CPPFLAGS="-I$(call gb_UnpackedTarball_get_dir,nss)/mozilla/dist/public/nss -I$(call gb_UnpackedTarball_get_dir,nss)/mozilla/dist/out/include" \
+				CFLAGS="-I$(call gb_UnpackedTarball_get_dir,nss)/mozilla/dist/public/nss -I$(call gb_UnpackedTarball_get_dir,nss)/mozilla/dist/out/include" \
+				LDFLAGS="-L$(OUTDIR)/lib" \
+			) \
+		&& MAKEFLAGS= && $(MAKE) \
+	)
+
 
 # vim: set noet sw=4 ts=4:
diff --git a/openssl/ExternalProject_openssl.mk b/openssl/ExternalProject_openssl.mk
index 9f1210b..954fc2b 100644
--- a/openssl/ExternalProject_openssl.mk
+++ b/openssl/ExternalProject_openssl.mk
@@ -35,34 +35,35 @@ OPENSSL_PLATFORM := $(if $(filter LINUX FREEBSD ANDROID,$(OS)),\
 
 ifeq ($(COM),MSC)
 $(call gb_ExternalProject_get_state_target,openssl,build):
-	cd $(EXTERNAL_WORKDIR) \
-	&& export CC="$(shell cygpath -w $(CC))" \
-	&& export PERL="$(shell cygpath -w $(PERL))" \
-	&& export LIB="$(ILIB)" \
-	&& $(PERL) Configure $(OPENSSL_PLATFORM) no-idea \
-	&& cmd /c "ms\do_ms.bat $(PERL) $(OPENSSL_PLATFORM)" \
-	&& unset MAKEFLAGS \
-	&& nmake -f "ms\ntdll.mak" \
-	&& touch $@
+	$(call gb_ExternalProject_run,build,\
+		export CC="$(shell cygpath -w $(CC))" \
+		&& export PERL="$(shell cygpath -w $(PERL))" \
+		&& export LIB="$(ILIB)" \
+		&& $(PERL) Configure $(OPENSSL_PLATFORM) no-idea \
+		&& cmd /c "ms\do_ms.bat $(PERL) $(OPENSSL_PLATFORM)" \
+		&& unset MAKEFLAGS \
+		&& nmake -f "ms\ntdll.mak" \
+	)
+
 else
 $(call gb_ExternalProject_get_state_target,openssl,build):
-	cd $(EXTERNAL_WORKDIR) \
-	&& MAKE="$(MAKE) -j1" \
-	$(if $(filter LINUX FREEBSD ANDROID SOLARIS IOS,$(OS)),./Configure,\
-	$(if $(filter WNT,$(OS)),$(PERL) Configure,./config)) \
-	$(OPENSSL_PLATFORM) \
-	$(if $(filter ANDROID,$(OS)),\
-	shared no-idea,\
-	$(if $(filter IOS,$(OS)),no-shared no-idea,\
-	$(if $(filter WNT,$(OS)),shared,\
-	shared no-idea \
-	$(if $(SYSBASE),-I$(SYSBASE)/usr/include -L$(SYSBASE)/usr/lib)))) \
-	$(if $(filter MACOSX,$(OS)),--prefix=/@.__________________________________________________OOO) \
-	&& export MAKEFLAGS="$(MAKEFLAGS:r=)" \
-	&& $(MAKE) -j1 build_libs \
-	CC="$(CC) $(if $(filter-out WNT,$(OS)),\
-	$(if $(filter TRUE,$(HAVE_GCC_VISIBILITY_FEATURE)),\
-	-fvisibility=hidden))" \
-	&& touch $@
+	$(call gb_ExternalProject_run,build,\
+		MAKE="$(MAKE) -j1" \
+		$(if $(filter LINUX FREEBSD ANDROID SOLARIS IOS,$(OS)),./Configure,\
+		$(if $(filter WNT,$(OS)),$(PERL) Configure,./config)) \
+			$(OPENSSL_PLATFORM) \
+			$(if $(filter ANDROID,$(OS)),\
+			shared no-idea,\
+			$(if $(filter IOS,$(OS)),no-shared no-idea,\
+			$(if $(filter WNT,$(OS)),shared,\
+			shared no-idea \
+			$(if $(SYSBASE),-I$(SYSBASE)/usr/include -L$(SYSBASE)/usr/lib)))) \
+			$(if $(filter MACOSX,$(OS)),--prefix=/@.__________________________________________________OOO) \
+		&& export MAKEFLAGS="$(MAKEFLAGS:r=)" \
+		&& $(MAKE) -j1 build_libs \
+			CC="$(CC) $(if $(filter-out WNT,$(OS)),\
+			$(if $(filter TRUE,$(HAVE_GCC_VISIBILITY_FEATURE)),\
+			-fvisibility=hidden))" \
+	)
 endif
 # vim: set noet sw=4 ts=4:
diff --git a/postgresql/ExternalProject_postgresql.mk b/postgresql/ExternalProject_postgresql.mk
index 6b54253..5fef28e 100644
--- a/postgresql/ExternalProject_postgresql.mk
+++ b/postgresql/ExternalProject_postgresql.mk
@@ -22,30 +22,30 @@ $(eval $(call gb_ExternalProject_register_targets,postgresql,\
 ifeq ($(OS)$(COM),WNTMSC)
 
 $(call gb_ExternalProject_get_state_target,postgresql,build) :
-	cd $(EXTERNAL_WORKDIR)/src \
-	&& MAKEFLAGS= && nmake -f win32.mak USE_SSL=1 USE_LDAP=1 \
-	&& touch $@
+	$(call gb_ExternalProject_run,build,\
+		MAKEFLAGS= && nmake -f win32.mak USE_SSL=1 USE_LDAP=1 \
+	,src)
 
 else
 
 $(call gb_ExternalProject_get_state_target,postgresql,build) :
-	cd $(EXTERNAL_WORKDIR) \
-	&& ./configure \
-		--without-readline --disable-shared --with-openssl --with-ldap \
-		$(if $(filter YES,$(CROSS_COMPILING)),--build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM)) \
-		$(if $(filter YES,$(WITH_KRB5)),--with-krb5) \
-		$(if $(filter YES,$(WITH_GSSAPI)),--with-gssapi) \
-		CPPFLAGS="$(if $(filter NO,$(SYSTEM_OPENLDAP)),\
-		-I$(call gb_UnpackedTarball_get_dir,openldap/include)) \
-		$(if $(filter NO,$(SYSTEM_OPENSSL)),\
-		-I$(call gb_UnpackedTarball_get_dir,openssl/include))" \
-		$(if $(filter NO,$(SYSTEM_OPENLDAP)), \
+	$(call gb_ExternalProject_run,build,\
+		./configure \
+			--without-readline --disable-shared --with-openssl --with-ldap \
+			$(if $(filter YES,$(CROSS_COMPILING)),--build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM)) \
+			$(if $(filter YES,$(WITH_KRB5)),--with-krb5) \
+			$(if $(filter YES,$(WITH_GSSAPI)),--with-gssapi) \
+			CPPFLAGS="$(if $(filter NO,$(SYSTEM_OPENLDAP)),\
+			-I$(call gb_UnpackedTarball_get_dir,openldap/include)) \
+			$(if $(filter NO,$(SYSTEM_OPENSSL)),\
+			-I$(call gb_UnpackedTarball_get_dir,openssl/include))" \
+			$(if $(filter NO,$(SYSTEM_OPENLDAP)), \
 			LDFLAGS="-L$(OUTDIR)/lib" \
 			EXTRA_LDAP_LIBS="-llber -lssl3 -lsmime3 -lnss3 -lnssutil3 -lplds4 -lplc4 -lnspr4" \
-		) \
-	&& cd src/interfaces/libpq \
-	&& MAKEFLAGS= && $(MAKE) all-static-lib libpq-flags.mk \
-	&& touch $@
+			) \
+		&& cd src/interfaces/libpq \
+		&& MAKEFLAGS= && $(MAKE) all-static-lib libpq-flags.mk \
+	)
 
 endif
 
diff --git a/python3/ExternalProject_python3.mk b/python3/ExternalProject_python3.mk
index a2dbb09..4112e64 100644
--- a/python3/ExternalProject_python3.mk
+++ b/python3/ExternalProject_python3.mk
@@ -28,23 +28,23 @@ ifeq ($(OS)$(COM),WNTMSC)
 # nmake is invoked
 $(call gb_ExternalProject_get_state_target,python3,build) :
 ifeq ($(VCVER),110)
-	cd $(EXTERNAL_WORKDIR)/PCbuild \
+	$(call gb_ExternalProject_run,build,\
 	&& MAKEFLAGS= MSBuild.exe pcbuild.sln /t:Build /p:Configuration=Release /p:PlatformToolset=v110 /p:VisualStudioVersion=11.0 \
 	&& cd $(EXTERNAL_WORKDIR) \
 	&& ln -s PCbuild LO_lib \
-	&& touch $@
+	,PCBuild)
 else ifeq ($(VCVER),100)
-	cd $(EXTERNAL_WORKDIR)/PCbuild \
-	&& MAKEFLAGS= MSBuild.exe pcbuild.sln /t:Build /p:Configuration=Release /ToolsVersion:4.0 \
-	&& cd $(EXTERNAL_WORKDIR) \
-	&& ln -s PCbuild LO_lib \
-	&& touch $@
+	$(call gb_ExternalProject_run,build,\
+		MAKEFLAGS= MSBuild.exe pcbuild.sln /t:Build /p:Configuration=Release /ToolsVersion:4.0 \
+		&& cd $(EXTERNAL_WORKDIR) \
+		&& ln -s PCbuild LO_lib \
+	,PCBuild)
 else ifeq ($(VCVER),90)
-	cd $(EXTERNAL_WORKDIR)/PC/VS9.0 \
-	&& MAKEFLAGS= $(COMPATH)/vcpackages/vcbuild.exe pcbuild.sln "Release|$(if $(filter INTEL,$(CPUNAME)),Win32,x64)" \
-	&& cd $(EXTERNAL_WORKDIR) \
-	&& ln -s PC/VS9.0 LO_lib \
-	&& touch $@
+	$(call gb_ExternalProject_run,build,\
+		MAKEFLAGS= $(COMPATH)/vcpackages/vcbuild.exe pcbuild.sln "Release|$(if $(filter INTEL,$(CPUNAME)),Win32,x64)" \
+		&& cd $(EXTERNAL_WORKDIR) \
+		&& ln -s PC/VS9.0 LO_lib \
+	,PC/VS9.0)
 endif
 
 else
@@ -65,8 +65,8 @@ ifeq ($(OS),AIX)
 endif
 
 $(call gb_ExternalProject_get_state_target,python3,build) :
-	cd $(EXTERNAL_WORKDIR) \
-	&& ./configure \
+	$(call gb_ExternalProject_run,build,\
+		./configure \
 		$(if $(filter YES,$(CROSS_COMPILING)),--build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM)) \
 		--with-system-expat \
 		$(if $(filter TRUE,$(ENABLE_VALGRIND)),--with-valgrind) \
@@ -90,9 +90,9 @@ $(call gb_ExternalProject_get_state_target,python3,build) :
 			$(if $(filter WNT-GCC,$(OS)-$(COM)), -shared-libgcc \
 				$(if $(filter YES,$(MINGW_SHARED_GCCLIB)),-Wl$(COMMA)--enable-runtime-pseudo-reloc-v2 -Wl$(COMMA)--export-all-symbols)) \
 			)" \
-	&& MAKEFLAGS=$(if $(VERBOSE)$(verbose),,s) $(MAKE) $(if $(filter MACOSX,$(OS)), DESTDIR=$(EXTERNAL_WORKDIR)/python-inst install) \
-	&& ln -s build/lib.* LO_lib \
-	&& touch $@
+		&& MAKEFLAGS=$(if $(VERBOSE)$(verbose),,s) $(MAKE) $(if $(filter MACOSX,$(OS)), DESTDIR=$(EXTERNAL_WORKDIR)/python-inst install) \
+		&& ln -s build/lib.* LO_lib \
+	)
 
 endif
 
diff --git a/pyuno/CustomTarget_zipcore.mk b/pyuno/CustomTarget_zipcore.mk
index 3235e1e..35be5d9 100644
--- a/pyuno/CustomTarget_zipcore.mk
+++ b/pyuno/CustomTarget_zipcore.mk
@@ -46,6 +46,6 @@ $(call gb_CustomTarget_get_workdir,pyuno/zipcore)/$(pyuno_PYTHON_ARCHIVE_NAME) \
 		: $(call gb_ExternalPackage_get_target,python3) \
 		| $(call gb_CustomTarget_get_workdir,pyuno/zipcore)/.dir
 	$(call gb_Output_announce,$(subst $(WORKDIR)/,,$@),$(true),ZIP,1)
-	cd $(pyuno_PYTHON_LIB_DIR) && zip $@ $(shell cd $(pyuno_PYTHON_LIB_DIR) && find . -type f | grep -v "\.pyc" | grep -v "\.py~" | grep -v .orig | grep -v _failed)
+	cd $(pyuno_PYTHON_LIB_DIR) && zip -q $@ $(shell cd $(pyuno_PYTHON_LIB_DIR) && find . -type f | grep -v "\.pyc" | grep -v "\.py~" | grep -v .orig | grep -v _failed)
 
 # vim: set noet sw=4 ts=4:
diff --git a/redland/ExternalProject_raptor.mk b/redland/ExternalProject_raptor.mk
index 7a778ff..fdd7c09 100644
--- a/redland/ExternalProject_raptor.mk
+++ b/redland/ExternalProject_raptor.mk
@@ -19,43 +19,42 @@ $(eval $(call gb_ExternalProject_register_targets,raptor,\
 
 ifeq ($(OS),WNT)
 $(call gb_ExternalProject_get_state_target,raptor,build):
-	cd $(EXTERNAL_WORKDIR) \
-	&& CC="$(CC) -mthreads $(if $(filter YES,$(MINGW_SHARED_GCCLIB)),-shared-libgcc)" \
-	LDFLAGS="-Wl,--no-undefined -Wl,--enable-runtime-pseudo-reloc-v2 -Wl,--export-all-symbols $(subst ;, -L,$(ILIB))" \
-	LIBXML2LIB="$(if $(filter YES,$(SYSTEM_LIBXML)),$(LIBXML_LIBS),-lxml2)" \
-	XSLTLIB="$(if $(filter YES,$(SYSTEM_LIBXSLT)),$(LIBXSLT_LIBS),-lxslt)" \
-	OBJDUMP="$(HOST_PLATFORM)-objdump" \
-	./configure --disable-static --enable-shared --disable-gtk-doc --with-openssl-digests \
-	--with-xml-parser=libxml --enable-parsers="rdfxml ntriples turtle trig guess rss-tag-soup" \
-	--without-bdb --without-sqlite --without-mysql --without-postgresql --without-threestore \
-	--with-regex-library=posix --with-decimal=none --with-www=xml \
-	--build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM) --target=$(HOST_PLATFORM) \
-	lt_cv_cc_dll_switch="-shared" \
-	&& $(MAKE) \
-	&& touch $@
+	$(call gb_ExternalProject_run,build,\
+		CC="$(CC) -mthreads $(if $(filter YES,$(MINGW_SHARED_GCCLIB)),-shared-libgcc)" \
+		LDFLAGS="-Wl,--no-undefined -Wl,--enable-runtime-pseudo-reloc-v2 -Wl,--export-all-symbols $(subst ;, -L,$(ILIB))" \
+		LIBXML2LIB="$(if $(filter YES,$(SYSTEM_LIBXML)),$(LIBXML_LIBS),-lxml2)" \
+		XSLTLIB="$(if $(filter YES,$(SYSTEM_LIBXSLT)),$(LIBXSLT_LIBS),-lxslt)" \

... etc. - the rest is truncated


More information about the Libreoffice-commits mailing list