[Libreoffice-commits] .: 23 commits - animations/Makefile avmedia/Makefile basctl/Makefile basebmp/Makefile basegfx/Makefile basic/Makefile bean/Makefile binaryurp/Makefile canvas/Makefile chart2/Makefile comphelper/Makefile configmgr/Makefile cppcanvas/Makefile cui/Makefile dbaccess/Makefile desktop/Makefile drawinglayer/Makefile dtrans/Makefile editeng/Makefile eventattacher/Makefile extensions/Makefile fileaccess/Makefile filter/Makefile forms/Makefile formula/Makefile framework/Makefile hwpfilter/Makefile i18npool/Makefile i18npool/source i18nutil/Makefile idl/Makefile instsetoo_native/util libcmis/Makefile linguistic/Makefile lotuswordpro/Makefile Makefile MathMLDTD/Makefile Mesa/Makefile nlpsolver/Makefile o3tl/Makefile offapi/Makefile officecfg/Makefile oovbaapi/Makefile oox/Makefile package/Makefile padmin/Makefile psprint_config/Makefile qadevOOo/Makefile regexp/Makefile reportdesign/Makefile RepositoryModule_ooo.mk rsc/Makefile sal/Makefile sane/Makefile sax/Makefile scaddins/Ma kefile sccomp/Makefile sc/Makefile scripting/Makefile sd/Makefile sfx2/Makefile slideshow/Makefile solenv/bin solenv/gbuild sot/Makefile starmath/Makefile svl/Makefile svtools/Makefile svx/Makefile swext/Makefile sw/Makefile tail_build/Makefile toolkit/Makefile tools/Makefile tools/source twain/Makefile ucbhelper/Makefile ucb/Makefile udkapi/Makefile unixODBC/Makefile unotools/Makefile unoxml/Makefile uui/Makefile vbahelper/Makefile vcl/Makefile wizards/Makefile writerfilter/Makefile writerperfect/Makefile xmerge/Makefile xml2cmp/Makefile xmloff/Makefile xmlreader/Makefile xmlscript/Makefile xmlsecurity/Makefile

Bjoern Michaelsen bmichaelsen at kemper.freedesktop.org
Wed Dec 7 06:54:21 PST 2011


 Makefile                                              |   21 
 MathMLDTD/Makefile                                    |    1 
 Mesa/Makefile                                         |    1 
 RepositoryModule_ooo.mk                               |    6 
 animations/Makefile                                   |    1 
 avmedia/Makefile                                      |    1 
 basctl/Makefile                                       |    1 
 basebmp/Makefile                                      |    1 
 basegfx/Makefile                                      |    1 
 basic/Makefile                                        |    1 
 bean/Makefile                                         |    1 
 binaryurp/Makefile                                    |    1 
 canvas/Makefile                                       |    1 
 chart2/Makefile                                       |    1 
 comphelper/Makefile                                   |    1 
 configmgr/Makefile                                    |    1 
 cppcanvas/Makefile                                    |    1 
 cui/Makefile                                          |    1 
 dbaccess/Makefile                                     |    1 
 desktop/Makefile                                      |    1 
 drawinglayer/Makefile                                 |    1 
 dtrans/Makefile                                       |    1 
 editeng/Makefile                                      |    1 
 eventattacher/Makefile                                |    1 
 extensions/Makefile                                   |    1 
 fileaccess/Makefile                                   |    1 
 filter/Makefile                                       |    1 
 forms/Makefile                                        |    1 
 formula/Makefile                                      |    1 
 framework/Makefile                                    |    1 
 hwpfilter/Makefile                                    |    1 
 i18npool/Makefile                                     |    1 
 i18npool/source/breakiterator/Makefile                |   10 
 i18npool/source/collator/Makefile                     |    4 
 i18npool/source/indexentry/Makefile                   |    4 
 i18npool/source/localedata/Makefile                   |    8 
 i18npool/source/textconversion/Makefile               |    4 
 i18nutil/Makefile                                     |    1 
 idl/Makefile                                          |    1 
 instsetoo_native/util/makefile.mk                     |    5 
 libcmis/Makefile                                      |    1 
 linguistic/Makefile                                   |    1 
 lotuswordpro/Makefile                                 |    1 
 nlpsolver/Makefile                                    |    1 
 o3tl/Makefile                                         |    1 
 offapi/Makefile                                       |    1 
 officecfg/Makefile                                    |    1 
 oovbaapi/Makefile                                     |    1 
 oox/Makefile                                          |    1 
 package/Makefile                                      |    1 
 padmin/Makefile                                       |    1 
 psprint_config/Makefile                               |    1 
 qadevOOo/Makefile                                     |    1 
 regexp/Makefile                                       |    1 
 reportdesign/Makefile                                 |    1 
 rsc/Makefile                                          |    1 
 sal/Makefile                                          |    1 
 sane/Makefile                                         |    1 
 sax/Makefile                                          |    1 
 sc/Makefile                                           |    1 
 scaddins/Makefile                                     |    1 
 sccomp/Makefile                                       |    1 
 scripting/Makefile                                    |    1 
 sd/Makefile                                           |    1 
 sfx2/Makefile                                         |    1 
 slideshow/Makefile                                    |    1 
 solenv/bin/concat-deps.c                              |  852 ++++++++++++++++++
 solenv/bin/concat-deps.pl                             |   20 
 solenv/gbuild/CppunitTest.mk                          |    8 
 solenv/gbuild/CustomTarget.mk                         |    1 
 solenv/gbuild/Helper.mk                               |    3 
 solenv/gbuild/JunitTest.mk                            |    8 
 solenv/gbuild/Module.mk                               |    4 
 solenv/gbuild/extensions/post_AuxTargets.mk           |    2 
 solenv/gbuild/extensions/post_BuildplTargets.mk       |  110 +-
 solenv/gbuild/extensions/post_DisableIosUnitchecks.mk |   34 
 solenv/gbuild/extensions/post_SpeedUpTargets.mk       |    5 
 solenv/gbuild/gbuild.mk                               |   10 
 solenv/gbuild/source_and_rerun.mk                     |   14 
 sot/Makefile                                          |    1 
 starmath/Makefile                                     |    1 
 svl/Makefile                                          |    1 
 svtools/Makefile                                      |    1 
 svx/Makefile                                          |    1 
 sw/Makefile                                           |    1 
 swext/Makefile                                        |    1 
 tail_build/Makefile                                   |    1 
 toolkit/Makefile                                      |    1 
 tools/Makefile                                        |    1 
 tools/source/reversemap/Makefile                      |    5 
 twain/Makefile                                        |    1 
 ucb/Makefile                                          |    1 
 ucbhelper/Makefile                                    |    1 
 udkapi/Makefile                                       |    1 
 unixODBC/Makefile                                     |    1 
 unotools/Makefile                                     |    1 
 unoxml/Makefile                                       |    1 
 uui/Makefile                                          |    1 
 vbahelper/Makefile                                    |    1 
 vcl/Makefile                                          |    1 
 wizards/Makefile                                      |    1 
 writerfilter/Makefile                                 |    1 
 writerperfect/Makefile                                |    1 
 xmerge/Makefile                                       |    1 
 xml2cmp/Makefile                                      |    1 
 xmloff/Makefile                                       |    1 
 xmlreader/Makefile                                    |    1 
 xmlscript/Makefile                                    |    1 
 xmlsecurity/Makefile                                  |    1 
 109 files changed, 1140 insertions(+), 85 deletions(-)

New commits:
commit 1658c1f23a68635a1d67105ebf1a7023df8788c0
Author: Bjoern Michaelsen <bjoern.michaelsen at canonical.com>
Date:   Wed Dec 7 15:46:42 2011 +0100

    dont do fancy stuff with files that are in zips instsetoo_native for now

diff --git a/instsetoo_native/util/makefile.mk b/instsetoo_native/util/makefile.mk
index 39677d2..907b2e7 100644
--- a/instsetoo_native/util/makefile.mk
+++ b/instsetoo_native/util/makefile.mk
@@ -71,10 +71,7 @@ INSTALLDIR=$(OUT)
 LOCALPYFILES= \
     $(BIN)$/uno.py \
     $(BIN)$/unohelper.py \
-    $(BIN)$/pythonloader.py \
-    $(BIN)$/officehelper.py \
-    $(BIN)$/mailmerge.py \
-    $(BIN)$/msgbox.py
+    $(BIN)$/pythonloader.py
 .ENDIF
 
 help_exist:=$(shell @find $(L10N_MODULE)/source/ -type d -name "helpcontent2" 2>/dev/null | sed -e "s|/helpcontent2||" -e "s|^.*/||" ) en-US qtz
commit 2acd8fbac96959f5456d0d59bbc15db0786dab5a
Author: Bjoern Michaelsen <bjoern.michaelsen at canonical.com>
Date:   Wed Dec 7 13:12:22 2011 +0100

    in modules, when we have a env we are in stage gbuild

diff --git a/MathMLDTD/Makefile b/MathMLDTD/Makefile
index 7b3dec8..7bbbe6c 100644
--- a/MathMLDTD/Makefile
+++ b/MathMLDTD/Makefile
@@ -31,6 +31,7 @@ ifeq ($(strip $(SOLARENV)),)
 include $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/../solenv/gbuild/source_and_rerun.mk
 else
 
+gb_SourceEnvAndRecurse_STAGE=gbuild
 include $(SOLARENV)/gbuild/gbuild.mk
 
 $(eval $(call gb_Module_make_global_targets,$(shell ls $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/Module*.mk)))
diff --git a/Mesa/Makefile b/Mesa/Makefile
index 7b3dec8..7bbbe6c 100644
--- a/Mesa/Makefile
+++ b/Mesa/Makefile
@@ -31,6 +31,7 @@ ifeq ($(strip $(SOLARENV)),)
 include $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/../solenv/gbuild/source_and_rerun.mk
 else
 
+gb_SourceEnvAndRecurse_STAGE=gbuild
 include $(SOLARENV)/gbuild/gbuild.mk
 
 $(eval $(call gb_Module_make_global_targets,$(shell ls $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/Module*.mk)))
diff --git a/animations/Makefile b/animations/Makefile
index 7b3dec8..7bbbe6c 100644
--- a/animations/Makefile
+++ b/animations/Makefile
@@ -31,6 +31,7 @@ ifeq ($(strip $(SOLARENV)),)
 include $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/../solenv/gbuild/source_and_rerun.mk
 else
 
+gb_SourceEnvAndRecurse_STAGE=gbuild
 include $(SOLARENV)/gbuild/gbuild.mk
 
 $(eval $(call gb_Module_make_global_targets,$(shell ls $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/Module*.mk)))
diff --git a/avmedia/Makefile b/avmedia/Makefile
index 7b3dec8..7bbbe6c 100644
--- a/avmedia/Makefile
+++ b/avmedia/Makefile
@@ -31,6 +31,7 @@ ifeq ($(strip $(SOLARENV)),)
 include $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/../solenv/gbuild/source_and_rerun.mk
 else
 
+gb_SourceEnvAndRecurse_STAGE=gbuild
 include $(SOLARENV)/gbuild/gbuild.mk
 
 $(eval $(call gb_Module_make_global_targets,$(shell ls $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/Module*.mk)))
diff --git a/basctl/Makefile b/basctl/Makefile
index 7b3dec8..7bbbe6c 100644
--- a/basctl/Makefile
+++ b/basctl/Makefile
@@ -31,6 +31,7 @@ ifeq ($(strip $(SOLARENV)),)
 include $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/../solenv/gbuild/source_and_rerun.mk
 else
 
+gb_SourceEnvAndRecurse_STAGE=gbuild
 include $(SOLARENV)/gbuild/gbuild.mk
 
 $(eval $(call gb_Module_make_global_targets,$(shell ls $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/Module*.mk)))
diff --git a/basebmp/Makefile b/basebmp/Makefile
index 7b3dec8..7bbbe6c 100644
--- a/basebmp/Makefile
+++ b/basebmp/Makefile
@@ -31,6 +31,7 @@ ifeq ($(strip $(SOLARENV)),)
 include $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/../solenv/gbuild/source_and_rerun.mk
 else
 
+gb_SourceEnvAndRecurse_STAGE=gbuild
 include $(SOLARENV)/gbuild/gbuild.mk
 
 $(eval $(call gb_Module_make_global_targets,$(shell ls $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/Module*.mk)))
diff --git a/basegfx/Makefile b/basegfx/Makefile
index 7b3dec8..7bbbe6c 100644
--- a/basegfx/Makefile
+++ b/basegfx/Makefile
@@ -31,6 +31,7 @@ ifeq ($(strip $(SOLARENV)),)
 include $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/../solenv/gbuild/source_and_rerun.mk
 else
 
+gb_SourceEnvAndRecurse_STAGE=gbuild
 include $(SOLARENV)/gbuild/gbuild.mk
 
 $(eval $(call gb_Module_make_global_targets,$(shell ls $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/Module*.mk)))
diff --git a/basic/Makefile b/basic/Makefile
index 7b3dec8..7bbbe6c 100644
--- a/basic/Makefile
+++ b/basic/Makefile
@@ -31,6 +31,7 @@ ifeq ($(strip $(SOLARENV)),)
 include $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/../solenv/gbuild/source_and_rerun.mk
 else
 
+gb_SourceEnvAndRecurse_STAGE=gbuild
 include $(SOLARENV)/gbuild/gbuild.mk
 
 $(eval $(call gb_Module_make_global_targets,$(shell ls $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/Module*.mk)))
diff --git a/bean/Makefile b/bean/Makefile
index 7b3dec8..7bbbe6c 100644
--- a/bean/Makefile
+++ b/bean/Makefile
@@ -31,6 +31,7 @@ ifeq ($(strip $(SOLARENV)),)
 include $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/../solenv/gbuild/source_and_rerun.mk
 else
 
+gb_SourceEnvAndRecurse_STAGE=gbuild
 include $(SOLARENV)/gbuild/gbuild.mk
 
 $(eval $(call gb_Module_make_global_targets,$(shell ls $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/Module*.mk)))
diff --git a/binaryurp/Makefile b/binaryurp/Makefile
index 7b3dec8..7bbbe6c 100644
--- a/binaryurp/Makefile
+++ b/binaryurp/Makefile
@@ -31,6 +31,7 @@ ifeq ($(strip $(SOLARENV)),)
 include $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/../solenv/gbuild/source_and_rerun.mk
 else
 
+gb_SourceEnvAndRecurse_STAGE=gbuild
 include $(SOLARENV)/gbuild/gbuild.mk
 
 $(eval $(call gb_Module_make_global_targets,$(shell ls $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/Module*.mk)))
diff --git a/canvas/Makefile b/canvas/Makefile
index 7b3dec8..7bbbe6c 100644
--- a/canvas/Makefile
+++ b/canvas/Makefile
@@ -31,6 +31,7 @@ ifeq ($(strip $(SOLARENV)),)
 include $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/../solenv/gbuild/source_and_rerun.mk
 else
 
+gb_SourceEnvAndRecurse_STAGE=gbuild
 include $(SOLARENV)/gbuild/gbuild.mk
 
 $(eval $(call gb_Module_make_global_targets,$(shell ls $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/Module*.mk)))
diff --git a/chart2/Makefile b/chart2/Makefile
index 7b3dec8..7bbbe6c 100644
--- a/chart2/Makefile
+++ b/chart2/Makefile
@@ -31,6 +31,7 @@ ifeq ($(strip $(SOLARENV)),)
 include $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/../solenv/gbuild/source_and_rerun.mk
 else
 
+gb_SourceEnvAndRecurse_STAGE=gbuild
 include $(SOLARENV)/gbuild/gbuild.mk
 
 $(eval $(call gb_Module_make_global_targets,$(shell ls $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/Module*.mk)))
diff --git a/comphelper/Makefile b/comphelper/Makefile
index 7b3dec8..7bbbe6c 100644
--- a/comphelper/Makefile
+++ b/comphelper/Makefile
@@ -31,6 +31,7 @@ ifeq ($(strip $(SOLARENV)),)
 include $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/../solenv/gbuild/source_and_rerun.mk
 else
 
+gb_SourceEnvAndRecurse_STAGE=gbuild
 include $(SOLARENV)/gbuild/gbuild.mk
 
 $(eval $(call gb_Module_make_global_targets,$(shell ls $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/Module*.mk)))
diff --git a/configmgr/Makefile b/configmgr/Makefile
index 7b3dec8..7bbbe6c 100644
--- a/configmgr/Makefile
+++ b/configmgr/Makefile
@@ -31,6 +31,7 @@ ifeq ($(strip $(SOLARENV)),)
 include $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/../solenv/gbuild/source_and_rerun.mk
 else
 
