This document describes how to convert a R3.14.0alpha2 application
so that it builds with release R3.14.0beta1.
First do a "gnumake clean uninstall" in the application's root directory to remove all files created by earlier builds.
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
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 ../baseLIBOBJSand the file baseLIBOBJS. If there are no LIBOBJS definitions in the Makefile, also removeexample_OBJS += $(LIBOBJS)
Add the new record and dev support libraries to <name>App/src/Makefile, i.e. add the linesexample_LIBS += recIocand remove any references to iocCoreLibrary, e.g. remove the line
example_LIBS += softDevIoc
example_LIBS += testDevIocexample_OBJS_vxWorks += $(EPICS_BASE_BIN)/iocCoreLibraryThe 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
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 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 MakefilesLIBRARY and PROD changeschange PROD += caExample
to PROD_HOST += caExample
and
change PROD = sncExample
to PROD_HOST += sncExample
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>In the iocBoot/ioc<name>/st.cmd files,
to PROD_vxWorks = <name>
or
remove the lines LIBRARY_vxWorks = <name>
and PROD_RTEMS = <name>
and change PROD = <name>
to PROD_IOC = <name>.change ld < <name>Library.munchA 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
to ld < <name>.munchcaExample_SRCS += caExample.c
The created file registerRecordDeviceDriver.cpp is now used for all target architectures. Thus in your application src Makefileschange example_SRCS_DEFAULT += example_registerRecordDeviceDriver.cpp
to example_SRCS += example_registerRecordDeviceDriver.cpp
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
dbLoadRecords("db/dbExample1.db","user=norume")The makeBaseApp.pl 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 `/'
character.