This document describes how to modify a R3.13 vxWorks application so that it builds with release R3.14.0beta1. It describes an easy way to modify applications subject to the following restrictions:
At the top of the application execute:"gnumake clean uninstall"to remove all files and directories created by earlier builds.
Change the EPICS_BASE definition to point to the R3.14 base release. All hardware support and some soft support is now unbundled. For example the sequencer is unbundled. You must obtain and build all required unbundled products before you can build the application. The location of each unbundled product must be specified in <top>/config/RELEASE.
Change any target arch specification in config/CONFIG to new R3.14 target arch specification. Look in the R3.14 base/bin directory to see the target arch names.
For example, in config/CONFIG changeCROSS_COMPILER_TARGET_ARCHS = mv167toCROSS_COMPILER_TARGET_ARCHS = vxWorks-68040In the iocBoot/*/Makefile files, changeARCH=<old arch name>toARCH=<new arch name>and do a "gnumake" in the iocBoot directory to update the cdCommands files.
snc is no longer in base. If snc is used in your application, you must download and build the seq module with baseR3.14.0beta1. See the Application Developer's Guide to see how to build sequence programs.
ChangeINSTALLS=seqtoLIBOBJS += $(SEQ_BIN)/seqLibrary.o
in application src/Makefile.Vx files to link seq library into your application library,.
Also addSEQ=<full path to seq module directory>to config/RELEASE.
Also removeld < seqfrom the st.cmd files in the iocBoot subdirectories.
iocCore has been renamed to iocCoreLibrary.o.
ChangeINSTALLS=iocCoretoLIBOBJS += $(EPICS_BASE_BIN)/iocCoreLibrary.oin your application src/Makefile.Vx files .
Also removeld < iocCorefrom the st.cmd files in the iocBoot subdirectories.
The Db library name was changed to dbStaticHost for host builds and dbStaticIoc for ioc builds.
ChangePROD_LIBS+=DbtoPROD_LIBS+=dbStaticHostandDb_DIR=$(EPICS_BASE_LIB)todbStaticHost_DIR=$(EPICS_BASE_LIB)in your application src/Makefile.Host files.
Since R3.14 contains C++ code, the build rules were changed to create a corresponding munched file for every vx object file built. The objects files can be combined to form libraries but the munched files must be loaded into vxWorks. In all st.cmd files add the suffix ".munch" to the ld lines where object files were previously loaded. For example changeld < exampleLibtold < exampleLibrary.munch
You may need to add the line "#include "recGbl.h" to any source files that have recGbl* calls so that the file will compile without errors.
The steppermotor, scan, and pid records are no longer in base. If your application does not use these record types, comment out or remove references to them in base.dbd and baseLIBOBJS. If these record types are used by your application you must download and build the modules with R3.14 base, add appropriate module definitions to your application's config/RELEASE fileand change the LIBOBJS definitions. For example
addPID=<full path to modules directory>/pidto config/RELEASE.
RemoveLIBOBJS += $(EPICS_BASE_BIN)/pidRecord.ofrom baseLIBOBJS,
and addLIBOBJS += $(PID_BIN)/pidRecord.oto your application src/Makefile.
You should consider changing any existing old steppermotor records to the new EPICS motor record module supported by Beamline Controls and Data Acquisition at APS.
recDynLink.o and devPtSoft.o are no longer in base. Remove references to them in base.dbd and baseLIBOBJS if they are not used in application.
All hardware support (dev, drv and dbd files) has been unbundled from base R3.14. This support includes the files symb, symb.dbd, drvHp1404a.o, drvEpvxiMsg.o, and drvEpvxi.o. If they are not used in your application, comment out references to these files in base.dbd and baseLIBOBJS.
Hardware support files now exist as separate modules available for download from the EPICS www home page at ANL. You must now download all the hardware support modules needed for your application, build the modules with R3.14 base, add the appropriate module full path definitions to your application config/RELEASE file, and change LIBOBJS location definition $(EPICS_BASE_BIN) to the module definition bin directory in your application src directory files.
For example, removeLIBOBJS+=$(EPICS_BASE_BIN)/symbfrom baseLIBOBJS and addLIBOBJS+=$(SYMB_BIN)/symbto your application src/Makefile,
and add the lineSYMB=<full path definition for the built module SYMB>into your application config/RELEASE file .
After a gnumake in the symb module followed by a gnumake in the application config directory, the definitions SYMB_BIN and SYMB_LIB will be created, the directory $(SYMB)/include will be added to the include directories on the compiler command lines (in the INSTALL_INCLUDES definition) and the directory $(SYMB)/dbd will be added to the dbd search directories on the dbExpand command lines (in the INSTALL_DBDFLAGS definition).
The host tool dbLoadTemplate has been replaced by a new extension, msi. dbLoadTemplate is still supported on iocs. Build the msi extension with base R3.14 and change the following definitions in your application files.depends changes
In config/RULES.Db replace the lineDBLOADTEMPLATE=$(EPICS_BASE_HOST_BIN)/dbLoadTemplate$(EXE)withMSI = $(firstword $(wildcard $(EPICS_EXTENSIONS_HOST_BIN)/msi$(HOSTEXE) \ (EPICS_EXTENSIONS)/bin/$(HOST_OS_CLASS)/msi$(HOSTEXE)) msi$(HOSTEXE))and change line:@$(DBLOADTEMPLATE) $< > $@to@$(MSI) $< > $@Also, if dbLoadTemplate was used by your application, add the definitionto your application config/RELEASE file.EPICS_EXTENSIONS=<full path name to epics extensions directory>
Remove any SRCS.c and SRCS.cc definitions in your application src/Makefile..*files. The depends rule no longer uses these definitions.