Converting an EPICS R3.14.0 alpha2 application to beta1

This document describes how to convert a R3.14.0alpha2 application so that it builds with release R3.14.0beta1.

Gnumake clean uninstall

First do a "gnumake clean uninstall" in the application's root directory to remove all files created by earlier builds.

Replace configure/RULES.ioc and configure/Makefile

The rules defined in RULES.ioc have changed slightly, and new applications are now given a wrapper version which just includes $(EPICS_BASE)/configureRULES.ioc. The new configure/Makefile contains an additional macro that causes the contents of the configure/RELEASE file to be checked at build time for consistency with all the support applications that it references. These files should be replaced with copies of the new versions from <base>/templates/makeBaseApp/top/configure

Remove baseLIBOBJS

Record and device support from base now exists in archive libraries so baseLIBOBJS is no longer needed and the file and references to it in the Makefile can be deleted. e.g. remove
-include ../baseLIBOBJS
and the file baseLIBOBJS. If there are no LIBOBJS definitions in the Makefile, also remove
example_OBJS += $(LIBOBJS)

Libraries recIoc, softDevIoc, and testDevIoc

Add the new record and dev support libraries to <name>App/src/Makefile, i.e. add the lines
example_LIBS += recIoc
example_LIBS += softDevIoc
example_LIBS += testDevIoc
and remove any references to iocCoreLibrary, e.g. remove the line
example_OBJS_vxWorks += $(EPICS_BASE_BIN)/iocCoreLibrary
The order of references to base libraries is important so place recIoc and softDevIoc  before the the other base library references.

If you are building on a WIN32 host add the following lines instead:

# Use win32 object libs for registered support
example_LIBS_win32 += recIocObj
example_LIBS_win32 += softDevIocObj
example_LIBS_win32 += testDevIocObj
example_LIBS_DEFAULT += recIoc
example_LIBS_DEFAULT += softDevIoc
example_LIBS_DEFAULT += testDevIoc

iocrf renamed to iocsh

Change all references to ioccrf in your application src directories to iocsh e.g.

change #include "ioccrf.h"
to  #include "iocsh.h"

change ioccrf(argv[1]);
to  iocsh(argv[1]);

and change  ioccrf(NULL);
to iocsh(NULL);

in <name>App/src/exampleMain.c.

PROD changes

PROD targets will now be built for all target architectures. If a product should be built only for host architectures change PROD to PROD_HOST .e.g.  in your application src Makefiles
change PROD += caExample
to  PROD_HOST += caExample
change PROD = sncExample
to PROD_HOST += sncExample
LIBRARY and PROD changes
The meaning of LIBRARY and PROD have now changed. For vxWorks, LIBRARY now means an archive library, OBJLIB is now a combined object file (only needed for R3.13 compatibility) and PROD is now a combined object file with library references resolved and will have a corresponding .munch file created. Thus, in your application src Makefiles,
change LIBRARY_vxWorks = <name>
to PROD_vxWorks = <name>
remove the lines LIBRARY_vxWorks = <name>
and PROD_RTEMS = <name>
and change PROD = <name>
to PROD_IOC = <name>.
In the iocBoot/ioc<name>/st.cmd files,
change ld < <name>Library.munch
to ld < <name>.munch
A SRCS definition is now required for every PROD  and LIBRARY source file to determine correct header file dependancies. This is true even if there is only one source file for the PROD or LIBRARY . Thus, for the PROD caExample in your src Makefile, add  the line
 caExample_SRCS += caExample.c

registerRecordDeviceDriver changes

The created file registerRecordDeviceDriver.cpp is now used for all target architectures. Thus in your application src Makefiles
change example_SRCS_DEFAULT += example_registerRecordDeviceDriver.cpp
to  example_SRCS += example_registerRecordDeviceDriver.cpp

RTEMS-specific pathname changes

1. The RTEMS TFTP remote filesystem no longer ignores leading `../' components in path names.  All st.cmd file lines with path names of the form dbLoadRecords("../../db/dbExample1.db","user=norume")
must be changed to

The script distributed with R3.14-beta1 creates st.cmd scripts with the proper path names.

2. The RTEMS TFTP remote filesystem supports a limited set of chdir operations.
All paths passed to chdir (or to the IOC shell `cd' command) must end in a `/'