Fix library makefile not issuing a job server due to variable expansion not working as expected

This commit is contained in:
rexy712 2020-01-06 12:59:21 -08:00
parent fd0dd378f4
commit 1830c18c5e

View File

@ -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")