+gb_SourceEnvAndRecurse_STAGE=gbuild
 include $(SOLARENV)/gbuild/gbuild.mk
 
 $(eval $(call gb_Module_make_global_targets,$(shell ls $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/Module*.mk)))
diff --git a/cppcanvas/Makefile b/cppcanvas/Makefile
index 7b3dec8..7bbbe6c 100644
--- a/cppcanvas/Makefile
+++ b/cppcanvas/Makefile
@@ -31,6 +31,7 @@ ifeq ($(strip $(SOLARENV)),)
 include $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/../solenv/gbuild/source_and_rerun.mk
 else
 
+gb_SourceEnvAndRecurse_STAGE=gbuild
 include $(SOLARENV)/gbuild/gbuild.mk
 
 $(eval $(call gb_Module_make_global_targets,$(shell ls $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/Module*.mk)))
diff --git a/cui/Makefile b/cui/Makefile
index 7b3dec8..7bbbe6c 100644
--- a/cui/Makefile
+++ b/cui/Makefile
@@ -31,6 +31,7 @@ ifeq ($(strip $(SOLARENV)),)
 include $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/../solenv/gbuild/source_and_rerun.mk
 else
 
+gb_SourceEnvAndRecurse_STAGE=gbuild
 include $(SOLARENV)/gbuild/gbuild.mk
 
 $(eval $(call gb_Module_make_global_targets,$(shell ls $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/Module*.mk)))
diff --git a/dbaccess/Makefile b/dbaccess/Makefile
index 7b3dec8..7bbbe6c 100644
--- a/dbaccess/Makefile
+++ b/dbaccess/Makefile
@@ -31,6 +31,7 @@ ifeq ($(strip $(SOLARENV)),)
 include $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/../solenv/gbuild/source_and_rerun.mk
 else
 
+gb_SourceEnvAndRecurse_STAGE=gbuild
 include $(SOLARENV)/gbuild/gbuild.mk
 
 $(eval $(call gb_Module_make_global_targets,$(shell ls $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/Module*.mk)))
diff --git a/desktop/Makefile b/desktop/Makefile
index 7b3dec8..7bbbe6c 100644
--- a/desktop/Makefile
+++ b/desktop/Makefile
@@ -31,6 +31,7 @@ ifeq ($(strip $(SOLARENV)),)
 include $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/../solenv/gbuild/source_and_rerun.mk
 else
 
+gb_SourceEnvAndRecurse_STAGE=gbuild
 include $(SOLARENV)/gbuild/gbuild.mk
 
 $(eval $(call gb_Module_make_global_targets,$(shell ls $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/Module*.mk)))
diff --git a/drawinglayer/Makefile b/drawinglayer/Makefile
index 7b3dec8..7bbbe6c 100644
--- a/drawinglayer/Makefile
+++ b/drawinglayer/Makefile
@@ -31,6 +31,7 @@ ifeq ($(strip $(SOLARENV)),)
 include $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/../solenv/gbuild/source_and_rerun.mk
 else
 
+gb_SourceEnvAndRecurse_STAGE=gbuild
 include $(SOLARENV)/gbuild/gbuild.mk
 
 $(eval $(call gb_Module_make_global_targets,$(shell ls $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/Module*.mk)))
diff --git a/dtrans/Makefile b/dtrans/Makefile
index 7b3dec8..7bbbe6c 100644
--- a/dtrans/Makefile
+++ b/dtrans/Makefile
@@ -31,6 +31,7 @@ ifeq ($(strip $(SOLARENV)),)
 include $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/../solenv/gbuild/source_and_rerun.mk
 else
 
+gb_SourceEnvAndRecurse_STAGE=gbuild
 include $(SOLARENV)/gbuild/gbuild.mk
 
 $(eval $(call gb_Module_make_global_targets,$(shell ls $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/Module*.mk)))
diff --git a/editeng/Makefile b/editeng/Makefile
index 7b3dec8..7bbbe6c 100644
--- a/editeng/Makefile
+++ b/editeng/Makefile
@@ -31,6 +31,7 @@ ifeq ($(strip $(SOLARENV)),)
 include $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/../solenv/gbuild/source_and_rerun.mk
 else
 
+gb_SourceEnvAndRecurse_STAGE=gbuild
 include $(SOLARENV)/gbuild/gbuild.mk
 
 $(eval $(call gb_Module_make_global_targets,$(shell ls $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/Module*.mk)))
diff --git a/eventattacher/Makefile b/eventattacher/Makefile
index 7b3dec8..7bbbe6c 100644
--- a/eventattacher/Makefile
+++ b/eventattacher/Makefile
@@ -31,6 +31,7 @@ ifeq ($(strip $(SOLARENV)),)
 include $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/../solenv/gbuild/source_and_rerun.mk
 else
 
+gb_SourceEnvAndRecurse_STAGE=gbuild
 include $(SOLARENV)/gbuild/gbuild.mk
 
 $(eval $(call gb_Module_make_global_targets,$(shell ls $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/Module*.mk)))
diff --git a/extensions/Makefile b/extensions/Makefile
index 7b3dec8..7bbbe6c 100644
--- a/extensions/Makefile
+++ b/extensions/Makefile
@@ -31,6 +31,7 @@ ifeq ($(strip $(SOLARENV)),)
 include $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/../solenv/gbuild/source_and_rerun.mk
 else
 
+gb_SourceEnvAndRecurse_STAGE=gbuild
 include $(SOLARENV)/gbuild/gbuild.mk
 
 $(eval $(call gb_Module_make_global_targets,$(shell ls $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/Module*.mk)))
diff --git a/fileaccess/Makefile b/fileaccess/Makefile
index 7b3dec8..7bbbe6c 100644
--- a/fileaccess/Makefile
+++ b/fileaccess/Makefile
@@ -31,6 +31,7 @@ ifeq ($(strip $(SOLARENV)),)
 include $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/../solenv/gbuild/source_and_rerun.mk
 else
 
+gb_SourceEnvAndRecurse_STAGE=gbuild
 include $(SOLARENV)/gbuild/gbuild.mk
 
 $(eval $(call gb_Module_make_global_targets,$(shell ls $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/Module*.mk)))
diff --git a/filter/Makefile b/filter/Makefile
index 7b3dec8..7bbbe6c 100644
--- a/filter/Makefile
+++ b/filter/Makefile
@@ -31,6 +31,7 @@ ifeq ($(strip $(SOLARENV)),)
 include $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/../solenv/gbuild/source_and_rerun.mk
 else
 
+gb_SourceEnvAndRecurse_STAGE=gbuild
 include $(SOLARENV)/gbuild/gbuild.mk
 
 $(eval $(call gb_Module_make_global_targets,$(shell ls $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/Module*.mk)))
diff --git a/forms/Makefile b/forms/Makefile
index 7b3dec8..7bbbe6c 100644
--- a/forms/Makefile
+++ b/forms/Makefile
@@ -31,6 +31,7 @@ ifeq ($(strip $(SOLARENV)),)
 include $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/../solenv/gbuild/source_and_rerun.mk
 else
 
+gb_SourceEnvAndRecurse_STAGE=gbuild
 include $(SOLARENV)/gbuild/gbuild.mk
 
 $(eval $(call gb_Module_make_global_targets,$(shell ls $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/Module*.mk)))
diff --git a/formula/Makefile b/formula/Makefile
index 7b3dec8..7bbbe6c 100644
--- a/formula/Makefile
+++ b/formula/Makefile
@@ -31,6 +31,7 @@ ifeq ($(strip $(SOLARENV)),)
 include $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/../solenv/gbuild/source_and_rerun.mk
 else
 
+gb_SourceEnvAndRecurse_STAGE=gbuild
 include $(SOLARENV)/gbuild/gbuild.mk
 
 $(eval $(call gb_Module_make_global_targets,$(shell ls $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/Module*.mk)))
diff --git a/framework/Makefile b/framework/Makefile
index 7b3dec8..7bbbe6c 100644
--- a/framework/Makefile
+++ b/framework/Makefile
@@ -31,6 +31,7 @@ ifeq ($(strip $(SOLARENV)),)
 include $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/../solenv/gbuild/source_and_rerun.mk
 else
 
+gb_SourceEnvAndRecurse_STAGE=gbuild
 include $(SOLARENV)/gbuild/gbuild.mk
 
 $(eval $(call gb_Module_make_global_targets,$(shell ls $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/Module*.mk)))
diff --git a/hwpfilter/Makefile b/hwpfilter/Makefile
index 7b3dec8..7bbbe6c 100644
--- a/hwpfilter/Makefile
+++ b/hwpfilter/Makefile
@@ -31,6 +31,7 @@ ifeq ($(strip $(SOLARENV)),)
 include $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/../solenv/gbuild/source_and_rerun.mk
 else
 
+gb_SourceEnvAndRecurse_STAGE=gbuild
 include $(SOLARENV)/gbuild/gbuild.mk
 
 $(eval $(call gb_Module_make_global_targets,$(shell ls $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/Module*.mk)))
diff --git a/i18npool/Makefile b/i18npool/Makefile
index 7b3dec8..7bbbe6c 100644
--- a/i18npool/Makefile
+++ b/i18npool/Makefile
@@ -31,6 +31,7 @@ ifeq ($(strip $(SOLARENV)),)
 include $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/../solenv/gbuild/source_and_rerun.mk
 else
 
+gb_SourceEnvAndRecurse_STAGE=gbuild
 include $(SOLARENV)/gbuild/gbuild.mk
 
 $(eval $(call gb_Module_make_global_targets,$(shell ls $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/Module*.mk)))
diff --git a/i18nutil/Makefile b/i18nutil/Makefile
index 7b3dec8..7bbbe6c 100644
--- a/i18nutil/Makefile
+++ b/i18nutil/Makefile
@@ -31,6 +31,7 @@ ifeq ($(strip $(SOLARENV)),)
 include $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/../solenv/gbuild/source_and_rerun.mk
 else
 
+gb_SourceEnvAndRecurse_STAGE=gbuild
 include $(SOLARENV)/gbuild/gbuild.mk
 
 $(eval $(call gb_Module_make_global_targets,$(shell ls $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/Module*.mk)))
diff --git a/idl/Makefile b/idl/Makefile
index 7b3dec8..7bbbe6c 100644
--- a/idl/Makefile
+++ b/idl/Makefile
@@ -31,6 +31,7 @@ ifeq ($(strip $(SOLARENV)),)
 include $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/../solenv/gbuild/source_and_rerun.mk
 else
 
+gb_SourceEnvAndRecurse_STAGE=gbuild
 include $(SOLARENV)/gbuild/gbuild.mk
 
 $(eval $(call gb_Module_make_global_targets,$(shell ls $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/Module*.mk)))
diff --git a/libcmis/Makefile b/libcmis/Makefile
index 7b3dec8..7bbbe6c 100644
--- a/libcmis/Makefile
+++ b/libcmis/Makefile
@@ -31,6 +31,7 @@ ifeq ($(strip $(SOLARENV)),)
 include $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/../solenv/gbuild/source_and_rerun.mk
 else
 
+gb_SourceEnvAndRecurse_STAGE=gbuild
 include $(SOLARENV)/gbuild/gbuild.mk
 
 $(eval $(call gb_Module_make_global_targets,$(shell ls $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/Module*.mk)))
diff --git a/linguistic/Makefile b/linguistic/Makefile
index 7b3dec8..7bbbe6c 100644
--- a/linguistic/Makefile
+++ b/linguistic/Makefile
@@ -31,6 +31,7 @@ ifeq ($(strip $(SOLARENV)),)
 include $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/../solenv/gbuild/source_and_rerun.mk
 else
 
+gb_SourceEnvAndRecurse_STAGE=gbuild
 include $(SOLARENV)/gbuild/gbuild.mk
 
 $(eval $(call gb_Module_make_global_targets,$(shell ls $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/Module*.mk)))
diff --git a/lotuswordpro/Makefile b/lotuswordpro/Makefile
index 7b3dec8..7bbbe6c 100644
--- a/lotuswordpro/Makefile
+++ b/lotuswordpro/Makefile
@@ -31,6 +31,7 @@ ifeq ($(strip $(SOLARENV)),)
 include $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/../solenv/gbuild/source_and_rerun.mk
 else
 
+gb_SourceEnvAndRecurse_STAGE=gbuild
 include $(SOLARENV)/gbuild/gbuild.mk
 
 $(eval $(call gb_Module_make_global_targets,$(shell ls $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/Module*.mk)))
diff --git a/nlpsolver/Makefile b/nlpsolver/Makefile
index 7b3dec8..7bbbe6c 100644
--- a/nlpsolver/Makefile
+++ b/nlpsolver/Makefile
@@ -31,6 +31,7 @@ ifeq ($(strip $(SOLARENV)),)
 include $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/../solenv/gbuild/source_and_rerun.mk
 else
 
+gb_SourceEnvAndRecurse_STAGE=gbuild
 include $(SOLARENV)/gbuild/gbuild.mk
 
 $(eval $(call gb_Module_make_global_targets,$(shell ls $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/Module*.mk)))
diff --git a/o3tl/Makefile b/o3tl/Makefile
index 7b3dec8..7bbbe6c 100644
--- a/o3tl/Makefile
+++ b/o3tl/Makefile
@@ -31,6 +31,7 @@ ifeq ($(strip $(SOLARENV)),)
 include $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/../solenv/gbuild/source_and_rerun.mk
 else
 
+gb_SourceEnvAndRecurse_STAGE=gbuild
 include $(SOLARENV)/gbuild/gbuild.mk
 
 $(eval $(call gb_Module_make_global_targets,$(shell ls $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/Module*.mk)))
diff --git a/offapi/Makefile b/offapi/Makefile
index 7b3dec8..7bbbe6c 100644
--- a/offapi/Makefile
+++ b/offapi/Makefile
@@ -31,6 +31,7 @@ ifeq ($(strip $(SOLARENV)),)
 include $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/../solenv/gbuild/source_and_rerun.mk
 else
 
+gb_SourceEnvAndRecurse_STAGE=gbuild
 include $(SOLARENV)/gbuild/gbuild.mk
 
 $(eval $(call gb_Module_make_global_targets,$(shell ls $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/Module*.mk)))
diff --git a/officecfg/Makefile b/officecfg/Makefile
index 7b3dec8..7bbbe6c 100644
--- a/officecfg/Makefile
+++ b/officecfg/Makefile
@@ -31,6 +31,7 @@ ifeq ($(strip $(SOLARENV)),)
 include $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/../solenv/gbuild/source_and_rerun.mk
 else
 
+gb_SourceEnvAndRecurse_STAGE=gbuild
 include $(SOLARENV)/gbuild/gbuild.mk
 
 $(eval $(call gb_Module_make_global_targets,$(shell ls $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/Module*.mk)))
diff --git a/oovbaapi/Makefile b/oovbaapi/Makefile
index 7b3dec8..7bbbe6c 100644
--- a/oovbaapi/Makefile
+++ b/oovbaapi/Makefile
@@ -31,6 +31,7 @@ ifeq ($(strip $(SOLARENV)),)
 include $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/../solenv/gbuild/source_and_rerun.mk
 else
 
+gb_SourceEnvAndRecurse_STAGE=gbuild
 include $(SOLARENV)/gbuild/gbuild.mk
 
 $(eval $(call gb_Module_make_global_targets,$(shell ls $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/Module*.mk)))
diff --git a/oox/Makefile b/oox/Makefile
index 7b3dec8..7bbbe6c 100644
--- a/oox/Makefile
+++ b/oox/Makefile
@@ -31,6 +31,7 @@ ifeq ($(strip $(SOLARENV)),)
 include $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/../solenv/gbuild/source_and_rerun.mk
 else
 
+gb_SourceEnvAndRecurse_STAGE=gbuild
 include $(SOLARENV)/gbuild/gbuild.mk
 
 $(eval $(call gb_Module_make_global_targets,$(shell ls $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/Module*.mk)))
diff --git a/package/Makefile b/package/Makefile
index 7b3dec8..7bbbe6c 100644
--- a/package/Makefile
+++ b/package/Makefile
@@ -31,6 +31,7 @@ ifeq ($(strip $(SOLARENV)),)
 include $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/../solenv/gbuild/source_and_rerun.mk
 else
 
+gb_SourceEnvAndRecurse_STAGE=gbuild
 include $(SOLARENV)/gbuild/gbuild.mk
 
 $(eval $(call gb_Module_make_global_targets,$(shell ls $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/Module*.mk)))
diff --git a/padmin/Makefile b/padmin/Makefile
index 7b3dec8..7bbbe6c 100644
--- a/padmin/Makefile
+++ b/padmin/Makefile
@@ -31,6 +31,7 @@ ifeq ($(strip $(SOLARENV)),)
 include $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/../solenv/gbuild/source_and_rerun.mk
 else
 
