From 08c396ee69abbd10c59d7c62660ce02e8d40f34b Mon Sep 17 00:00:00 2001 From: Marty Kraimer Date: Fri, 19 Jul 2002 19:21:28 +0000 Subject: [PATCH] Changes for 3.14.0beta2 --- documentation/BuildingR3.13AppsWithR3.14.html | 393 +++++++----------- 1 file changed, 157 insertions(+), 236 deletions(-) diff --git a/documentation/BuildingR3.13AppsWithR3.14.html b/documentation/BuildingR3.13AppsWithR3.14.html index 72ff6c757..59695819e 100644 --- a/documentation/BuildingR3.13AppsWithR3.14.html +++ b/documentation/BuildingR3.13AppsWithR3.14.html @@ -1,304 +1,225 @@ - + - - - - - - Instruction on building existing R3 - - - - + + + - + +
-

-Building EPICS R3.13 applications with R3.14.0beta2 base

+

Building EPICS R3.13 applications with R3.14.0beta2 base

+ -


This document describes how to modify a R3.13 vxWorks application -so that it builds with release R3.14.0beta2.  It describes an easy -way to modify applications subject to the following restrictions: +


+This document describes how to modify a R3.13 vxWorks application so that it +builds with release R3.14.0beta2.  It describes an easy way to modify +applications subject to the following restrictions:

-Ultimately applications should be converted to use the new configure rules -so that the OSI features are available. -

-Gnumake clean uninstall

+Ultimately applications should be converted to use the new configure rules so +that the OSI features are available. -
At the top of the application execute: +

Gnumake clean uninstall

+ +

At the top of the application execute:

"gnumake clean uninstall"
-to remove all files and directories created by earlier builds.
+to remove all files and directories created by earlier builds. -

-Update RELEASE

+

Update RELEASE

-
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  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. For +example if you are using the sequencer add the line:

+
SNCSEQ=<full path to sequencer build for 3.14>
-

-Update target arch definitions

+

Update target arch definitions

-
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 change +

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 change

