Implemented parallel building of multiple instances of apps, bundles, libraries, ctools, clibraries, test-tools, test-apps, test-libraries, services, palettes, gswbundles, gswapps

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/tools/make/trunk@29577 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
Nicola Pero 2010-02-12 10:46:32 +00:00
parent 83912a349a
commit 40f2775b7a
23 changed files with 289 additions and 50 deletions

View file

@ -1,3 +1,39 @@
2010-02-12 Nicola Pero <nicola.pero@meta-innovation.com>
Implemented parallelizing builds of multiple instances of
everything, except for frameworks, documentation, resource sets
and java.
* rules (GNUSTEP_BUILD_DIR, GNUSTEP_OBJ_DIR): Removed rules to
create these directories.
* Master/rules.make (GNUSTEP_BUILD_DIR, GNUSTEP_OBJ_DIR): Moved
here the rule to create these directories.
* Master/rules.make: Updated all rules to pass
_GNUSTEP_MAKE_PARALLEL=no to submakes.
* Master/application.make (internal-all): Support parallel
building. Depend on GNUSTEP_OBJ_DIR. (APP_NAME): Depend on
GNUSTEP_OBJ_DIR.
* Master/bundle.make: Same changes.
* Master/clibrary.make: Same changes.
* Master/ctool.make: Same changes.
* Master/gswapp.make: Same changes.
* Master/gsbundle.make: Same changes.
* Master/library.make: Same changes.
* Master/objc.make: Same changes.
* Master/palette.make: Same changes.
* Master/service.make: Same changes.
* Master/test-application.make: Same changes.
* Master/test-library.make: Same changes.
* Master/test-tool.make: Same changes.
* Master/tool.make (internal-all): Depend on GNUSTEP_OBJ_DIR.
(TOOL_NAME): Depend on GNUSTEP_OBJ_DIR.
* Master/framework.make: Same changes.
* Master/subproject.make: Same changes.
* Master/tool.name (TOOL_NAME): Set after including rules.make for
consistency with other make fragments.
2010-02-12 Nicola Pero <nicola.pero@meta-innovation.com>
* Documentation/releasenotes.texi: Updated.

View file

@ -27,7 +27,22 @@ endif
APP_NAME := $(strip $(APP_NAME))
internal-all:: $(APP_NAME:=.all.app.variables)
ifeq ($(GNUSTEP_MAKE_PARALLEL_BUILDING), no)
internal-all:: $(GNUSTEP_OBJ_DIR) $(APP_NAME:=.all.app.variables)
else
# See tool.make for an explanation of the parallel building.
internal-all:: $(GNUSTEP_OBJ_DIR)
$(ECHO_NOTHING)$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory --no-keep-going \
internal-master-app-all \
GNUSTEP_BUILD_DIR="$(GNUSTEP_BUILD_DIR)" \
_GNUSTEP_MAKE_PARALLEL=yes$(END_ECHO)
internal-master-app-all: $(APP_NAME:=.all.app.variables)
endif
internal-install:: $(APP_NAME:=.install.app.variables)
@ -55,7 +70,7 @@ ifeq ($(GNUSTEP_IS_FLATTENED), no)
(cd $(GNUSTEP_BUILD_DIR); rm -rf *.$(APP_EXTENSION))
endif
# The following make trick extracts all tools in APP_NAME for which
# The following make trick extracts all apps in APP_NAME for which
# the xxx_SUBPROJECTS variable is set to something non-empty.
# For those apps (and only for them), we need to run 'clean' and
# 'distclean' in subprojects too.
@ -75,5 +90,5 @@ internal-strings:: $(APP_NAME:=.strings.app.variables)
# FIXME - GNUSTEP_BUILD_DIR here. Btw should we remove this or
# provide a better more general way of doing it ?
$(APP_NAME):
$(APP_NAME): $(GNUSTEP_OBJ_DIR)
@$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory $@.all.app.variables

View file

