This document describes how to convert a R3.13 vxWorks application
so that it builds with release R3.14.0beta1. It describes procedures
such that:
First do a gnumake clean uninstall in the application's root directory to remove all files created by earlier builds.
mkdir <top>
cd <top>
<full path to R3.14.0beta1 base>/bin/<host_arch>/makeBaseApp.pl -t example example
cd <oldtop>
find *App iocBoot -print | cpio -pvmd <fullpath name to new top>
Copy definitions of external modules excluding EPICS_BASE and TEMPLATES_TOP from old application RELEASE file.
If sequence programs (*.st or *.stt files) exist in your application, add the SNCSEQ location definition for the R3.14 seq external moduleSNCSEQ =<full path to seq module top>The R3.14 seq module must exist and be built with EPICS base R3.14.0beta1.
Change include $(TOP)/config/CONFIG_APP
to include $(TOP)/configure/CONFIGChange include $(TOP)/config/RULES_DIRS
to include $(TOP)/configure/RULES_DIRS
Remove existing Makefile
Rename Makefile.Host to Makefile
Modify Makefile as follows:Change TOP=../../..
to TOP=../..Change include $(TOP)/config/CONFIG_APP
to include $(TOP)/configure/CONFIGChange include $(TOP)/config/RULES.Db
to include $(TOP)/configure/RULESPlace all definitions between the include lines.
Place any rules after the last include line.
Remove existing Makefile
Rename Makefile.Host to Makefile
Modify Makefile as follows:Change TOP=../../..
to TOP=../..Change include $(TOP)/config/CONFIG_APP
to include $(TOP)/configure/CONFIGChange include $(TOP)/config/RULES.Host
to include $(TOP)/configure/RULESChange PROD_LIBS = <name>
to <prod name>_LIBS = dbStaticHost
where <prod name> is a specifified product to be built.Change library name Db to dbStaticHost.
Change PROD_LIBS = Db
to <prodname>_LIBS += dbStaticHost
and Db_DIR = $(EPICS_BASE_LIB)
to dbStaticHost_DIR = $(EPICS_BASE_LIB)Change USER_DBDFLAGS
to USR_DBDFLAGSChange RECTYPES += xxxRecord.h
to DBDINC += xxxRecordChange DBDNAME = <name>App.dbd
to DBD += <name>.dbdRemove all DBDEXPAND lines.
Change PROD = <prodname>
to PROD_HOST = <prodname>Change SRCS.c += <name>
to <prodname>_SRCS += <name>
or <libname>_SRCS += <name>Add the contents of Makefile.Vx to Makefile removing the include lines and the TOP definition.
Change LIBNAME = <libname>Lib
to PROD_vxWorks = <libname>Remove line -include ../baseLIBOBJS
Remove line INSTALLS = iocCore seq
Change all SRCS.c += ../<name>.c lines
to <prodname>_SRCS += <name>.c
if the source files exist in the current directory.Change all *OBJS += <name>.o lines
to <prodname>_SRCS += <name>.c
or <prodname>_SRCS += <name>.cc
if the c/c++ source files exist in the current directory.Change LIBOBJS += <seq_program_name>.o lines
to <prodname>_SRCS += <seq_program_name>.stt
or <prodname>_SRCS += <seq_program_name>.stAdd the lines
#<name>_LIBS += seqwhere <name> is the name in the PROD_vxWorks definition, and uncomment the first four lines if you have sequence programs (.st or .stt files) in the current directory.
#<name>_LIBS += pv
#seq_DIR = $(SNCSEQ_LIB)
#pv_DIR = $(SNCSEQ_LIB)<name>_LIBS += recIoc
<name>_LIBS += softDevIoc
<name>_LIBS += testDevIoc
<name>_LIBS += iocsh
<name>_LIBS += miscIoc
<name>_LIBS += rsrvIoc
<name>_LIBS += dbtoolsIoc
<name>_LIBS += asIoc
<name>_LIBS += dbIoc
<name>_LIBS += registryIoc
<name>_LIBS += dbStaticIoc
<name>_LIBS += ca
<name>_LIBS += ComPlace all macro definitions between the include lines.
Place any rules after the last include line.
Change include $(TOP)/config/CONFIG_APP
to include $(TOP)/configure/CONFIGRemove the line DIRS += $(wildcard *ioc*)
Change include $(TOP)/config/RULES.iocBoot
to include $(TOP)/configure/RULES.iocBoot
Change include $(TOP)/config/CONFIG_APP
to include $(TOP)/configure/CONFIGChange include ARCH = <old arch specification e.g. mv167>
to include ARCH = <new arch specificatio e.g. vxWorks-68040>Change include $(TOP)/config/RULES.ioc
to include $(TOP)/configure/RULES.iocAdd the following rule at the end of the Makefile.
buildInstall: cdCommands
Remove the lines
Change ld < <libname>Libld < seqld < iocCore
to ld < <libname>.munchChange load statements for db and dbd files from
cd startupto
dbLoadDatabase("../../dbd/exampleApp.dbd")
dbLoadRecords("../../db/dbExample1.db","user=jba")
dbLoadRecords("../../db/dbExample2.db")cd top
dbLoadDatabase("dbd/example.dbd")
registerRecordDeviceDriver(pdbbase)
dbLoadRecords("db/dbExample1.db","user=jba")
dbLoadRecords("db/dbExample2.db")
The steppermotor, scan, and pid records are no longer in base. If these records are not used in your application, comment out references to them in base.dbd. If these record types are used at your site, they should be downloaded and built with base R3.14 by your EPICS administrator. To update the R3.14 location of these record types in your application you must add appropriate module definitions to your application's config/RELEASE file and change the LIBOBJS definitions.For example add
PID=<full path to modules directory>/pidto config/RELEASE.
Remove
LIBOBJS += $(EPICS_BASE_BIN)/pidRecord.ofrom baseLIBOBJS, and add
LIBOBJS += $(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 EPICS base and now exist as separate EPICS modules.You must now 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. See "Hardware support changes" below for instructions.
All hardware support (dev, drv and dbd files) except soft support has been unbundled from base R3.14. This support includes the files symb.dbd, drvHp1404a.o, drvEpvxiMsg.o, and drvEpvxi.o. If these are not used by your application, comment out references to them in base.dbd.
Hardware support now exists as separate EPICS modules. The hardware support for your site should be downloaded and built with base R3.14 by your EPICS administrator. You must now add the appropriate module full path definitions to your application config/RELEASE file, and change LIBOBJS location from $(EPICS_BASE_BIN) to the module bin directory in your application src directory files.For example, remove
LIBOBJS+=$(EPICS_BASE_BIN)/symb
from baseLIBOBJS and add
LIBOBJS+=$(SYMB_BIN)/symb
to your application src/Makefile,
and add the line
SYMB=<full path definition for the built module SYMB>
into your application config/RELEASE file .
The host tool dbLoadTemplate has been replace by a new EPICS extension, msi, which should be downloaded and built with base R3.14 by your EPICS administrator. dbLoadTemplate is still supported on iocs. If, in your application, db files are created from template and substitution files you should add the definitionEPICS_EXTENSIONS=<full path name to epics extensions directory>
to your application config/RELEASE file.