configure: ensure output file only updated on success

eg. After running "false > $@", the output file modification
time will be updated.  So a despite failure, a repeated
"make" will not re-run.

Handle this by accumulating output to "$@.tmp", then
move to $@ as a final step.
This commit is contained in:
Michael Davidsaver authored and mdavidsaver committed 2026-02-27 16:17:53 +00:00
1 parent 0c91c55348
commit d44ddf441a
9 files changed
+65 -38

No files matched your search

+4 -1
View File
@@ -337,7 +337,10 @@ COMPILE.cpp = $(CCC) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES)
#--------------------------------------------------
# C preprocessor command
PREPROCESS.cpp = $(CPP) $(CPPFLAGS) $(INCLUDES) $< > $@
define PREPROCESS.cpp
$(CPP) $(CPPFLAGS) $(INCLUDES) $< > $@.stdout
$(MV) $@.stdout $@
endef
#--------------------------------------------------
# genVersion header defaults
+43 -25
View File
@@ -124,7 +124,10 @@ ACF_CPPFLAGS = $(ACF_CPPFLAGS_$(GNU))
ACF_INCLUDES = -I. $(TARGET_INCLUDES) $(USR_INCLUDES)\
$(SRC_INCLUDES) -I$(INSTALL_DB)
ACFDEPENDS_CMD = $(MKMF) -m $@ $(ACF_INCLUDES) $(COMMONDEP_TARGET) $<
ACF_CMD = $(CPP) $(ACF_CPPFLAGS) $(ACF_INCLUDES) $< > $@
define ACF_CMD
$(CPP) $(ACF_CPPFLAGS) $(ACF_INCLUDES) $< > $@.stdout
$(MV) $@.stdout $@
endef
#---------------------------------------------------------------
# dependencies
@@ -219,68 +222,82 @@ realclean: clean
%Record.h$(DEP): $(COMMON_DIR)/%Record.dbd $(DBDTORECTYPEH_dep)
@$(RM) $@
@$(DBTORECORDTYPEH) -D $(DBDFLAGS) -o $(COMMONDEP_TARGET) $< > $@
@echo "$(COMMONDEP_TARGET): ../Makefile" >> $@
@$(DBTORECORDTYPEH) -D $(DBDFLAGS) -o $(COMMONDEP_TARGET) $< > $@.stdout
@echo "$(COMMONDEP_TARGET): ../Makefile" >> $@.stdout
@$(MV) $@.stdout $@
%Record.h$(DEP): %Record.dbd $(DBDTORECTYPEH_dep)
@$(RM) $@
@$(DBTORECORDTYPEH) -D $(DBDFLAGS) -o $(COMMONDEP_TARGET) $< > $@
@echo "$(COMMONDEP_TARGET): ../Makefile" >> $@
@$(DBTORECORDTYPEH) -D $(DBDFLAGS) -o $(COMMONDEP_TARGET) $< > $@.stdout
@echo "$(COMMONDEP_TARGET): ../Makefile" >> $@.stdout
@$(MV) $@.stdout $@
%Record.h$(DEP): ../%Record.dbd $(DBDTORECTYPEH_dep)
@$(RM) $@
@$(DBTORECORDTYPEH) -D $(DBDFLAGS) -o $(COMMONDEP_TARGET) $< > $@
@echo "$(COMMONDEP_TARGET): ../Makefile" >> $@
@$(DBTORECORDTYPEH) -D $(DBDFLAGS) -o $(COMMONDEP_TARGET) $< > $@.stdout
@echo "$(COMMONDEP_TARGET): ../Makefile" >> $@.stdout
@$(MV) $@.stdout $@
menu%.h$(DEP): $(COMMON_DIR)/menu%.dbd $(DBDTOMENUH_dep)
@$(RM) $@
@$(DBTOMENUH) -D $(DBDFLAGS) -o $(COMMONDEP_TARGET) $< > $@
@echo "$(COMMONDEP_TARGET): ../Makefile" >> $@
@$(DBTOMENUH) -D $(DBDFLAGS) -o $(COMMONDEP_TARGET) $< > $@.stdout
@echo "$(COMMONDEP_TARGET): ../Makefile" >> $@.stdout
@$(MV) $@.stdout $@
menu%.h$(DEP): menu%.dbd $(DBDTOMENUH_dep)
@$(RM) $@
@$(DBTOMENUH) -D $(DBDFLAGS) -o $(COMMONDEP_TARGET) $< > $@
@echo "$(COMMONDEP_TARGET): ../Makefile" >> $@
@$(DBTOMENUH) -D $(DBDFLAGS) -o $(COMMONDEP_TARGET) $< > $@.stdout
@echo "$(COMMONDEP_TARGET): ../Makefile" >> $@.stdout
@$(MV) $@.stdout $@
menu%.h$(DEP): ../menu%.dbd $(DBDTOMENUH_dep)
@$(RM) $@
@$(DBTOMENUH) -D $(DBDFLAGS) -o $(COMMONDEP_TARGET) $< > $@
@echo "$(COMMONDEP_TARGET): ../Makefile" >> $@
@$(DBTOMENUH) -D $(DBDFLAGS) -o $(COMMONDEP_TARGET) $< > $@.stdout
@echo "$(COMMONDEP_TARGET): ../Makefile" >> $@.stdout
@$(MV) $@.stdout $@
%.dbd$(DEP): %.dbd.pod
@$(RM) $@
@echo "$(COMMONDEP_TARGET): ../Makefile" > $@
@echo "$(COMMONDEP_TARGET): ../Makefile" > $@.stdout
@$(MV) $@.stdout $@
%.dbd$(DEP): %Include.dbd
@$(RM) $@
@$(DBEXPAND) -D $(DBDFLAGS) -o $(COMMONDEP_TARGET) $< > $@
@echo "$(COMMONDEP_TARGET): ../Makefile" >> $@
@$(DBEXPAND) -D $(DBDFLAGS) -o $(COMMONDEP_TARGET) $< > $@.stdout
@echo "$(COMMONDEP_TARGET): ../Makefile" >> $@.stdout
@$(MV) $@.stdout $@
%.dbd$(DEP): ../%Include.dbd
@$(RM) $@
@$(DBEXPAND) -D $(DBDFLAGS) -o $(COMMONDEP_TARGET) $< > $@
@echo "$(COMMONDEP_TARGET): ../Makefile" >> $@
@$(DBEXPAND) -D $(DBDFLAGS) -o $(COMMONDEP_TARGET) $< > $@.stdout
@echo "$(COMMONDEP_TARGET): ../Makefile" >> $@.stdout
@$(MV) $@.stdout $@
%.dbd$(DEP): $($*_DBD)
@$(RM) $@
@$(DBEXPAND) -D $(DBDFLAGS) -o $(COMMONDEP_TARGET) $($*_DBD) > $@
@echo "$(COMMONDEP_TARGET): ../Makefile" >> $@
@$(DBEXPAND) -D $(DBDFLAGS) -o $(COMMONDEP_TARGET) $($*_DBD) > $@.stdout
@echo "$(COMMONDEP_TARGET): ../Makefile" >> $@.stdout
@$(MV) $@.stdout $@
%.db$(DEP): %$(SUBST_SUFFIX)
@$(RM) $@
$(MSI3_15) -D $(DBFLAGS) -o $(COMMONDEP_TARGET) -S$< $(TEMPLATE_FILENAME) > $@
$(MSI3_15) -D $(DBFLAGS) -o $(COMMONDEP_TARGET) -S$< $(TEMPLATE_FILENAME) > $@.stdout
@$(MV) $@.stdout $@
%.db$(DEP): ../%$(SUBST_SUFFIX)
@$(RM) $@
$(MSI3_15) -D $(DBFLAGS) -o $(COMMONDEP_TARGET) -S$< $(TEMPLATE_FILENAME) > $@
$(MSI3_15) -D $(DBFLAGS) -o $(COMMONDEP_TARGET) -S$< $(TEMPLATE_FILENAME) > $@.stdout
@$(MV) $@.stdout $@
%.db$(DEP): %$(TEMPL_SUFFIX)
@$(RM) $@
$(MSI3_15) -D $(DBFLAGS) -o $(COMMONDEP_TARGET) $< > $@
$(MSI3_15) -D $(DBFLAGS) -o $(COMMONDEP_TARGET) $< > $@.stdout
@$(MV) $@.stdout $@
%.db$(DEP): ../%$(TEMPL_SUFFIX)
@$(RM) $@
$(MSI3_15) -D $(DBFLAGS) -o $(COMMONDEP_TARGET) $< > $@
$(MSI3_15) -D $(DBFLAGS) -o $(COMMONDEP_TARGET) $< > $@.stdout
@$(MV) $@.stdout $@
%.acf$(DEP): %.acs
@$(RM) $@
@@ -483,8 +500,9 @@ $(COMMON_DIR)/%.html: ../%.pl $(PODTOHTML_dep)
$(COMMON_DIR)/%.db: $(COMMON_DIR)/%.edf
$(E2DB) $(E2DB_SYSFLAGS) $(E2DB_FLAGS) -n $*.VAR $<
@$(REPLACEVAR) < $*.VAR > $@
@$(REPLACEVAR) < $*.VAR > $@.stdout
@$(RM) $*.VAR
@$(MV) $@.stdout $@
$(COMMON_DIR)/%.db: %$(SUBST_SUFFIX)
$(ECHO) "Inflating database from $< $(TEMPLATE_FILENAME)"
+4 -3
View File
@@ -338,12 +338,13 @@ $(INSTALL_LIB):
# C++ munching for VxWorks
%.nm: %$(EXE)
@$(RM) $@
$(NM) $< > $@
$(NM) $< > $@.stdout
$(MV) $@.stdout $@
%.nm: %$(OBJ)
@$(RM) $@
$(NM) $< > $@
$(NM) $< > $@.stdout
$(MV) $@.stdout $@
%_ctdt.c: %.nm $(TOOLS)/munch.pl
@$(RM) $@
+2 -1
View File
@@ -43,7 +43,8 @@ $(RELEASE_LOCAL): Makefile $(CONFIG)/CONFIG_SITE \
$(wildcard $(CONFIG)/CONFIG_SITE.local)
$(ECHO) "Creating $@ with"
$(ECHO) " $(PARENT_MODULE) = $(INSTALL_ABSOLUTE)"
@echo $(PARENT_MODULE) = $(INSTALL_ABSOLUTE)> $@
@echo "$(PARENT_MODULE) = $(INSTALL_ABSOLUTE)" > $@.stdout
@$(MV) $@.stdout $@
.PHONY: RELEASE.host
+4 -1
View File
@@ -164,7 +164,10 @@ COMPILE.ctdt = $(CC) -c $(CPPFLAGS) $(CFLAGS_ctdt) $(INCLUDES) $(SOURCE_FLAG)
#--------------------------------------------------
# C preprocessor command
VXCPPFLAGS = $(filter-out $(OP_SYS_INCLUDE_CPPFLAGS),$(CPPFLAGS))
PREPROCESS.cpp = $(CPP) $(VXCPPFLAGS) $(INCLUDES) $< > $@
define PREPROCESS.cpp
$(CPP) $(VXCPPFLAGS) $(INCLUDES) $< > $@.stdout
$(MV) $@.stdout $@
endef
#--------------------------------------------------
# Use LEDLIB for command-line editing
+2 -2
View File
@@ -15,8 +15,8 @@ THESE_RULES := $(IOCDIR)/db/RULES
dbCommon.h$(DEP): $(COMMON_DIR)/dbCommonRecord.dbd $(THESE_RULES) \
$(DBDTORECTYPEH_dep)
@$(RM) $@
@$(DBTORECORDTYPEH) -D -I ../db -I $(COMMON_DIR) -o $(COMMONDEP_TARGET) $< > $@
@$(DBTORECORDTYPEH) -D -I ../db -I $(COMMON_DIR) -o $(COMMONDEP_TARGET) $< > $@.stdout
$(MV) $@.stdout $@
$(COMMON_DIR)/dbCommonRecord.html: ../db/dbCommon.dbd.pod
+2 -2
View File
@@ -8,8 +8,8 @@
# This is a Makefile fragment, see src/ioc/Makefile.
stdRecords.dbd$(DEP): $(STDDIR)/rec/Makefile $(STDDIR)/rec/RULES
@$(RM) $@
@echo "$(COMMON_DIR)/stdRecords.dbd:" > $@
@echo "$(COMMON_DIR)/stdRecords.dbd:" > $@.stdout
$(MV) $@.stdout $@
$(COMMON_DIR)/stdRecords.dbd: $(STDDIR)/rec/Makefile $(STDDIR)/rec/RULES
+2 -2
View File
@@ -19,5 +19,5 @@ softMain$(DEP): epicsInstallDir.h
epicsInstallDir.h: $(TOP)/configure/CONFIG_SITE*
$(ECHO) "FINAL_LOCATION=$(FINAL_LOCATION)"
$(PERL) $(STDDIR)/softIoc/makeInstallDir.pl "$(FINAL_LOCATION)" > $@
$(PERL) $(STDDIR)/softIoc/makeInstallDir.pl "$(FINAL_LOCATION)" > $@.stdout
$(MV) $@.stdout $@
+2 -1
View File
@@ -364,4 +364,5 @@ epicsLoadTest$(DEP): epicsInstallDir.h
# use INSTALL_LOCATION instead of FINAL_LOCATION since test executables are not installed.
epicsInstallDir.h: $(TOP)/configure/CONFIG_SITE*
$(ECHO) "INSTALL_LOCATION=$(INSTALL_LOCATION)"
$(PERL) $(TOP)/modules/database/src/std/softIoc/makeInstallDir.pl "$(INSTALL_LOCATION)" > $@
$(PERL) $(TOP)/modules/database/src/std/softIoc/makeInstallDir.pl "$(INSTALL_LOCATION)" > $@.stdout
$(MV) $@.stdout $@