+gb_SourceEnvAndRecurse_STAGE=gbuild
 include $(SOLARENV)/gbuild/gbuild.mk
 
 $(eval $(call gb_Module_make_global_targets,$(shell ls $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/Module*.mk)))
diff --git a/psprint_config/Makefile b/psprint_config/Makefile
index 7b3dec8..7bbbe6c 100644
--- a/psprint_config/Makefile
+++ b/psprint_config/Makefile
@@ -31,6 +31,7 @@ ifeq ($(strip $(SOLARENV)),)
 include $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/../solenv/gbuild/source_and_rerun.mk
 else
 
+gb_SourceEnvAndRecurse_STAGE=gbuild
 include $(SOLARENV)/gbuild/gbuild.mk
 
 $(eval $(call gb_Module_make_global_targets,$(shell ls $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/Module*.mk)))
diff --git a/qadevOOo/Makefile b/qadevOOo/Makefile
index 7b3dec8..7bbbe6c 100644
--- a/qadevOOo/Makefile
+++ b/qadevOOo/Makefile
@@ -31,6 +31,7 @@ ifeq ($(strip $(SOLARENV)),)
 include $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/../solenv/gbuild/source_and_rerun.mk
 else
 
+gb_SourceEnvAndRecurse_STAGE=gbuild
 include $(SOLARENV)/gbuild/gbuild.mk
 
 $(eval $(call gb_Module_make_global_targets,$(shell ls $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/Module*.mk)))
diff --git a/regexp/Makefile b/regexp/Makefile
index 7b3dec8..7bbbe6c 100644
--- a/regexp/Makefile
+++ b/regexp/Makefile
@@ -31,6 +31,7 @@ ifeq ($(strip $(SOLARENV)),)
 include $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/../solenv/gbuild/source_and_rerun.mk
 else
 
+gb_SourceEnvAndRecurse_STAGE=gbuild
 include $(SOLARENV)/gbuild/gbuild.mk
 
 $(eval $(call gb_Module_make_global_targets,$(shell ls $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/Module*.mk)))
diff --git a/reportdesign/Makefile b/reportdesign/Makefile
index 7b3dec8..7bbbe6c 100644
--- a/reportdesign/Makefile
+++ b/reportdesign/Makefile
@@ -31,6 +31,7 @@ ifeq ($(strip $(SOLARENV)),)
 include $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/../solenv/gbuild/source_and_rerun.mk
 else
 
+gb_SourceEnvAndRecurse_STAGE=gbuild
 include $(SOLARENV)/gbuild/gbuild.mk
 
 $(eval $(call gb_Module_make_global_targets,$(shell ls $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/Module*.mk)))
diff --git a/rsc/Makefile b/rsc/Makefile
index 7b3dec8..7bbbe6c 100644
--- a/rsc/Makefile
+++ b/rsc/Makefile
@@ -31,6 +31,7 @@ ifeq ($(strip $(SOLARENV)),)
 include $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/../solenv/gbuild/source_and_rerun.mk
 else
 
+gb_SourceEnvAndRecurse_STAGE=gbuild
 include $(SOLARENV)/gbuild/gbuild.mk
 
 $(eval $(call gb_Module_make_global_targets,$(shell ls $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/Module*.mk)))
diff --git a/sal/Makefile b/sal/Makefile
index 7b3dec8..7bbbe6c 100644
--- a/sal/Makefile
+++ b/sal/Makefile
@@ -31,6 +31,7 @@ ifeq ($(strip $(SOLARENV)),)
 include $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/../solenv/gbuild/source_and_rerun.mk
 else
 
+gb_SourceEnvAndRecurse_STAGE=gbuild
 include $(SOLARENV)/gbuild/gbuild.mk
 
 $(eval $(call gb_Module_make_global_targets,$(shell ls $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/Module*.mk)))
diff --git a/sane/Makefile b/sane/Makefile
index 7b3dec8..7bbbe6c 100644
--- a/sane/Makefile
+++ b/sane/Makefile
@@ -31,6 +31,7 @@ ifeq ($(strip $(SOLARENV)),)
 include $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/../solenv/gbuild/source_and_rerun.mk
 else
 
+gb_SourceEnvAndRecurse_STAGE=gbuild
 include $(SOLARENV)/gbuild/gbuild.mk
 
 $(eval $(call gb_Module_make_global_targets,$(shell ls $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/Module*.mk)))
diff --git a/sax/Makefile b/sax/Makefile
index 7b3dec8..7bbbe6c 100644
--- a/sax/Makefile
+++ b/sax/Makefile
@@ -31,6 +31,7 @@ ifeq ($(strip $(SOLARENV)),)
 include $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/../solenv/gbuild/source_and_rerun.mk
 else
 
+gb_SourceEnvAndRecurse_STAGE=gbuild
 include $(SOLARENV)/gbuild/gbuild.mk
 
 $(eval $(call gb_Module_make_global_targets,$(shell ls $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/Module*.mk)))
diff --git a/sc/Makefile b/sc/Makefile
index 7b3dec8..7bbbe6c 100644
--- a/sc/Makefile
+++ b/sc/Makefile
@@ -31,6 +31,7 @@ ifeq ($(strip $(SOLARENV)),)
 include $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/../solenv/gbuild/source_and_rerun.mk
 else
 
+gb_SourceEnvAndRecurse_STAGE=gbuild
 include $(SOLARENV)/gbuild/gbuild.mk
 
 $(eval $(call gb_Module_make_global_targets,$(shell ls $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/Module*.mk)))
diff --git a/scaddins/Makefile b/scaddins/Makefile
index 7b3dec8..7bbbe6c 100644
--- a/scaddins/Makefile
+++ b/scaddins/Makefile
@@ -31,6 +31,7 @@ ifeq ($(strip $(SOLARENV)),)
 include $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/../solenv/gbuild/source_and_rerun.mk
 else
 
+gb_SourceEnvAndRecurse_STAGE=gbuild
 include $(SOLARENV)/gbuild/gbuild.mk
 
 $(eval $(call gb_Module_make_global_targets,$(shell ls $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/Module*.mk)))
diff --git a/sccomp/Makefile b/sccomp/Makefile
index 7b3dec8..7bbbe6c 100644
--- a/sccomp/Makefile
+++ b/sccomp/Makefile
@@ -31,6 +31,7 @@ ifeq ($(strip $(SOLARENV)),)
 include $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/../solenv/gbuild/source_and_rerun.mk
 else
 
+gb_SourceEnvAndRecurse_STAGE=gbuild
 include $(SOLARENV)/gbuild/gbuild.mk
 
 $(eval $(call gb_Module_make_global_targets,$(shell ls $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/Module*.mk)))
diff --git a/scripting/Makefile b/scripting/Makefile
index 7b3dec8..7bbbe6c 100644
--- a/scripting/Makefile
+++ b/scripting/Makefile
@@ -31,6 +31,7 @@ ifeq ($(strip $(SOLARENV)),)
 include $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/../solenv/gbuild/source_and_rerun.mk
 else
 
+gb_SourceEnvAndRecurse_STAGE=gbuild
 include $(SOLARENV)/gbuild/gbuild.mk
 
 $(eval $(call gb_Module_make_global_targets,$(shell ls $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/Module*.mk)))
diff --git a/sd/Makefile b/sd/Makefile
index 7b3dec8..7bbbe6c 100644
--- a/sd/Makefile
+++ b/sd/Makefile
@@ -31,6 +31,7 @@ ifeq ($(strip $(SOLARENV)),)
 include $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/../solenv/gbuild/source_and_rerun.mk
 else
 
+gb_SourceEnvAndRecurse_STAGE=gbuild
 include $(SOLARENV)/gbuild/gbuild.mk
 
 $(eval $(call gb_Module_make_global_targets,$(shell ls $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/Module*.mk)))
diff --git a/sfx2/Makefile b/sfx2/Makefile
index 7b3dec8..7bbbe6c 100644
--- a/sfx2/Makefile
+++ b/sfx2/Makefile
@@ -31,6 +31,7 @@ ifeq ($(strip $(SOLARENV)),)
 include $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/../solenv/gbuild/source_and_rerun.mk
 else
 
+gb_SourceEnvAndRecurse_STAGE=gbuild
 include $(SOLARENV)/gbuild/gbuild.mk
 
 $(eval $(call gb_Module_make_global_targets,$(shell ls $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/Module*.mk)))
diff --git a/slideshow/Makefile b/slideshow/Makefile
index 7b3dec8..7bbbe6c 100644
--- a/slideshow/Makefile
+++ b/slideshow/Makefile
@@ -31,6 +31,7 @@ ifeq ($(strip $(SOLARENV)),)
 include $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/../solenv/gbuild/source_and_rerun.mk
 else
 
+gb_SourceEnvAndRecurse_STAGE=gbuild
 include $(SOLARENV)/gbuild/gbuild.mk
 
 $(eval $(call gb_Module_make_global_targets,$(shell ls $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/Module*.mk)))
diff --git a/sot/Makefile b/sot/Makefile
index 7b3dec8..7bbbe6c 100644
--- a/sot/Makefile
+++ b/sot/Makefile
@@ -31,6 +31,7 @@ ifeq ($(strip $(SOLARENV)),)
 include $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/../solenv/gbuild/source_and_rerun.mk
 else
 
+gb_SourceEnvAndRecurse_STAGE=gbuild
 include $(SOLARENV)/gbuild/gbuild.mk
 
 $(eval $(call gb_Module_make_global_targets,$(shell ls $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/Module*.mk)))
diff --git a/starmath/Makefile b/starmath/Makefile
index 7b3dec8..7bbbe6c 100644
--- a/starmath/Makefile
+++ b/starmath/Makefile
@@ -31,6 +31,7 @@ ifeq ($(strip $(SOLARENV)),)
 include $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/../solenv/gbuild/source_and_rerun.mk
 else
 
+gb_SourceEnvAndRecurse_STAGE=gbuild
 include $(SOLARENV)/gbuild/gbuild.mk
 
 $(eval $(call gb_Module_make_global_targets,$(shell ls $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/Module*.mk)))
diff --git a/svl/Makefile b/svl/Makefile
index 7b3dec8..7bbbe6c 100644
--- a/svl/Makefile
+++ b/svl/Makefile
@@ -31,6 +31,7 @@ ifeq ($(strip $(SOLARENV)),)
 include $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/../solenv/gbuild/source_and_rerun.mk
 else
 
+gb_SourceEnvAndRecurse_STAGE=gbuild
 include $(SOLARENV)/gbuild/gbuild.mk
 
 $(eval $(call gb_Module_make_global_targets,$(shell ls $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/Module*.mk)))
diff --git a/svtools/Makefile b/svtools/Makefile
index 7b3dec8..7bbbe6c 100644
--- a/svtools/Makefile
+++ b/svtools/Makefile
@@ -31,6 +31,7 @@ ifeq ($(strip $(SOLARENV)),)
 include $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/../solenv/gbuild/source_and_rerun.mk
 else
 
+gb_SourceEnvAndRecurse_STAGE=gbuild
 include $(SOLARENV)/gbuild/gbuild.mk
 
 $(eval $(call gb_Module_make_global_targets,$(shell ls $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/Module*.mk)))
diff --git a/svx/Makefile b/svx/Makefile
index 7b3dec8..7bbbe6c 100644
--- a/svx/Makefile
+++ b/svx/Makefile
@@ -31,6 +31,7 @@ ifeq ($(strip $(SOLARENV)),)
 include $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/../solenv/gbuild/source_and_rerun.mk
 else
 
+gb_SourceEnvAndRecurse_STAGE=gbuild
 include $(SOLARENV)/gbuild/gbuild.mk
 
 $(eval $(call gb_Module_make_global_targets,$(shell ls $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/Module*.mk)))
diff --git a/sw/Makefile b/sw/Makefile
index 7b3dec8..7bbbe6c 100644
--- a/sw/Makefile
+++ b/sw/Makefile
@@ -31,6 +31,7 @@ ifeq ($(strip $(SOLARENV)),)
 include $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/../solenv/gbuild/source_and_rerun.mk
 else
 
+gb_SourceEnvAndRecurse_STAGE=gbuild
 include $(SOLARENV)/gbuild/gbuild.mk
 
 $(eval $(call gb_Module_make_global_targets,$(shell ls $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/Module*.mk)))
diff --git a/swext/Makefile b/swext/Makefile
index 7b3dec8..7bbbe6c 100644
--- a/swext/Makefile
+++ b/swext/Makefile
@@ -31,6 +31,7 @@ ifeq ($(strip $(SOLARENV)),)
 include $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/../solenv/gbuild/source_and_rerun.mk
 else
 
+gb_SourceEnvAndRecurse_STAGE=gbuild
 include $(SOLARENV)/gbuild/gbuild.mk
 
 $(eval $(call gb_Module_make_global_targets,$(shell ls $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/Module*.mk)))
diff --git a/tail_build/Makefile b/tail_build/Makefile
index e13530e..98a90a1 100644
--- a/tail_build/Makefile
+++ b/tail_build/Makefile
@@ -31,6 +31,7 @@ ifeq ($(strip $(SOLARENV)),)
 include $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/../solenv/gbuild/source_and_rerun.mk
 else
 
+gb_SourceEnvAndRecurse_STAGE=gbuild
 include $(SOLARENV)/gbuild/gbuild.mk
 
 $(eval $(call gb_Module_make_global_targets,$(SRCDIR)/Module_tail_build.mk))
diff --git a/toolkit/Makefile b/toolkit/Makefile
index 7b3dec8..7bbbe6c 100644
--- a/toolkit/Makefile
+++ b/toolkit/Makefile
@@ -31,6 +31,7 @@ ifeq ($(strip $(SOLARENV)),)
 include $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/../solenv/gbuild/source_and_rerun.mk
 else
 
+gb_SourceEnvAndRecurse_STAGE=gbuild
 include $(SOLARENV)/gbuild/gbuild.mk
 
 $(eval $(call gb_Module_make_global_targets,$(shell ls $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/Module*.mk)))
diff --git a/tools/Makefile b/tools/Makefile
index 7b3dec8..7bbbe6c 100644
--- a/tools/Makefile
+++ b/tools/Makefile
@@ -31,6 +31,7 @@ ifeq ($(strip $(SOLARENV)),)
 include $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/../solenv/gbuild/source_and_rerun.mk
 else
 
+gb_SourceEnvAndRecurse_STAGE=gbuild
 include $(SOLARENV)/gbuild/gbuild.mk
 
 $(eval $(call gb_Module_make_global_targets,$(shell ls $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/Module*.mk)))
diff --git a/twain/Makefile b/twain/Makefile
index 7b3dec8..7bbbe6c 100644
--- a/twain/Makefile
+++ b/twain/Makefile
@@ -31,6 +31,7 @@ ifeq ($(strip $(SOLARENV)),)
 include $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/../solenv/gbuild/source_and_rerun.mk
 else
 
+gb_SourceEnvAndRecurse_STAGE=gbuild
 include $(SOLARENV)/gbuild/gbuild.mk
 
 $(eval $(call gb_Module_make_global_targets,$(shell ls $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/Module*.mk)))
diff --git a/ucb/Makefile b/ucb/Makefile
index 7b3dec8..7bbbe6c 100644
--- a/ucb/Makefile
+++ b/ucb/Makefile
@@ -31,6 +31,7 @@ ifeq ($(strip $(SOLARENV)),)
 include $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/../solenv/gbuild/source_and_rerun.mk
 else
 
+gb_SourceEnvAndRecurse_STAGE=gbuild
 include $(SOLARENV)/gbuild/gbuild.mk
 
 $(eval $(call gb_Module_make_global_targets,$(shell ls $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/Module*.mk)))
diff --git a/ucbhelper/Makefile b/ucbhelper/Makefile
index 7b3dec8..7bbbe6c 100644
--- a/ucbhelper/Makefile
+++ b/ucbhelper/Makefile
@@ -31,6 +31,7 @@ ifeq ($(strip $(SOLARENV)),)
 include $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/../solenv/gbuild/source_and_rerun.mk
 else
 
+gb_SourceEnvAndRecurse_STAGE=gbuild
 include $(SOLARENV)/gbuild/gbuild.mk
 
 $(eval $(call gb_Module_make_global_targets,$(shell ls $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/Module*.mk)))
diff --git a/udkapi/Makefile b/udkapi/Makefile
index 7b3dec8..7bbbe6c 100644
--- a/udkapi/Makefile
+++ b/udkapi/Makefile
@@ -31,6 +31,7 @@ ifeq ($(strip $(SOLARENV)),)
 include $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/../solenv/gbuild/source_and_rerun.mk
 else
 
+gb_SourceEnvAndRecurse_STAGE=gbuild
 include $(SOLARENV)/gbuild/gbuild.mk
 
 $(eval $(call gb_Module_make_global_targets,$(shell ls $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/Module*.mk)))
