diff --git a/Master/application.make b/Master/application.make index 4b4a6836..d56bac22 100644 --- a/Master/application.make +++ b/Master/application.make @@ -38,7 +38,7 @@ internal-uninstall:: $(APP_NAME:=.uninstall.app.variables) _PSWRAP_C_FILES = $(foreach app,$(APP_NAME),$($(app)_PSWRAP_FILES:.psw=.c)) _PSWRAP_H_FILES = $(foreach app,$(APP_NAME),$($(app)_PSWRAP_FILES:.psw=.h)) -internal-clean:: $(APP_NAME:=.clean.app.subprojects) +internal-clean:: rm -rf $(GNUSTEP_OBJ_DIR) $(_PSWRAP_C_FILES) $(_PSWRAP_H_FILES) ifeq ($(OBJC_COMPILER), NeXT) rm -f *.iconheader @@ -53,11 +53,27 @@ else endif endif -internal-distclean:: $(APP_NAME:=.distclean.app.subprojects) +internal-distclean:: rm -rf shared_obj static_obj shared_debug_obj shared_profile_obj \ static_debug_obj static_profile_obj shared_profile_debug_obj \ static_profile_debug_obj *.app *.debug *.profile *.iconheader +# The following make trick extracts all tools 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. +# +# Please note that newer GNU make has a $(if condition,then,else) +# function, which would be so handy here! But unfortunately it's not +# available in older GNU makes, so we must not use it. This trick +# works around this problem. + +APPS_WITH_SUBPROJECTS = $(strip $(foreach app,$(APP_NAME),$(patsubst %,$(app),$($(app)_SUBPROJECTS)))) +ifneq ($(APPS_WITH_SUBPROJECTS),) +internal-clean:: $(APPS_WITH_SUBPROJECTS:=.clean.app.subprojects) +internal-distclean:: $(APPS_WITH_SUBPROJECTS:=.distclean.app.subprojects) +endif + $(APP_NAME): @$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory $@.all.app.variables diff --git a/Master/bundle.make b/Master/bundle.make index fed57418..1f98764f 100644 --- a/Master/bundle.make +++ b/Master/bundle.make @@ -36,15 +36,22 @@ internal-uninstall:: $(BUNDLE_NAME:=.uninstall.bundle.variables) _PSWRAP_C_FILES = $(foreach bundle,$(BUNDLE_NAME),$($(bundle)_PSWRAP_FILES:.psw=.c)) _PSWRAP_H_FILES = $(foreach bundle,$(BUNDLE_NAME),$($(bundle)_PSWRAP_FILES:.psw=.h)) -internal-clean:: $(BUNDLE_NAME:=.clean.bundle.subprojects) +internal-clean:: rm -rf $(GNUSTEP_OBJ_DIR) $(_PSWRAP_C_FILES) $(_PSWRAP_H_FILES) \ $(addsuffix $(BUNDLE_EXTENSION),$(BUNDLE_NAME)) -internal-distclean:: $(BUNDLE_NAME:=.distclean.bundle.subprojects) +internal-distclean:: rm -rf shared_obj static_obj shared_debug_obj shared_profile_obj \ static_debug_obj static_profile_obj shared_profile_debug_obj \ static_profile_debug_obj +BUNDLES_WITH_SUBPROJECTS = $(strip $(foreach bundle,$(BUNDLE_NAME),$(patsubst %,$(bundle),$($(bundle)_SUBPROJECTS)))) + +ifneq ($(BUNDLES_WITH_SUBPROJECTS),) +internal-clean:: $(BUNDLES_WITH_SUBPROJECTS:=.clean.bundle.subprojects) +internal-distclean:: $(BUNDLES_WITH_SUBPROJECTS:=.distclean.bundle.subprojects) +endif + $(BUNDLE_NAME): @$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory \ $@.all.bundle.variables diff --git a/Master/clibrary.make b/Master/clibrary.make index bc516da5..bb174d74 100644 --- a/Master/clibrary.make +++ b/Master/clibrary.make @@ -36,14 +36,20 @@ internal-uninstall:: $(CLIBRARY_NAME:=.uninstall.clibrary.variables) _PSWRAP_C_FILES = $(foreach lib,$(CLIBRARY_NAME),$($(lib)_PSWRAP_FILES:.psw=.c)) _PSWRAP_H_FILES = $(foreach lib,$(CLIBRARY_NAME),$($(lib)_PSWRAP_FILES:.psw=.h)) -internal-clean:: $(CLIBRARY_NAME:=.clean.clibrary.subprojects) +internal-clean:: rm -rf $(GNUSTEP_OBJ_DIR) $(_PSWRAP_C_FILES) $(_PSWRAP_H_FILES) -internal-distclean:: $(CLIBRARY_NAME:=.distclean.clibrary.subprojects) +internal-distclean:: rm -rf shared_obj static_obj shared_debug_obj shared_profile_obj \ static_debug_obj static_profile_obj shared_profile_debug_obj \ static_profile_debug_obj +CLIBRARIES_WITH_SUBPROJECTS = $(strip $(foreach clibrary,$(CLIBRARY_NAME),$(patsubst %,$(clibrary),$($(clibrary)_SUBPROJECTS)))) +ifneq ($(CLIBRARIES_WITH_SUBPROJECTS),) +internal-clean:: $(CLIBRARIES_WITH_SUBPROJECTS:=.clean.clibrary.subprojects) +internal-distclean:: $(CLIBRARIES_WITH_SUBPROJECTS:=.distclean.clibrary.subprojects) +endif + $(CLIBRARY_NAME): @$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory \ $@.all.clibrary.variables diff --git a/Master/ctool.make b/Master/ctool.make index e08d4e7d..577167f1 100644 --- a/Master/ctool.make +++ b/Master/ctool.make @@ -32,14 +32,20 @@ internal-install:: $(CTOOL_NAME:=.install.ctool.variables) internal-uninstall:: $(CTOOL_NAME:=.uninstall.ctool.variables) -internal-clean:: $(CTOOL_NAME:=.clean.ctool.subprojects) +internal-clean:: rm -rf $(GNUSTEP_OBJ_DIR) -internal-distclean:: $(CTOOL_NAME:=.distclean.ctool.subprojects) +internal-distclean:: rm -rf shared_obj static_obj shared_debug_obj shared_profile_obj \ static_debug_obj static_profile_obj shared_profile_debug_obj \ static_profile_debug_obj +CTOOLS_WITH_SUBPROJECTS = $(strip $(foreach ctool,$(CTOOL_NAME),$(patsubst %,$(ctool),$($(ctool)_SUBPROJECTS)))) +ifneq ($(CTOOLS_WITH_SUBPROJECTS),) +internal-clean:: $(CTOOLS_WITH_SUBPROJECTS:=.clean.ctool.subprojects) +internal-distclean:: $(CTOOLS_WITH_SUBPROJECTS:=.distclean.ctool.subprojects) +endif + $(CTOOL_NAME): @$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory \ $@.all.ctool.variables diff --git a/Master/gswapp.make b/Master/gswapp.make index 942ee669..0f122ac7 100644 --- a/Master/gswapp.make +++ b/Master/gswapp.make @@ -45,7 +45,7 @@ internal-install:: $(GSWAPP_NAME:=.install.gswapp.variables) internal-uninstall:: $(GSWAPP_NAME:=.uninstall.gswapp.variables) -internal-clean:: $(GSWAPP_NAME:=.clean.gswapp.subprojects) +internal-clean:: rm -rf $(GNUSTEP_OBJ_DIR) ifeq ($(OBJC_COMPILER), NeXT) rm -f *.iconheader @@ -60,11 +60,17 @@ else endif endif -internal-distclean:: $(GSWAPP_NAME:=.distclean.gswapp.subprojects) +internal-distclean:: rm -rf shared_obj static_obj shared_debug_obj shared_profile_obj \ static_debug_obj static_profile_obj shared_profile_debug_obj \ static_profile_debug_obj *.gswa *.debug *.profile *.iconheader +GSWAPPS_WITH_SUBPROJECTS = $(strip $(foreach gswapp,$(GSWAPP_NAME),$(patsubst %,$(gswapp),$($(gswapp)_SUBPROJECTS)))) +ifneq ($(GSWAPPS_WITH_SUBPROJECTS),) +internal-clean:: $(GSWAPPS_WITH_SUBPROJECTS:=.clean.gswapp.subprojects) +internal-distclean:: $(GSWAPPS_WITH_SUBPROJECTS:=.distclean.gswapp.subprojects) +endif + $(GSWAPP_NAME): @$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory \ $@.all.gswapp.variables diff --git a/Master/gswbundle.make b/Master/gswbundle.make index ffe261c3..3a62ec9f 100644 --- a/Master/gswbundle.make +++ b/Master/gswbundle.make @@ -37,15 +37,21 @@ internal-install:: $(GSWBUNDLE_NAME:=.install.gswbundle.variables) internal-uninstall:: $(GSWBUNDLE_NAME:=.uninstall.gswbundle.variables) -internal-clean:: $(GSWBUNDLE_NAME:=.clean.gswbundle.subprojects) +internal-clean:: rm -rf $(GNUSTEP_OBJ_DIR) \ $(addsuffix $(GSWBUNDLE_EXTENSION),$(GSWBUNDLE_NAME)) -internal-distclean:: $(GSWBUNDLE_NAME:=.distclean.gswbundle.subprojects) +internal-distclean:: rm -rf shared_obj static_obj shared_debug_obj shared_profile_obj \ static_debug_obj static_profile_obj shared_profile_debug_obj \ static_profile_debug_obj +GSWBUNDLES_WITH_SUBPROJECTS = $(strip $(foreach gswbundle,$(GSWBUNDLE_NAME),$(patsubst %,$(gswbundle),$($(gswbundle)_SUBPROJECTS)))) +ifneq ($(GSWBUNDLES_WITH_SUBPROJECTS),) +internal-clean:: $(GSWBUNDLES_WITH_SUBPROJECTS:=.clean.gswbundle.subprojects) +internal-distclean:: $(GSWBUNDLES_WITH_SUBPROJECTS:=.distclean.gswbundle.subprojects) +endif + $(GSWBUNDLE_NAME): @$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory \ $@.all.gswbundle.variables diff --git a/Master/java-tool.make b/Master/java-tool.make index 5a4f046e..f0d83c18 100644 --- a/Master/java-tool.make +++ b/Master/java-tool.make @@ -42,7 +42,12 @@ internal-uninstall:: $(JAVA_TOOL_NAME:=.uninstall.java_tool.variables) internal-clean:: $(JAVA_TOOL_NAME:=.clean.java_tool.variables) -internal-distclean:: $(JAVA_TOOL_NAME:=.distclean.java_tool.subprojects) +internal-distclean:: + +JAVA_TOOLS_WITH_SUBPROJECTS = $(strip $(foreach java_tool,$(JAVA_TOOL_NAME),$(patsubst %,$(java_tool),$($(java_tool)_SUBPROJECTS)))) +ifneq ($(JAVA_TOOLS_WITH_SUBPROJECTS),) +internal-distclean:: $(JAVA_TOOLS_WITH_SUBPROJECTS:=.distclean.java_tool.subprojects) +endif $(JAVA_TOOL_NAME): @$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory \ diff --git a/Master/java.make b/Master/java.make index 7103536d..a6d98577 100644 --- a/Master/java.make +++ b/Master/java.make @@ -34,7 +34,12 @@ internal-uninstall:: $(JAVA_PACKAGE_NAME:=.uninstall.java-package.variables) internal-clean:: $(JAVA_PACKAGE_NAME:=.clean.java-package.variables) -internal-distclean:: $(JAVA_PACKAGE_NAME:=.distclean.java-package.subprojects) +internal-distclean:: + +JAVA_PACKAGES_WITH_SUBPROJECTS = $(strip $(foreach java-package,$(JAVA_PACKAGE_NAME),$(patsubst %,$(java-package),$($(java-package)_SUBPROJECTS)))) +ifneq ($(JAVA_PACKAGES_WITH_SUBPROJECTS),) +internal-distclean:: $(JAVA_PACKAGES_WITH_SUBPROJECTS:=.distclean.java-package.subprojects) +endif $(JAVA_PACKAGE_NAME): @$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory \ diff --git a/Master/library.make b/Master/library.make index 048849cd..6dd29e6d 100644 --- a/Master/library.make +++ b/Master/library.make @@ -36,14 +36,20 @@ internal-uninstall:: $(LIBRARY_NAME:=.uninstall.library.variables) _PSWRAP_C_FILES = $(foreach lib,$(LIBRARY_NAME),$($(lib)_PSWRAP_FILES:.psw=.c)) _PSWRAP_H_FILES = $(foreach lib,$(LIBRARY_NAME),$($(lib)_PSWRAP_FILES:.psw=.h)) -internal-clean:: $(LIBRARY_NAME:=.clean.library.subprojects) +internal-clean:: rm -rf $(GNUSTEP_OBJ_DIR) $(_PSWRAP_C_FILES) $(_PSWRAP_H_FILES) -internal-distclean:: $(LIBRARY_NAME:=.distclean.library.subprojects) +internal-distclean:: rm -rf shared_obj static_obj shared_debug_obj shared_profile_obj \ static_debug_obj static_profile_obj shared_profile_debug_obj \ static_profile_debug_obj +LIBRARIES_WITH_SUBPROJECTS = $(strip $(foreach library,$(LIBRARY_NAME),$(patsubst %,$(library),$($(library)_SUBPROJECTS)))) +ifneq ($(LIBRARIES_WITH_SUBPROJECTS),) +internal-clean:: $(LIBRARIES_WITH_SUBPROJECTS:=.clean.library.subprojects) +internal-distclean:: $(LIBRARIES_WITH_SUBPROJECTS:=.distclean.library.subprojects) +endif + $(LIBRARY_NAME): @$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory \ $@.all.library.variables diff --git a/Master/objc.make b/Master/objc.make index a5e5cc89..81331222 100644 --- a/Master/objc.make +++ b/Master/objc.make @@ -32,14 +32,20 @@ internal-install:: $(OBJC_PROGRAM_NAME:=.install.objc-program.variables) internal-uninstall:: $(OBJC_PROGRAM_NAME:=.uninstall.objc-program.variables) -internal-clean:: $(OBJC_PROGRAM_NAME:=.clean.objc-program.subprojects) +internal-clean:: rm -rf $(GNUSTEP_OBJ_DIR) -internal-distclean:: $(OBJC_PROGRAM_NAME:=.distclean.objc-program.subprojects) +internal-distclean:: rm -rf shared_obj static_obj shared_debug_obj shared_profile_obj \ static_debug_obj static_profile_obj shared_profile_debug_obj \ static_profile_debug_obj +OBJC_PROGRAMS_WITH_SUBPROJECTS = $(strip $(foreach objc_program,$(OBJC_PROGRAM_NAME),$(patsubst %,$(objc_program),$($(objc_program)_SUBPROJECTS)))) +ifneq ($(OBJC_PROGRAMS_WITH_SUBPROJECTS),) +internal-clean:: $(OBJC_PROGRAMS_WITH_SUBPROJECTS:=.clean.objc_program.subprojects) +internal-distclean:: $(OBJC_PROGRAMS_WITH_SUBPROJECTS:=.distclean.objc_program.subprojects) +endif + $(OBJC_PROGRAM_NAME): @$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory \ $@.all.objc-program.variables diff --git a/Master/palette.make b/Master/palette.make index 9c66d4c8..c96d57b5 100644 --- a/Master/palette.make +++ b/Master/palette.make @@ -37,11 +37,16 @@ internal-uninstall:: $(PALETTE_NAME:=.uninstall.palette.variables) _PSWRAP_C_FILES = $(foreach palette,$(PALETTE_NAME),$($(palette)_PSWRAP_FILES:.psw=.c)) _PSWRAP_H_FILES = $(foreach palette,$(PALETTE_NAME),$($(palette)_PSWRAP_FILES:.psw=.h)) -internal-clean:: $(PALETTE_NAME:=.clean.palette.subprojects) +internal-clean:: rm -rf $(GNUSTEP_OBJ_DIR) $(_PSWRAP_C_FILES) $(_PSWRAP_H_FILES) internal-distclean:: $(PALETTE_NAME:=.distclean.palette.variables) +PALETTES_WITH_SUBPROJECTS = $(strip $(foreach palette,$(PALETTE_NAME),$(patsubst %,$(palette),$($(palette)_SUBPROJECTS)))) +ifneq ($(PALETTES_WITH_SUBPROJECTS),) +internal-clean:: $(PALETTES_WITH_SUBPROJECTS:=.clean.palette.subprojects) +endif + $(PALETTE_NAME): @$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory \ $@.all.palette.variables diff --git a/Master/service.make b/Master/service.make index 44c18848..c2801707 100644 --- a/Master/service.make +++ b/Master/service.make @@ -36,7 +36,7 @@ internal-uninstall:: $(SERVICE_NAME:=.uninstall.service.variables) _PSWRAP_C_FILES = $(foreach service,$(SERVICE_NAME),$($(service)_PSWRAP_FILES:.psw=.c)) _PSWRAP_H_FILES = $(foreach service,$(SERVICE_NAME),$($(service)_PSWRAP_FILES:.psw=.h)) -internal-clean:: $(SERVICE_NAME:=.clean.service.subprojects) +internal-clean:: rm -rf $(GNUSTEP_OBJ_DIR) $(_PSWRAP_C_FILES) $(_PSWRAP_H_FILES) ifeq ($(OBJC_COMPILER), NeXT) rm -f *.iconheader @@ -51,7 +51,13 @@ else endif endif -internal-distclean:: $(SERVICE_NAME:=.distclean.service.variables) +internal-distclean:: + +SERVICES_WITH_SUBPROJECTS = $(strip $(foreach service,$(SERVICE_NAME),$(patsubst %,$(service),$($(service)_SUBPROJECTS)))) +ifneq ($(SERVICES_WITH_SUBPROJECTS),) +internal-clean:: $(SERVICES_WITH_SUBPROJECTS:=.clean.service.subprojects) +internal-distclean:: $(SERVICES_WITH_SUBPROJECTS:=.distclean.service.subprojects) +endif $(SERVICE_NAME): @$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory \ diff --git a/Master/subproject.make b/Master/subproject.make index a515e594..3ed96df4 100644 --- a/Master/subproject.make +++ b/Master/subproject.make @@ -64,14 +64,20 @@ endif _PSWRAP_C_FILES = $($(SUBPROJECT_NAME)_PSWRAP_FILES:.psw=.c) _PSWRAP_H_FILES = $($(SUBPROJECT_NAME)_PSWRAP_FILES:.psw=.h) -internal-clean:: $(SUBPROJECT_NAME:=.clean.subproject.subprojects) +internal-clean:: rm -rf $(GNUSTEP_OBJ_DIR) $(_PSWRAP_C_FILES) $(_PSWRAP_H_FILES) -internal-distclean:: $(SUBPROJECT_NAME:=.distclean.subproject.subprojects) +internal-distclean:: rm -rf shared_obj static_obj shared_debug_obj shared_profile_obj \ static_debug_obj static_profile_obj shared_profile_debug_obj \ static_profile_debug_obj +SUBPROJECTS_WITH_SUBPROJECTS = $(strip $(patsubst %,$(SUBPROJECT_NAME),$($(SUBPROJECT_NAME)_SUBPROJECTS))) +ifneq ($(SUBPROJECTS_WITH_SUBPROJECTS),) +internal-clean:: $(SUBPROJECTS_WITH_SUBPROJECTS:=.clean.subproject.subprojects) +internal-distclean:: $(SUBPROJECTS_WITH_SUBPROJECTS:=.distclean.subproject.subprojects) +endif + # If the subproject has a resource bundle, destroy it on distclean ifeq ($($(SUBPROJECT_NAME)_HAS_RESOURCE_BUNDLE), yes) internal-distclean:: diff --git a/Master/test-application.make b/Master/test-application.make index 78d20998..5b5c2e12 100644 --- a/Master/test-application.make +++ b/Master/test-application.make @@ -32,7 +32,7 @@ internal-all:: $(TEST_APP_NAME:=.all.test-app.variables) _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)) -internal-clean:: $(TEST_APP_NAME:=.clean.test-app.subprojects) +internal-clean:: rm -rf $(GNUSTEP_OBJ_DIR) $(_PSWRAP_C_FILES) $(_PSWRAP_H_FILES) ifeq ($(OBJC_COMPILER), NeXT) rm -f *.iconheader @@ -47,11 +47,17 @@ else endif endif -internal-distclean:: $(TEST_APP_NAME:=.distclean.test-app.subprojects) +internal-distclean:: rm -rf shared_obj static_obj shared_debug_obj shared_profile_obj \ static_debug_obj static_profile_obj shared_profile_debug_obj \ static_profile_debug_obj *.app *.debug *.profile *.iconheader +TEST_APPS_WITH_SUBPROJECTS = $(strip $(foreach test-app,$(TEST_APP_NAME),$(patsubst %,$(test-app),$($(test-app)_SUBPROJECTS)))) +ifneq ($(TEST_APPS_WITH_SUBPROJECTS),) +internal-clean:: $(TEST_APPS_WITH_SUBPROJECTS:=.clean.test-app.subprojects) +internal-distclean:: $(TEST_APPS_WITH_SUBPROJECTS:=.distclean.test-app.subprojects) +endif + $(TEST_APP_NAME):: @$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory \ $@.all.test-app.variables diff --git a/Master/test-library.make b/Master/test-library.make index 1f6c84c9..14992cd3 100644 --- a/Master/test-library.make +++ b/Master/test-library.make @@ -36,14 +36,20 @@ internal-uninstall:: $(TEST_LIBRARY_NAME:=.uninstall.test-lib.variables) _PSWRAP_C_FILES = $(foreach lib,$(TEST_LIBRARY_NAME),$($(lib)_PSWRAP_FILES:.psw=.c)) _PSWRAP_H_FILES = $(foreach lib,$(TEST_LIBRARY_NAME),$($(lib)_PSWRAP_FILES:.psw=.h)) -internal-clean:: $(TEST_LIBRARY_NAME:=.clean.test-lib.subprojects) +internal-clean:: rm -rf $(GNUSTEP_OBJ_DIR) $(_PSWRAP_C_FILES) $(_PSWRAP_H_FILES) -internal-distclean:: $(TEST_LIBRARY_NAME:=.distclean.test-lib.subprojects) +internal-distclean:: rm -rf shared_obj static_obj shared_debug_obj shared_profile_obj \ static_debug_obj static_profile_obj shared_profile_debug_obj \ static_profile_debug_obj +TEST_LIBRARIES_WITH_SUBPROJECTS = $(strip $(foreach test-library,$(TEST_LIBRARY_NAME),$(patsubst %,$(test-library),$($(test-library)_SUBPROJECTS)))) +ifneq ($(TEST_LIBRARIES_WITH_SUBPROJECTS),) +internal-clean:: $(TEST_LIBRARIES_WITH_SUBPROJECTS:=.clean.test-library.subprojects) +internal-distclean:: $(TEST_LIBRARIES_WITH_SUBPROJECTS:=.distclean.test-library.subprojects) +endif + internal-check:: $(TEST_LIBRARY_NAME:=.check.test-lib.variables) $(TEST_LIBRARY_NAME):: diff --git a/Master/test-tool.make b/Master/test-tool.make index 9d2abd62..86539495 100644 --- a/Master/test-tool.make +++ b/Master/test-tool.make @@ -28,14 +28,20 @@ endif internal-all:: $(TEST_TOOL_NAME:=.all.test-tool.variables) -internal-clean:: $(TEST_TOOL_NAME:=.clean.test-tool.subprojects) +internal-clean:: rm -rf $(GNUSTEP_OBJ_DIR) -internal-distclean:: $(TEST_TOOL_NAME:=.distclean.test-tool.subprojects) +internal-distclean:: rm -rf shared_obj static_obj shared_debug_obj shared_profile_obj \ static_debug_obj static_profile_obj shared_profile_debug_obj \ static_profile_debug_obj +TEST_TOOLS_WITH_SUBPROJECTS = $(strip $(foreach test-tool,$(TEST_TOOL_NAME),$(patsubst %,$(test-tool),$($(test-tool)_SUBPROJECTS)))) +ifneq ($(TEST_TOOLS_WITH_SUBPROJECTS),) +internal-clean:: $(TEST_TOOLS_WITH_SUBPROJECTS:=.clean.test-tool.subprojects) +internal-distclean:: $(TEST_TOOLS_WITH_SUBPROJECTS:=.distclean.test-tool.subprojects) +endif + $(TEST_TOOL_NAME):: @$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory \ $@.all.test-tool.variables diff --git a/Master/tool.make b/Master/tool.make index 918a2c97..f8fac40c 100644 --- a/Master/tool.make +++ b/Master/tool.make @@ -32,14 +32,20 @@ internal-install:: $(TOOL_NAME:=.install.tool.variables) internal-uninstall:: $(TOOL_NAME:=.uninstall.tool.variables) -internal-clean:: $(TOOL_NAME:=.clean.tool.subprojects) +internal-clean:: rm -rf $(GNUSTEP_OBJ_DIR) -internal-distclean:: $(TOOL_NAME:=.distclean.tool.subprojects) +internal-distclean:: rm -rf shared_obj static_obj shared_debug_obj shared_profile_obj \ static_debug_obj static_profile_obj shared_profile_debug_obj \ static_profile_debug_obj +TOOLS_WITH_SUBPROJECTS = $(strip $(foreach tool,$(TOOL_NAME),$(patsubst %,$(tool),$($(tool)_SUBPROJECTS)))) +ifneq ($(TOOLS_WITH_SUBPROJECTS),) +internal-clean:: $(TOOLS_WITH_SUBPROJECTS:=.clean.tool.subprojects) +internal-distclean:: $(TOOLS_WITH_SUBPROJECTS:=.distclean.tool.subprojects) +endif + # On distclean, we also want to efficiently wipe out the Resources/ # directory if (and only if) there are tools for which # xxx_HAS_RESOURCE_BUNDLE=yes