CROSS_COMPILER_TARGET_ARCHS = mv167
to
CROSS_COMPILER_TARGET_ARCHS = vxWorks-68040
In the iocBoot/*/Makefile files, change -
ARCH=<old arch name>
+
ARCH=<old arch name>
to -
ARCH=<new arch name>
+
ARCH=<new arch name>
and do a "gnumake" in the iocBoot directory to update the cdCommands -files.
+files. -

-State Notation Language changes

+

State Notation Language changes

-
snc is no longer in base. If snc is used in your application, -you must download and build the seq module with baseR3.14.0beta2. See the -Application Developer's Guide to see how to build sequence programs.
+

NOTE: You must have a version of the sequencer that is build for R3.14. +This version uses configure rules rather than config rules. It still, +however, has a config directory. Makesure that config/RELEASE has the same +location for base as configure/RELEASE.

-
Change -
INSTALLS=seq
-to -
LIBOBJS += $(SEQ_BIN)/seqLibrary.o
+

snc is no longer in base. If snc is used in your application, you must +download and build the seq module with baseR3.14.0beta2. See the Application +Developer's Guide to see how to build sequence programs.

-


in application src/Makefile.Vx files to link seq library into your -application library,. -
Also add -

SEQ=<full path to seq module directory>
-to config/RELEASE. -
Also remove +

If you build sequencer programs add the lines

+
SNC = ${SNCSEQ}/bin/$(HOST_ARCH)/snc$(EXE)
+LIBOBJS += $(SNCSEQ_BIN)/seqLibrary.o
+LIBOBJS += $(SNCSEQ_BIN)/pvLibrary.o
+ +

remove

+
INSTALLS = seq
+ +


+in application src/Makefile.Vx files to link seq library into your +application library,.
+

+Also remove
ld < seq
-from the st.cmd files in the iocBoot subdirectories.
+from the st.cmd files in the iocBoot subdirectories. -

-iocCore changes

+

iocCore changes

-
iocCore has been renamed to iocCoreLibrary.o. -
Change +

iocCore has been renamed to iocCoreLibrary.o.
+Change

INSTALLS=iocCore
to
LIBOBJS += $(EPICS_BASE_BIN)/iocCoreLibrary.o
-in your application src/Makefile.Vx files . -
Also remove +in your application src/Makefile.Vx files .
+Also remove
ld < iocCore
-from the st.cmd files in the iocBoot subdirectories.
+from the st.cmd files in the iocBoot subdirectories. -

-Library db changes

+

Library db changes

-
The Db library name was changed to dbStaticHost for host builds -and dbStaticIoc for ioc builds. -
Change +

The Db library name was changed to dbStaticHost for host builds and +dbStaticIoc for ioc builds.
+Change

PROD_LIBS+=Db
to -
PROD_LIBS+=dk
+
PROD_LIBS+=dbStaticHost
and
Db_DIR=$(EPICS_BASE_LIB)
to
dbStaticHost_DIR=$(EPICS_BASE_LIB)
-in your application src/Makefile.Host files.
+in your application src/Makefile.Host files. -

-VxWorks C++ munched libraries and object files

+

VxWorks C++ munched libraries and object 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 -change +

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 change

ld < exampleLib
to -
ld < exampleLibrary.munch
-
+
ld < exampleLib.munch
-

-recGbl calls

+

recGbl calls

-
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.
+

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.

-

-Record support changes

+

Record support changes

-
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 -
add -
PID=<full path to modules directory>/pid
-to config/RELEASE. -
Remove +

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
+add

+
PID=<full path to modules directory>/pid
+to config/RELEASE.
+Remove
LIBOBJS += $(EPICS_BASE_BIN)/pidRecord.o
-from baseLIBOBJS, -
and add +from baseLIBOBJS,
+and add
LIBOBJS += $(PID_BIN)/pidRecord.o
to 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 changes

+

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.
+

RecDynLink.o and devPtSoft changes

-

-Hardware support changes

+

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, remove +

Hardware support changes

+ +

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, 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>
+to your application src/Makefile,
+and add the line +
SYMB=<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).

-

-dbLoadtemplate tool changes

+

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 new msi extension -with a R3.13 or R3.14 base and verify that the msi executable is in your -path. -

Change the following definitions in your application files. -

In config/RULES.Db replace the line +

dbLoadtemplate tool changes

+ +

The host tool dbLoadTemplate has been replaced by a new extension, msi. +dbLoadTemplate is still supported on iocs. Build the new msi extension with a +R3.13 or R3.14 base and verify that the msi executable is in your path.

+ +

Change the following definitions in your application files.

+ +

In config/RULES.Db replace the line

DBLOADTEMPLATE=$(EPICS_BASE_HOST_BIN)/dbLoadTemplate$(EXE)
with
MSI = msi
and change the DBLOADTEMPLATE rule in RULES.Db from -

%.t.db.raw: %.substitutions -
    @echo "Inflating database from $<" -
    @$(RM) $@ -
    @$(DBLOADTEMPLATE) $< > $@ -

to -

%.t.db.raw: %.substitutions %.template -
    @echo "Inflating database from $<" -
    @$(RM) $@ -
    @$(MSI) -S $^ > $@ -
 

+
%.t.db.raw: %.substitutions 
+        @echo "Inflating database from $<" 
+        (RM) $@ 
+        @$(DBLOADTEMPLATE) $< > $@
-

-depends changes

+

to

+
%.t.db.raw: %.substitutions %.template 
+        @echo "Inflating database from $<" 
+        @$(RM) $@ 
+        @$(MSI) -S $^ > $@
-


     Remove any SRCS.c and SRCS.cc definitions -in your application src/Makefile..*files. The depends rule no longer uses -these definitions. +

depends changes

+ +

Remove any SRCS.c and SRCS.cc definitions in your application +src/Makefile..*files. The depends rule no longer uses these definitions.