IOCS_APPL_TOP must be absolute path

Fix a recently introduced problem where cdCommands and envParams
had TOP as a relative path (which actually worked by chance).
Also fixed a problem with convertRelease hanging when the -t
argument matched the absolute path to TOP.
This commit is contained in:
Andrew Johnson
2013-07-10 14:13:31 -05:00
parent 98deef5004
commit 75a5f19d2e
5 changed files with 20 additions and 19 deletions

View File

@ -79,8 +79,8 @@ INSTALL_JAVA = $(INSTALL_LOCATION)/javalib
# Directory for OS independant build created files # Directory for OS independant build created files
COMMON_DIR = ../O.Common COMMON_DIR = ../O.Common
# The IOC's path to $(TOP), may be overridden inside the application # IOC's absolute path to $(TOP), may be overridden inside the application
IOCS_APPL_TOP = $(INSTALL_LOCATION) IOCS_APPL_TOP = $(shell $(FULLPATHNAME) $(INSTALL_LOCATION))
#------------------------------------------------------- #-------------------------------------------------------
# Make echo output - suppress echoing if make's '-s' flag is set # Make echo output - suppress echoing if make's '-s' flag is set

View File

@ -368,16 +368,14 @@ $(foreach file, $(DB_INSTALLS), $(eval $(call DB_INSTALLS_template, $(file))))
##################################################### register record,device,driver support ##################################################### register record,device,driver support
IOC_INST_TOP := $(shell $(PERL) $(TOOLS)/fullPathName.pl $(IOCS_APPL_TOP) )
%_registerRecordDeviceDriver.cpp: $(COMMON_DIR)/%.dbd %_registerRecordDeviceDriver.cpp: $(COMMON_DIR)/%.dbd
@$(RM) $@ $*.tmp @$(RM) $@ $*.tmp
$(REGISTERRECORDDEVICEDRIVER) $< $(basename $@) $(IOC_INST_TOP) > $*.tmp $(REGISTERRECORDDEVICEDRIVER) $< $(basename $@) $(IOCS_APPL_TOP) > $*.tmp
$(MV) $*.tmp $@ $(MV) $*.tmp $@
%_registerRecordDeviceDriver.cpp: %.dbd %_registerRecordDeviceDriver.cpp: %.dbd
@$(RM) $@ $*.tmp @$(RM) $@ $*.tmp
$(REGISTERRECORDDEVICEDRIVER) $< $(basename $@) $(IOC_INST_TOP) > $*.tmp $(REGISTERRECORDDEVICEDRIVER) $< $(basename $@) $(IOCS_APPL_TOP) > $*.tmp
$(MV) $*.tmp $@ $(MV) $*.tmp $@
.PRECIOUS: %_registerRecordDeviceDriver.cpp .PRECIOUS: %_registerRecordDeviceDriver.cpp

View File

@ -26,7 +26,7 @@ endif
cdCommands envPaths dllPath.bat: $(wildcard $(TOP)/configure/RELEASE*) \ cdCommands envPaths dllPath.bat: $(wildcard $(TOP)/configure/RELEASE*) \
$(wildcard $(TOP)/configure/CONFIG_SITE*) $(INSTALL_BIN) $(wildcard $(TOP)/configure/CONFIG_SITE*) $(INSTALL_BIN)
$(PERL) $(TOOLS)/convertRelease.pl -a $(ARCH) -t $(IOCS_APPL_TOP) $@ $(CONVERTRELEASE) -a $(ARCH) -t $(IOCS_APPL_TOP) $@
realclean: realclean:
$(RM) cdCommands envPaths dllPath.bat $(RM) cdCommands envPaths dllPath.bat

View File

@ -13,21 +13,19 @@
# Normally CHECK_RELEASE should be set to YES. # Normally CHECK_RELEASE should be set to YES.
# Set CHECK_RELEASE to NO to disable checking completely. # Set CHECK_RELEASE to NO to disable checking completely.
# Set CHECK_RELEASE to WARN to perform consistency checking but # Set CHECK_RELEASE to WARN to perform consistency checking but
# continue building anyway if conflicts are found. # continue building even if conflicts are found.
CHECK_RELEASE = YES CHECK_RELEASE = YES
# Set this when you only want to compile this application # Set this when you only want to compile this application
# for a subset of the cross-compiled target architectures # for a subset of the cross-compiled target architectures
# that Base is built for. # that Base is built for.
#CROSS_COMPILER_TARGET_ARCHS = vxWorks-68040 #CROSS_COMPILER_TARGET_ARCHS = vxWorks-ppc32
# To install files into a location other than $(TOP) define # To install files into a location other than $(TOP) define
# INSTALL_LOCATION here. # INSTALL_LOCATION here.
#INSTALL_LOCATION=</path/name/to/install/top> #INSTALL_LOCATION=</absolute/path/to/install/top>
# Set this when your IOC and the host use different paths # Set this when the IOC and build host use different paths
# to access the application. This will be needed to boot # to the install location. This may be needed to boot from
# from a Microsoft FTP server or with some NFS mounts. # a Microsoft FTP server say, or on some NFS configurations.
# You must rebuild in the iocBoot directory for this to #IOCS_APPL_TOP = </IOC's/absolute/path/to/install/top>
# take effect.
#IOCS_APPL_TOP = </IOC/path/to/application/top>

View File

@ -52,9 +52,14 @@ if ($opt_T) {
if ($opt_t) { if ($opt_t) {
$iocroot = $opt_t; $iocroot = $opt_t;
$root = $top; $root = $top;
while (substr($iocroot, -1, 1) eq substr($root, -1, 1)) { if ($iocroot eq $root) {
chop $iocroot; # Identical paths, -t not needed
chop $root; undef $opt_t;
} else {
while (substr($iocroot, -1, 1) eq substr($root, -1, 1)) {
chop $iocroot;
chop $root;
}
} }
} }