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 MAIN_LIBRARY::=tester
PRE_TARGETS::= PRE_TARGETS::=
POST_TARGETS::= POST_TARGETS::=
CLEAN_TARGETS::=
SHARED?=1 SHARED?=1
STATIC?=0 STATIC?=0
RELEASE?=0 RELEASE?=0
@ -129,31 +130,32 @@ THIS_MAKEFILE_NAME::=$(lastword $(MAKEFILE_LIST))
SOURCES::=$(foreach source,$(SOURCE_DIRS),$(foreach ext,$(EXT),$(wildcard $(source)/*.$(ext)))) SOURCES::=$(foreach source,$(SOURCE_DIRS),$(foreach ext,$(EXT),$(wildcard $(source)/*.$(ext))))
OBJECTS::=$(addprefix $(OBJDIR)/,$(subst \,.,$(subst /,.,$(addsuffix .o,$(SOURCES))))) OBJECTS::=$(addprefix $(OBJDIR)/,$(subst \,.,$(subst /,.,$(addsuffix .o,$(SOURCES)))))
#generate a command to run a submake using this same makefile without printing "Entering directory" stuff #Arguments to make submake use this makefile without "Entering directory" stuff
#note: the empty line is required in this definition SUBMAKE_ARGUMENTS::=--no-print-directory -f "$(THIS_MAKEFILE_NAME)"
define RUN_SUBMAKE_TARGET #just a variable for a newline
@$(MAKE) --no-print-directory -f "$(THIS_MAKEFILE_NAME)" "$(1)" $(2) define \n
endef endef
#default target: run targets in PRE_TARGETS, then build the main library, then POST_TARGETS #default target: run targets in PRE_TARGETS, then build the main library, then POST_TARGETS
.PHONY: all .PHONY: all
all: all:
$(foreach target,$(PRE_TARGETS),$(call RUN_SUBMAKE_TARGET,$(target))) $(foreach target,$(PRE_TARGETS),@$(MAKE) $(SUBMAKE_ARGUMENTS) "$(target)"$(\n))
ifeq ($(SHARED),1) ifeq ($(SHARED),1)
ifeq ($(WINDOWS),1) ifeq ($(WINDOWS),1)
$(call RUN_SUBMAKE_TARGET,$(DLLOUT)) @$(MAKE) $(SUBMAKE_ARGUMENTS) "$(DLLOUT)"
else #windows else #windows
$(call RUN_SUBMAKE_TARGET,$(INTERNAL_SHARED_LIBRARY)) @$(MAKE) $(SUBMAKE_ARGUMENTS) "$(INTERNAL_SHARED_LIBRARY)"
endif #windows endif #windows
endif #shared endif #shared
ifeq ($(STATIC),1) ifeq ($(STATIC),1)
ifeq ($(SHARED),1) ifeq ($(SHARED),1)
$(call RUN_SUBMAKE_TARGET,object_clean) @$(MAKE) $(SUBMAKE_ARGUMENTS) "object_clean"
endif #shared endif #shared
$(call RUN_SUBMAKE_TARGET,$(INTERNAL_STATIC_LIBRARY),SHARED=0) @$(MAKE) $(SUBMAKE_ARGUMENTS) "$(INTERNAL_STATIC_LIBRARY)" SHARED=0
endif #static endif #static
$(foreach target,$(POST_TARGETS),$(call RUN_SUBMAKE_TARGET,$(target))) $(foreach target,$(POST_TARGETS),@$(MAKE) $(SUBMAKE_ARGUMENTS) "$(target)"$(\n))
ifeq ($(WINDOWS),1) ifeq ($(WINDOWS),1)
#target for windows shared library #target for windows shared library
@ -203,6 +205,7 @@ object_clean:
.PHONY: clean .PHONY: clean
clean: object_clean clean: object_clean
$(foreach target,$(CLEAN_TARGETS),@$(MAKE) $(SUBMAKE_ARGUMENTS) "$(target)"$(\n))
$(call rmdir,"$(DEPDIR)") $(call rmdir,"$(DEPDIR)")
$(call rm,"lib$(MAIN_LIBRARY).so") $(call rm,"lib$(MAIN_LIBRARY).so")
$(call rm,"lib$(MAIN_LIBRARY).a") $(call rm,"lib$(MAIN_LIBRARY).a")