From 1830c18c5e6f0960118340a76d5ec2775c101c15 Mon Sep 17 00:00:00 2001 From: rexy712 Date: Mon, 6 Jan 2020 12:59:21 -0800 Subject: [PATCH] Fix library makefile not issuing a job server due to variable expansion not working as expected --- makefile.library | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/makefile.library b/makefile.library index 9e2f8c5..5696251 100644 --- a/makefile.library +++ b/makefile.library @@ -31,6 +31,7 @@ LANG::=$(EXT) MAIN_LIBRARY::=tester PRE_TARGETS::= POST_TARGETS::= +CLEAN_TARGETS::= SHARED?=1 STATIC?=0 RELEASE?=0 @@ -129,31 +130,32 @@ THIS_MAKEFILE_NAME::=$(lastword $(MAKEFILE_LIST)) SOURCES::=$(foreach source,$(SOURCE_DIRS),$(foreach ext,$(EXT),$(wildcard $(source)/*.$(ext)))) OBJECTS::=$(addprefix $(OBJDIR)/,$(subst \,.,$(subst /,.,$(addsuffix .o,$(SOURCES))))) -#generate a command to run a submake using this same makefile without printing "Entering directory" stuff -#note: the empty line is required in this definition -define RUN_SUBMAKE_TARGET - @$(MAKE) --no-print-directory -f "$(THIS_MAKEFILE_NAME)" "$(1)" $(2) +#Arguments to make submake use this makefile without "Entering directory" stuff +SUBMAKE_ARGUMENTS::=--no-print-directory -f "$(THIS_MAKEFILE_NAME)" +#just a variable for a newline +define \n + endef #default target: run targets in PRE_TARGETS, then build the main library, then POST_TARGETS .PHONY: all all: - $(foreach target,$(PRE_TARGETS),$(call RUN_SUBMAKE_TARGET,$(target))) + $(foreach target,$(PRE_TARGETS),@$(MAKE) $(SUBMAKE_ARGUMENTS) "$(target)"$(\n)) ifeq ($(SHARED),1) ifeq ($(WINDOWS),1) - $(call RUN_SUBMAKE_TARGET,$(DLLOUT)) + @$(MAKE) $(SUBMAKE_ARGUMENTS) "$(DLLOUT)" else #windows - $(call RUN_SUBMAKE_TARGET,$(INTERNAL_SHARED_LIBRARY)) + @$(MAKE) $(SUBMAKE_ARGUMENTS) "$(INTERNAL_SHARED_LIBRARY)" endif #windows endif #shared ifeq ($(STATIC),1) ifeq ($(SHARED),1) - $(call RUN_SUBMAKE_TARGET,object_clean) + @$(MAKE) $(SUBMAKE_ARGUMENTS) "object_clean" endif #shared - $(call RUN_SUBMAKE_TARGET,$(INTERNAL_STATIC_LIBRARY),SHARED=0) + @$(MAKE) $(SUBMAKE_ARGUMENTS) "$(INTERNAL_STATIC_LIBRARY)" SHARED=0 endif #static - $(foreach target,$(POST_TARGETS),$(call RUN_SUBMAKE_TARGET,$(target))) + $(foreach target,$(POST_TARGETS),@$(MAKE) $(SUBMAKE_ARGUMENTS) "$(target)"$(\n)) ifeq ($(WINDOWS),1) #target for windows shared library @@ -203,6 +205,7 @@ object_clean: .PHONY: clean clean: object_clean + $(foreach target,$(CLEAN_TARGETS),@$(MAKE) $(SUBMAKE_ARGUMENTS) "$(target)"$(\n)) $(call rmdir,"$(DEPDIR)") $(call rm,"lib$(MAIN_LIBRARY).so") $(call rm,"lib$(MAIN_LIBRARY).a")