@ -27,7 +27,21 @@ endif
BUNDLE_NAME := $(strip $(BUNDLE_NAME))
internal-all:: $(BUNDLE_NAME:=.all.bundle.variables)
ifeq ($(GNUSTEP_MAKE_PARALLEL_BUILDING), no)
internal-all:: $(GNUSTEP_OBJ_DIR) $(BUNDLE_NAME:=.all.bundle.variables)
else
internal-all:: $(GNUSTEP_OBJ_DIR)
$(ECHO_NOTHING)$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory --no-keep-going \
internal-master-bundle-all \
GNUSTEP_BUILD_DIR="$(GNUSTEP_BUILD_DIR)" \
_GNUSTEP_MAKE_PARALLEL=yes$(END_ECHO)
internal-master-bundle-all: $(BUNDLE_NAME:=.all.bundle.variables)
endif
internal-install:: $(BUNDLE_NAME:=.install.bundle.variables)
@ -51,6 +65,6 @@ endif
internal-strings:: $(BUNDLE_NAME:=.strings.bundle.variables)
$(BUNDLE_NAME):
$(BUNDLE_NAME): $(GNUSTEP_OBJ_DIR)
@$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory \
$@.all.bundle.variables

View file

@ -27,7 +27,21 @@ endif
CLIBRARY_NAME := $(strip $(CLIBRARY_NAME))
internal-all:: $(CLIBRARY_NAME:=.all.clibrary.variables)
ifeq ($(GNUSTEP_MAKE_PARALLEL_BUILDING), no)
internal-all:: $(GNUSTEP_OBJ_DIR) $(CLIBRARY_NAME:=.all.clibrary.variables)
else
internal-all:: $(GNUSTEP_OBJ_DIR)
$(ECHO_NOTHING)$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory --no-keep-going \
internal-master-clibrary-all \
GNUSTEP_BUILD_DIR="$(GNUSTEP_BUILD_DIR)" \
_GNUSTEP_MAKE_PARALLEL=yes$(END_ECHO)
internal-master-clibrary-all: $(CLIBRARY_NAME:=.all.clibrary.variables)
endif
internal-install:: $(CLIBRARY_NAME:=.install.clibrary.variables)
@ -52,6 +66,6 @@ endif
internal-strings:: $(CLIBRARY_NAME:=.strings.clibrary.variables)
$(CLIBRARY_NAME):
$(CLIBRARY_NAME): $(GNUSTEP_OBJ_DIR)
@$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory \
$@.all.clibrary.variables

View file

@ -26,7 +26,21 @@ endif
CTOOL_NAME := $(strip $(CTOOL_NAME))
internal-all:: $(CTOOL_NAME:=.all.ctool.variables)
ifeq ($(GNUSTEP_MAKE_PARALLEL_BUILDING), no)
internal-all:: $(GNUSTEP_OBJ_DIR) $(CTOOL_NAME:=.all.ctool.variables)
else
internal-all:: $(GNUSTEP_OBJ_DIR)
$(ECHO_NOTHING)$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory --no-keep-going \
internal-master-ctool-all \
GNUSTEP_BUILD_DIR="$(GNUSTEP_BUILD_DIR)" \
_GNUSTEP_MAKE_PARALLEL=yes$(END_ECHO)
internal-master-ctool-all: $(CTOOL_NAME:=.all.ctool.variables)
endif
internal-install:: $(CTOOL_NAME:=.install.ctool.variables)
@ -44,6 +58,6 @@ endif
internal-strings:: $(CTOOL_NAME:=.strings.ctool.variables)
$(CTOOL_NAME):
$(CTOOL_NAME): $(GNUSTEP_OBJ_DIR)
@$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory \
$@.all.ctool.variables

View file

@ -27,6 +27,7 @@ endif
DOCUMENT_NAME := $(strip $(DOCUMENT_NAME))
DOCUMENT_TEXT_NAME := $(strip $(DOCUMENT_TEXT_NAME))
# FIXME/TODO: Parallel build of documentation
internal-all:: $(DOCUMENT_NAME:=.all.doc.variables) \
$(DOCUMENT_TEXT_NAME:=.all.textdoc.variables)

