Parallel build rule fixes
This commit is contained in:
@@ -272,11 +272,11 @@ INCLUDES = -I. $(SRC_INCLUDES) $(INSTALL_INCLUDES) $(RELEASE_INCLUDES)\
|
||||
|
||||
CFLAGS = $($(BUILD_CLASS)_CFLAGS) $(POSIX_CFLAGS) $(OPT_CFLAGS) $(DEBUG_CFLAGS)\
|
||||
$(PIPE_CFLAGS) $(WARN_CFLAGS) $(TARGET_CFLAGS) $(USR_CFLAGS) $(ARCH_DEP_CFLAGS)\
|
||||
$(CODE_CFLAGS) $(STATIC_CFLAGS) $(OP_SYS_CFLAGS) $(LIBRARY_SRC_CFLAGS) $(HDEPENDS_CFLAGS)
|
||||
$(CODE_CFLAGS) $(STATIC_CFLAGS) $(OP_SYS_CFLAGS) $(LIBRARY_SRC_CFLAGS)
|
||||
|
||||
CXXFLAGS = $($(BUILD_CLASS)_CXXFLAGS) $(POSIX_CXXFLAGS) $(OPT_CXXFLAGS) $(DEBUG_CXXFLAGS)\
|
||||
$(PIPE_CFLAGS) $(WARN_CXXFLAGS) $(TARGET_CXXFLAGS) $(USR_CXXFLAGS) $(ARCH_DEP_CXXFLAGS)\
|
||||
$(CODE_CXXFLAGS) $(STATIC_CXXCFLAGS) $(OP_SYS_CXXFLAGS) $(LIBRARY_SRC_CFLAGS) $(HDEPENDS_CFLAGS)
|
||||
$(CODE_CXXFLAGS) $(STATIC_CXXCFLAGS) $(OP_SYS_CXXFLAGS) $(LIBRARY_SRC_CFLAGS)
|
||||
|
||||
LDFLAGS = $(OPT_LDFLAGS) $(TARGET_LDFLAGS) $(USR_LDFLAGS) $(POSIX_LDFLAGS) \
|
||||
$(ARCH_DEP_LDFLAGS) $(DEBUG_LDFLAGS) $(OP_SYS_LDFLAGS) $($(BUILD_CLASS)_LDFLAGS)\
|
||||
@@ -326,15 +326,16 @@ HDEPENDS_METHOD = CMD
|
||||
|
||||
HDEPENDS_INCLUDES = $(subst -I,,$(INCLUDES))
|
||||
HDEPENDSFLAGS = -m $*$(DEP) $(HDEPENDS_INCLUDES) $@ $<
|
||||
HDEPENDSCMD = -$(MKMF) $(HDEPENDS_FLAGS) $(HDEPENDSFLAGS)
|
||||
|
||||
HDEPENDS_CMD_NO = $(ECHO) ""
|
||||
HDEPENDS_CMD_YES = $(if $(filter CMD,$(HDEPENDS_METHOD)),$(HDEPENDSCMD),$(HDEPENDS_CMD_NO))
|
||||
HDEPENDS_CMD = $(HDEPENDS_CMD_$(HDEPENDS))
|
||||
HDEPENDS_CMD_YES = $(MKMF) $(HDEPENDS_FLAGS) $(HDEPENDSFLAGS)
|
||||
|
||||
HDEPENDSCFLAGS = -MMD
|
||||
HDEPENDS_CFLAGS_YES = $(if $(filter CFLAGS,$(HDEPENDS_METHOD)),$(HDEPENDSCFLAGS))
|
||||
HDEPENDS_CFLAGS = $(HDEPENDS_CFLAGS_$(HDEPENDS))
|
||||
HDEPENDSCFLAGS = -MM > $*$(DEP)
|
||||
HDEPSUFFIX = $(if $(filter .c,$(suffix $<)),.c,.cpp)
|
||||
HDEPENDS_CFLAGS_NO = $(ECHO) ""
|
||||
HDEPENDS_CFLAGS_YES = $(COMPILE$(HDEPSUFFIX)) $(HDEPENDSCFLAGS) $<
|
||||
|
||||
HDEPENDS_CMD = $(HDEPENDS_$(HDEPENDS_METHOD)_$(HDEPENDS))
|
||||
|
||||
#--------------------------------------------------
|
||||
# depends definition
|
||||
@@ -342,7 +343,7 @@ HDEPENDS_CFLAGS = $(HDEPENDS_CFLAGS_$(HDEPENDS))
|
||||
TARGET_SRCS = $(foreach name, $(TESTPROD) $(PROD) $(TESTLIBRARY) $(LIBRARY) $(LOADABLE_LIBRARY), $($(name)_SRCS))
|
||||
SRC_FILES = $(LIB_SRCS) $(LIBSRCS) $(SRCS) $(USR_SRCS) $(PROD_SRCS) $(TARGET_SRCS)
|
||||
HDEPENDS_FILES_YES = $(addsuffix $(DEP),$(notdir $(basename $(SRC_FILES))))
|
||||
HDEPENDS_FILES = $(if $(filter NO,$(HDEPENDS)),,$(HDEPENDS_FILES_YES))
|
||||
HDEPENDS_FILES = $(HDEPENDS_FILES_$(HDEPENDS))
|
||||
|
||||
#---------------------------------------------------------------
|
||||
# Names of installed items
|
||||
|
||||
@@ -100,7 +100,7 @@ ACF_CPPFLAGS = $(ACF_CPPFLAGS_$(GNU))
|
||||
|
||||
ACF_INCLUDES = -I. $(TARGET_INCLUDES) $(USR_INCLUDES)\
|
||||
$(SRC_INCLUDES) -I$(INSTALL_DB)
|
||||
ACFDEPENDS_CMD = -$(MKMF) -m $(notdir $@)$(DEP) $(subst -I,,$(ACF_INCLUDES)) $@ $<
|
||||
ACFDEPENDS_CMD = $(MKMF) -m $@ $(subst -I,,$(ACF_INCLUDES)) $(COMMON_DIR)/$(basename $@) $<
|
||||
ACF_CMD = $(CPP) $(ACF_CPPFLAGS) $(ACF_INCLUDES) $< > $@
|
||||
|
||||
##################################################### dependancies
|
||||
@@ -110,10 +110,11 @@ COMMON_DBDINC += $(addprefix $(COMMON_DIR)/,$(HINC))
|
||||
|
||||
DBDDEPENDS_FILES += $(addsuffix $(DEP),$(HINC) \
|
||||
$(patsubst $(COMMON_DIR)/%,%,$(COMMON_DBS)) \
|
||||
$(patsubst $(COMMON_DIR)/%,%,$(COMMON_DBDS)))
|
||||
$(patsubst $(COMMON_DIR)/%,%, \
|
||||
$(filter-out $(COMMON_DIR)/bpt%.dbd,$(COMMON_DBDS))))
|
||||
|
||||
DBDDEPENDS_FLAGS = $(subst -I,,$(filter-out -S%,$(DBDFLAGS)))
|
||||
DBDDEPENDS_CMD = -$(MKMF) -m $(notdir $@)$(DEP) $(DBDDEPENDS_FLAGS) $@ $<
|
||||
DBDDEPENDS_CMD = $(MKMF) -m $@ $(DBDDEPENDS_FLAGS) $(COMMON_DIR)/$(basename $@) $<
|
||||
|
||||
MAKEDBDEPENDS = $(PERL) $(TOOLS)/makeDbDepends.pl
|
||||
|
||||
@@ -162,8 +163,6 @@ ifneq (,$(strip $(DBDDEPENDS_FILES)))
|
||||
-include $(DBDDEPENDS_FILES)
|
||||
endif
|
||||
|
||||
$(DBDDEPENDS_FILES):
|
||||
|
||||
##################################################### build dependancies, clean rule
|
||||
|
||||
inc : $(COMMON_INC) $(INSTALL_INC)
|
||||
@@ -184,6 +183,45 @@ db_clean :
|
||||
|
||||
realclean: clean
|
||||
|
||||
##################################################### Dependency files
|
||||
|
||||
%Record.h$(DEP): $(COMMON_DIR)/%Record.dbd
|
||||
@$(RM) $@
|
||||
@$(DBDDEPENDS_CMD)
|
||||
|
||||
%Record.h$(DEP): %Record.dbd
|
||||
@$(RM) $@
|
||||
@$(DBDDEPENDS_CMD)
|
||||
|
||||
menu%.h$(DEP): $(COMMON_DIR)/menu%.dbd
|
||||
@$(RM) $@
|
||||
@$(DBDDEPENDS_CMD)
|
||||
|
||||
menu%.h$(DEP): menu%.dbd
|
||||
@$(RM) $@
|
||||
@$(DBDDEPENDS_CMD)
|
||||
|
||||
%.dbd$(DEP): $(COMMON_DIR)/%Include.dbd
|
||||
@$(RM) $@
|
||||
@$(DBDDEPENDS_CMD)
|
||||
|
||||
%.dbd$(DEP): %Include.dbd
|
||||
@$(RM) $@
|
||||
@$(DBDDEPENDS_CMD)
|
||||
|
||||
%.db$(RAW)$(DEP): %.substitutions
|
||||
@$(RM) $@
|
||||
@$(MAKEDBDEPENDS) $(COMMON_DIR)/$(basename $@) $< $(TEMPLATE_FILENAME) > $@
|
||||
@echo "$(COMMON_DIR)/$(basename $@): $(TEMPLATE_FILENAME)" >> $@
|
||||
|
||||
%.db$(RAW)$(DEP): %.template
|
||||
@$(RM) $@
|
||||
@$(MAKEDBDEPENDS) $(COMMON_DIR)/$(basename $@) $^ > $@
|
||||
|
||||
%.acf$(DEP): %.acs
|
||||
@$(RM) $@
|
||||
@$(ACFDEPENDS_CMD)
|
||||
|
||||
##################################################### CapFast filter
|
||||
|
||||
$(COMMON_DIR)/%.edf: ../%.sch $(DEPSCHS)
|
||||
@@ -225,33 +263,21 @@ $(INSTALL_DB)/%.template: %.template
|
||||
##################################################### INC files
|
||||
|
||||
$(COMMON_DIR)/%Record.h: $(COMMON_DIR)/%Record.dbd
|
||||
@$(RM) $(notdir $@)$(DEP)
|
||||
@$(DBDDEPENDS_CMD)
|
||||
echo "$< : ../Makefile" >> $(notdir $@)$(DEP)
|
||||
@$(RM) $(notdir $@)
|
||||
$(DBTORECORDTYPEH) $(DBDFLAGS) $< $(notdir $@)
|
||||
@$(MV) $(notdir $@) $@
|
||||
|
||||
$(COMMON_DIR)/%Record.h: %Record.dbd
|
||||
@$(RM) $(notdir $@)$(DEP)
|
||||
@$(DBDDEPENDS_CMD)
|
||||
echo "$< : ../Makefile" >> $(notdir $@)$(DEP)
|
||||
@$(RM) $(notdir $@)
|
||||
$(DBTORECORDTYPEH) $(DBDFLAGS) $< $(notdir $@)
|
||||
@$(MV) $(notdir $@) $@
|
||||
|
||||
$(COMMON_DIR)/menu%.h: $(COMMON_DIR)/menu%.dbd
|
||||
@$(RM) $(notdir $@)$(DEP)
|
||||
@$(DBDDEPENDS_CMD)
|
||||
echo "$< : ../Makefile" >> $(notdir $@)$(DEP)
|
||||
@$(RM) $(notdir $@)
|
||||
$(DBTOMENUH) $(DBDFLAGS) $< $(notdir $@)
|
||||
@$(MV) $(notdir $@) $@
|
||||
|
||||
$(COMMON_DIR)/menu%.h: menu%.dbd
|
||||
@$(RM) $(notdir $@)$(DEP)
|
||||
@$(DBDDEPENDS_CMD)
|
||||
echo "$< : ../Makefile" >> $(notdir $@)$(DEP)
|
||||
@$(RM) $(notdir $@)
|
||||
$(DBTOMENUH) $(DBDFLAGS) $< $(notdir $@)
|
||||
@$(MV) $(notdir $@) $@
|
||||
@@ -261,22 +287,17 @@ $(COMMON_DIR)/menu%.h: menu%.dbd
|
||||
##################################################### DBD files
|
||||
|
||||
$(COMMON_DIR)/bpt%.dbd: bpt%.data
|
||||
@$(RM) $(notdir $@)
|
||||
$(MAKEBPT) $< $(notdir $@)
|
||||
@$(MV) $(notdir $@) $@
|
||||
|
||||
$(COMMON_DIR)/%.dbd: $(COMMON_DIR)/%Include.dbd
|
||||
@$(RM) $(notdir $@)$(DEP)
|
||||
@$(DBDDEPENDS_CMD)
|
||||
echo "$< : ../Makefile" >> $(notdir $@)$(DEP)
|
||||
$(ECHO) "Expanding dbd"
|
||||
@$(RM) $(notdir $@)
|
||||
@$(DBEXPAND) $(DBDFLAGS) -o $(notdir $@) $<
|
||||
$(DBEXPAND) $(DBDFLAGS) -o $(notdir $@) $<
|
||||
@$(MV) $(notdir $@) $@
|
||||
|
||||
$(COMMON_DIR)/%.dbd: %Include.dbd
|
||||
@$(RM) $(notdir $@)$(DEP)
|
||||
@$(DBDDEPENDS_CMD)
|
||||
echo "$< : ../Makefile" >> $(notdir $@)$(DEP)
|
||||
$(ECHO) "Expanding dbd"
|
||||
@$(RM) $(notdir $@)
|
||||
$(DBEXPAND) $(DBDFLAGS) -o $(notdir $@) $<
|
||||
@@ -312,25 +333,18 @@ $(COMMON_DIR)/%.db$(RAW): $(COMMON_DIR)/%.edf
|
||||
@$(RM) $*.VAR
|
||||
|
||||
$(COMMON_DIR)/%.db$(RAW): %.substitutions
|
||||
@$(RM) $(notdir $@)$(DEP)
|
||||
@$(MAKEDBDEPENDS) $@ $< $(TEMPLATE_FILENAME) >> $(notdir $@)$(DEP)
|
||||
echo "$@ : $(TEMPLATE_FILENAME)" >> $(notdir $@)$(DEP)
|
||||
$(ECHO) "Inflating database from $< $(TEMPLATE_FILENAME)"
|
||||
@$(RM) $@ $*.tmp
|
||||
$(MSI) $(DBFLAGS) -S$< $(TEMPLATE_FILENAME) > $*.tmp
|
||||
$(MV) $*.tmp $@
|
||||
|
||||
$(COMMON_DIR)/%.db$(RAW): %.template
|
||||
@$(RM) $(notdir $@)$(DEP)
|
||||
@$(MAKEDBDEPENDS) $@ $^ >> $(notdir $@)$(DEP)
|
||||
$(ECHO) "Inflating database from $<"
|
||||
@$(RM) $@ $*.tmp
|
||||
$(MSI) $(DBFLAGS) $< > $*.tmp
|
||||
$(MV) $*.tmp $@
|
||||
|
||||
$(COMMON_DIR)/%.acf: %.acs
|
||||
@$(RM) $(notdir $@)$(DEP)
|
||||
@$(ACFDEPENDS_CMD)
|
||||
$(ECHO) "Creating acf file $@"
|
||||
@$(RM) $@
|
||||
$(ACF_CMD)
|
||||
@@ -388,6 +402,5 @@ IOC_INST_TOP := $(firstword $(IOCS_APPL_TOP) \
|
||||
$(MV) $*.tmp $@
|
||||
|
||||
.PRECIOUS: %_registerRecordDeviceDriver.cpp
|
||||
.PRECIOUS: %$(DEP)
|
||||
|
||||
##################################################### END OF FILE
|
||||
|
||||
@@ -76,6 +76,7 @@ all: install
|
||||
-include $(CONFIG)/RULES_JAVA
|
||||
|
||||
ifneq (,$(strip $(HDEPENDS_FILES)))
|
||||
$(filter-out $(wildcard *.d), $(HDEPENDS_FILES)): $(COMMON_INC)
|
||||
-include $(HDEPENDS_FILES)
|
||||
endif
|
||||
|
||||
@@ -196,18 +197,24 @@ $(OBJLIBNAME):%$(OBJ):
|
||||
@$(RM) $@
|
||||
$(COMPILE.ctdt) $<
|
||||
|
||||
%$(OBJ): %.c
|
||||
%$(DEP):%.c
|
||||
@$(HDEPENDS_CMD)
|
||||
|
||||
%$(DEP):%.cc
|
||||
@$(HDEPENDS_CMD)
|
||||
|
||||
%$(DEP):%.cpp
|
||||
@$(HDEPENDS_CMD)
|
||||
|
||||
%$(OBJ): %.c
|
||||
@$(RM) $@
|
||||
$(COMPILE.c) $(call PATH_FILTER,$<) $(COMPILE_FILTER.c)
|
||||
|
||||
%$(OBJ): %.cc
|
||||
@$(HDEPENDS_CMD)
|
||||
@$(RM) $@
|
||||
$(COMPILE.cpp) $(call PATH_FILTER,$<) $(COMPILE_FILTER.cpp)
|
||||
|
||||
%$(OBJ): %.cpp
|
||||
@$(HDEPENDS_CMD)
|
||||
@$(RM) $@
|
||||
$(COMPILE.cpp) $(call PATH_FILTER,$<) $(COMPILE_FILTER.cpp)
|
||||
|
||||
|
||||
@@ -53,13 +53,12 @@ VALID_BUILDS = Ioc
|
||||
# through the following contortions to get the EPICS flags back.
|
||||
CFLAGS = $(CROSS_CFLAGS) $(OPT_CFLAGS) $(DEBUG_CFLAGS)\
|
||||
$(WARN_CFLAGS) $(TARGET_CFLAGS) $(USR_CFLAGS) $(ARCH_DEP_CFLAGS)\
|
||||
$(CODE_CFLAGS) $(STATIC_CFLAGS) $(OP_SYS_CFLAGS) $(LIBRARY_SRC_CFLAGS)\
|
||||
$(HDEPENDS_CFLAGS)
|
||||
$(CODE_CFLAGS) $(STATIC_CFLAGS) $(OP_SYS_CFLAGS) $(LIBRARY_SRC_CFLAGS)
|
||||
|
||||
CXXFLAGS = $(CROSS_CXXFLAGS) $(OPT_CXXFLAGS)\
|
||||
$(DEBUG_CXXFLAGS) $(WARN_CXXFLAGS) $(TARGET_CXXFLAGS) $(USR_CXXFLAGS)\
|
||||
$(ARCH_DEP_CXXFLAGS) $(CODE_CXXFLAGS) $(STATIC_CXXCFLAGS) $(OP_SYS_CXXFLAGS)\
|
||||
$(LIBRARY_SRC_CFLAGS) $(HDEPENDS_CFLAGS)
|
||||
$(LIBRARY_SRC_CFLAGS)
|
||||
|
||||
LDFLAGS = $(OPT_LDFLAGS) $(TARGET_LDFLAGS) $(USR_LDFLAGS) \
|
||||
$(ARCH_DEP_LDFLAGS) $(DEBUG_LDFLAGS) $(OP_SYS_LDFLAGS) $(CROSS_LDFLAGS)\
|
||||
|
||||
@@ -55,14 +55,9 @@ LOADABLE_SHRLIB_LDFLAGS = -G -h $@ -z text
|
||||
|
||||
OP_SYS_LDFLAGS += -z ignore -z combreloc -z lazyload
|
||||
|
||||
# Filter for getting rid of "invalid white space character in directive" compiler warnings
|
||||
# when including headers created during win32 build.
|
||||
#COMPILE_FILTER.c = 2>&1 | $(EPICS_BASE)/configure/tools/filterWarnings.pl
|
||||
#COMPILE_FILTER.cpp = $(COMPILE_FILTER.c)
|
||||
|
||||
# Header dependency file generation command
|
||||
HDEPENDS_METHOD=CMD
|
||||
HDEPENDSCMD = $(if $(filter .c,$(suffix $<)),$(COMPILE.c),$(COMPILE.cpp)) -xM1 $< >$*$(DEP)
|
||||
HDEPENDS_METHOD = CFLAGS
|
||||
HDEPENDSCFLAGS = -xM1 > $*$(DEP)
|
||||
|
||||
#--------------------------------------------------
|
||||
# Allow site overrides
|
||||
|
||||
@@ -15,6 +15,36 @@ EPICS Base 3.15.0.x releases are not intended for use in production systems.</p>
|
||||
<h2 align="center">Changes between 3.14.x and 3.15.0.x</h2>
|
||||
<!-- Insert new items immediately below here ... -->
|
||||
|
||||
|
||||
<h4>Parallel Builds</h4>
|
||||
|
||||
<p>
|
||||
As EPICS sites get computers with more CPUs they report additional bugs in our
|
||||
parallel build rules. Various issues have been fixed by separating out the build
|
||||
rules that generate dependency (.d) files, ensuring that they are constructed at
|
||||
the appropriate time in the build.</p>
|
||||
|
||||
<p>
|
||||
These rule changes can cause additional warning messages to appear when building
|
||||
support modules. Where an application provides its own Makefile rules it may now
|
||||
have to add rules to construct an associated dependency file. In many cases
|
||||
though the change needed is just to replace a dependency for a
|
||||
<tt>target$(OBJ)</tt> with the <tt>target$(DEP)</tt> so this</p>
|
||||
|
||||
<pre>
|
||||
myLib$(OBJ): myLib_lex.c</pre>
|
||||
|
||||
<p>
|
||||
becomes</p>
|
||||
|
||||
<pre>
|
||||
myLib$(DEP): myLib_lex.c</pre>
|
||||
|
||||
<p>
|
||||
To debug build issues assocated with dependency files, use the command <tt>make
|
||||
--debug=m</tt> which tells GNUmake to display information about what it is doing
|
||||
during the first pass when it updates its makefiles.</p>
|
||||
|
||||
<h3>
|
||||
Changes to epicsVersion.h</h3>
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
# This is a Makefile fragment, see src/libCom/Makefile.
|
||||
|
||||
# Extra rule since asLib_lex.c is included by asLib.c
|
||||
asLib$(OBJ): asLib_lex.c
|
||||
asLib$(DEP): asLib_lex.c
|
||||
|
||||
# Ensure that lexer and parser are built before they are needed
|
||||
asLib.c: $(call PATH_FILTER, $(TOOLS)/antelope$(HOSTEXE))
|
||||
|
||||
Reference in New Issue
Block a user