diff --git a/unixODBC/Makefile b/unixODBC/Makefile
index 7b3dec8..7bbbe6c 100644
--- a/unixODBC/Makefile
+++ b/unixODBC/Makefile
@@ -31,6 +31,7 @@ ifeq ($(strip $(SOLARENV)),)
 include $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/../solenv/gbuild/source_and_rerun.mk
 else
 
+gb_SourceEnvAndRecurse_STAGE=gbuild
 include $(SOLARENV)/gbuild/gbuild.mk
 
 $(eval $(call gb_Module_make_global_targets,$(shell ls $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/Module*.mk)))
diff --git a/unotools/Makefile b/unotools/Makefile
index 7b3dec8..7bbbe6c 100644
--- a/unotools/Makefile
+++ b/unotools/Makefile
@@ -31,6 +31,7 @@ ifeq ($(strip $(SOLARENV)),)
 include $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/../solenv/gbuild/source_and_rerun.mk
 else
 
+gb_SourceEnvAndRecurse_STAGE=gbuild
 include $(SOLARENV)/gbuild/gbuild.mk
 
 $(eval $(call gb_Module_make_global_targets,$(shell ls $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/Module*.mk)))
diff --git a/unoxml/Makefile b/unoxml/Makefile
index 7b3dec8..7bbbe6c 100644
--- a/unoxml/Makefile
+++ b/unoxml/Makefile
@@ -31,6 +31,7 @@ ifeq ($(strip $(SOLARENV)),)
 include $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/../solenv/gbuild/source_and_rerun.mk
 else
 
+gb_SourceEnvAndRecurse_STAGE=gbuild
 include $(SOLARENV)/gbuild/gbuild.mk
 
 $(eval $(call gb_Module_make_global_targets,$(shell ls $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/Module*.mk)))
diff --git a/uui/Makefile b/uui/Makefile
index 7b3dec8..7bbbe6c 100644
--- a/uui/Makefile
+++ b/uui/Makefile
@@ -31,6 +31,7 @@ ifeq ($(strip $(SOLARENV)),)
 include $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/../solenv/gbuild/source_and_rerun.mk
 else
 
+gb_SourceEnvAndRecurse_STAGE=gbuild
 include $(SOLARENV)/gbuild/gbuild.mk
 
 $(eval $(call gb_Module_make_global_targets,$(shell ls $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/Module*.mk)))
diff --git a/vbahelper/Makefile b/vbahelper/Makefile
index 7b3dec8..7bbbe6c 100644
--- a/vbahelper/Makefile
+++ b/vbahelper/Makefile
@@ -31,6 +31,7 @@ ifeq ($(strip $(SOLARENV)),)
 include $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/../solenv/gbuild/source_and_rerun.mk
 else
 
+gb_SourceEnvAndRecurse_STAGE=gbuild
 include $(SOLARENV)/gbuild/gbuild.mk
 
 $(eval $(call gb_Module_make_global_targets,$(shell ls $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/Module*.mk)))
diff --git a/vcl/Makefile b/vcl/Makefile
index 7b3dec8..7bbbe6c 100644
--- a/vcl/Makefile
+++ b/vcl/Makefile
@@ -31,6 +31,7 @@ ifeq ($(strip $(SOLARENV)),)
 include $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/../solenv/gbuild/source_and_rerun.mk
 else
 
+gb_SourceEnvAndRecurse_STAGE=gbuild
 include $(SOLARENV)/gbuild/gbuild.mk
 
 $(eval $(call gb_Module_make_global_targets,$(shell ls $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/Module*.mk)))
diff --git a/wizards/Makefile b/wizards/Makefile
index 7b3dec8..7bbbe6c 100644
--- a/wizards/Makefile
+++ b/wizards/Makefile
@@ -31,6 +31,7 @@ ifeq ($(strip $(SOLARENV)),)
 include $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/../solenv/gbuild/source_and_rerun.mk
 else
 
+gb_SourceEnvAndRecurse_STAGE=gbuild
 include $(SOLARENV)/gbuild/gbuild.mk
 
 $(eval $(call gb_Module_make_global_targets,$(shell ls $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/Module*.mk)))
diff --git a/writerfilter/Makefile b/writerfilter/Makefile
index 7b3dec8..7bbbe6c 100644
--- a/writerfilter/Makefile
+++ b/writerfilter/Makefile
@@ -31,6 +31,7 @@ ifeq ($(strip $(SOLARENV)),)
 include $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/../solenv/gbuild/source_and_rerun.mk
 else
 
+gb_SourceEnvAndRecurse_STAGE=gbuild
 include $(SOLARENV)/gbuild/gbuild.mk
 
 $(eval $(call gb_Module_make_global_targets,$(shell ls $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/Module*.mk)))
diff --git a/writerperfect/Makefile b/writerperfect/Makefile
index 7b3dec8..7bbbe6c 100644
--- a/writerperfect/Makefile
+++ b/writerperfect/Makefile
@@ -31,6 +31,7 @@ ifeq ($(strip $(SOLARENV)),)
 include $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/../solenv/gbuild/source_and_rerun.mk
 else
 
+gb_SourceEnvAndRecurse_STAGE=gbuild
 include $(SOLARENV)/gbuild/gbuild.mk
 
 $(eval $(call gb_Module_make_global_targets,$(shell ls $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/Module*.mk)))
diff --git a/xmerge/Makefile b/xmerge/Makefile
index 7b3dec8..7bbbe6c 100644
--- a/xmerge/Makefile
+++ b/xmerge/Makefile
@@ -31,6 +31,7 @@ ifeq ($(strip $(SOLARENV)),)
 include $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/../solenv/gbuild/source_and_rerun.mk
 else
 
+gb_SourceEnvAndRecurse_STAGE=gbuild
 include $(SOLARENV)/gbuild/gbuild.mk
 
 $(eval $(call gb_Module_make_global_targets,$(shell ls $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/Module*.mk)))
diff --git a/xml2cmp/Makefile b/xml2cmp/Makefile
index 7b3dec8..7bbbe6c 100644
--- a/xml2cmp/Makefile
+++ b/xml2cmp/Makefile
@@ -31,6 +31,7 @@ ifeq ($(strip $(SOLARENV)),)
 include $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/../solenv/gbuild/source_and_rerun.mk
 else
 
+gb_SourceEnvAndRecurse_STAGE=gbuild
 include $(SOLARENV)/gbuild/gbuild.mk
 
 $(eval $(call gb_Module_make_global_targets,$(shell ls $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/Module*.mk)))
diff --git a/xmloff/Makefile b/xmloff/Makefile
index 7b3dec8..7bbbe6c 100644
--- a/xmloff/Makefile
+++ b/xmloff/Makefile
@@ -31,6 +31,7 @@ ifeq ($(strip $(SOLARENV)),)
 include $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/../solenv/gbuild/source_and_rerun.mk
 else
 
+gb_SourceEnvAndRecurse_STAGE=gbuild
 include $(SOLARENV)/gbuild/gbuild.mk
 
 $(eval $(call gb_Module_make_global_targets,$(shell ls $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/Module*.mk)))
diff --git a/xmlreader/Makefile b/xmlreader/Makefile
index 7b3dec8..7bbbe6c 100644
--- a/xmlreader/Makefile
+++ b/xmlreader/Makefile
@@ -31,6 +31,7 @@ ifeq ($(strip $(SOLARENV)),)
 include $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/../solenv/gbuild/source_and_rerun.mk
 else
 
+gb_SourceEnvAndRecurse_STAGE=gbuild
 include $(SOLARENV)/gbuild/gbuild.mk
 
 $(eval $(call gb_Module_make_global_targets,$(shell ls $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/Module*.mk)))
diff --git a/xmlscript/Makefile b/xmlscript/Makefile
index 7b3dec8..7bbbe6c 100644
--- a/xmlscript/Makefile
+++ b/xmlscript/Makefile
@@ -31,6 +31,7 @@ ifeq ($(strip $(SOLARENV)),)
 include $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/../solenv/gbuild/source_and_rerun.mk
 else
 
+gb_SourceEnvAndRecurse_STAGE=gbuild
 include $(SOLARENV)/gbuild/gbuild.mk
 
 $(eval $(call gb_Module_make_global_targets,$(shell ls $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/Module*.mk)))
diff --git a/xmlsecurity/Makefile b/xmlsecurity/Makefile
index 7b3dec8..7bbbe6c 100644
--- a/xmlsecurity/Makefile
+++ b/xmlsecurity/Makefile
@@ -31,6 +31,7 @@ ifeq ($(strip $(SOLARENV)),)
 include $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/../solenv/gbuild/source_and_rerun.mk
 else
 
+gb_SourceEnvAndRecurse_STAGE=gbuild
 include $(SOLARENV)/gbuild/gbuild.mk
 
 $(eval $(call gb_Module_make_global_targets,$(shell ls $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/Module*.mk)))
commit ab225eead3fb14c5acf89690965b9b24db4d97e3
Author: Bjoern Michaelsen <bjoern.michaelsen at canonical.com>
Date:   Tue Dec 6 17:15:44 2011 +0100

    only depend from dev-install on build if it is an explicit goal

diff --git a/solenv/gbuild/JunitTest.mk b/solenv/gbuild/JunitTest.mk
index 5ce0b3f..5afe595 100644
--- a/solenv/gbuild/JunitTest.mk
+++ b/solenv/gbuild/JunitTest.mk
@@ -58,7 +58,7 @@ $(call gb_JunitTest_get_target,%) :
 		&& echo "see full error log at $@.log" \
 		&& echo "to rerun just this failed test without all others, run:" \
 		&& echo && echo "    make $@" && echo \
-		&& echo "cd into the module dir if you do not want a full dev-install run" \
+		&& echo "cd into the module dir to run the tests faster" \
 		&& echo "Or to do interactive debugging, run two shells with (Linux only):" \
 		&& echo \
 		&& echo "    make debugrun" \
diff --git a/solenv/gbuild/extensions/post_BuildplTargets.mk b/solenv/gbuild/extensions/post_BuildplTargets.mk
index 01dc08a..66bb98a 100644
--- a/solenv/gbuild/extensions/post_BuildplTargets.mk
+++ b/solenv/gbuild/extensions/post_BuildplTargets.mk
@@ -100,14 +100,12 @@ gb_MAKETARGET=build
 endif
 endif
 
-gb_BuildplTarget_COMPLETEDTARGETS=
 define gb_BuildplTarget_command
 cd $(SRCDIR)/$(1) && unset MAKEFLAGS && export gb_SourceEnvAndRecurse_STAGE=gbuild && $(SOLARENV)/bin/build.pl $(if $(findstring s,$(MAKEFLAGS)),,VERBOSE=T) -P$(BUILD_NCPUS) $(2) -- -P$(GMAKE_PARALLELISM) gb_MAKETARGET=$(gb_MAKETARGET)
-$(eval gb_BuildplTarget_COMPLETEDTARGETS+=$(1))
 endef
 
-dev-install: $(WORKDIR)/bootstrap  $(SRCDIR)/src.downloaded $(if $(filter $(INPATH),$(INPATH_FOR_BUILD)),,cross_toolset) | build
-	$(call gb_BuildplTarget_command,smoketestoo_native,$(if $(filter instsetoo_native,$(gb_BuildplTarget_COMPLETEDTARGETS)),--from instsetoo_native,--all))
+dev-install: $(WORKDIR)/bootstrap  $(SRCDIR)/src.downloaded $(if $(filter $(INPATH),$(INPATH_FOR_BUILD)),,cross_toolset) | $(filter build,$(MAKECMDGOALS))
+	$(call gb_BuildplTarget_command,smoketestoo_native,--from instsetoo_native)
 
 build: $(WORKDIR)/bootstrap $(SRCDIR)/src.downloaded $(if $(filter $(INPATH),$(INPATH_FOR_BUILD)),,cross_toolset)
 	$(call gb_BuildplTarget_command,instsetoo_native,--all)
@@ -154,7 +152,7 @@ ifeq ($(gb_SourceEnvAndRecurse_STAGE),gbuild)
 
 clean: clean-host clean-build
 
-dev-install: $(WORKDIR)/bootstrap  $(SRCDIR)/src.downloaded $(if $(filter $(INPATH),$(INPATH_FOR_BUILD)),,cross_toolset) | build
+dev-install: $(WORKDIR)/bootstrap  $(SRCDIR)/src.downloaded $(if $(filter $(INPATH),$(INPATH_FOR_BUILD)),,cross_toolset) | $(filter build,$(MAKECMDGOALS))
 
 build: $(WORKDIR)/bootstrap $(SRCDIR)/src.downloaded $(if $(filter $(INPATH),$(INPATH_FOR_BUILD)),,cross_toolset)
 
commit 2ca9a7e82c97df06730301bdd740f55ac447dc95
Author: Norbert Thiebaud <nthiebaud at gmail.com>
Date:   Mon Dec 5 11:42:21 2011 -0600

    add def to allow compile of concat-deps.c on Mac

diff --git a/solenv/bin/concat-deps.c b/solenv/bin/concat-deps.c
index 508a901..d699e82 100644
--- a/solenv/bin/concat-deps.c
+++ b/solenv/bin/concat-deps.c
@@ -11,6 +11,18 @@
  * ===============================================
  */
 
+#ifdef __APPLE__
+#ifdef __x86_64__
+#define CORE_BIG_ENDIAN 0
+#define CORE_LITTLE_ENDIAN 1
+#define USE_MEMORY_ALIGNMENT 64 /* big value -> no alignment */
+#else
+#define CORE_BIG_ENDIAN 1
+#define CORE_LITTLE_ENDIAN 0
+#define USE_MEMORY_ALIGNMENT 4
+#endif
+
+#endif
 #ifdef _AIX
 #define CORE_BIG_ENDIAN 1
 #define CORE_LITTLE_ENDIAN 0
commit ff5644afcab28b90c453dde5277d30094cdf1826
Author: Norbert Thiebaud <nthiebaud at gmail.com>
Date:   Mon Dec 5 09:00:50 2011 -0600

    c version for concat-deps

