Make it possible to have config-dependant SOURCES

This commit is contained in:
Christophe de Dinechin 2017-11-21 12:41:20 +01:00
parent e8f7ccd2d4
commit 0ab036c3db
1 changed files with 20 additions and 19 deletions

View File

@ -47,15 +47,15 @@ endif
# Configuration variables # Configuration variables
OBJDIR:= $(OBJROOT)$(DIR) OBJDIR:= $(OBJROOT)$(DIR)
OBJECTS= $(SOURCES:%=$(OBJDIR)/%$(OBJ_EXT)) OBJECTS= $(SOURCES:%=$(OBJDIR)/%$(OBJ_EXT))
PRODUCTS_EXE:= $(patsubst %.exe,%$(EXE_EXT),$(filter %.exe,$(PRODUCTS))) PRODUCTS_EXE= $(patsubst %.exe,%$(EXE_EXT),$(filter %.exe,$(PRODUCTS)))
PRODUCTS_LIB:= $(patsubst %.lib,%$(LIB_EXT),$(filter %.lib,$(PRODUCTS))) PRODUCTS_LIB= $(patsubst %.lib,%$(LIB_EXT),$(filter %.lib,$(PRODUCTS)))
PRODUCTS_DLL:= $(patsubst %.dll,%$(DLL_EXT),$(filter %.dll,$(PRODUCTS))) PRODUCTS_DLL= $(patsubst %.dll,%$(DLL_EXT),$(filter %.dll,$(PRODUCTS)))
PRODUCTS_OTHER:=$(filter-out %.exe %.lib %.dll %$(EXE_EXT) %$(LIB_EXT) %$(DLL_EXT), $(PRODUCTS)) PRODUCTS_OTHER= $(filter-out %.exe %.lib %.dll %$(EXE_EXT) %$(LIB_EXT) %$(DLL_EXT), $(PRODUCTS))
OBJROOT_EXE:= $(PRODUCTS_EXE:%=$(OBJROOT)/$(EXE_PFX)%) OBJROOT_EXE= $(PRODUCTS_EXE:%=$(OBJROOT)/$(EXE_PFX)%)
OBJROOT_LIB:= $(PRODUCTS_LIB:%=$(OBJROOT)/$(LIB_PFX)%) OBJROOT_LIB= $(PRODUCTS_LIB:%=$(OBJROOT)/$(LIB_PFX)%)
OBJROOT_DLL:= $(PRODUCTS_DLL:%=$(OBJROOT)/$(DLL_PFX)%) OBJROOT_DLL= $(PRODUCTS_DLL:%=$(OBJROOT)/$(DLL_PFX)%)
OBJROOT_OTHER:= $(PRODUCTS_OTHER:%=$(OBJROOT)/%) OBJROOT_OTHER= $(PRODUCTS_OTHER:%=$(OBJROOT)/%)
OBJPRODUCTS:= $(OBJROOT_EXE) $(OBJROOT_LIB) $(OBJROOT_DLL) $(OBJROOT_OTHER) OBJPRODUCTS= $(OBJROOT_EXE) $(OBJROOT_LIB) $(OBJROOT_DLL) $(OBJROOT_OTHER)
# Check a common mistake with PRODUCTS= not being set or set without extension # Check a common mistake with PRODUCTS= not being set or set without extension
# Even on Linux / Unix, the PRODUCTS variable must end in .exe for executables, # Even on Linux / Unix, the PRODUCTS variable must end in .exe for executables,
@ -69,16 +69,16 @@ $(error Error: Variable PRODUCTS must end in .exe, .lib or .dll)
endif endif
endif endif
LIBNAMES:= $(filter %.lib, $(notdir $(LIBRARIES))) LIBNAMES= $(filter %.lib, $(notdir $(LIBRARIES)))
DLLNAMES:= $(filter %.dll, $(notdir $(LIBRARIES))) DLLNAMES= $(filter %.dll, $(notdir $(LIBRARIES)))
OBJLIBS:= $(LIBNAMES:%.lib=$(OBJROOT)/$(LIB_PFX)%$(LIB_EXT)) OBJLIBS= $(LIBNAMES:%.lib=$(OBJROOT)/$(LIB_PFX)%$(LIB_EXT))
OBJDLLS:= $(DLLNAMES:%.dll=$(OBJROOT)/$(DLL_PFX)%$(DLL_EXT)) OBJDLLS= $(DLLNAMES:%.dll=$(OBJROOT)/$(DLL_PFX)%$(DLL_EXT))
LINK_PATHS:= $(OBJROOT:%=$(LINK_DIR_OPT)%) LINK_PATHS:= $(OBJROOT:%=$(LINK_DIR_OPT)%)
LINK_LIBS:= $(LINK_LIBS) \ LINK_XLIBS= $(LINK_LIBS) \
$(LIBNAMES:%.lib=$(LINK_LIB_OPT)%) \ $(LIBNAMES:%.lib=$(LINK_LIB_OPT)%) \
$(DLLNAMES:%.dll=$(LINK_DLL_OPT)%) $(DLLNAMES:%.dll=$(LINK_DLL_OPT)%)
LINK_INPUTS:= $(OBJECTS) $(OBJLIBS) $(OBJDLLS) LINK_INPUTS= $(OBJECTS) $(OBJLIBS) $(OBJDLLS)
LINK_CMDLINE:= $(OBJECTS) $(LINK_PATHS) $(LINK_LIBS) LINK_CMDLINE= $(OBJECTS) $(LINK_PATHS) $(LINK_XLIBS)
ifneq ($(words $(LINK_INPUTS)),0) ifneq ($(words $(LINK_INPUTS)),0)
LINK_WINPUTS= $(patsubst %,"%", $(shell cygpath -aw $(LINK_INPUTS))) LINK_WINPUTS= $(patsubst %,"%", $(shell cygpath -aw $(LINK_INPUTS)))
endif endif
@ -366,11 +366,12 @@ $(OBJDIR)/%.cpp$(OBJ_EXT): %.cpp $(OBJ_DEPS)
$(OBJDIR)/%.s$(OBJ_EXT): %.s $(OBJ_DEPS) $(OBJDIR)/%.s$(OBJ_EXT): %.s $(OBJ_DEPS)
$(PRINT_COMPILE) $(MAKE_AS) $(PRINT_COMPILE) $(MAKE_AS)
$(OBJROOT_LIB): $(LINK_INPUTS) $(MAKEFILE_DEPS) .SECONDEXPANSION:
$(OBJROOT_LIB): $(LINK_INPUTS) $$(LINK_INPUTS) $(MAKEFILE_DEPS)
$(PRINT_BUILD) $(MAKE_LIB) $(PRINT_BUILD) $(MAKE_LIB)
$(OBJROOT_DLL): $(LINK_INPUTS) $(MAKEFILE_DEPS) $(OBJROOT_DLL): $(LINK_INPUTS) $$(LINK_INPUTS) $(MAKEFILE_DEPS)
$(PRINT_BUILD) $(MAKE_DLL) $(PRINT_BUILD) $(MAKE_DLL)
$(OBJROOT_EXE): $(LINK_INPUTS) $(MAKEFILE_DEPS) $(OBJROOT_EXE): $(LINK_INPUTS) $$(LINK_INPUTS) $(MAKEFILE_DEPS)
$(PRINT_BUILD) $(MAKE_EXE) $(PRINT_BUILD) $(MAKE_EXE)
endif endif