EPICS Base 3.15.0.x releases are not intended for use in production systems.
The definitions from the header file epicsStdioRedirect.h have been moved into epicsStdio.h so all calls to printf(), puts() and putchar() in files that include that OSI header will now be subject to stdout redirection. In past releases (3.14.7 and later) it was necessary to request the redirection support by including the epicsStdioRedirect.h header file. The header file is still provided, but now it just includes epicsStdio.h.
Soft events can now be given meaningful names instead of just using the numbers 1-255. The EVNT field is now a DBF_STRING. The post_event() API is now deprecated but still works. It should be replaced by code that in advance looks up the EVNTPVT event handle associated with the named event by calling eventNameToHandle(char *), and when that event occurs passes that handle to the new postEvent(EVNTPVT) routine (which may be called from interrupt level). A new iocsh command postEvent name will trigger a named event from the command-line or a startup script (on vxWorks the expression postEvent(eventNameToHandle("name")) must be used instead though).
As EPICS sites get computers with more CPUs they report additional bugs in our parallel build rules. Various issues have been fixed by separating out the build rules that generate dependency (.d) files, ensuring that they are constructed at the appropriate time in the build.
These rule changes can cause additional warning messages to appear when building support modules. Where an application provides its own Makefile rules it may now have to add rules to construct an associated dependency file. In many cases though the change needed is just to replace a dependency for a target$(OBJ) with the target$(DEP) so this
myLib$(OBJ): myLib_lex.c
becomes
myLib$(DEP): myLib_lex.c
To debug build issues assocated with dependency files, use the command make --debug=m which tells GNUmake to display information about what it is doing during the first pass when it updates its makefiles.
The deprecated tsDefs API was provided for 3.13 compatibility only, and has now been removed. Convert any remaining code that used it to call the epicsTime API instead.
The two macros EPICS_UPDATE_LEVEL and EPICS_CVS_SNAPSHOT have been deleted from the epicsVersion.h file; they were deprecated in R3.14 and can be replaced with EPICS_PATCH_LEVEL and EPICS_DEV_SNAPSHOT respectively.
A new pair of macros has been added to make version number comparisons easier. Code that will not work with a version of Base before 3.15.0 can now be written like this to prevent it from compiling:
#if defined(VERSION_INT) && EPICS_VERSION_INT < VERSION_INT(3,15,0,0) # error EPICS Base R3.15.0 or later is required #endif
Added a iocLogPrefix command to iocsh. This adds a
prefix to all messages from this IOC (or other log client) as they get sent to the
iocLogServer. This lets sites use the "fac=<facility>" syntax for
displaying the facility, process name etc. in log viewers like the
cmlogviewer.
The histogram record was not included in the base.dbd file in any 3.14 release, but has now been added along with its associated soft device support. The build system now generates the list of all the record.dbd files in base automatically in src/std/rec/Makefile.
Reorganization of subdirectories of src/ to better represent the relation between different parts as described in the following table.
This change also allows the number of libraries built to be reduced to: libCap5.so, libca.so, libdbCore.so, libdbStaticHost.so, libCom.so, libcas.so, libdbRecStd.so, and libgdd.so
| Component | Dependency | Library name | Description |
|---|---|---|---|
| src/tools | Build system scripts | ||
| src/libCom | src/tools | Com | Utility routines and OS-independant API |
| src/template | src/tools | User application templates (e.g. makeBaseApp) | |
| src/ca/client | src/libCom | ca | Channel Access client |
| src/ca/legacy/gdd | src/ca/client | gdd | Generic data layer for PCAS |
| src/ca/legacy/pcas | src/ca/legacy/gdd | cas | Portable Channel Access Server |
| src/ioc | src/ca | dbCore | Core database processing functions |
| src/std | src/ioc | dbRecStd | Standard records, soft device support and the softIoc |
In order to better reflect these relations the following directories and files were moved as described:
| Relocations | |
|---|---|
| Previous | New |
| libCom | |
| src/RTEMS | src/libCom/RTEMS |
| src/toolsComm/flex | src/libCom/flex |
| src/toolsComm/antelope | src/libCom/yacc |
| src/dbStatic/alarm.h .../alarmString.h |
src/libCom/misc/ |
| IOC Core Components | |
| src/bpt | src/ioc/bpt |
| src/db | src/ioc/db |
| src/dbStatic | src/ioc/dbStatic |
| src/dbtools | src/ioc/dbtemplate |
| src/misc | src/ioc/misc |
| src/registry | src/ioc/registry |
| src/rsrv | src/ioc/rsrv 1 |
| Standard Record Definitions | |
| src/dev/softDev | src/std/dev |
| src/rec | src/std/rec |
| src/softIoc | src/std/softIoc |
| Channel Access | |
| src/ca | src/ca/client |
| src/catools | src/ca/client/tools |
| src/cap5 | src/ca/client/perl |
| src/gdd | src/ca/legacy/gdd |
| src/cas | src/ca/legacy/pcas |
| src/excas | src/ca/legacy/pcas/ex |
| User Templates | |
| src/makeBaseApp | src/template/base |
| src/makeBaseExt | src/template/ext |
| Dispersed | |
| src/util 2 | src/ca/client |
| src/ca/client/test | |
| src/libCom/log | |
| src/as 3 | src/libCom/as |
| src/ioc/as | |
1 RSRV is built as part of dbCore due to its tight (bidirectional) coupling with the other database code.
2 The contents for src/util/ moved to three locations. The caRepeater init script was moved to src/ca/client/. ca_test is now in src/ca/client/test/. The iocLogServer was moved into the same directory (src/libCom/log) as the log client code.
3 The Access Security code has been divided, with the parts not related to the database (lexer/parser and trap registration) becoming part of libCom. The remaining components are included in the dbCore library
These files are now found under src/RTEMS.
Removed the 3.13 <top>/config directory and build compatibility rules and variables, and various conversion documents.