diff --git a/solenv/bin/concat-deps.c b/solenv/bin/concat-deps.c
new file mode 100644
index 0000000..508a901
--- /dev/null
+++ b/solenv/bin/concat-deps.c
@@ -0,0 +1,840 @@
+/*
+ *    Copyright (C) 2011 Norbert Thiebaud
+ *    License: GPLv3
+ */
+
+//* define to activate stats reporting on hash usage
+#define HASH_STAT
+
+/* ===============================================
+ * Set-up: defines to identify the system and system related properties
+ * ===============================================
+ */
+
+#ifdef _AIX
+#define CORE_BIG_ENDIAN 1
+#define CORE_LITTLE_ENDIAN 0
+#define USE_MEMORY_ALIGNMENT 4
+#endif /* Def _AIX */
+
+#ifdef __CYGWIN__
+#define __windows
+#define CORE_BIG_ENDIAN 0
+#define CORE_LITTLE_ENDIAN 1
+#define USE_MEMORY_ALIGNMENT 64 /* big value -> no alignment */
+#endif /* Def __CYGWIN__ */
+
+#ifdef __linux
+#if __BYTE_ORDER == __LITTLE_ENDIAN
+#define CORE_BIG_ENDIAN 0
+#define CORE_LITTLE_ENDIAN 1
+#define USE_MEMORY_ALIGNMENT 64
+#else /* !(__BYTE_ORDER == __LITTLE_ENDIAN) */
+#if __BYTE_ORDER == __BIG_ENDIAN
+#define CORE_BIG_ENDIAN 1
+#define CORE_LITTLE_ENDIAN 0
+#define USE_MEMORY_ALIGNMENT 4
+#endif /* __BYTE_ORDER == __BIG_ENDIAN */
+#endif /* !(__BYTE_ORDER == __LITTLE_ENDIAN) */
+#endif /* Def __linux */
+
+#ifdef __sun
+#ifdef __sparc
+#define CORE_BIG_ENDIAN 1
+#define CORE_LITTLE_ENDIAN 0
+#define USE_MEMORY_ALIGNMENT 4
+#else  /* Ndef __sparc */
+#define CORE_BIG_ENDIAN 0
+#define CORE_LITTLE_ENDIAN 1
+#define USE_MEMORY_ALIGNMENT 4
+#endif /* Ndef __sparc */
+#endif /* Def __sun */
+
+/* Note USE_MEMORY_ALIGNMENT is 4 for platform that allow short non-aligned but required int access to be aligned (e.g sparc, ppc, zos..)
+ *      USE_MEMORY_ALIGNMENT is 2 for platform that require short and int access to be aligned (e.g hppa )
+ * if the platform does not have alignment requirement (x86/amd64) use a big value (i.e > 16)
+ */
+#ifndef USE_MEMORY_ALIGNMENT
+#error "USE_MEMORY_ALIGNMENT must be defined to the proper alignment value for the platform"
+#endif
+
+#include <assert.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <string.h>
+#include <ctype.h>
+
+#ifdef __windows
+#include <io.h>
+#else
+#include <unistd.h>
+#endif
+
+/* modes */
+#ifdef __windows
+#define FILE_O_RDONLY     _O_RDONLY
+#define FILE_O_BINARY     _O_BINARY
+#else /* not windaube */
+#define FILE_O_RDONLY     O_RDONLY
+#define FILE_O_BINARY     0
+#endif /* not windaube */
+
+#ifndef TRUE
+#define TRUE 1
+#endif
+#ifndef FALSE
+#define FALSE 0
+#endif
+
+
+#ifdef __GNUC__
+#define clz __builtin_clz
+#else
+static inline int clz(unsigned int value)
+{
+int result = 32;
+
+    while(value)
+    {
+        value >>= 1;
+        result -= 1;
+    }
+    return result;
+}
+#endif
+
+#if (USE_MEMORY_ALIGNMENT > 4)
+#define get_unaligned_uint(str)           (*(unsigned int*)(str))
+#else
+static inline unsigned int get_unaligned_uint(const unsigned char* cursor)
+{
+unsigned int   result;
+
+    memcpy(&result, cursor, sizeof(unsigned int));
+    return result;
+}
+#endif
+
+/* ===============================================
+ * memory pool for fast fix-size allocation (non-tread-safe)
+ * ===============================================
+ */
+struct pool
+{
+    void*    head_free;  /**< head of a linked list of freed element */
+    char*    fresh;      /**< top of a memory block to dig new element */
+    char*    tail;       /**< to detect end of extent... when fresh pass tail */
+    void*    extent;     /**< pointer to the primary extent block */
+    int      size_elem;  /**< size of an element. */
+    int      primary;    /**< primary allocation in bytes */
+    int      secondary;  /**< secondary allocation in bytes */
+};
+#define POOL_ALIGN_INCREMENT 8 /**< Alignement, must be a power of 2 and of size > to sizeof(void*) */
+
+
+static void* pool_take_extent(struct pool* pool, int allocate)
+{
+unsigned int size = 0;
+void* extent;
+void* data = NULL;
+
+    if(pool->extent)
+    {
+        fputs("taking a pool extent\n", stderr);
+        /* we already have an extent, so this is a secondary */
+        if(pool->secondary)
+        {
+            size = pool->secondary;
+        }
+    }
+    else
+    {
+        assert(pool->primary);
+        size = pool->primary;
+    }
+    if(size)
+    {
+        extent = malloc(size);
+        if(extent)
+        {
+            *(void**)extent = pool->extent;
+            pool->extent = extent;
+            if(allocate)
+            {
+                data = ((char*)extent) + POOL_ALIGN_INCREMENT;
+                pool->fresh = ((char*)data) + pool->size_elem;
+                pool->tail = pool->fresh + (size - pool->size_elem);
+            }
+            else
+            {
+                pool->fresh = ((char*)extent) + POOL_ALIGN_INCREMENT;
+                pool->tail = pool->fresh + (size - pool->size_elem);
+            }
+        }
+    }
+    return data;
+}
+
+/* Create a memory pool for fix size objects
+ * this is a simplified implementation that
+ * is _not_ thread safe.
+ */
+struct pool* pool_create(int size_elem, int flags, int primary, int secondary)
+{
+struct pool* pool;
+
+    assert(primary > 0);
+    assert(secondary >= 0);
+    assert(size_elem > 0);
+
+    pool = (struct pool*)calloc(1, sizeof(struct pool));
+    if(!pool) return NULL;
+    /* Adjust the element size so that it be aligned, and so that an element could
+     * at least contain a void*
+     */
+    pool->size_elem = size_elem = (size_elem + POOL_ALIGN_INCREMENT - 1) & ~(POOL_ALIGN_INCREMENT - 1);
+
+    pool->primary = (size_elem * primary) + POOL_ALIGN_INCREMENT;
+    pool->secondary = secondary > 0 ? (size_elem * secondary) + POOL_ALIGN_INCREMENT : 0;
+    pool_take_extent(pool, FALSE);
+
+    return pool;
+
+}
+
+void pool_destroy(struct pool* pool)
+{
+void* extent;
+void* next;
+
+    if(pool != NULL)
+    {
+        extent = pool->extent;
+        while(extent)
+        {
+            next = *(void**)extent;
+            free(extent);
+            extent = next;
+        }
+        free(pool);
+    }
+}
+
+static inline void* pool_alloc(struct pool* pool)
+{
+void* data;
+
+    data = pool->head_free;
+    if(data == NULL)
+    {
+        /* we have no old-freed elem */
+        if(pool->fresh <= pool->tail)
+        {
+            /* pick a slice of the current extent */
+            data = (void*)pool->fresh;
+            pool->fresh += pool->size_elem;
+        }
+        else
+        {
+            /* allocate a new extent */
+            data = pool_take_extent(pool, TRUE);
+        }
+    }
+    else
+    {
+        /* re-used old freed element by chopipng the head of the free list */
+        pool->head_free = *(void**)data;
+    }
+
+    return data;
+}
+
+
+static inline void pool_free(struct pool* pool, void* data)
+{
+    assert(pool && data);
+
+    /* stack on top of the free list */
+    *(void**)data = pool->head_free;
+    pool->head_free = data;
+}
+
+
+/* ===============================================
+ * Hash implementation custumized to be just tracking
+ * a unique list of string (i.e no data associated
+ * with the key, no need for retrieval, etc..
+ *
+ * This is tuned for the particular use-case we have here
+ * measures in tail_build showed that
+ * we can get north of 4000 distinct values stored in a hash
+ * the collision rate is at worse around 2%
+ * the collision needing an expensive memcmp to resolve
+ * have a rate typically at 1 per 1000
+ * for tail_build we register 37229 unique key
+ * with a total of 377 extra memcmp needed
+ * which is completely negligible compared to the
+ * number of memcmp required to eliminate duplicate
+ * entry (north of 2.5 millions for tail_build)
+ * ===============================================
+ */
+
+struct hash_elem
+{
+    struct hash_elem* next;
+    const char*    key;
+    int      key_len;
+};
+
+struct hash
+{
+    struct hash_elem** array;
+    struct pool* elems_pool;
+    int flags;
+    unsigned int used;
+    unsigned int size;
+    unsigned int load_limit;
+#ifdef HASH_STAT
+    int stored;
+    int collisions;
+    int cost;
+    int memcmp;
+#endif
+};
+#define HASH_F_NO_RESIZE (1<<0)
+
+/* The following hash_compute function was adapted from :
+ * lookup3.c, by Bob Jenkins, May 2006, Public Domain.
+ *
+ * The changes from the original are mostly cosmetic
+ */
+#define hashsize(n) (1<<(n))
+#define hashmask(n) (hashsize(n)-1)
+#define rot(x,k) (((x)<<(k)) | ((x)>>(32-(k))))
+
+
+#if CORE_BIG_ENDIAN
+#define MASK_C1 0xFFFFFF00
+#define MASK_C2 0xFFFF0000
+#define MASK_C3 0xFF000000
+#else
+#if CORE_LITTLE_ENDIAN
+#define MASK_C1 0xFFFFFF
+#define MASK_C2 0xFFFF
+#define MASK_C3 0xFF
+#else
+#error "Missing Endianness definition"
+#endif
+#endif
+
+
+#define mix(a,b,c) \
+{ \
+  a -= c;  a ^= rot(c, 4);  c += b; \
+  b -= a;  b ^= rot(a, 6);  a += c; \
+  c -= b;  c ^= rot(b, 8);  b += a; \
+  a -= c;  a ^= rot(c,16);  c += b; \
+  b -= a;  b ^= rot(a,19);  a += c; \
+  c -= b;  c ^= rot(b, 4);  b += a; \
+}
+#define final(a,b,c) \
+{ \
+  c ^= b; c -= rot(b,14); \
+  a ^= c; a -= rot(c,11); \
+  b ^= a; b -= rot(a,25); \
+  c ^= b; c -= rot(b,16); \
+  a ^= c; a -= rot(c,4);  \
+  b ^= a; b -= rot(a,14); \
+  c ^= b; c -= rot(b,24); \
+}
+
+static unsigned int hash_compute( struct hash* hash, const char* key, int length)
+{
+unsigned int a;
+unsigned int b;
+unsigned int c;                                          /* internal state */
+const unsigned char* uk = (const unsigned char*)key;
+
+    /* Set up the internal state */
+    a = b = c = 0xdeadbeef + (length << 2);
+
+    /* we use this to 'hash' full path with mostly a common root
+     * let's now waste too much cycles hashing mostly constant stuff
+     */
+    if(length > 36)
+    {
+        uk += length - 36;
+        length = 36;
+    }
+    /*------ all but last block: aligned reads and affect 32 bits of (a,b,c) */
+    while (length > 12)
+    {
+        a += get_unaligned_uint(uk);
+        b += get_unaligned_uint(uk+4);
+        c += get_unaligned_uint(uk+8);
+        mix(a,b,c);
+        length -= 12;
+        uk += 12;
+    }
+
+    /*----------------------------- handle the last (probably partial) block */
+    /* Note: we possibly over-read, which would trigger complaint from VALGRIND
+     * but we mask the undefined stuff if any, so we are still good, thanks
+     * to alignment of memory allocation and tail-memory managment overhead
+     * we always can read 3 bytes past the official end without triggering
+     * a segfault -- if you find a platform/compiler couple for which that postulat
+     * is false, then you just need to over-allocate by 2 more bytes in file_load()
+     * file_load already over-allocate by 1 to sitck a \0 at the end of the buffer.
+     */
+    switch(length)
+    {
+    case 12: c+=get_unaligned_uint(uk+8); b+=get_unaligned_uint(uk+4); a+=get_unaligned_uint(uk); break;
+    case 11: c+=get_unaligned_uint(uk+8) & MASK_C1; b+=get_unaligned_uint(uk+4); a+=get_unaligned_uint(uk); break;
+    case 10: c+=get_unaligned_uint(uk+8) & MASK_C2; b+=get_unaligned_uint(uk+4); a+=get_unaligned_uint(uk); break;
+    case 9 : c+=get_unaligned_uint(uk+8) & MASK_C3; b+=get_unaligned_uint(uk+4); a+=get_unaligned_uint(uk); break;
+    case 8 : b+=get_unaligned_uint(uk+4); a+=get_unaligned_uint(uk); break;
+    case 7 : b+=get_unaligned_uint(uk+4) & MASK_C1; a+=get_unaligned_uint(uk); break;
+    case 6 : b+=get_unaligned_uint(uk+4) & MASK_C2; a+=get_unaligned_uint(uk); break;
+    case 5 : b+=get_unaligned_uint(uk+4) & MASK_C3; a+=get_unaligned_uint(uk); break;
+    case 4 : a+=get_unaligned_uint(uk); break;
+    case 3 : a+=get_unaligned_uint(uk) & MASK_C1; break;
+    case 2 : a+=get_unaligned_uint(uk) & MASK_C2; break;
+    case 1 : a+=get_unaligned_uint(uk) & MASK_C3; break;
+    case 0 : return c & hash->size;              /* zero length strings require no mixing */
+    }
+
+    final(a,b,c);
+    return c & hash->size;
+}
+
+static void hash_destroy(struct hash* hash)
+{
+    if(hash)
+    {
+        if(hash->array)
+        {
+            free(hash->array);
+        }
+        if(hash->elems_pool)
+        {
+            pool_destroy(hash->elems_pool);
+        }
+        free(hash);
+    }
+}
+
+static struct hash* hash_create(unsigned int size)
+{
+struct hash* hash;
+
+    assert(size > 0);
+    hash = calloc(1, sizeof(struct hash));
+    if(hash)
+    {
+        size += (size >> 2) + 1; /* ~ 75% load factor */
+        if(size >= 15)
+        {
+            hash->size = (((unsigned int)0xFFFFFFFF) >> clz((unsigned int)size));
+        }
+        else
+        {
+            hash->size = size = 15;
+        }
+        hash->load_limit = hash->size - (hash->size >> 2);
+        hash->used = 0;
+        hash->array = (struct hash_elem**)calloc(hash->size + 1, sizeof(struct hash_elem*));
+        if(hash->array == NULL)
+        {
+            hash_destroy(hash);
+            hash = NULL;
+        }
+    }
+    if(hash)
+    {
+        hash->elems_pool = pool_create(sizeof(struct hash_elem),
+                                       0, size, size << 1);
+        if(!hash->elems_pool)
+        {
+            hash_destroy(hash);
+            hash = NULL;
+        }
+    }
+    return hash;
+}
+
+static void hash_resize(struct hash* hash)
+{
+unsigned int old_size = hash->size;
+unsigned int hashed;
+struct hash_elem* hash_elem;
+struct hash_elem* next;
+struct hash_elem** array;
+int i;
+
+    hash->size = (old_size << 1) + 1;
+    /* we really should avoid to get there... so print a message to alert of the condition */
+    fprintf(stderr, "resize hash %d -> %d\n", old_size, hash->size);
+    if(hash->size == old_size)
+    {
+        hash->flags |= HASH_F_NO_RESIZE;
+        return;
+    }
+    array = calloc(hash->size + 1, sizeof(struct hash_elem*));
+    if(array)
+    {
+        hash->load_limit = hash->size - (hash->size >> 2);
+        for(i=0; i <= old_size; i++)
+        {
+            hash_elem = (struct hash_elem*)hash->array[i];
+            while(hash_elem)
+            {
+                next = hash_elem->next;
+
+                hashed = hash_compute(hash, hash_elem->key, hash_elem->key_len);
+                hash_elem->next = array[hashed];
+                array[hashed] = hash_elem;
+                hash_elem = next;
+            }
+        }
+        free(hash->array);
+        hash->array = (struct hash_elem**)array;
+    }
+    else
+    {
+        hash->size = old_size;
+        hash->flags |= HASH_F_NO_RESIZE;
+    }
+}
+
+#ifdef HASH_STAT
+static inline int compare_key(struct hash* hash, const char* a, const char* b, int len, int* cost)
+{
+    *cost += 1;
+    hash->memcmp += 1;
+    return memcmp(a,b, len);
+}
+#else
+#define compare_key(h,a,b,l,c) memcmp(a,b,l)
+#endif
+
+/* a customized hash_store function that just store the key and return
+ * TRUE if the key was effectively stored, or FALSE if the key was already there
+ */
+static int hash_store(struct hash* hash, const char* key, int key_len)
+{
+unsigned int hashed;
+struct hash_elem* hash_elem;
+int cost = 0;
+
+    hashed = hash_compute(hash, key, key_len);
+#ifdef HASH_STAT
+    hash->stored += 1;
+#endif
+    hash_elem = (struct hash_elem*)hash->array[hashed];
+    while(hash_elem && (hash_elem->key_len != key_len || compare_key(hash, hash_elem->key, key, key_len, &cost)))
+    {
+        hash_elem = hash_elem->next;
+    }
+
+    if(!hash_elem)
+    {
+        hash_elem = pool_alloc(hash->elems_pool);
+        if(hash_elem)
+        {
+            hash_elem->key = key;
+            hash_elem->key_len = key_len;
+            hash_elem->next = hash->array[hashed];
+
+#ifdef HASH_STAT
+            if(hash_elem->next)
+            {
+                hash->collisions += 1;
+                hash->cost += cost;
+//                fprintf(stderr, "key colision %s and %s\n", key, hash_elem->next->key);
+            }
+#endif
+            hash->array[hashed] = hash_elem;
+            hash->used += 1;
+            if(hash->used > hash->load_limit)
+            {
+                hash_resize(hash);
+            }
+        }
+        return TRUE;
+    }
+    return FALSE;
+}
+
+static int file_stat(const char* name, struct stat* buffer_stat, int* rc)
+{
+int rc_local = 0;
+
+    rc_local = stat(name, buffer_stat);
+    if (rc_local  < 0)
+    {
+        *rc = errno;
+    }
+    return rc_local;
+}
+
+static off_t file_get_size(const char* name, int* rc)
+{
+struct stat buffer_stat;
+off_t       size = -1;
+
+    if (!file_stat(name, &buffer_stat, rc))
+    {
+        if(S_ISREG(buffer_stat.st_mode))
+        {
+            size = buffer_stat.st_size;
+        }
+        else
+        {
+            *rc = EINVAL;
+        }
+    }
+    return size;
+}
+
+static char* file_load(const char* name, off_t* size, int* return_rc)
+{
+off_t local_size = 0;
+int rc = 0;
+char* buffer = NULL;
+int fd;
+
+    assert(name != NULL);
+
+    if(!size)
+    {
+        size = &local_size;
+    }
+    *size = file_get_size(name, &rc);
+    if (!rc)
+    {
+        fd = open(name, FILE_O_RDONLY | FILE_O_BINARY);
+        if (!(fd == -1))
+        {
+            buffer = malloc((size_t)(*size + 1));
+            if (buffer == NULL)
+            {
+                rc = ENOMEM;
+            }
+            else
+            {
+            ssize_t i;
+
+              REDO:
+                i = read(fd, buffer, (size_t)(*size));
+                if(i == -1)
+                {
+                    if(errno == EINTR)
+                    {
+                        goto REDO;
+                    }
+                    else
+                    {
+                        rc = errno;
+                    }
+                }
+                else
+                {
+                    if (i != *size)
+                    {
+                        rc = EIO;
+                    }
+                }
+                close(fd);
+                buffer[*size] = 0;
+            }
+        }
+    }
+
+    if(rc && buffer)
+    {
+        free(buffer);
+        buffer = NULL;
+    }
+    if(return_rc)
+    {
+        *return_rc = rc;
+    }
+    return buffer;
+}
+
+static int _process(struct hash* dep_hash, char* fn)
+{
+int rc;
+char* buffer;
+char* end;
+char* cursor;
+char* base;
+int continuation = 0;
+char last_ns = 0;
+off_t size;
+
+    buffer = file_load(fn, &size, &rc);
+    /* Note: yes we are going to leak 'buffer'
+     * this is on purpose, to avoid cloning the 'key' out of it
+     * and our special 'hash' just store the pointer to the key
+     * inside of buffer, hence it need to remain allocated
+     */
+    if(!rc)
+    {
+        base = cursor = end = buffer;
+        end += size;
+        while(cursor < end)
+        {
+            if(*cursor == '\\')
+            {
+                continuation = 1;
+                cursor += 1;
+            }
+            else if(*cursor == '\n')
+            {
+                if(!continuation)
+                {
+                    *cursor = 0;
+                    if(base < cursor)
+                    {
+                        /* here we have a complete rule */
+                        if(last_ns == ':')
+                        {
+                            /* if the rule ended in ':' that is a no-dep rule
+                             * these are the one for which we want to filter
+                             * duplicate out
+                             */
+                            if(hash_store(dep_hash, base, (int)(cursor - base)))
+                            {
+                                puts(base);
+                                putc('\n', stdout);
+                            }
+                        }
+                        else
+                        {
+                            /* rule with dep, just write it */
+                            puts(base);
+                            putc('\n', stdout);
+                        }
+                    }
+                    cursor += 1;
+                    base = cursor;
+                }
+                else
+                {
+                    /* here we have a '\' followed by \n this is a continuation
+                     * i.e not a complete rule yet
+                     */
+                    cursor += 1;
+                }
+            }
+            else
+            {
+                continuation = 0;
+                /* not using isspace() here save 25% of I refs and 75% of D refs based on cachegrind */
+                if(*cursor != ' ' && *cursor != '\n' && *cursor != '\t' )
+                {
+                    last_ns = *cursor;
+                }
+                cursor += 1;
+            }
+        }
+        /* just in case the file did not end with a \n, there may be a pending rule */
+        if(base < cursor)
+        {
+            if(last_ns == ':')
+            {
+                if(hash_store(dep_hash, base, (int)(cursor - base)))
+                {
+                    puts(base);
+                    putc('\n', stdout);
+                }
+            }
+            else
+            {
+                puts(base);
+                putc('\n', stdout);
+            }
+        }
+    }
+    return rc;
+}
+
+static void _usage(void)
+{
+    fputs("Usage: concat-deps <file that contains dep_files>\n", stderr);
+}
+
+#define kDEFAULT_HASH_SIZE 4096
+
+int main(int argc, char** argv)
+{
+int rc = 0;
+off_t in_list_size = 0;
+char* in_list;
+char* in_list_cursor;
+char* in_list_end;
+char* in_list_base;
+struct hash* dep_hash;
+char* base_dir;
+
+    if(argc < 2)
+    {
+        _usage();
+        return 1;
+    }
+    base_dir = getenv("SRCDIR");
+    if(!base_dir)
+    {
+        fputs("Error: SRCDIR si missing in the environement\n", stderr);
+        return 1;
+    }
+    in_list = file_load(argv[1], &in_list_size, &rc);
+    if(!rc)
+    {
+        dep_hash = hash_create( kDEFAULT_HASH_SIZE);
+        in_list_end = in_list + in_list_size;
+        in_list_base = in_list_cursor = in_list;
+
+        /* extract filename of dep file from a 'space' separated list */
+        while(*in_list_cursor)
+        {
+            if(*in_list_cursor == ' ' || *in_list_cursor == '\n')
+            {
+                *in_list_cursor = 0;
+                if(in_list_base < in_list_cursor)
+                {
+                    rc = _process(dep_hash, in_list_base);
+                    if(rc)
+                    {
+                        break;
+                    }
+                }
+                in_list_cursor += 1;
+                in_list_base = in_list_cursor;
+            }
+            else
+            {
+                in_list_cursor += 1;
+            }
+        }
+        if(!rc)
+        {
+            /* catch the last entry in case the input did not terminate with a 'space' */
+            if(in_list_base < in_list_cursor)
+            {
+                rc = _process(dep_hash, in_list_base);
+            }
+        }
+#ifdef HASH_STAT
+        fprintf(stderr, "stats: u:%d s:%d l:%d t:%d c:%d m:%d $:%d\n",
+                dep_hash->used, dep_hash->size, dep_hash->load_limit, dep_hash->stored,
+                dep_hash->collisions, dep_hash->memcmp, dep_hash->cost);
+#endif
+    }
+    return rc;
+}
commit 9b229a5e501e4d91875e3dddb7f68455f3adb992
Author: Bjoern Michaelsen <bjoern.michaelsen at canonical.com>
Date:   Fri Dec 2 20:16:53 2011 +0100

    quoting for CustomTargets

