Make it possible to have config-dependant SOURCES
This commit is contained in:
parent
e8f7ccd2d4
commit
0ab036c3db
39
rules.mk
39
rules.mk
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue