diff --git a/configure/RULES.Db b/configure/RULES.Db index 6a01ad19b..d14666187 100644 --- a/configure/RULES.Db +++ b/configure/RULES.Db @@ -46,6 +46,21 @@ DBD += $(foreach type, $(CROSS_TARGET_OS_TYPES), $(DBD_$(type))) # DBD_RTEMS += abcRTEMS.dbd # DBD_solaris += abcSolaris.dbd # +# --------------------------------------------------- +# DBD concatination files + +COMMON_DBDCATS += $(addprefix $(COMMON_DIR)/,$(DBDCAT)) +DBDCAT_SOURCES += $(foreach file, $($*_DBD), $(DBDCAT_SOURCE) ) +DBDCAT_SOURCE = $(firstword $(wildcard $(file) $(foreach dir, \ + $(DBD_SEARCH_DIRS),$(addsuffix /$(file),$(dir)))) \ + $(COMMON_DIR)/$(file)) + +DBDCAT_COMMAND = $(if $(DBDCAT_SOURCES),\ + $(CAT) $(DBDCAT_SOURCES) > $(notdir $@),\ + @echo "No input files for $(notdir $@)") + +INSTALL_DBDS += $(addprefix $(INSTALL_DBD)/,$(DBDCAT)) + # --------------------------------------------------- DBDINC_NAME = $(patsubst %.h,%,$(patsubst %.dbd,%,$(DBDINC))) @@ -173,7 +188,7 @@ endif inc : $(COMMON_INC) $(INSTALL_INC) -build : $(COMMON_DBDS) $(COMMON_DBS) \ +build : $(COMMON_DBDS) $(COMMON_DBS) $(COMMON_DBDCATS) \ $(INSTALL_DBDS) $(INSTALL_DBS) \ $(DBDDEPENDS_FILES) $(TARGETS) \ $(INSTALL_DB_INSTALLS) $(INSTALL_DBD_INSTALLS) @@ -368,8 +383,20 @@ $(COMMON_DIR)/%.dbd: ../%Include.dbd $(DBEXPAND) $(DBDFLAGS) -o $(notdir $@) $< @$(MV) $(notdir $@) $@ +# Make DBDCAT file x depend on x_DBD source files +define DBDCAT_template +$$(COMMON_DIR)/$(1).dbd : ../Makefile $$(foreach file, $$($(1)_DBD),$$(DBDCAT_SOURCE) ) +endef +$(foreach name,$(subst .dbd,,$(DBDCAT)), $(eval $(call DBDCAT_template,$(name)))) + +$(COMMON_DBDCATS):$(COMMON_DIR)/%.dbd: + $(ECHO) "Creating dbd file $(notdir $@)" + @$(RM) $(notdir $@) + $(DBDCAT_COMMAND) + @$(MV) $(notdir $@) $@ + $(COMMON_DIR)/%.dbd: - $(ECHO) "Creating dbd file $(notdir $<)" + $(ECHO) "Creating dbd file $(notdir $@)" @$(RM) $(notdir $@) $(DBEXPAND) $(DBDFLAGS) -o $(notdir $@) $($*_DBD) @$(MV) $(notdir $@) $@ diff --git a/configure/os/CONFIG.UnixCommon.Common b/configure/os/CONFIG.UnixCommon.Common index 13044f914..6f3e81bc1 100644 --- a/configure/os/CONFIG.UnixCommon.Common +++ b/configure/os/CONFIG.UnixCommon.Common @@ -13,6 +13,7 @@ MV = mv RM = rm -f MKDIR = mkdir RMDIR = rm -rf +CAT = cat # Allow site overrides -include $(CONFIG)/os/CONFIG_SITE.UnixCommon.Common diff --git a/configure/os/CONFIG.win32-x86-mingw.Common b/configure/os/CONFIG.win32-x86-mingw.Common index 74a97c0b1..35b62ce72 100644 --- a/configure/os/CONFIG.win32-x86-mingw.Common +++ b/configure/os/CONFIG.win32-x86-mingw.Common @@ -19,6 +19,7 @@ RM = $(PERL) -MExtUtils::Command -e rm_f MKDIR = $(PERL) -MExtUtils::Command -e mkpath RMDIR = $(PERL) -MExtUtils::Command -e rm_rf NOP = $(PERL) -e '' +CAT = $(PERL) -MExtUtils::Command -e cat WIND_HOST_TYPE = x86-win32 OSITHREAD_USE_DEFAULT_STACK = NO diff --git a/configure/os/CONFIG.win32-x86.Common b/configure/os/CONFIG.win32-x86.Common index b30c9a69f..42937222d 100644 --- a/configure/os/CONFIG.win32-x86.Common +++ b/configure/os/CONFIG.win32-x86.Common @@ -16,6 +16,7 @@ RM = $(PERL) -MExtUtils::Command -e rm_f MKDIR = $(PERL) -MExtUtils::Command -e mkpath RMDIR = $(PERL) -MExtUtils::Command -e rm_rf NOP = $(PERL) -e '' +CAT = $(PERL) -MExtUtils::Command -e cat WIND_HOST_TYPE = x86-win32 OSITHREAD_USE_DEFAULT_STACK = NO diff --git a/documentation/RELEASE_NOTES.html b/documentation/RELEASE_NOTES.html index 4dcbf7c96..680641904 100644 --- a/documentation/RELEASE_NOTES.html +++ b/documentation/RELEASE_NOTES.html @@ -15,6 +15,28 @@ EPICS Base 3.15.0.x releases are not intended for use in production systems.

Changes between 3.15.0.1 and 3.15.0.2

+

Concatenated database definition files

+ +

A series of database definition (dbd) files can now be concatenated during +the build process into a newly-created dbd file with result being installed into +$(INSTALL_LOCATION)/dbd without expanding it.

+ +

The following lines in an EPICS Makefile will create a file name.dbd in the +O.Common build directory containing the contents of file1.dbd followed by +file2.dbd then file3.dbd. The new file will then be installed into +$(INSTALL_LOCATION)/dbd without expanding any of its include statements.

+ +
+DBDCAT += name.dbd
+name_DBD += file1.dbd file2.dbd file3.dbd
+
+ +

The source files file1.dbd, file2.dbd and file3.dbd may be created by the +current Makefile, be located in the parent directory or any other directory in +the SRC_DIRS list, be specified by their full pathname, exist in the install dbd +directory, or be found in any dbd directory linked from the application's +RELEASE files.

+

Posix: Drop SCHED_FIFO before exec() in child process

If Base is compiled with USE_POSIX_THREAD_PRIORITY_SCHEDULING = YES diff --git a/src/tools/dbdExpand.pl b/src/tools/dbdExpand.pl index c9e10aa51..68e3a0802 100755 --- a/src/tools/dbdExpand.pl +++ b/src/tools/dbdExpand.pl @@ -34,6 +34,8 @@ if ($opt_D) { $dep = "\$(COMMON_DIR)/$dep"; } +die "dbdExpand.pl: No input files for $opt_o\n" if !@ARGV; + while (@ARGV) { my $file = shift @ARGV; eval {