diff --git a/solenv/gbuild/CustomTarget.mk b/solenv/gbuild/CustomTarget.mk
index 88e5f99..0a278d4 100644
--- a/solenv/gbuild/CustomTarget.mk
+++ b/solenv/gbuild/CustomTarget.mk
@@ -30,7 +30,7 @@
 define gb_CustomTarget__command
 +$(call gb_Helper_abbreviate_dirs,\
 	mkdir -p $(call gb_CustomTarget_get_workdir,$(2)) && \
-	gb_AWK=$(gb_AWK) gb_XSLTPROC=$(gb_XSLTPROC) GBUILDDIR=$(GBUILDDIR) SRCDIR=$(SRCDIR) \
+	gb_AWK="$(gb_AWK)" gb_XSLTPROC="$(gb_XSLTPROC)" GBUILDDIR="$(GBUILDDIR)" SRCDIR="$(SRCDIR)" \
 	$(MAKE) -C $(call gb_CustomTarget_get_workdir,$(2)) -f $< && \
 	touch $(1))
 
commit 2e4ef99b10e27cbfb13a3bca7faf0b767927ec4a
Author: Bjoern Michaelsen <bjoern.michaelsen at canonical.com>
Date:   Fri Dec 2 19:15:44 2011 +0100

    use File::Spec instead of Cwd

diff --git a/solenv/bin/concat-deps.pl b/solenv/bin/concat-deps.pl
index 82910c7..935a50c 100755
--- a/solenv/bin/concat-deps.pl
+++ b/solenv/bin/concat-deps.pl
@@ -2,7 +2,7 @@
 
 # reads a list of dependency files from a file, opens and
 # concatenates them, while eliding duplicate nop rules.
