diff --git a/configure/CONFIG_BASE b/configure/CONFIG_BASE index 1270ef468..e416f99db 100644 --- a/configure/CONFIG_BASE +++ b/configure/CONFIG_BASE @@ -62,6 +62,7 @@ DBTORECORDTYPEH = $(PERL) $(TOOLS)/dbdToRecordtypeH.pl DBTOMENUH = $(PERL) $(TOOLS)/dbdToMenuH.pl REGISTERRECORDDEVICEDRIVER = $(PERL) $(TOOLS)/registerRecordDeviceDriver.pl CONVERTRELEASE = $(PERL) $(TOOLS)/convertRelease.pl +FULLPATHNAME = $(PERL) $(TOOLS)/fullPathName.pl #------------------------------------------------------- # tools for installing libraries and products diff --git a/configure/CONFIG_COMMON b/configure/CONFIG_COMMON index f9b63e2d9..194e05ae1 100644 --- a/configure/CONFIG_COMMON +++ b/configure/CONFIG_COMMON @@ -78,8 +78,8 @@ INSTALL_CONFIG = $(INSTALL_LOCATION)/configure # Directory for OS independant build created files COMMON_DIR = ../O.Common -# The IOC's path to $(TOP), may be overridden inside the application -IOCS_APPL_TOP = $(INSTALL_LOCATION) +# IOC's absolute path to $(TOP), may be overridden inside the application +IOCS_APPL_TOP = $(shell $(FULLPATHNAME) $(INSTALL_LOCATION)) #------------------------------------------------------- # Make echo output - suppress echoing if make's '-s' flag is set diff --git a/configure/RULES.Db b/configure/RULES.Db index 60dc2a0f0..a258d5aa9 100644 --- a/configure/RULES.Db +++ b/configure/RULES.Db @@ -467,19 +467,18 @@ $(foreach file, $(DB_INSTALLS), $(eval $(call DB_INSTALLS_template, $(file)))) ##################################################### register record,device,driver support -IOC_INST_TOP := $(shell $(PERL) $(TOOLS)/fullPathName.pl $(IOCS_APPL_TOP) ) %_registerRecordDeviceDriver.cpp: $(COMMON_DIR)/%.dbd @$(RM) $@ - $(REGISTERRECORDDEVICEDRIVER) $(REGRDDFLAGS) -o $@ $< $(basename $@) $(IOC_INST_TOP) + $(REGISTERRECORDDEVICEDRIVER) $(REGRDDFLAGS) -o $@ $< $(basename $@) $(IOCS_APPL_TOP) %_registerRecordDeviceDriver.cpp: %.dbd @$(RM) $@ - $(REGISTERRECORDDEVICEDRIVER) $(REGRDDFLAGS) -o $@ $< $(basename $@) $(IOC_INST_TOP) + $(REGISTERRECORDDEVICEDRIVER) $(REGRDDFLAGS) -o $@ $< $(basename $@) $(IOCS_APPL_TOP) %_registerRecordDeviceDriver.cpp: ../%.dbd @$(RM) $@ - $(REGISTERRECORDDEVICEDRIVER) $(REGRDDFLAGS) -o $@ $< $(basename $@) $(IOC_INST_TOP) + $(REGISTERRECORDDEVICEDRIVER) $(REGRDDFLAGS) -o $@ $< $(basename $@) $(IOCS_APPL_TOP) .PRECIOUS: %_registerRecordDeviceDriver.cpp diff --git a/configure/RULES.ioc b/configure/RULES.ioc index cf74343b2..6b2150fcb 100644 --- a/configure/RULES.ioc +++ b/configure/RULES.ioc @@ -26,7 +26,7 @@ endif cdCommands envPaths dllPath.bat: $(wildcard $(TOP)/configure/RELEASE*) \ $(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: $(RM) cdCommands envPaths dllPath.bat diff --git a/configure/os/CONFIG.Common.UnixCommon b/configure/os/CONFIG.Common.UnixCommon index 87f44d7b1..b4357152f 100644 --- a/configure/os/CONFIG.Common.UnixCommon +++ b/configure/os/CONFIG.Common.UnixCommon @@ -57,7 +57,7 @@ SHRLIB_LDLIBS = $(addprefix -l, $($*_LDLIBS) $(LIB_LIBS) $(USR_LIBS)) \ SHRLIB_DEPLIB_DIRS = $(foreach word, \ $(sort $(dir $($*_DEPLIBS) $(SHRLIB_DEPLIBS))), \ - $(shell $(PERL) $(TOOLS)/fullPathName.pl $(word))) + $(shell $(FULLPATHNAME) $(word))) SHRLIBDIR_LDFLAGS += $(SHRLIB_DEPLIB_DIRS:%=-L%) @@ -85,7 +85,7 @@ PROD_LDLIBS += $($(firstword $(LDLIBS_STATIC_$(STATIC_BUILD)) \ PROD_DEPLIB_DIRS = $(foreach word, \ $(sort $(dir $($*_DEPLIBS) $(PROD_DEPLIBS))), \ - $(shell $(PERL) $(TOOLS)/fullPathName.pl $(word))) + $(shell $(FULLPATHNAME) $(word))) PRODDIR_LDFLAGS += $(PROD_DEPLIB_DIRS:%=-L%) diff --git a/configure/os/CONFIG.Common.iosCommon b/configure/os/CONFIG.Common.iosCommon index 2ea146902..00e5c38ce 100644 --- a/configure/os/CONFIG.Common.iosCommon +++ b/configure/os/CONFIG.Common.iosCommon @@ -78,7 +78,7 @@ OP_SYS_LDFLAGS += -dynamic -Z -L$(SDK_DIR)/usr/lib -L$(SDK_DIR)/usr/lib/system # Shared libraries SHRLIB_VERSION = $(EPICS_VERSION).$(EPICS_REVISION).$(EPICS_MODIFICATION) SHRLIB_LDFLAGS = -dynamiclib -flat_namespace -undefined suppress \ - -install_name $(shell $(PERL) $(TOOLS)/fullPathName.pl $(INSTALL_LIB))/$@ \ + -install_name $(shell $(FULLPATHNAME) $(INSTALL_LIB))/$@ \ -compatibility_version $(EPICS_VERSION).$(EPICS_REVISION) \ -current_version $(SHRLIB_VERSION) SHRLIB_SUFFIX_BASE = .dylib diff --git a/configure/os/CONFIG.darwinCommon.darwinCommon b/configure/os/CONFIG.darwinCommon.darwinCommon index a135c9aa1..57a5553f0 100644 --- a/configure/os/CONFIG.darwinCommon.darwinCommon +++ b/configure/os/CONFIG.darwinCommon.darwinCommon @@ -67,7 +67,7 @@ CCC = $(GNU_BIN)/c++ # SHRLIB_VERSION = $(EPICS_VERSION).$(EPICS_REVISION).$(EPICS_MODIFICATION) SHRLIB_LDFLAGS = -dynamiclib -flat_namespace -undefined suppress \ - -install_name $(shell $(PERL) $(TOOLS)/fullPathName.pl $(INSTALL_LIB))/$@ \ + -install_name $(shell $(FULLPATHNAME) $(INSTALL_LIB))/$@ \ -compatibility_version $(EPICS_VERSION).$(EPICS_REVISION) \ -current_version $(SHRLIB_VERSION) SHRLIB_SUFFIX_BASE = .dylib diff --git a/src/ca/client/CAref.html b/src/ca/client/CAref.html index 94f43aed8..bd63bc018 100644 --- a/src/ca/client/CAref.html +++ b/src/ca/client/CAref.html @@ -2826,13 +2826,13 @@ int ca_array_put_callback ( chtype TYPE, unsigned long COUNT,