View file

@ -36,7 +36,9 @@ build-headers:: before-build-headers $(FRAMEWORK_NAME:=.build-headers.framework.
before-all:: build-headers
internal-all:: $(FRAMEWORK_NAME:=.all.framework.variables)
# TODO: Parallel building
internal-all:: $(GNUSTEP_OBJ_DIR) $(FRAMEWORK_NAME:=.all.framework.variables)
$(FRAMEWORK_NAME:=.all.framework.variables): $(FRAMEWORK_NAME:=.build-headers.framework.variables)
internal-install:: $(FRAMEWORK_NAME:=.install.framework.variables)
@ -49,6 +51,6 @@ internal-distclean:: $(FRAMEWORK_NAME:=.distclean.framework.variables)
internal-strings:: $(FRAMEWORK_NAME:=.strings.framework.variables)
$(FRAMEWORK_NAME):
$(FRAMEWORK_NAME): $(GNUSTEP_OBJ_DIR)
@$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory --no-keep-going \
$@.all.framework.variables

View file

@ -31,7 +31,21 @@ GSWAPP_EXTENSION=gswa
GSWAPP_NAME := $(strip $(GSWAPP_NAME))
internal-all:: $(GSWAPP_NAME:=.all.gswapp.variables)
ifeq ($(GNUSTEP_MAKE_PARALLEL_BUILDING), no)
internal-all:: $(GNUSTEP_OBJ_DIR) $(GSWAPP_NAME:=.all.gswapp.variables)
else
internal-all:: $(GNUSTEP_OBJ_DIR)
$(ECHO_NOTHING)$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory --no-keep-going \
internal-master-gswapp-all \
GNUSTEP_BUILD_DIR="$(GNUSTEP_BUILD_DIR)" \
_GNUSTEP_MAKE_PARALLEL=yes$(END_ECHO)
internal-master-gswapp-all: $(GSWAPP_NAME:=.all.gswapp.variables)
endif
internal-install:: $(GSWAPP_NAME:=.install.gswapp.variables)
@ -60,6 +74,6 @@ endif
internal-strings:: $(GSWAPP_NAME:=.strings.gswapp.variables)
$(GSWAPP_NAME):
$(GSWAPP_NAME): $(GNUSTEP_OBJ_DIR)
@$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory \
$@.all.gswapp.variables

View file

@ -31,7 +31,21 @@ endif
GSWBUNDLE_NAME := $(strip $(GSWBUNDLE_NAME))
internal-all:: $(GSWBUNDLE_NAME:=.all.gswbundle.variables)
ifeq ($(GNUSTEP_MAKE_PARALLEL_BUILDING), no)
internal-all:: $(GNUSTEP_OBJ_DIR) $(GSWBUNDLE_NAME:=.all.gswbundle.variables)
else
internal-all:: $(GNUSTEP_OBJ_DIR)
$(ECHO_NOTHING)$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory --no-keep-going \
internal-master-gswbundle-all \
GNUSTEP_BUILD_DIR="$(GNUSTEP_BUILD_DIR)" \
_GNUSTEP_MAKE_PARALLEL=yes$(END_ECHO)
internal-master-gswbundle-all: $(GSWBUNDLE_NAME:=.all.gswbundle.variables)
endif
internal-install:: $(GSWBUNDLE_NAME:=.install.gswbundle.variables)
@ -51,6 +65,6 @@ endif
internal-all:: $(GSWBUNDLE_NAME:=.all.gswbundle.variables)
$(GSWBUNDLE_NAME):
$(GSWBUNDLE_NAME): $(GNUSTEP_OBJ_DIR)
@$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory \
$@.all.gswbundle.variables

View file

@ -34,6 +34,7 @@ ifeq ($(RULES_MAKE_LOADED),)
include $(GNUSTEP_MAKEFILES)/rules.make
endif
# TODO: Parallel building.
internal-all:: $(JAVA_TOOL_NAME:=.all.java_tool.variables)
internal-install:: $(JAVA_TOOL_NAME:=.install.java_tool.variables)

View file

@ -26,6 +26,9 @@ endif
JAVA_PACKAGE_NAME := $(strip $(JAVA_PACKAGE_NAME))
# Parallel building here is probably of little help since most
# GNUmakefiles will have a single java package. There is no point in
# having more than one.
internal-all:: $(JAVA_PACKAGE_NAME:=.all.java-package.variables)
internal-install:: $(JAVA_PACKAGE_NAME:=.install.java-package.variables)

View file

@ -27,7 +27,21 @@ endif
LIBRARY_NAME := $(strip $(LIBRARY_NAME))
internal-all:: $(LIBRARY_NAME:=.all.library.variables)
ifeq ($(GNUSTEP_MAKE_PARALLEL_BUILDING), no)
internal-all:: $(GNUSTEP_OBJ_DIR) $(LIBRARY_NAME:=.all.library.variables)
else
internal-all:: $(GNUSTEP_OBJ_DIR)
$(ECHO_NOTHING)$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory --no-keep-going \
internal-master-library-all \
GNUSTEP_BUILD_DIR="$(GNUSTEP_BUILD_DIR)" \
_GNUSTEP_MAKE_PARALLEL=yes$(END_ECHO)
internal-master-library-all: $(LIBRARY_NAME:=.all.library.variables)
endif
internal-install:: $(LIBRARY_NAME:=.install.library.variables)
@ -52,6 +66,6 @@ endif
internal-strings:: $(LIBRARY_NAME:=.strings.library.variables)
$(LIBRARY_NAME):
$(LIBRARY_NAME): $(GNUSTEP_OBJ_DIR)
@$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory \
$@.all.library.variables

View file

@ -26,7 +26,21 @@ ifeq ($(RULES_MAKE_LOADED),)
include $(GNUSTEP_MAKEFILES)/rules.make
endif
internal-all:: $(OBJC_PROGRAM_NAME:=.all.objc-program.variables)
ifeq ($(GNUSTEP_MAKE_PARALLEL_BUILDING), no)
internal-all:: $(GNUSTEP_OBJ_DIR) $(OBJC_PROGRAM_NAME:=.all.objc-program.variables)
else
internal-all:: $(GNUSTEP_OBJ_DIR)
$(ECHO_NOTHING)$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory --no-keep-going \
internal-master-objc-program-all \
GNUSTEP_BUILD_DIR="$(GNUSTEP_BUILD_DIR)" \
_GNUSTEP_MAKE_PARALLEL=yes$(END_ECHO)
internal-master-objc-program-all: $(OBJC_PROGRAM_NAME:=.all.objc-program.variables)
endif
internal-install:: $(OBJC_PROGRAM_NAME:=.install.objc-program.variables)
@ -44,6 +58,6 @@ endif
internal-strings:: $(OBJC_PROGRAM_NAME:=.strings.objc-program.variables)
$(OBJC_PROGRAM_NAME):
$(OBJC_PROGRAM_NAME): $(GNUSTEP_OBJ_DIR)
@$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory \
$@.all.objc-program.variables

View file

@ -28,7 +28,21 @@ endif
PALETTE_NAME:=$(strip $(PALETTE_NAME))
internal-all:: $(PALETTE_NAME:=.all.palette.variables)
ifeq ($(GNUSTEP_MAKE_PARALLEL_BUILDING), no)
internal-all:: $(GNUSTEP_OBJ_DIR) $(PALETTE_NAME:=.all.palette.variables)
else
internal-all:: $(GNUSTEP_OBJ_DIR)
$(ECHO_NOTHING)$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory --no-keep-going \
internal-master-palette-all \
GNUSTEP_BUILD_DIR="$(GNUSTEP_BUILD_DIR)" \
_GNUSTEP_MAKE_PARALLEL=yes$(END_ECHO)
internal-master-palette-all: $(PALETTE_NAME:=.all.palette.variables)
endif
internal-install:: $(PALETTE_NAME:=.install.palette.variables)
@ -58,6 +72,6 @@ endif
internal-strings:: $(PALETTE_NAME:=.strings.palette.variables)
$(PALETTE_NAME):
$(PALETTE_NAME): $(GNUSTEP_OBJ_DIR)
@$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory \
$@.all.palette.variables

View file

@ -52,8 +52,18 @@ ifeq ($(GNUSTEP_BUILD_DIR),.)
all:: before-all internal-all after-all
else
all:: $(GNUSTEP_BUILD_DIR) before-all internal-all after-all
$(GNUSTEP_BUILD_DIR):
$(ECHO_CREATING)$(MKDIRS) $(GNUSTEP_BUILD_DIR)$(END_ECHO)
endif
# The rule to create the objects file directory. This should be done
# in the Master invocation before any parallel stuff is started (to
# avoid race conditions in trying to create it).
$(GNUSTEP_OBJ_DIR):
$(ECHO_NOTHING)cd $(GNUSTEP_BUILD_DIR); \
$(MKDIRS) ./$(GNUSTEP_OBJ_DIR_NAME)$(END_ECHO)
# internal-after-install is used by packaging to get the list of files
# installed (see rpm.make); it must come after *all* the installation
# rules have been executed.
@ -329,6 +339,7 @@ if [ "$($(basename $(basename $*))_SUBPROJECTS)" != "" ]; then \
OWNING_PROJECT_HEADER_DIR_NAME="$${owning_project_header_dir}" \
DERIVED_SOURCES="../$(DERIVED_SOURCES)" \
GNUSTEP_BUILD_DIR="$$gsbuild" \
_GNUSTEP_MAKE_PARALLEL=no \
; then \
:; \
else exit $$?; \
@ -342,7 +353,8 @@ $(MAKE) -f $(MAKEFILE_NAME) --no-print-directory --no-keep-going \
GNUSTEP_TYPE=$$type \
GNUSTEP_INSTANCE=$$instance \
GNUSTEP_OPERATION=$$operation \
GNUSTEP_BUILD_DIR="$${abs_build_dir}"
GNUSTEP_BUILD_DIR="$${abs_build_dir}" \
_GNUSTEP_MAKE_PARALLEL=no \
#
# This rule provides exactly the same code as the %.variables one with
@ -404,6 +416,7 @@ if [ "$($(basename $(basename $*))_SUBPROJECTS)" != "" ]; then \
OWNING_PROJECT_HEADER_DIR_NAME="$${owning_project_header_dir}" \
DERIVED_SOURCES="../$(DERIVED_SOURCES)" \
GNUSTEP_BUILD_DIR="$$gsbuild" \
_GNUSTEP_MAKE_PARALLEL=no \
; then \
:; \
else exit $$?; \

View file

@ -27,7 +27,21 @@ endif
SERVICE_NAME := $(strip $(SERVICE_NAME))
internal-all:: $(SERVICE_NAME:=.all.service.variables)
ifeq ($(GNUSTEP_MAKE_PARALLEL_BUILDING), no)
internal-all:: $(GNUSTEP_OBJ_DIR) $(SERVICE_NAME:=.all.service.variables)
else
internal-all:: $(GNUSTEP_OBJ_DIR)
$(ECHO_NOTHING)$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory --no-keep-going \
internal-master-service-all \
GNUSTEP_BUILD_DIR="$(GNUSTEP_BUILD_DIR)" \
_GNUSTEP_MAKE_PARALLEL=yes$(END_ECHO)
internal-master-service-all: $(SERVICE_NAME:=.all.service.variables)
endif
internal-install:: $(SERVICE_NAME:=.install.service.variables)
@ -58,6 +72,6 @@ endif
internal-strings:: $(SERVICE_NAME:=.strings.service.variables)
$(SERVICE_NAME):
$(SERVICE_NAME): $(GNUSTEP_OBJ_DIR)
@$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory \
$@.all.service.variables

View file

@ -41,7 +41,10 @@ endif
build-headers:: $(SUBPROJECT_NAME:=.build-headers.subproject.variables)
internal-all:: $(SUBPROJECT_NAME:=.all.subproject.variables)
# No need for parallel building, since we are guaranteed to always
# have only one subproject. Avoid the parallel building submake for
# efficiency in that case.
internal-all:: $(GNUSTEP_OBJ_DIR) $(SUBPROJECT_NAME:=.all.subproject.variables)
internal-install:: $(SUBPROJECT_NAME:=.install.subproject.variables)
@ -66,6 +69,6 @@ endif
internal-strings:: $(SUBPROJECT_NAME:=.strings.subproject.variables)
$(SUBPROJECT_NAME):
$(SUBPROJECT_NAME): $(GNUSTEP_OBJ_DIR)
@$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory \
$@.all.subproject.variables

View file

@ -27,7 +27,21 @@ endif
# Building of test applications works as in application.make, except
# you can't install them!
internal-all:: $(TEST_APP_NAME:=.all.test-app.variables)
ifeq ($(GNUSTEP_MAKE_PARALLEL_BUILDING), no)
internal-all:: $(GNUSTEP_OBJ_DIR) $(TEST_APP_NAME:=.all.test-app.variables)
else
internal-all:: $(GNUSTEP_OBJ_DIR)
$(ECHO_NOTHING)$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory --no-keep-going \
internal-master-test-app-all \
GNUSTEP_BUILD_DIR="$(GNUSTEP_BUILD_DIR)" \
_GNUSTEP_MAKE_PARALLEL=yes$(END_ECHO)
internal-master-test-app-all: $(TEST_APP_NAME:=.all.test-app.variables)
endif
_PSWRAP_C_FILES = $(foreach app,$(TEST_APP_NAME),$($(app)_PSWRAP_FILES:.psw=.c))
_PSWRAP_H_FILES = $(foreach app,$(TEST_APP_NAME),$($(app)_PSWRAP_FILES:.psw=.h))
@ -54,7 +68,8 @@ endif
internal-strings:: $(TEST_APP_NAME:=.strings.test-app.variables)
$(TEST_APP_NAME)::
# FIXME: Shouldn't this be a : rule ?
$(TEST_APP_NAME):: $(GNUSTEP_OBJ_DIR)
@$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory \
$@.all.test-app.variables

View file

@ -27,7 +27,21 @@ ifeq ($(RULES_MAKE_LOADED),)
include $(GNUSTEP_MAKEFILES)/rules.make
endif
internal-all:: $(TEST_LIBRARY_NAME:=.all.test-lib.variables)
ifeq ($(GNUSTEP_MAKE_PARALLEL_BUILDING), no)
internal-all:: $(GNUSTEP_OBJ_DIR) $(TEST_LIBRARY_NAME:=.all.test-lib.variables)
else
internal-all:: $(GNUSTEP_OBJ_DIR)
$(ECHO_NOTHING)$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory --no-keep-going \
internal-master-test-lib-all \
GNUSTEP_BUILD_DIR="$(GNUSTEP_BUILD_DIR)" \
_GNUSTEP_MAKE_PARALLEL=yes$(END_ECHO)
internal-master-test-lib-all: $(TEST_LIBRARY_NAME:=.all.test-lib.variables)
endif
internal-install:: $(TEST_LIBRARY_NAME:=.install.test-lib.variables)
@ -54,6 +68,6 @@ internal-check:: $(TEST_LIBRARY_NAME:=.check.test-lib.variables)
internal-strings:: $(TEST_LIBRARY_NAME:=.strings.test-lib.variables)
$(TEST_LIBRARY_NAME)::
$(TEST_LIBRARY_NAME):: $(GNUSTEP_OBJ_DIR)
@$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory \
$@.all.test-lib.variables

View file

@ -26,7 +26,21 @@ endif
# Building of test tools works as in tool.make, except we don't install them.
internal-all:: $(TEST_TOOL_NAME:=.all.test-tool.variables)
ifeq ($(GNUSTEP_MAKE_PARALLEL_BUILDING), no)
internal-all:: $(GNUSTEP_OBJ_DIR) $(TEST_TOOL_NAME:=.all.test-tool.variables)
else
internal-all:: $(GNUSTEP_OBJ_DIR)
$(ECHO_NOTHING)$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory --no-keep-going \
internal-master-test-tool-all \
GNUSTEP_BUILD_DIR="$(GNUSTEP_BUILD_DIR)" \
_GNUSTEP_MAKE_PARALLEL=yes$(END_ECHO)
internal-master-test-tool-all: $(TEST_TOOL_NAME:=.all.test-tool.variables)
endif
internal-clean::
@ -40,7 +54,7 @@ endif
internal-strings:: $(TEST_TOOL_NAME:=.strings.test-tool.variables)
$(TEST_TOOL_NAME)::
$(TEST_TOOL_NAME):: $(GNUSTEP_OBJ_DIR)
@$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory \
$@.all.test-tool.variables

View file

@ -20,16 +20,16 @@
# If not, write to the Free Software Foundation,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
TOOL_NAME := $(strip $(TOOL_NAME))
ifeq ($(RULES_MAKE_LOADED),)
include $(GNUSTEP_MAKEFILES)/rules.make
endif
TOOL_NAME := $(strip $(TOOL_NAME))
ifeq ($(GNUSTEP_MAKE_PARALLEL_BUILDING), no)
# Standard building
internal-all:: $(TOOL_NAME:=.all.tool.variables)
internal-all:: $(GNUSTEP_OBJ_DIR) $(TOOL_NAME:=.all.tool.variables)
else
@ -92,6 +92,6 @@ endif
# but it's worth checking to make sure we're not breaking anything.
internal-strings:: $(TOOL_NAME:=.strings.tool.variables)
$(TOOL_NAME):
$(TOOL_NAME): $(GNUSTEP_OBJ_DIR)
@$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory --no-keep-going \
$@.all.tool.variables

View file

@ -42,6 +42,16 @@ SHELL = /bin/sh
# from having to recompute it!
export GNUSTEP_MAKEFILES
# The fact that this make invocation is building its targets in
# parallel does not mean that submakes should do it too. We control
# exactly which make invocation runs in parallel, and which does not.
# So, we do not want to export _GNUSTEP_MAKE_PARALLEL to submakes,
# unless passed on the command line. FIXME: This does not work, so as
# a quick hack I added _GNUSTEP_MAKE_PARALLEL=no to all submake
# invocations. That works fine, but might be troublesome for custom
# GNUmakefiles that run submakes. Need to think.
#unexport _GNUSTEP_MAKE_PARALLEL
#
# Get the global config information. This includes
# GNUSTEP_SYSTEM_ROOT, GNUSTEP_MAKE_VERSION, GNUSTEP_IS_FLATTENED,

View file

@ -690,20 +690,6 @@ $(GNUSTEP_HOME)/$(GNUSTEP_USER_CONFIG_FILE): ;
endif
endif
# The rule to create the GNUSTEP_BUILD_DIR if any. (TODO: Move this
# into Master/rules.make with the following one.)
ifneq ($(GNUSTEP_BUILD_DIR),.)
$(GNUSTEP_BUILD_DIR):
$(ECHO_CREATING)$(MKDIRS) $(GNUSTEP_BUILD_DIR)$(END_ECHO)
endif
# The rule to create the objects file directory. This should be done
# in the Master invocation. TODO: Move this rule into
# Master/rules.make once no more makefiles in Instance/ depdend on it.
$(GNUSTEP_OBJ_DIR):
$(ECHO_NOTHING)cd $(GNUSTEP_BUILD_DIR); \
$(MKDIRS) ./$(GNUSTEP_OBJ_DIR_NAME)$(END_ECHO)
# Now the print targets.
.PHONY: print-gnustep-make-help \
print-gnustep-make-objc-flags \