-use Cwd 'fast_abs_path';
+use File::Spec;
 
 sub read_depfiles($)
 {
@@ -33,7 +33,7 @@ sub canonicalize_path($)
     my $path = $2;
     my $post =$3;
     if (length($path) > 0 && index($path,$ENV{SRCDIR}) == 0) {
-        $path = Cwd::fast_abs_path($2);
+        $path = File::Spec->rel2abs($2);
         $path = "\$(SRCDIR)" . substr($path, length($ENV{SRCDIR}));
     }
     #print "## $pre$path$post";
commit 822115263098112fb8aa4505ccb8e0ee15e4d261
Author: Bjoern Michaelsen <bjoern.michaelsen at canonical.com>
Date:   Fri Dec 2 18:45:31 2011 +0100

    use canonical paths in dep-files

diff --git a/solenv/bin/concat-deps.pl b/solenv/bin/concat-deps.pl
index c25df82..82910c7 100755
--- a/solenv/bin/concat-deps.pl
+++ b/solenv/bin/concat-deps.pl
@@ -2,6 +2,7 @@
 
 # reads a list of dependency files from a file, opens and
 # concatenates them, while eliding duplicate nop rules.
+use Cwd 'fast_abs_path';
 
 sub read_depfiles($)
 {
@@ -22,6 +23,22 @@ my @depfiles = read_depfiles (shift @ARGV);
 
 my %rules;
 print "# concatenated, reduced dependencies generated by solenv/bin/concat-deps.pl\n";
+print "# generated with \$(SRCDIR) = $ENV{SRCDIR}\n";
+
+sub canonicalize_path($)
+{
+    my $line = shift;
+    $line =~ /^(\s*)([^\s\n:]*)(.*\n?)$/;
+    my $pre = $1;
+    my $path = $2;
+    my $post =$3;
+    if (length($path) > 0 && index($path,$ENV{SRCDIR}) == 0) {
+        $path = Cwd::fast_abs_path($2);
+        $path = "\$(SRCDIR)" . substr($path, length($ENV{SRCDIR}));
+    }
+    #print "## $pre$path$post";
+    return "$pre$path$post";
+}
 
 for my $fname (@depfiles) {
     my $fileh;
@@ -31,7 +48,8 @@ for my $fname (@depfiles) {
 
     my $last = '';
     while (<$fileh>) {
-	my $line = $_;
+	my $line = canonicalize_path($_);
+#        print "# $line";
 	if ($line eq "\n") {
 	    if ($last =~ /^(.*):\s*$/) {
 		if (defined $rules{$1}) {
commit f58b0018e47aa1500f5cb7227f8b6ccaf2d5bec9
Author: Bjoern Michaelsen <bjoern.michaelsen at canonical.com>
Date:   Fri Dec 2 14:49:29 2011 +0100

    silent recurse

diff --git a/solenv/gbuild/source_and_rerun.mk b/solenv/gbuild/source_and_rerun.mk
index 46e6d43..a2aaea0 100644
--- a/solenv/gbuild/source_and_rerun.mk
+++ b/solenv/gbuild/source_and_rerun.mk
@@ -20,7 +20,7 @@ gb_SourceEnvAndRecurse_buildpl=$(call gb_SourceEnvAndRecurse_recurse,$(MAKECMDGO
 endif
 
 source-env-and-recurse:
-	$(gb_SourceEnvAndRecurse_reconfigure) && \
+	@$(gb_SourceEnvAndRecurse_reconfigure) && \
 	if test -f $(SRCDIR)/config.mk ; then . $(SRCDIR)/config.mk; fi && \
 	if test -f $(SRCDIR)/Env.Host.sh; then . $(SRCDIR)/Env.Host.sh; fi && \
 	if test -z "$${SOLARENV}"; then echo "no configuration found and could not create one" && exit 1; fi && \
commit a7c567ad15e3a8e4f383b34d4a3fc1601ba331a0
Author: Bjoern Michaelsen <bjoern.michaelsen at canonical.com>
Date:   Fri Dec 2 14:47:00 2011 +0100

    kill gb_MINISOLARENV in favor of stages

diff --git a/Makefile b/Makefile
index d40695c..9f6c897 100644
--- a/Makefile
+++ b/Makefile
@@ -26,23 +26,18 @@
 #
 #*************************************************************************
 
-gb_SOURCEANDRERUN:=
-SRCDIR:=$(realpath $(dir $(realpath $(firstword $(MAKEFILE_LIST)))))
-ifeq ($(strip $(SOLARENV)),)
-ifneq ($(MAKECMDGOALS),$(SRCDIR)/Env.Host.sh)
-gb_SOURCEANDRERUN:=T
-gb_MINISOLARENV:=
-else
-SOLARENV:=$(SRCDIR)/solenv
-gb_MINISOLARENV:=T
+SRCDIR:=$(patsubst %/,%,$(dir $(realpath $(firstword $(MAKEFILE_LIST)))))
+
+ifeq ($(strip $(gb_SourceEnvAndRecurse_STAGE)),)
+include $(SRCDIR)/solenv/gbuild/source_and_rerun.mk
 endif
+
+ifeq ($(gb_SourceEnvAndRecurse_STAGE),reconfigure)
+SOLARENV:=$(SRCDIR)/solenv
 endif
 
-ifneq ($(gb_SOURCEANDRERUN),)
-include $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/solenv/gbuild/source_and_rerun.mk
-else
+ifneq ($(filter reconfigure gbuild buildpl,$(gb_SourceEnvAndRecurse_STAGE)),)
 include $(SOLARENV)/gbuild/gbuild.mk
 $(eval $(call gb_Module_make_global_targets,$(wildcard $(SRCDIR)/RepositoryModule_*.mk)))
 endif
-
 # vim: set noet sw=4 ts=4:
diff --git a/solenv/gbuild/extensions/post_AuxTargets.mk b/solenv/gbuild/extensions/post_AuxTargets.mk
index b8a002f..ce4a5cb 100644
--- a/solenv/gbuild/extensions/post_AuxTargets.mk
+++ b/solenv/gbuild/extensions/post_AuxTargets.mk
@@ -50,7 +50,7 @@ fetch: $(SRCDIR)/src.downloaded
 
 # fixme: can we prevent these exports in the first place?
 $(SRCDIR)/Env.Host.sh: autogen.lastrun configure.in ooo.lst.in set_soenv.in
-	$(if $(gb_MINISOLARENV),$(SRCDIR)/autogen.sh, at echo "cannot reconfigure from within solarenv" && rm -f $(SRCDIR)/Env.Host.sh && exit 2)
+	$(if $(filter reconfigure,$(gb_SourceEnvAndRecurse_STAGE)),$(SRCDIR)/autogen.sh, at echo "cannot reconfigure from within solarenv" && rm -f $(SRCDIR)/Env.Host.sh && exit 2)
 
 $(WORKDIR)/bootstrap:
 	@cd $(SRCDIR) && ./bootstrap
diff --git a/solenv/gbuild/gbuild.mk b/solenv/gbuild/gbuild.mk
index 9f0b32b..e85ed83 100644
--- a/solenv/gbuild/gbuild.mk
+++ b/solenv/gbuild/gbuild.mk
@@ -151,7 +151,7 @@ $(eval $(call gb_Helper_collect_libtargets))
 gb_Library_DLLPOSTFIX := lo
 
 # Include platform/cpu/compiler specific config/definitions
-ifeq ($(strip $(gb_MINISOLARENV)),)
+ifneq ($(filter gbuild buidpl,$(gb_SourceEnvAndRecurse_STAGE)),)
 include $(GBUILDDIR)/platform/$(OS)_$(CPUNAME)_$(COM).mk
 endif
 
commit 09bd4fd7c49f82fadf5fc22268a2ef97e8d4dd28
Author: Bjoern Michaelsen <bjoern.michaelsen at canonical.com>
Date:   Fri Dec 2 14:44:47 2011 +0100

    no need to export gb_Helper*, use gbuild_simple instead

diff --git a/solenv/gbuild/CustomTarget.mk b/solenv/gbuild/CustomTarget.mk
index c55e6d8..88e5f99 100644
--- a/solenv/gbuild/CustomTarget.mk
+++ b/solenv/gbuild/CustomTarget.mk
@@ -31,7 +31,6 @@ define gb_CustomTarget__command
 +$(call gb_Helper_abbreviate_dirs,\
 	mkdir -p $(call gb_CustomTarget_get_workdir,$(2)) && \
 	gb_AWK=$(gb_AWK) gb_XSLTPROC=$(gb_XSLTPROC) GBUILDDIR=$(GBUILDDIR) SRCDIR=$(SRCDIR) \
-	gb_Helper_set_ld_path=$(gb_Helper_set_ld_path) gb_Helper_execute=$(gb_Helper_execute) \        
 	$(MAKE) -C $(call gb_CustomTarget_get_workdir,$(2)) -f $< && \
 	touch $(1))
 
commit 098bb4d484b0edd3c1672738c506020f15b808ee
Author: Bjoern Michaelsen <bjoern.michaelsen at canonical.com>
Date:   Fri Dec 2 14:43:26 2011 +0100

    use gbuild_simple.mk in i18npool

diff --git a/i18npool/source/breakiterator/Makefile b/i18npool/source/breakiterator/Makefile
index 9f1a6ce..b34217a 100644
--- a/i18npool/source/breakiterator/Makefile
+++ b/i18npool/source/breakiterator/Makefile
@@ -39,25 +39,25 @@ data/dict_%.cxx : data/dict_%_invis.cxx
 
 data/dict_%_invis.cxx : $(realpath $(SRC_ROOT)/i18npool/source/breakiterator/data)/%.dic data
 ifeq ($(OS_FOR_BUILD),WNT)
-	$(gb_Helper_execute)gendict `cygpath -m $<` $@
+	$(call gb_Helper_execute,gendict `cygpath -m $<` $@)
 else
-	$(gb_Helper_execute)gendict $< $@
+	$(call gb_Helper_execute,gendict $< $@)
 endif
 
 ifeq ($(SYSTEM_GENBRK),)
-GENBRK := $(gb_Helper_execute)genbrk
+GENBRK := $(call gb_Helper_execute,genbrk)
 else
 GENBRK := $(SYSTEM_GENBRK)
 endif
 
 ifeq ($(SYSTEM_GENCCODE),)
-GENCCODE := $(gb_Helper_execute)genccode
+GENCCODE := $(call gb_Helper_execute,genccode)
 else
 GENCCODE := $(SYSTEM_GENCCODE)
 endif
 
 ifeq ($(SYSTEM_GENCMN),)
-GENCMN := $(gb_Helper_execute)gencmn
+GENCMN := $(call gb_Helper_execute,gencmn)
 else
 GENCMN := $(SYSTEM_GENCMN)
 endif
diff --git a/i18npool/source/collator/Makefile b/i18npool/source/collator/Makefile
index 2c2c891..fb9a8dc 100644
--- a/i18npool/source/collator/Makefile
+++ b/i18npool/source/collator/Makefile
@@ -37,9 +37,9 @@ collator_%.cxx : collator_%_invis.cxx
 
 collator_%_invis.cxx : $(realpath $(SRC_ROOT)/i18npool/source/collator/data)/%.txt
 ifeq ($(OS_FOR_BUILD),WNT)
-	$(gb_Helper_execute)gencoll_rule `cygpath -m $<` $@ $*
+	$(call gb_Helper_execute,gencoll_rule `cygpath -m $<` $@ $*)
 else
-	$(gb_Helper_execute)gencoll_rule $< $@ $*
+	$(call gb_Helper_execute,gencoll_rule $< $@ $*)
 endif
 
 lrl_include.hxx : $(txtlist)
diff --git a/i18npool/source/indexentry/Makefile b/i18npool/source/indexentry/Makefile
index cb0212c..dac5c27 100644
--- a/i18npool/source/indexentry/Makefile
+++ b/i18npool/source/indexentry/Makefile
@@ -36,9 +36,9 @@ include $(GBUILDDIR)/gbuild_simple.mk
 
 %_invis.cxx : $(realpath $(SRC_ROOT)/i18npool/source/indexentry/data)/%.txt
 ifeq ($(OS_FOR_BUILD),WNT)
-	$(gb_Helper_execute)genindex_data `cygpath -m $<` $@ $*
+	$(call gb_Helper_execute,genindex_data `cygpath -m $<` $@ $*)
 else
-	$(gb_Helper_execute)genindex_data $< $@ $*
+	$(call gb_Helper_execute,genindex_data $< $@ $*)
 endif
 
 .PHONY: all
diff --git a/i18npool/source/localedata/Makefile b/i18npool/source/localedata/Makefile
index 336eb67..618db65 100755
--- a/i18npool/source/localedata/Makefile
+++ b/i18npool/source/localedata/Makefile
@@ -40,15 +40,15 @@ localedata_%.cxx : localedata_%_invis.cxx
 ifeq ($(OS_FOR_BUILD),WNT)
 localedata_%_invis.cxx : $(realpath $(SRC_ROOT)/i18npool/source/localedata/data)/%.xml saxparser.rdb \
 	$(OUTDIR)/bin/saxparser$(gb_Executable_EXT)
-	$(gb_Helper_execute)saxparser $* `cygpath -m $<` $@ \
+	$(call gb_Helper_execute,saxparser $* `cygpath -m $<` $@ \
 		$(my_file)`cygpath -m $(WORKDIR)/CustomTarget/i18npool/source/localedata/saxparser.rdb` `cygpath -m $(OUTDIR)/bin/types.rdb` \
-		-env:LO_LIB_DIR=$(my_file)`cygpath -m $(OUTDIR)/bin`
+		-env:LO_LIB_DIR=$(my_file)`cygpath -m $(OUTDIR)/bin`)
 else
 localedata_%_invis.cxx : $(realpath $(SRC_ROOT)/i18npool/source/localedata/data)/%.xml saxparser.rdb \
 	$(OUTDIR_FOR_BUILD)/bin/saxparser$(gb_Executable_EXT_for_build)
-	$(gb_Helper_execute)saxparser $* $< $@ \
+	$(call gb_Helper_execute,saxparser $* $< $@ \
 		$(my_file)$(WORKDIR_FOR_BUILD)/CustomTarget/i18npool/source/localedata/saxparser.rdb $(OUTDIR_FOR_BUILD)/bin/types.rdb \
-		-env:LO_LIB_DIR=$(my_file)$(OUTDIR_FOR_BUILD)/lib
+		-env:LO_LIB_DIR=$(my_file)$(OUTDIR_FOR_BUILD)/lib)
 endif
 
 saxparser.rdb : saxparser.input
diff --git a/i18npool/source/textconversion/Makefile b/i18npool/source/textconversion/Makefile
index 97e0e2d..872c099 100755
--- a/i18npool/source/textconversion/Makefile
+++ b/i18npool/source/textconversion/Makefile
@@ -36,9 +36,9 @@ include $(GBUILDDIR)/gbuild_simple.mk
 
 %_invis.cxx : $(realpath $(SRC_ROOT)/i18npool/source/textconversion/data)/%.dic
 ifeq ($(OS_FOR_BUILD),WNT)
-	$(gb_Helper_execute)genconv_dict $* `cygpath -m $<` $@
+	$(call gb_Helper_execute,genconv_dict $* `cygpath -m $<` $@)
 else
-	$(gb_Helper_execute)genconv_dict $* $< $@
+	$(call gb_Helper_execute,genconv_dict $* $< $@)
 endif
 
 
commit b629983caf357ee94a7e70fb0f1ac20258c8b8e5
Author: Bjoern Michaelsen <bjoern.michaelsen at canonical.com>
Date:   Fri Dec 2 14:42:27 2011 +0100

    add missing modules to RepositoryModule_ooo.mk

diff --git a/RepositoryModule_ooo.mk b/RepositoryModule_ooo.mk
index edfd9b9..3297d95 100644
--- a/RepositoryModule_ooo.mk
+++ b/RepositoryModule_ooo.mk
@@ -30,6 +30,7 @@ $(eval $(call gb_Module_Module,ooo))
 
 $(eval $(call gb_Module_add_moduledirs,ooo,\
     animations \
+    automation \
     basctl \
     basebmp \
     basegfx \
@@ -47,6 +48,7 @@ $(eval $(call gb_Module_add_moduledirs,ooo,\
     editeng \
     eventattacher \
     fileaccess \
+    filter \
     forms \
     formula \
     framework \
@@ -63,6 +65,7 @@ $(eval $(call gb_Module_add_moduledirs,ooo,\
     offapi \
     oovbaapi \
     oox \
+    package \
     padmin \
     psprint_config \
     qadevOOo \
@@ -73,6 +76,7 @@ $(eval $(call gb_Module_add_moduledirs,ooo,\
     sc \
     scaddins \
     sccomp \
+    scripting \
     sd \
     sfx2 \
     slideshow \
@@ -91,12 +95,14 @@ $(eval $(call gb_Module_add_moduledirs,ooo,\
     unixODBC \
     unotools \
     unoxml \
+    uui \
     vbahelper \
     vcl \
     wizards \
     writerfilter \
     writerperfect \
     xmerge \
+    xmlsecurity \
     xml2cmp \
     xmloff \
     xmlreader \
commit 3f7e6fe611b0b3fbe4becc90d812331837db0a12
Author: Bjoern Michaelsen <bjoern.michaelsen at canonical.com>
Date:   Fri Dec 2 14:41:35 2011 +0100

    use gbuild_simple in tools

diff --git a/tools/source/reversemap/Makefile b/tools/source/reversemap/Makefile
index a88b395..5b427a8 100644
--- a/tools/source/reversemap/Makefile
+++ b/tools/source/reversemap/Makefile
@@ -25,8 +25,9 @@
 
 all : reversemap.hxx
 
+include $(GBUILDDIR)/gbuild_simple.mk
+
 reversemap.hxx : $(OUTDIR_FOR_BUILD)/bin/bestreversemap
-	$(gb_Helper_execute)bestreversemap > $@
+	$(call gb_Helper_execute,bestreversemap > $@)
 
-.PHONY : all
 # vim: set noet sw=4 ts=4:
commit e827c555b3dc71d1b405642b37e568e64270aca1
Author: Bjoern Michaelsen <bjoern.michaelsen at canonical.com>
Date:   Fri Dec 2 01:06:08 2011 +0100

    update JunitTest hint

diff --git a/solenv/gbuild/JunitTest.mk b/solenv/gbuild/JunitTest.mk
index 8f7c6ae..5ce0b3f 100644
--- a/solenv/gbuild/JunitTest.mk
+++ b/solenv/gbuild/JunitTest.mk
@@ -58,7 +58,7 @@ $(call gb_JunitTest_get_target,%) :
 		&& echo "see full error log at $@.log" \
 		&& echo "to rerun just this failed test without all others, run:" \
 		&& echo && echo "    make $@" && echo \
-		&& echo "add \"-f $(SRCDIR)/GNUmakefile.mk\" if you are not in the module dir" \
+		&& echo "cd into the module dir if you do not want a full dev-install run" \
 		&& echo "Or to do interactive debugging, run two shells with (Linux only):" \
 		&& echo \
 		&& echo "    make debugrun" \
commit 9f43fb06b1a491029803e35742d1f2a4d46ffd6d
Author: Bjoern Michaelsen <bjoern.michaelsen at canonical.com>
Date:   Fri Dec 2 01:02:59 2011 +0100

    move platform hacks out of gbuild core

diff --git a/solenv/gbuild/Module.mk b/solenv/gbuild/Module.mk
index 55cab3b..b410cfa 100644
--- a/solenv/gbuild/Module.mk
+++ b/solenv/gbuild/Module.mk
@@ -211,12 +211,10 @@ endef
 # why shouldn't it be.
 
 define gb_Module_add_check_target
-$(if $(filter-out IOS,$(OS)),\
 $(call gb_Module__read_targetfile,$(1),$(2),check target)
 
 $(call gb_Module_get_check_target,$(1)) : $$(gb_Module_CURRENTTARGET)
 $(call gb_Module_get_clean_target,$(1)) : $$(gb_Module_CURRENTCLEANTARGET)
-)
 
 endef
 
diff --git a/solenv/gbuild/extensions/post_DisableIosUnitchecks.mk b/solenv/gbuild/extensions/post_DisableIosUnitchecks.mk
new file mode 100644
index 0000000..01914a1
--- /dev/null
+++ b/solenv/gbuild/extensions/post_DisableIosUnitchecks.mk
@@ -0,0 +1,34 @@
+#   -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+#  
+#   Version: MPL 1.1 / GPLv3+ / LGPLv3+
+#  
+#   The contents of this file are subject to the Mozilla Public License Version
+#   1.1 (the "License"); you may not use this file except in compliance with
+#   the License or as specified alternatively below. You may obtain a copy of
+#   the License at http://www.mozilla.org/MPL/
+#  
+#   Software distributed under the License is distributed on an "AS IS" basis,
+#   WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+#   for the specific language governing rights and limitations under the
+#   License.
+#  
+#   Major Contributor(s):
+#   [ Copyright (C) 2011 Bjoern Michaelsen <bjoern.michaelsen at canonical.com> (initial developer) ]
+#  
+#   All Rights Reserved.
+#  
+#   For minor contributions see the git repository.
+#  
+#   Alternatively, the contents of this file may be used under the terms of
+#   either the GNU General Public License Version 3 or later (the "GPLv3+"), or
+#   the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
+#   in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
+#   instead of those above.
+
+# disable check target on IOS
+ifeq ($(OS),IOS)
+gb_Module_add_check_target=
+endif
+
+
+# vim:set shiftwidth=4 softtabstop=4 noexpandtab:
commit 30c7a07e5ee9c8f35d0aad8bdfd34cd2aa7f6c6d
Author: Bjoern Michaelsen <bjoern.michaelsen at canonical.com>
Date:   Fri Dec 2 00:55:04 2011 +0100

    build-order only from debugrun for now

diff --git a/solenv/gbuild/Module.mk b/solenv/gbuild/Module.mk
index c061099..55cab3b 100644
--- a/solenv/gbuild/Module.mk
+++ b/solenv/gbuild/Module.mk
@@ -116,7 +116,7 @@ else
 gb_Module_BUILDHINT=
 gb_Module_DEVINSTALLHINT=
 
-debugrun : build
+debugrun :| build
 endif
 
 all : build unitcheck
commit fbbd5e5c0edef1bb1ae86ed88fc5415f533bca69
Author: Bjoern Michaelsen <bjoern.michaelsen at canonical.com>
Date:   Wed Nov 30 15:08:01 2011 +0100

    do not globally export gb_Helper_execute gb_Helper_set_ld_path

diff --git a/solenv/gbuild/CustomTarget.mk b/solenv/gbuild/CustomTarget.mk
index 88e5f99..c55e6d8 100644
--- a/solenv/gbuild/CustomTarget.mk
+++ b/solenv/gbuild/CustomTarget.mk
@@ -31,6 +31,7 @@ define gb_CustomTarget__command
 +$(call gb_Helper_abbreviate_dirs,\
 	mkdir -p $(call gb_CustomTarget_get_workdir,$(2)) && \
 	gb_AWK=$(gb_AWK) gb_XSLTPROC=$(gb_XSLTPROC) GBUILDDIR=$(GBUILDDIR) SRCDIR=$(SRCDIR) \
+	gb_Helper_set_ld_path=$(gb_Helper_set_ld_path) gb_Helper_execute=$(gb_Helper_execute) \        
 	$(MAKE) -C $(call gb_CustomTarget_get_workdir,$(2)) -f $< && \
 	touch $(1))
 
diff --git a/solenv/gbuild/Helper.mk b/solenv/gbuild/Helper.mk
index 8214468..881aed9 100644
--- a/solenv/gbuild/Helper.mk
+++ b/solenv/gbuild/Helper.mk
@@ -168,9 +168,6 @@ define gb_Helper_execute
 $(call gb_Helper_set_ld_path) $(OUTDIR_FOR_BUILD)/bin/$(1)
 endef
 
-export gb_Helper_set_ld_path
-export gb_Helper_execute
-
 # gb_Helper_OUTDIRLIBDIR is set by the platform to the path the dynamic linker need to use
 # for libraries from the OUTDIR
 
diff --git a/solenv/gbuild/extensions/post_AuxTargets.mk b/solenv/gbuild/extensions/post_AuxTargets.mk
index e585745..b8a002f 100644
--- a/solenv/gbuild/extensions/post_AuxTargets.mk
+++ b/solenv/gbuild/extensions/post_AuxTargets.mk
@@ -50,7 +50,7 @@ fetch: $(SRCDIR)/src.downloaded
 
 # fixme: can we prevent these exports in the first place?
 $(SRCDIR)/Env.Host.sh: autogen.lastrun configure.in ooo.lst.in set_soenv.in
-	$(if $(gb_MINISOLARENV),unset gb_Helper_execute gb_Helper_set_ld_path && $(SRCDIR)/autogen.sh, at echo "cannot reconfigure from within solarenv" && rm -f $(SRCDIR)/Env.Host.sh && exit 2)
+	$(if $(gb_MINISOLARENV),$(SRCDIR)/autogen.sh, at echo "cannot reconfigure from within solarenv" && rm -f $(SRCDIR)/Env.Host.sh && exit 2)
 
 $(WORKDIR)/bootstrap:
 	@cd $(SRCDIR) && ./bootstrap
commit ddc71f6537d3b0ecd2c98a42ec48281e0309e576
Author: Bjoern Michaelsen <bjoern.michaelsen at canonical.com>
Date:   Wed Nov 30 15:04:37 2011 +0100

    do not globally export G_SLICE, GLIBCXX_FORCE_NEW, DBGSV_ERROR_OUT

diff --git a/solenv/gbuild/CppunitTest.mk b/solenv/gbuild/CppunitTest.mk
index afae72e..aa87be6 100644
--- a/solenv/gbuild/CppunitTest.mk
+++ b/solenv/gbuild/CppunitTest.mk
@@ -29,9 +29,6 @@
 
 # CppunitTest class
 
-# in non-product builds, ensure that tools-based assertions do not pop up as message box, but are routed to the shell
-DBGSV_ERROR_OUT := shell
-export DBGSV_ERROR_OUT
 
 UNIT_FAILED_MSG := echo; echo "Error: a unit test failed, please do one of:"; echo; echo "export DEBUGCPPUNIT=TRUE            \# for exception catching"; echo "export GDBCPPUNITTRACE=\"gdb --args\" \# for interactive debugging"; echo "export VALGRIND=memcheck            \# for memory checking" ; echo "and retry."
 
@@ -46,17 +43,16 @@ ifneq ($(strip $(VALGRIND)),)
 gb_CppunitTest_VALGRINDTOOL := valgrind --tool=$(VALGRIND) --num-callers=50
 ifeq ($(strip $(VALGRIND)),memcheck)
 G_SLICE := always-malloc
-export G_SLICE
 GLIBCXX_FORCE_NEW := 1
-export GLIBCXX_FORCE_NEW
 endif
 endif
 
 # defined by platform
 #  gb_CppunitTest_TARGETTYPE
 #  gb_CppunitTest_get_filename
+# DBGSV_ERROR_OUT => in non-product builds, ensure that tools-based assertions do not pop up as message box, but are routed to the shell
 gb_CppunitTest_CPPTESTTARGET := $(call gb_Executable_get_target,cppunit/cppunittester)
-gb_CppunitTest_CPPTESTCOMMAND := $(gb_CppunitTest_CPPTESTPRECOMMAND) STAR_RESOURCEPATH=$(dir $(call gb_ResTarget_get_outdir_target,example)) $(gb_CppunitTest_GDBTRACE) $(gb_CppunitTest_VALGRINDTOOL) $(gb_CppunitTest_CPPTESTTARGET)
+gb_CppunitTest_CPPTESTCOMMAND := $(gb_CppunitTest_CPPTESTPRECOMMAND) $(if $(G_SLICE),G_SLICE=$(G_SLICE)) $(if $(GLIBCXX_FORCE_NEW),GLIBCXX_FORCE_NEW=$(GLIBCXX_FORCE_NEW)) DBGSV_ERROR_OUT=shell STAR_RESOURCEPATH=$(dir $(call gb_ResTarget_get_outdir_target,example)) $(gb_CppunitTest_GDBTRACE) $(gb_CppunitTest_VALGRINDTOOL) $(gb_CppunitTest_CPPTESTTARGET)
 gb_CppunitTest__get_linktargetname = CppunitTest/$(call gb_CppunitTest_get_filename,$(1))
 
 # TODO: move this to platform under suitable name
diff --git a/solenv/gbuild/JunitTest.mk b/solenv/gbuild/JunitTest.mk
index b6ce903..8f7c6ae 100644
--- a/solenv/gbuild/JunitTest.mk
+++ b/solenv/gbuild/JunitTest.mk
@@ -31,9 +31,6 @@
 
 gb_JunitTest_JAVACOMMAND := $(JAVAINTERPRETER) $(JAVAIFLAGS)
 
-# in non-product builds, ensure that tools-based assertions do not pop up as message box, but are routed to the shell
-DBGSV_ERROR_OUT := shell
-export DBGSV_ERROR_OUT
 
 .PHONY : $(call gb_JunitTest_get_clean_target,%)
 $(call gb_JunitTest_get_clean_target,%) : $(call gb_JavaClassSet_get_clean_target,$(call gb_JunitTest_get_classsetname,%))
@@ -42,13 +39,14 @@ $(call gb_JunitTest_get_clean_target,%) : $(call gb_JavaClassSet_get_clean_targe
 
 ifneq (,$(strip $(OOO_JUNIT_JAR)))
 
+# DBGSV_ERROR_OUT => in non-product builds, ensure that tools-based assertions do not pop up as message box, but are routed to the shell
 .PHONY : $(call gb_JunitTest_get_target,%)
 $(call gb_JunitTest_get_target,%) :
 	$(call gb_Output_announce,$*,$(true),JUT,2)
 	$(call gb_Helper_abbreviate_dirs_native,\
         rm -rf $(call gb_JunitTest_get_userdir,$*) && \
 		mkdir -p $(call gb_JunitTest_get_userdir,$*) && \
-        ($(gb_JunitTest_JAVACOMMAND) \
+        (DBGSV_ERROR_OUT=shell $(gb_JunitTest_JAVACOMMAND) \
             -cp "$(CLASSPATH)" \
             $(DEFS) \
             org.junit.runner.JUnitCore \
diff --git a/solenv/gbuild/extensions/post_AuxTargets.mk b/solenv/gbuild/extensions/post_AuxTargets.mk
index 962f275..e585745 100644
--- a/solenv/gbuild/extensions/post_AuxTargets.mk
+++ b/solenv/gbuild/extensions/post_AuxTargets.mk
@@ -50,7 +50,7 @@ fetch: $(SRCDIR)/src.downloaded
 
 # fixme: can we prevent these exports in the first place?
 $(SRCDIR)/Env.Host.sh: autogen.lastrun configure.in ooo.lst.in set_soenv.in
-	$(if $(gb_MINISOLARENV),unset GBUILDDIR gb_Helper_execute gb_XSLTPROC gb_Helper_set_ld_path gb_AWK DBGSV_ERROR_OUT && $(SRCDIR)/autogen.sh, at echo "cannot reconfigure from within solarenv" && rm -f $(SRCDIR)/Env.Host.sh && exit 2)
+	$(if $(gb_MINISOLARENV),unset gb_Helper_execute gb_Helper_set_ld_path && $(SRCDIR)/autogen.sh, at echo "cannot reconfigure from within solarenv" && rm -f $(SRCDIR)/Env.Host.sh && exit 2)
 
 $(WORKDIR)/bootstrap:
 	@cd $(SRCDIR) && ./bootstrap
commit fff30fefb48e0a729f266c38f97ee4654c0b7ea1
Author: Bjoern Michaelsen <bjoern.michaelsen at canonical.com>
Date:   Wed Nov 30 14:49:13 2011 +0100

    do not globally export gb_AWK, GBUILDDIR, SRCDIR, gb_XSLTPROC

diff --git a/solenv/gbuild/CustomTarget.mk b/solenv/gbuild/CustomTarget.mk
index a75c1f8..88e5f99 100644
--- a/solenv/gbuild/CustomTarget.mk
+++ b/solenv/gbuild/CustomTarget.mk
@@ -30,6 +30,7 @@
 define gb_CustomTarget__command
 +$(call gb_Helper_abbreviate_dirs,\
 	mkdir -p $(call gb_CustomTarget_get_workdir,$(2)) && \
+	gb_AWK=$(gb_AWK) gb_XSLTPROC=$(gb_XSLTPROC) GBUILDDIR=$(GBUILDDIR) SRCDIR=$(SRCDIR) \
 	$(MAKE) -C $(call gb_CustomTarget_get_workdir,$(2)) -f $< && \
 	touch $(1))
 
diff --git a/solenv/gbuild/gbuild.mk b/solenv/gbuild/gbuild.mk
index d7033f0..9f0b32b 100644
--- a/solenv/gbuild/gbuild.mk
+++ b/solenv/gbuild/gbuild.mk
@@ -331,12 +331,6 @@ gb_PYTHONTARGET := $(OUTDIR)/bin/python
 gb_PYTHON := $(gb_PYTHON_PRECOMMAND) $(gb_PYTHONTARGET)
 endif
 
-export gb_AWK
-export gb_XSLTPROC
-export GBUILDDIR
-# FIXME exporting SRCDIR seems kind of a hack
-export SRCDIR
-
 define gb_HelpMessage
 NAME
        gbuild - GNU make based build system for LibreOffice
commit 1c792d9c39328f210a6f859612ca0aa6d81a19eb
Author: Bjoern Michaelsen <bjoern.michaelsen at canonical.com>
Date:   Thu Dec 1 17:43:25 2011 +0100

    use some macro magic here

diff --git a/solenv/gbuild/source_and_rerun.mk b/solenv/gbuild/source_and_rerun.mk
index 061c017..46e6d43 100644
--- a/solenv/gbuild/source_and_rerun.mk
+++ b/solenv/gbuild/source_and_rerun.mk
@@ -1,6 +1,10 @@
 
 gb_MAKEFILEDIR:=$(dir $(realpath $(firstword $(MAKEFILE_LIST))))
 
+define gb_SourceEnvAndRecurse_recurse
+$(MAKE) -f $(firstword $(MAKEFILE_LIST)) -j $${GMAKE_PARALLELISM} $(1) gb_SourceEnvAndRecurse_STAGE=$(2)
+endef
+
 ifneq ($(strip $(gb_PARTIALBUILD)),)
 
 SRCDIR:=$(realpath $(gb_MAKEFILEDIR)/..)
@@ -10,8 +14,8 @@ gb_SourceEnvAndRecurse_buildpl=true
 else
 
 SRCDIR:=$(realpath $(gb_MAKEFILEDIR))
-gb_SourceEnvAndRecurse_reconfigure=$(MAKE) -f $(firstword $(MAKEFILE_LIST)) $(SRCDIR)/Env.Host.sh gb_SourceEnvAndRecurse_STAGE=reconfigure
-gb_SourceEnvAndRecurse_buildpl=$(MAKE) -f $(firstword $(MAKEFILE_LIST)) -j $${GMAKE_PARALLELISM} $(MAKECMDGOALS) gb_SourceEnvAndRecurse_STAGE=buildpl
+gb_SourceEnvAndRecurse_reconfigure=$(call gb_SourceEnvAndRecurse_recurse,$(SRCDIR)/Env.Host.sh,reconfigure)
+gb_SourceEnvAndRecurse_buildpl=$(call gb_SourceEnvAndRecurse_recurse,$(MAKECMDGOALS),buildpl)
 
 endif
 
@@ -21,7 +25,7 @@ source-env-and-recurse:
 	if test -f $(SRCDIR)/Env.Host.sh; then . $(SRCDIR)/Env.Host.sh; fi && \
 	if test -z "$${SOLARENV}"; then echo "no configuration found and could not create one" && exit 1; fi && \
 	$(gb_SourceEnvAndRecurse_buildpl) && \
-	$(MAKE) -f $(firstword $(MAKEFILE_LIST)) -j$${GMAKE_PARALLELISM} $(MAKECMDGOALS) gb_SourceEnvAndRecurse_STAGE=gbuild
+	$(call gb_SourceEnvAndRecurse_recurse,$(MAKECMDGOALS),gbuild) \
 
 
 ifneq ($(strip $(MAKECMDGOALS)),)
commit c53f373b4bfcaa3f4ad9a9b40cceb66274848201
Author: Bjoern Michaelsen <bjoern.michaelsen at canonical.com>
Date:   Thu Dec 1 17:37:36 2011 +0100

    some more work on staging buildpl in front of gbuild

diff --git a/solenv/gbuild/extensions/post_BuildplTargets.mk b/solenv/gbuild/extensions/post_BuildplTargets.mk
index f764f06..01dc08a 100644
--- a/solenv/gbuild/extensions/post_BuildplTargets.mk
+++ b/solenv/gbuild/extensions/post_BuildplTargets.mk
@@ -29,6 +29,69 @@
 
 ifeq ($(gb_SourceEnvAndRecurse_STAGE),buildpl)
 
+.DEFAULT_GOAL=all
+#include $(GBUILDDIR)/Module.mk
+
+.PHONY: build all
+
+all: build
+	@true
+        
+# fake targets -- whatever is requested from gbuild requires a full build before (dev-install for JunitTests)
+$(call gb_Package_get_target,%): build
+	@true
+
+$(call gb_Executable_get_target,%): build
+	@true
+
+$(call gb_Extension_get_target,%): build
+	@true
+
+$(call gb_ComponentsTarget_get_target,%): build
+	@true
+
+$(call gb_Jar_get_target,%): build
+	@true
+
+$(call gb_RdbTarget_get_target,%): build
+	@true
+
+$(call gb_Pyuno_get_target,%): build
+	@true
+
+$(call gb_WinResTarget_get_target,%): build
+	@true
+ 
+$(call gb_CppunitTest_get_target,%): build
+	@true
+
+$(call gb_Configuration_get_target,%): build
+	@true
+
+#$(call gb_StaticLibrary_get_target,%): build
+#	@true
+
+$(call gb_AllLangResTarget_get_target,%): build
+	@true
+
+$(call gb_ExternalLib_get_target,%): build
+	@true
+
+#$(call gb_Library_get_target,%): build
+#	@true
+
+$(call gb_Package_get_target,%): build
+	@true
+
+$(call gb_UnoApiTarget_get_target,%): build
+	@true
+
+$(call gb_Zip_get_target,%): build
+	@true
+
+$(call gb_JunitTest_get_target,%): dev-install
+	@true
+
 gb_MAKETARGET=all
 # if we have only build as target use build instead of all
 ifneq ($(strip $(MAKECMDGOALS)),)
@@ -39,7 +102,7 @@ endif
 
 gb_BuildplTarget_COMPLETEDTARGETS=
 define gb_BuildplTarget_command
-cd $(SRCDIR)/$(1) && unset MAKEFLAGS && $(SOLARENV)/bin/build.pl $(if $(findstring s,$(MAKEFLAGS)),,VERBOSE=T) -P$(BUILD_NCPUS) $(2) -P$(GMAKE_PARALLELISM) gb_MAKETARGET=$(gb_MAKETARGET)
+cd $(SRCDIR)/$(1) && unset MAKEFLAGS && export gb_SourceEnvAndRecurse_STAGE=gbuild && $(SOLARENV)/bin/build.pl $(if $(findstring s,$(MAKEFLAGS)),,VERBOSE=T) -P$(BUILD_NCPUS) $(2) -- -P$(GMAKE_PARALLELISM) gb_MAKETARGET=$(gb_MAKETARGET)
 $(eval gb_BuildplTarget_COMPLETEDTARGETS+=$(1))
 endef
 
@@ -74,10 +137,21 @@ findunusedcode:
 #to be just removed, or put behind appropiate platform or debug level ifdefs
 	@grep ::.*\( unusedcode.all | grep -v ^cppu:: > unusedcode.easy
 
+subsequentcheck: dev-install
+
+clean:
+	@true
+
+check: subsequentcheck
+	@true
+
+unitcheck: build
+	@true
 
 endif # gb_SourceEnvAndRecurse_STAGE=buildpl
     
 ifeq ($(gb_SourceEnvAndRecurse_STAGE),gbuild)
+
 clean: clean-host clean-build
 
 dev-install: $(WORKDIR)/bootstrap  $(SRCDIR)/src.downloaded $(if $(filter $(INPATH),$(INPATH_FOR_BUILD)),,cross_toolset) | build
@@ -90,6 +164,5 @@ findunusedcode:
 
 endif
 
-all: build
 
 # vim: set noet sw=4:
diff --git a/solenv/gbuild/extensions/post_SpeedUpTargets.mk b/solenv/gbuild/extensions/post_SpeedUpTargets.mk
index f4ef755..0abbe5e 100644
--- a/solenv/gbuild/extensions/post_SpeedUpTargets.mk
+++ b/solenv/gbuild/extensions/post_SpeedUpTargets.mk
@@ -35,10 +35,12 @@ endif
 endif
 
 ifeq ($(strip $(gb_PARTIALBUILD)),)
-ifeq ($(filter-out clean distclean subsequentcheck unitcheck build dev-install smoketestoo_native instsetoo_native cross_toolset findunusedcode debugrun,$(MAKECMDGOALS)),)
+ifneq ($(strip $(MAKECMDGOALS)),)
+ifeq ($(filter-out clean distclean id tags docs distro-pack-install fetch help debugrun $(SRCDIR)/Env.Host.sh,$(MAKECMDGOALS)),)
 gb_SpeedUpTargets_WRAPPEDBUILD:=T
 endif
 endif
+endif
 
 ifneq ($(strip $(gb_SpeedUpTargets_WRAPPEDBUILD)),)
 gb_Module_add_target=
diff --git a/solenv/gbuild/gbuild.mk b/solenv/gbuild/gbuild.mk
index ff01a6d..d7033f0 100644
--- a/solenv/gbuild/gbuild.mk
+++ b/solenv/gbuild/gbuild.mk
@@ -248,35 +248,6 @@ $(eval $(call gb_Deliver_init))
 
 include $(SOLARENV)/inc/minor.mk
 

... etc. - the rest is truncated


More information about the Libreoffice-commits mailing list