Write a scalar or array value to a process variable.

-

When ca_array_put or ca_put are invoked the client will receive no response +

When ca_put or ca_array_put are invoked the client will receive no response unless the request can not be fulfilled in the server. If unsuccessful an exception handler is run on the client side.

-

When ca_array_put_callback are invoked the user supplied asynchronous call -back is called only after the initiated write operation, and all actions -resulting from the initiating write operation, complete.

+

When ca_put_callback or ca_array_put_callback are invoked the user supplied +asynchronous call back is called only after the initiated write operation, and +all actions resulting from the initiating write operation, complete.

If unsuccessful the call back function is invoked indicating failure status.

@@ -2952,7 +2952,7 @@ int ca_array_get_callback ( chtype TYPE, unsigned long COUNT,

Read a scalar or array value from a process variable.

-

When ca_get or ca_array_get are invoked the returned channel value cant be +

When ca_get or ca_array_get are invoked the returned channel value can't be assumed to be stable in the application supplied buffer until after ECA_NORMAL is returned from ca_pend_io. If a connection is lost outstanding ca get requests are not automatically reissued following reconnect.

diff --git a/src/ca/client/templateInstances.cpp b/src/ca/client/templateInstances.cpp index ae3f9245d..dd8b5113e 100644 --- a/src/ca/client/templateInstances.cpp +++ b/src/ca/client/templateInstances.cpp @@ -78,6 +78,10 @@ template comBuf :: popStatus comBuf :: pop ( unsigned char & returnVal ); template void WireSet ( float const &, unsigned char * ); template void WireSet ( int const &, unsigned char * ); template void WireSet ( short const &, unsigned char * ); +template void ca_client_context :: whenThereIsAnExceptionDestroySyncGroupIO + (epicsGuard < epicsMutex > &, syncGroupWriteNotify & ); +template void ca_client_context :: whenThereIsAnExceptionDestroySyncGroupIO + ( epicsGuard < epicsMutex > &, syncGroupReadNotify & ); #ifdef _MSC_VER diff --git a/src/template/base/top/configure/CONFIG_SITE b/src/template/base/top/configure/CONFIG_SITE index 72b399d43..92156d971 100644 --- a/src/template/base/top/configure/CONFIG_SITE +++ b/src/template/base/top/configure/CONFIG_SITE @@ -13,21 +13,19 @@ # Normally CHECK_RELEASE should be set to YES. # Set CHECK_RELEASE to NO to disable checking completely. # 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 # Set this when you only want to compile this application # for a subset of the cross-compiled target architectures # 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 # INSTALL_LOCATION here. -#INSTALL_LOCATION= +#INSTALL_LOCATION= -# Set this when your IOC and the host use different paths -# to access the application. This will be needed to boot -# from a Microsoft FTP server or with some NFS mounts. -# You must rebuild in the iocBoot directory for this to -# take effect. -#IOCS_APPL_TOP = +# Set this when the IOC and build host use different paths +# to the install location. This may be needed to boot from +# a Microsoft FTP server say, or on some NFS configurations. +#IOCS_APPL_TOP = diff --git a/src/tools/convertRelease.pl b/src/tools/convertRelease.pl index 586e5ee35..5b0890425 100644 --- a/src/tools/convertRelease.pl +++ b/src/tools/convertRelease.pl @@ -52,9 +52,14 @@ if ($opt_T) { if ($opt_t) { $iocroot = $opt_t; $root = $top; - while (substr($iocroot, -1, 1) eq substr($root, -1, 1)) { - chop $iocroot; - chop $root; + if ($iocroot eq $root) { + # Identical paths, -t not needed + undef $opt_t; + } else { + while (substr($iocroot, -1, 1) eq substr($root, -1, 1)) { + chop $iocroot; + chop $root; + } } }