Compare commits

...

734 Commits

Author SHA1 Message Date
Janet B. Anderson
2ba1e47fd3 Added RTEMS changes. 2001-10-24 15:11:28 +00:00
Jeff Hill
5c00f84847 remove inline 2001-10-24 00:11:38 +00:00
Jeff Hill
e42becdce4 fixed format 2001-10-23 23:39:44 +00:00
Jeff Hill
7f3eca0394 avoid problems with the GNU inliner in gcc 2.96 2001-10-23 23:39:01 +00:00
Janet B. Anderson
105ecaca8d Updates for beta1. 2001-10-23 14:13:56 +00:00
Janet B. Anderson
1b24ce1620 Expand macros after all RELEASE files are read. 2001-10-22 19:32:27 +00:00
Jeff Hill
6352940ce6 fixed borland warning 2001-10-22 18:05:36 +00:00
Jeff Hill
6ec4eaea40 format 2001-10-22 18:04:12 +00:00
Jeff Hill
63ea05ecdd changed tabs to spaces 2001-10-22 18:03:32 +00:00
Jeff Hill
3566bc7d8d formatting 2001-10-22 18:01:55 +00:00
Jeff Hill
792e651d8e removed redundant ; 2001-10-22 18:01:05 +00:00
Jeff Hill
ee7cc03774 minor tweaking to debug options 2001-10-22 17:59:18 +00:00
Jeff Hill
a7a87b8d99 fixed borland warning 2001-10-22 17:49:23 +00:00
Jeff Hill
119e45dc28 fixed warning and cleaned up the source a bit 2001-10-22 17:14:25 +00:00
Jeff Hill
62954ecf50 properly export functions within 2001-10-22 17:00:19 +00:00
Jeff Hill
5bd31e2aa2 fixed comment 2001-10-22 16:59:40 +00:00
Jeff Hill
4675ba5077 fixed warning 2001-10-22 16:51:17 +00:00
Jeff Hill
da917cce37 fixed borland build issue 2001-10-22 16:39:21 +00:00
Jeff Hill
38d5f71072 fixed missing return code 2001-10-22 16:21:58 +00:00
Jeff Hill
e46a919662 fixed warnings 2001-10-22 16:17:59 +00:00
Jeff Hill
8d2eaa9cf5 dont use implicit template instantiation because Tornado II GNU isnt ready 2001-10-22 03:39:04 +00:00
Jeff Hill
e287eac4c7 dont use implicit template instantiation because Tornado II GNU isnt ready 2001-10-22 03:20:16 +00:00
Jeff Hill
7b1b2988d7 turn of ms already instantiated warning 2001-10-22 03:18:52 +00:00
Jeff Hill
ed88bdd35b use explicit template instantiation 2001-10-22 02:40:14 +00:00
Jeff Hill
21f9dd8179 use explicit template instatiation 2001-10-20 00:45:12 +00:00
Jeff Hill
f1d7722f80 use explicit template instantiation 2001-10-20 00:43:26 +00:00
Jeff Hill
7c4ddfffcd use explicit templ instantiation 2001-10-20 00:36:46 +00:00
Jeff Hill
f84e7f5df6 remove use of std lib for now 2001-10-20 00:16:21 +00:00
Jeff Hill
e16d797011 fixed diagnostic 2001-10-18 23:42:00 +00:00
Jeff Hill
40148ba63b fixed diagnostic message 2001-10-18 23:39:55 +00:00
Jeff Hill
114058de02 improved warning messages 2001-10-18 23:24:19 +00:00
Jeff Hill
0ed3880913 call tcp fd reg callback from UDP thread 2001-10-18 22:32:40 +00:00
Jeff Hill
855027654b added privateUninstallIIU() 2001-10-18 22:29:52 +00:00
Jeff Hill
8aff497180 use string.h until std c++ lib is stable 2001-10-18 22:29:25 +00:00
Jeff Hill
e8c12c369c moved the tcp fd reg to be called from the udp thread 2001-10-18 22:28:42 +00:00
Jeff Hill
5e1804ae94 moved the udp fd reg to be called from the user thread 2001-10-18 22:26:46 +00:00
Jeff Hill
08b16eba09 added start(), removed destroy(), and made connect() private 2001-10-18 22:23:53 +00:00
Marty Kraimer
7c186698aa change EPICS_TIMEZONE 2001-10-18 12:17:55 +00:00
Jeff Hill
8c404fc69e doc 2001-10-17 22:23:42 +00:00
Jeff Hill
06f99426c3 fixed doc 2001-10-17 22:20:26 +00:00
Jeff Hill
739d67853a fixed doc 2001-10-17 22:18:50 +00:00
Jeff Hill
6e86544e20 better doc 2001-10-17 22:16:48 +00:00
Jeff Hill
f1d9236ee9 improved doc for persons building EPICS applications with visual C++ 2001-10-17 22:10:45 +00:00
Janet B. Anderson
a7b06a7588 Added read of RELEASE.<EPICS_HOST_ARCH> file. 2001-10-17 20:44:18 +00:00
Janet B. Anderson
bd73d46620 Changed CFLAGS to CXXFLAGS for c++ flag. 2001-10-17 14:46:19 +00:00
Jeff Hill
dbc44e58d7 allow c++ 2001-10-16 22:45:23 +00:00
Jeff Hill
61e6a84ae3 cosmetic 2001-10-16 22:43:51 +00:00
Jeff Hill
4cd0787e4d revert to malloc/free if EPICS_DEBUG is defined 2001-10-16 22:37:38 +00:00
Jeff Hill
3583c70725 revert to mamloc/free if EPICS_DEBUG is defined 2001-10-16 22:36:34 +00:00
Jeff Hill
55c4981d4d match new cac api 2001-10-15 21:54:41 +00:00
Jeff Hill
db6b7367cd updated notes 2001-10-15 21:51:28 +00:00
Jeff Hill
2123916c45 more restrictions on use of preemptive callback enabled - and
merged IO cancel routine  into channel uninstall
2001-10-15 21:51:04 +00:00
Jeff Hill
5c353c4fa1 exported the CA client context id 2001-10-15 21:49:46 +00:00
Jeff Hill
864209af1c use ca_client_context in the original API 2001-10-15 21:48:17 +00:00
Jeff Hill
e30a01cab5 cosmetic 2001-10-15 21:47:10 +00:00
Jeff Hill
78239fb213 changed oldCAC from class to struct 2001-10-15 21:46:42 +00:00
Jeff Hill
42b8dcc3bf allow any CA system thread to attach to a ca context 2001-10-15 21:46:01 +00:00
Jeff Hill
218cf86318 removed destroyAllIO() func, and removed unused member data 2001-10-15 21:23:36 +00:00
Jeff Hill
f770728ed0 changed ca_client_context to oldCAC 2001-10-15 21:22:37 +00:00
Jeff Hill
0422478975 new error code 2001-10-15 21:21:20 +00:00
Jeff Hill
d67e8a28c6 stated that multiple threads are not allowed if preemptive callback is disabled 2001-10-15 21:20:58 +00:00
Jeff Hill
f26ba7daa6 destroy all IO function included now in uninstallChannel() 2001-10-15 21:19:59 +00:00
Jeff Hill
75cf4ebcff function name change 2001-10-15 21:19:16 +00:00
Marty Kraimer
28282e176d make caMonitor a host application 2001-10-15 18:50:16 +00:00
Marty Kraimer
7c86082b23 latest changes for 3.14.0beta1 2001-10-15 13:38:38 +00:00
Marty Kraimer
978cbb9517 make code easier to read 2001-10-15 13:36:49 +00:00
Jeff Hill
39a9682dbe cosmetic 2001-10-12 23:05:44 +00:00
Jeff Hill
e2d2cdf882 wait a bit longer for IO completion 2001-10-12 22:53:09 +00:00
Jeff Hill
190914f680 tack change in dbEvent interface (now new events are initially disabled) 2001-10-12 22:49:27 +00:00
Jeff Hill
7fc0860442 dont allow disabled event to be removed from the queue
and changed interface so that new events are initially disabled
2001-10-12 22:48:30 +00:00
Jeff Hill
f31cbb8a8c fixed to match new dbEvent interface 2001-10-12 22:47:06 +00:00
Jeff Hill
928f3234f2 fixed comment 2001-10-12 22:45:22 +00:00
W. Eric Norum
7b568edc59 Create RTEMS-specific README.
Modify st.cmd to reflect RTEMS directory structure.
2001-10-12 20:58:18 +00:00
W. Eric Norum
2cf796ce9b Use st.cmd in the top-level IOC directory, not in bin/scripts. This change
means that the st.cmd script produced for the example application needs to
be edited by hand before it can be used by an RTEMS IOC.
2001-10-12 14:24:08 +00:00
Janet B. Anderson
4f56353867 Fix for DLL_LIBS. 2001-10-11 21:22:56 +00:00
Jeff Hill
5555ea4edc supressed message about orphaned IO requests at exit because it
is perfectly normal for channels and therefore subscription IO
blocks to exist at exit (its the user's responsability to delete
them.
2001-10-10 22:57:41 +00:00
Jeff Hill
00d878aff8 supress shutdown when a circuit times out while connecting 2001-10-10 22:14:06 +00:00
Jeff Hill
d707be4c0e ADDED IMPLICIT THREAD INIT 2001-10-05 01:32:53 +00:00
Jeff Hill
90b4d40b96 changed sprintf format 2001-10-05 01:32:18 +00:00
Jeff Hill
2015e37f53 fixed problems where lock was released but channel was
inconsistently attached to an IIU
2001-10-04 17:47:07 +00:00
Jeff Hill
e849feeb13 fixed proper shutdown of local CA subscriptions 2001-10-04 00:02:27 +00:00
Jeff Hill
28ecb1209f fixed proper shutdown of local CA subscriptions 2001-10-03 23:47:24 +00:00
Jeff Hill
af42d394b9 fixed proper shutdown of local CA subscriptions 2001-10-03 22:38:53 +00:00
Jeff Hill
8ca27c4b4e cosmetic 2001-10-03 22:37:30 +00:00
Marty Kraimer
932813b85e check for removesOutstanding 2001-10-03 19:24:38 +00:00
Jeff Hill
659c60fd90 fixed inconsistent signed vs unsigned for thread priority 2001-10-03 18:45:32 +00:00
Jeff Hill
475e16ec96 use subroutine to compute the priority and rearranged cac constructor
to be robust in the face of exceptions (workaround for TII g++ bug)
2001-10-03 17:25:28 +00:00
Jeff Hill
17cb74de76 use subroutine to compute the priority 2001-10-03 17:24:12 +00:00
Jeff Hill
19f8326ae0 use subroutine to compute the priority and dont restart
the recv watchdog while holding the callback lock
2001-10-03 17:23:31 +00:00
Marty Kraimer
67eb482234 Removed accidental commit changes. 2001-10-03 15:21:50 +00:00
Marty Kraimer
bd2f706e0f change daylight savings time 2001-10-03 15:07:42 +00:00
Janet B. Anderson
ac07c6a248 Added USR_LIBS to DLL_LIBS definition. 2001-10-03 13:52:05 +00:00
Jeff Hill
e27671e8d6 call free for memory pointed to by task variable before task variable is deleted 2001-10-02 22:22:51 +00:00
Jeff Hill
37d45a57f3 fixed memory leak in epicsThreadPrivateSet 2001-10-02 22:11:07 +00:00
Janet B. Anderson
ee4b426a34 Changes for automated depends. 2001-10-02 18:20:53 +00:00
Janet B. Anderson
480129b790 Changed SCRIPTS to SCRIPTS_HOST. 2001-10-02 18:17:26 +00:00
Janet B. Anderson
d7717d106d Simplified some rules. 2001-10-02 18:15:42 +00:00
Jeff Hill
0c22d38d55 return "not connected" before "no write access" for put 2001-10-02 17:09:56 +00:00
Janet B. Anderson
75d0fc16e0 Added SCRIPTS_HOST and SCRIPTS_IOC. 2001-10-02 14:48:25 +00:00
Janet B. Anderson
42e498e2ff Changed BIN_INSTALLS to SCRIPTS_HOST. 2001-10-02 14:46:54 +00:00
Janet B. Anderson
ba3be45400 Updates for R3.14.0.beta1. 2001-10-02 14:02:23 +00:00
Janet B. Anderson
e8d24da299 Updated vim and java lines. 2001-10-02 13:57:41 +00:00
Marty Kraimer
3843cc0ddb wait 1 minute before reporting failure to contact ntpserver 2001-10-02 11:51:37 +00:00
Jeff Hill
06ee15bbfb fixed potential deadlock (dont hold lock when calling cb) 2001-10-02 01:15:25 +00:00
Jeff Hill
b19e46db7e send clear channel to the server when claim reply arrives and
there is no matching channel in the client. Also cleared up
other potential glitches related to deleting channels.
2001-10-02 01:14:09 +00:00
Jeff Hill
c54518d555 test for channel connected outside the clear channel request stub 2001-10-02 01:11:06 +00:00
Jeff Hill
deb6813aee changed clear channel interface 2001-10-02 01:10:21 +00:00
Andrew Johnson
0080b2d007 Fixed operation in new app directory. 2001-10-01 21:55:50 +00:00
Janet B. Anderson
3eece23175 Removing unused copyright files. 2001-10-01 21:40:12 +00:00
Jeff Hill
1220439a85 cosmetic 2001-10-01 18:11:33 +00:00
Janet B. Anderson
34b5548ef1 Commented out OBJS_IOC epicsListTest because build fails for vxWorks-ppc604
on win32-x86 host.
2001-10-01 18:00:33 +00:00
Janet B. Anderson
0d9b5ce097 Added basename function. 2001-10-01 17:48:05 +00:00
Janet B. Anderson
ec8a33ea5b Die if rmtree fails. 2001-10-01 17:45:09 +00:00
Janet B. Anderson
d4107b4900 Don't try to create directory if symbolic link of same name exists. 2001-10-01 17:42:09 +00:00
Janet B. Anderson
692c3b64b9 R3_14_0_beta1 2001-10-01 17:37:32 +00:00
Janet B. Anderson
8a29c82245 Merged changes from epics_R3_13_1_branch branch. 2001-10-01 17:36:15 +00:00
W. Eric Norum
c7f8051c84 RTEMS TFTP driver now handles leading ../ path name components properly.
Thus, for ../../dbd/example.dbd to be found properly, the st.cmd script
must be moved down two directories.  For now it is in bin/scripts, but
that may change.
2001-09-29 19:51:24 +00:00
Janet B. Anderson
993f3423ee Changed from tornado20 to tornado202. 2001-09-27 20:56:04 +00:00
Andrew Johnson
26016a2810 Improved readRelease subroutine to allow macro definitions after the
macro has been used.
2001-09-27 19:52:17 +00:00
Andrew Johnson
12ccb0936a Replaced ReadReleaseFile subroutine with version from convertRelease.pl
which supports include and now allows definitions to appear after use.
2001-09-27 19:50:18 +00:00
Jeff Hill
7eaabd7df2 fixed spurious "server memory exhausted" message 2001-09-26 18:59:04 +00:00
W. Eric Norum
cab1f58df1 The RTEMS TFTP driver now supports a limited form of chdir(). This means that
the hack of redefining fopen is no longer necessary.
Link -lrtemsall before -lrtemsCom to ensure that the configuration information
gets pulled from the rtemsCom library.
2001-09-26 15:28:29 +00:00
W. Eric Norum
74f581dce5 RTEMS TFTP driver now supports a limited form of chdir(). This means that
the hack of redefining fopen is no longer necessary.
2001-09-26 15:27:12 +00:00
Marty Kraimer
ec582e8c91 remove def for pdbbase 2001-09-26 13:30:42 +00:00
Marty Kraimer
8139443186 make sure epicsThreadInit called 2001-09-26 12:36:07 +00:00
Marty Kraimer
ade7bebfcd mkre changes for beta1 2001-09-26 11:51:52 +00:00
Marty Kraimer
9a651fe9bf remove extra debug statements; changes for clarity 2001-09-26 11:49:26 +00:00
Jeff Hill
cee658604b fixed unprotected increment that might cause problems on RISC arch 2001-09-25 23:58:11 +00:00
Jeff Hill
1f21e491ed fixed race condition 2001-09-25 23:56:48 +00:00
Jeff Hill
78d663d064 implemented threadExitMain() 2001-09-25 15:59:16 +00:00
Jeff Hill
c7a82c3ce2 fixed race condition 2001-09-25 00:13:20 +00:00
Jeff Hill
0768bb9764 fixed potential race condition 2001-09-25 00:11:46 +00:00
Jeff Hill
0809aa8c8b cosmetic 2001-09-25 00:10:23 +00:00
Jeff Hill
8b0161c463 added comment 2001-09-25 00:09:26 +00:00
Jeff Hill
c4b6554964 assert fail before allowing invalid thread id into use 2001-09-25 00:07:14 +00:00
Janet B. Anderson
682dbfae7a Allow multiple includes of base RULES_BUILD (use first include). 2001-09-24 22:15:22 +00:00
Marty Kraimer
e4a75d4a8c latest changes. Still extra printf statements 2001-09-24 19:49:08 +00:00
Marty Kraimer
878809a164 Still not working. Many asserts 2001-09-24 15:02:39 +00:00
Jeff Hill
8012642f9b cosmetic 2001-09-21 18:49:29 +00:00
Jeff Hill
ba4df8fd29 cosmetic 2001-09-21 17:33:20 +00:00
Jeff Hill
5b2d1df716 cosmetic 2001-09-21 17:29:25 +00:00
Jeff Hill
2e329813aa fixed possible race condition where put notify block might be nilled out
while it is running
2001-09-21 17:09:55 +00:00
Andrew Johnson
c5084f15cc Removed EPICS_EXTENSIONS dependencies as this causes problems with the
RELEASE file checker.  Now users of msi, sch2edif, e2db or dbst must
have these in their path, or define a variable pointing to the binary
in their application configure/RELEASE files.  Capfast users may also
want to add the definition CAPFAST_TEMPLATES pointing to their EPICS
symbols, originally found via (EPICS_EXTENSIONS)/templates/capfast
2001-09-20 20:26:38 +00:00
Andrew Johnson
2cb9e531cc Updated instructions in comments, moved EPICS_BASE to last line. 2001-09-20 20:14:35 +00:00
Andrew Johnson
4f2c38bb03 Changed how we decide whether or not to build cdCommands. 2001-09-20 20:09:14 +00:00
Jeff Hill
20ab67691f dont deadlock if ca_clear_event() is in the subscription update callback 2001-09-20 17:45:20 +00:00
Jeff Hill
a04d40082c fixed put notify blocking bug and put notify type mapping bug 2001-09-20 17:38:04 +00:00
Jeff Hill
e5d3ebaf70 catch out of bounds read 2001-09-20 17:34:06 +00:00
Jeff Hill
322b492f7f improved sync group startup sequence 2001-09-20 17:30:50 +00:00
Jeff Hill
329d91c595 improved subscription startup sequence 2001-09-20 17:30:26 +00:00
Jeff Hill
347997bed1 install ca diagnostics header file 2001-09-20 17:29:51 +00:00
Jeff Hill
f3edc221f3 catch additional exceptions and modified subscription startup
to work better with local channels
2001-09-20 17:29:25 +00:00
Jeff Hill
44e8fa75d3 improved test for local channels 2001-09-20 17:27:49 +00:00
Jeff Hill
bffacccf79 improved tcpiiu shut down seq 2001-09-20 17:26:02 +00:00
Jeff Hill
ba36f44354 allow use from C++ 2001-09-20 17:25:30 +00:00
Jeff Hill
d80c01f2b2 removed deadlock vulnerabilities 2001-09-20 17:24:54 +00:00
Jeff Hill
21f5c8a0de throw standard exception class 2001-09-20 17:17:10 +00:00
Jeff Hill
bdd20db4f2 dont initiate IO in constructor 2001-09-20 17:16:45 +00:00
Jeff Hill
863b0ebb03 added new exception 2001-09-20 17:13:19 +00:00
Jeff Hill
7597f551ad improved tcp shut down seq 2001-09-20 17:10:23 +00:00
Jeff Hill
b7128a8aa2 added stop threads member func 2001-09-20 17:09:50 +00:00
Marty Kraimer
f89f31b505 if epicsEventWaitWithTimeout fails dont continue 2001-09-20 13:46:37 +00:00
Marty Kraimer
42ecec6b11 fix bugs in dbLockShowLocked 2001-09-20 13:46:08 +00:00
Marty Kraimer
93d2705002 must Unlock 2001-09-20 11:54:27 +00:00
Marty Kraimer
ecd1cafe46 replace ca_search_and_connect with ca_create_channel 2001-09-20 11:54:05 +00:00
Jeff Hill
296304ca00 doc 2001-09-19 15:45:38 +00:00
Janet B. Anderson
66e3a3de22 Updated comment. 2001-09-18 19:01:55 +00:00
Janet B. Anderson
38269f4f21 Added vim environment variables. 2001-09-18 19:00:48 +00:00
Jeff Hill
0d9df123c6 moved lock to avoid recursive lock and potential deadlock 2001-09-18 17:58:54 +00:00
Jeff Hill
2893c435ac doc 2001-09-18 17:06:31 +00:00
Jeff Hill
bce2df010c fixed comment 2001-09-17 17:44:23 +00:00
Jeff Hill
14d152bcaf cosmetic 2001-09-17 17:34:41 +00:00
Andrew Johnson
f280f73a64 Tidying up. 2001-09-14 20:06:07 +00:00
Andrew Johnson
65871f02e8 Tidying up convertRelease.pl stuff. 2001-09-14 20:02:30 +00:00
Janet B. Anderson
34d439983d Tool file description updates. 2001-09-14 17:28:33 +00:00
Janet B. Anderson
29e4cd9f61 Added definitions needed by base build. 2001-09-13 22:06:05 +00:00
Janet B. Anderson
f855880786 Now creates CONFIG_APP_INCLUDE file. 2001-09-13 21:46:22 +00:00
Janet B. Anderson
01e185e1fa Added RELEASE_INCLUDES and RELEASE_DBDFLAGS.
Removed base/configure defs, put defs in app/ext CONFIG_APP_INCLUDE file.
2001-09-13 21:43:53 +00:00
Andrew Johnson
c5d3e65511 Retain order of RELEASE entries in CONFIG_APP_INCLUDE and cdCommands.
Added <app>_HOST_LIB variable to CONFIG_APP_INCLUDE.
2001-09-13 21:30:23 +00:00
Andrew Johnson
365c82023f Re-ordered and renamed some output from configAppInclude. 2001-09-13 20:54:42 +00:00
Janet B. Anderson
2891f74d54 Removed reference to depends. 2001-09-13 20:05:20 +00:00
Janet B. Anderson
0fe3dcdbe7 Fix for remove command filenames. 2001-09-13 19:53:20 +00:00
Andrew Johnson
28435f8f09 Added instructions about configure/Makefile and configure/RULES.ioc. 2001-09-13 19:42:51 +00:00
Janet B. Anderson
0966f06cb9 dbMakeDBDDepends replaced by mkmf.pl. 2001-09-13 19:34:38 +00:00
Janet B. Anderson
8d7cb4ce1d Replaced makeDbDepends.pl with mkmf.pl. 2001-09-13 19:31:06 +00:00
Janet B. Anderson
118dcad5b4 Many DEPENDS changes. Many other changes also. 2001-09-13 19:29:58 +00:00
Janet B. Anderson
dbeab43347 Moved HOST_HDEPENDS_CMD here. 2001-09-13 19:28:42 +00:00
Janet B. Anderson
ce150624fb Removed HOST_HDEPENDS_CMD. 2001-09-13 19:27:04 +00:00
Janet B. Anderson
8cdc639fb9 Removed duplicate CROSS_CXXFLAGS. Changed CROSS_HDEPENDS_CMD to MKMF.
HDEPENDS_INCLUDES_MKMF set to files with relative path names only.
2001-09-13 19:24:20 +00:00
Andrew Johnson
0d2922fbcf Replaced with convertRelease.pl. 2001-09-13 19:19:15 +00:00
Andrew Johnson
575969a672 Switch to using convertRelease.pl script, run a consistency check in
application <top>/configure directories.
2001-09-13 19:17:52 +00:00
Andrew Johnson
c51161f7a4 New tool, replaces makeConfigAppInclude.pl makeIocCdCommands.pl
and makeRulesInclude.pl and also performs consistency checks of
application RELEASE files.
2001-09-13 19:14:36 +00:00
Janet B. Anderson
87661c57d4 R3.14.0beta1 2001-09-13 19:13:12 +00:00
Janet B. Anderson
c1ae00ab21 Removed references to MAKEDBDEPENDS and MAKEDBDDEPENDS. 2001-09-13 19:12:38 +00:00
Janet B. Anderson
c5fbd3e8ec Moved GCC_EXEC_PREFIX to CONFIG.CrossCommon. 2001-09-13 19:11:45 +00:00
Janet B. Anderson
f7b89d58e9 Moved GCC_EXEC_PREFIX definition here.
Removed -B option since GCC_EXEC_PREFIX is defined.
2001-09-13 19:11:12 +00:00
Janet B. Anderson
3334174809 Added -mpentium cflag. 2001-09-13 17:50:57 +00:00
Marty Kraimer
c39788961e dont call errlogPrintf if no memory 2001-09-13 17:45:37 +00:00
Janet B. Anderson
a5aa5c1543 Updated for R3.14.0.beta1. 2001-09-13 16:19:09 +00:00
Jeff Hill
9f96c98ff3 removed explicit template mechanism 2001-09-13 15:10:41 +00:00
Jeff Hill
60cd0e880b removed templ inst mechanism 2001-09-13 15:06:46 +00:00
Jeff Hill
2b9212727f removed explicit template mechanism 2001-09-13 15:02:15 +00:00
Janet B. Anderson
cc382a10e0 Updates for R3.14.0beta1. 2001-09-13 14:58:24 +00:00
Jeff Hill
82a6c078a9 no-longer needed since gnu now uses Borland style auto template instantiation 2001-09-13 14:56:32 +00:00
Janet B. Anderson
47779a4492 Comment changes only. 2001-09-12 14:23:02 +00:00
Janet B. Anderson
cb22f79e6d Removed HOST_HDEPENDS_CMD definition, belongs in CONFIG_SITE. 2001-09-12 14:22:24 +00:00
Jeff Hill
16aa60586d changed ca create channel doc 2001-09-11 18:10:38 +00:00
Jeff Hill
6ce71a7b54 doc 2001-09-11 14:34:59 +00:00
Jeff Hill
cda6791496 we must call shutdown in addition to close on Linux 2001-09-10 23:52:57 +00:00
Jeff Hill
ccd2eb30bd wait for connection count to return to normal 2001-09-10 21:55:21 +00:00
Janet B. Anderson
7507eec873 Changed alpha3 to beta1. 2001-09-10 21:33:32 +00:00
Jeff Hill
eb1a83c71b removed unnec lock 2001-09-10 20:44:02 +00:00
Jeff Hill
049953e8ac COSMETIC 2001-09-10 20:43:35 +00:00
Jeff Hill
bf5ffaf41b workaround for new ( std::no_throw ) Tornado II compiler bug check 2001-09-10 14:45:45 +00:00
Jeff Hill
0afaadb981 use std::bad_alloc() 2001-09-10 14:32:49 +00:00
Jeff Hill
dcd20fa978 use proper form of delete 2001-09-08 00:48:22 +00:00
Jeff Hill
6b2ff88e40 fixed gnu warnings 2001-09-07 23:32:26 +00:00
Jeff Hill
6426c3093e make gnu hoppy 2001-09-07 23:29:35 +00:00
Jeff Hill
bdd52c1eb4 added missing include 2001-09-07 23:27:10 +00:00
Jeff Hill
43a5ce763b fixed gnu warning 2001-09-07 23:25:54 +00:00
Jeff Hill
ad819cba65 restructure to eliminate use of select 2001-09-07 23:02:32 +00:00
Jeff Hill
6517109e7e cosmetic 2001-09-07 23:00:47 +00:00
Jeff Hill
3fbee94fde allow creation of end of seq iterator 2001-09-07 22:59:26 +00:00
Marty Kraimer
c92a488c82 remove EPICS_TS_MIN_WEST add EPICS_TIMEZONE 2001-09-06 19:15:56 +00:00
Marty Kraimer
81d04e3883 remove comments about TIMEZONE 2001-09-06 19:11:38 +00:00
Marty Kraimer
98cf88ab66 use EPICS_TIMEZONE instead of EPICS_TS_MIN_WEST 2001-09-06 19:09:27 +00:00
Marty Kraimer
d091596772 remove EPICS_TS_MIN_WEST add EPICS_TIMEZONE 2001-09-06 19:08:32 +00:00
Marty Kraimer
dce3f534ce set TIMEZONE 2001-09-06 19:07:53 +00:00
W. Eric Norum
a4e4cfab7c Give the select prototype C linkage. 2001-09-05 19:59:26 +00:00
Jeff Hill
4d4b491517 removed GNU compiler ifdef 2001-09-05 00:50:36 +00:00
Marty Kraimer
2b246be69b if null record name show all 2001-09-04 13:59:44 +00:00
Janet B. Anderson
d5a587d616 Reformatted some lines. 2001-08-31 16:33:29 +00:00
Janet B. Anderson
1ce15d8137 Adding txt version of README.htm. 2001-08-31 16:22:56 +00:00
Jeff Hill
d70f4f718f fixed redundant titles 2001-08-29 23:57:27 +00:00
Jeff Hill
e4da2bf773 added doc for channel priorities 2001-08-29 23:50:13 +00:00
Jeff Hill
d7b7747887 fixed amaya link 2001-08-29 21:55:08 +00:00
Jeff Hill
3a5fbed882 added date entry 2001-08-29 21:47:46 +00:00
Jeff Hill
4fa81a1ac6 added amaya icon 2001-08-29 21:45:51 +00:00
Jeff Hill
7fb6862dfb fixed sun pro warning 2001-08-29 20:25:24 +00:00
Jeff Hill
40e476f7b9 test the entire priority range 2001-08-29 19:01:09 +00:00
Jeff Hill
36770de102 store the priority for use in casr 2001-08-29 18:57:50 +00:00
Jeff Hill
56fa1c87e8 fixed gnu warning 2001-08-29 18:43:16 +00:00
Jeff Hill
0c85c515f1 fixed gnu warning and added priority to casr 2001-08-29 18:42:57 +00:00
Jeff Hill
07e9ed18bf added sendVersion member func 2001-08-29 17:57:19 +00:00
Jeff Hill
8aa2d63967 send the version when connecting 2001-08-29 17:56:40 +00:00
Jeff Hill
b136bfa3ed added destroyInProgress member 2001-08-29 17:55:59 +00:00
Jeff Hill
8982740d23 fixed shutdown sequence bug 2001-08-29 17:55:16 +00:00
Jeff Hill
1c76b5d80a cosmetic 2001-08-29 17:54:37 +00:00
Jeff Hill
40e19e0118 added sendVersion() and getMinorVersion() calls 2001-08-29 17:53:55 +00:00
Jeff Hill
becfc8ca3c added change priority call 2001-08-29 17:52:38 +00:00
Jeff Hill
fc1d377622 added a test to verify client side priorities 2001-08-29 17:48:39 +00:00
Jeff Hill
74b5d6093f changed noop request to version request 2001-08-29 17:48:02 +00:00
Jeff Hill
2d662d4d08 changed standard priorities 2001-08-29 17:47:37 +00:00
Jeff Hill
360841bdc1 changed name of priority member 2001-08-29 17:44:50 +00:00
Jeff Hill
fe7fb3ba50 change priority of client when recinving the version request 2001-08-29 17:42:09 +00:00
Jeff Hill
15a9e07ab2 send server's minor version to client during connect sequence 2001-08-29 17:41:31 +00:00
Jeff Hill
9b876d82dd changed the way that thread priorities are computed 2001-08-29 17:40:39 +00:00
Jeff Hill
8c103d1cb9 added priority field 2001-08-29 17:39:51 +00:00
Jeff Hill
abf2b19755 define a priority range for the CA server 2001-08-29 17:38:48 +00:00
Jeff Hill
d6bbb0f3ef use CA server high for priority offset 2001-08-29 17:37:58 +00:00
Janet B. Anderson
34ffeae3eb Removed test on LIBTARGETS and SHARED_LIBRARIES.
Added PURIFY to link cmd.
2001-08-29 15:15:26 +00:00
Janet B. Anderson
86055bce3d Changed SHRLIBNAME to SHRLIBNAME_YES. 2001-08-29 15:11:37 +00:00
Janet B. Anderson
e3f86b5cec Make MKMF the default depends tool. 2001-08-29 15:02:34 +00:00
Janet B. Anderson
5b6f17f7db Find R3.13 tools in HOST_ARCH directory. 2001-08-29 15:00:56 +00:00
Janet B. Anderson
678818b59f Change for purify - define GCC_EXEC_PREFIX only for cross builds. 2001-08-29 15:00:06 +00:00
Jeff Hill
f3dc728e89 fixed more of the links 2001-08-28 00:20:55 +00:00
Jeff Hill
822d4dd79f removed debug printfs 2001-08-27 17:34:26 +00:00
Jeff Hill
c90112a04c fixed lockup when deleting events in flow control mode 2001-08-27 17:15:37 +00:00
Jeff Hill
9c892d128f take a lock when decrementing event queue quota because this is
no longer atomic on RISC processors
2001-08-24 18:48:14 +00:00
Jeff Hill
8ad35f4038 improved dbel diagnostic 2001-08-24 18:42:56 +00:00
Jeff Hill
6d7cb09151 zero out pad bytes (supress purify warning) 2001-08-24 16:30:02 +00:00
Jeff Hill
d556e3375c cosmetic 2001-08-24 16:29:19 +00:00
Jeff Hill
5a808ee4d5 include typeinfo 2001-08-23 21:59:33 +00:00
Jeff Hill
ab82d8c6fc fixed gnu warnings 2001-08-23 21:36:31 +00:00
Jeff Hill
d8eded00c3 installed 2001-08-23 21:33:26 +00:00
Jeff Hill
f9a9010ad2 added prioritry parameter, but ignore it for now 2001-08-23 21:24:57 +00:00
Jeff Hill
a4144e9675 new create channel API 2001-08-23 21:15:41 +00:00
Jeff Hill
4daac95e18 added channel create priority and catch C++ exceptions before they enter C code 2001-08-23 21:14:56 +00:00
Jeff Hill
aef70acbb9 fixed no write access test management bug 2001-08-23 21:13:25 +00:00
Jeff Hill
d4e3b1b626 now there can be multiple tcpiiu per BHE 2001-08-23 21:12:14 +00:00
Jeff Hill
798e5b6d3a fixed hang during channel delete and added client prioritization 2001-08-23 21:10:34 +00:00
Jeff Hill
dd723369fe added new priority parameter 2001-08-23 21:08:42 +00:00
Jeff Hill
984d8cac2b added bad priority error constant 2001-08-23 21:03:49 +00:00
Jeff Hill
a2cf8335fc cosmetic 2001-08-23 21:02:48 +00:00
Jeff Hill
3235b59641 added new priority parameter 2001-08-23 21:02:22 +00:00
Jeff Hill
56e9cbfd67 beacon period no-longer fetched through the IIU 2001-08-23 21:01:12 +00:00
Jeff Hill
0aa19f05bc avoid double io cancel 2001-08-23 20:54:00 +00:00
Jeff Hill
44ff5cf058 changes resulting from loss of one-to-one correlation between BHE and tcpiiu
and added new priority parameter
2001-08-23 20:53:24 +00:00
Jeff Hill
719340369c changes resulting from loss of one-to-one correlation between BHE and tcpiiu 2001-08-23 20:52:32 +00:00
Jeff Hill
29218a2a27 added priority parameter 2001-08-23 20:51:29 +00:00
Jeff Hill
7af4623511 call show routines of bucket entries from the resource table show function 2001-08-23 20:46:53 +00:00
Jeff Hill
11d2c6b698 cosmetic 2001-08-23 20:45:42 +00:00
Janet B. Anderson
6eeb8c74a2 Supressed RM output lines. Made *_registerRecordDeviceDriver.cpp precious. 2001-08-23 19:09:18 +00:00
Janet B. Anderson
97d679e350 Changes for win32 output. 2001-08-23 19:02:56 +00:00
Janet B. Anderson
7c753f5383 Modified test jba override comments. 2001-08-23 18:59:12 +00:00
Janet B. Anderson
70b49f3ba4 Added HDEPENDS definitions. 2001-08-23 18:55:12 +00:00
Janet B. Anderson
fe2b7fd8fc Use solaris compiler for HDEPENDS. 2001-08-23 18:53:57 +00:00
Janet B. Anderson
1a0bbfb0ca Modified comments. 2001-08-23 18:50:24 +00:00
Janet B. Anderson
16f3eff801 Added mkmf tool definition. 2001-08-23 18:49:03 +00:00
Janet B. Anderson
91fe7cecfb Simplified clean rule. 2001-08-23 18:48:05 +00:00
Janet B. Anderson
05d89d878e Added basename function. 2001-08-21 15:01:28 +00:00
Janet B. Anderson
2034323254 Removed duplicate definitions. 2001-08-20 19:38:05 +00:00
Andrew Johnson
24351032cf Moved SLOPE to before LINEAR, just in case any apps rely on the first
breakpoint table being LINEAR+1 (unlikely, but possible).  This also
deliberately breaks any apps that haven't converted to using constants
defined in the generated menu*.h files.
2001-08-20 15:46:51 +00:00
Andrew Johnson
21b7bf8b6b Removed special_linconv() routines, ESLO and EOFF can be set manually. 2001-08-17 22:44:46 +00:00
Andrew Johnson
a1b9e58cd0 ESLO and EOFF are now design fields, usable when no device support
special_linconv() routine is provided (for Raw Soft support).
LINR=SLOPE also allows design-time and CA setting of ESLO & EOFF.
Value changes by device support also cause CA monitors to be posted.
2001-08-17 22:34:58 +00:00
Andrew Johnson
99e5535085 Added SLOPE conversion type, for manual entry of ESLO and EOFF values. 2001-08-17 22:32:49 +00:00
Andrew Johnson
937b575ec3 Removed spurious menuLinr.dbd (LINR uses menuConvert found in src/bpt). 2001-08-17 22:30:59 +00:00
Jeff Hill
b1f414543a dont delay for initial round trip estimate until first search 2001-08-16 23:31:53 +00:00
Jeff Hill
d69d957ebe removed double ECA_DISCONN exception callback 2001-08-16 21:22:48 +00:00
Marty Kraimer
5e71997d09 backout RAWL, RAWF 2001-08-16 15:27:04 +00:00
Marty Kraimer
8f619b5f8d backout RAWL,RAWH; allow user to set ESLO,EOFF 2001-08-16 15:26:14 +00:00
Jeff Hill
6e42c7e3e9 fixed gnu warning 2001-08-16 01:49:19 +00:00
Jeff Hill
48da409965 reduce the number of error constants in use 2001-08-16 01:26:55 +00:00
Jeff Hill
c35b876af4 made pName() public and added channel destroy notify in subscription class 2001-08-16 01:24:59 +00:00
Jeff Hill
19a8fe6e7b call channel destroy notify mf for each attached IO when chan is destroyed 2001-08-16 01:24:09 +00:00
Jeff Hill
d67fcbdb67 added channel destroy notify mf 2001-08-16 01:23:33 +00:00
Jeff Hill
cc191cddbc send channel destroy exception to all IO and send disconnect exception
to subscription IO
2001-08-16 01:22:22 +00:00
Jeff Hill
89d93df035 new error constant and mark defunct entries 2001-08-16 01:20:30 +00:00
Jeff Hill
93e745ef83 supress channel destroy exception in "old" API layer 2001-08-16 01:19:52 +00:00
Jeff Hill
9bbb9c1314 reduce the numbe rof error constants in use 2001-08-16 01:19:03 +00:00
Jeff Hill
217cc10840 supress channel destroy exception in "old" API layer and reclaim storage
for oldSubscription when channel is destroyed
2001-08-16 01:18:05 +00:00
Jeff Hill
977299cffd cosmetic 2001-08-16 01:16:43 +00:00
Jeff Hill
f32583bdbd fixed benign gnu warning 2001-08-16 01:16:22 +00:00
Jeff Hill
625beb2300 improved test 2001-08-13 21:08:12 +00:00
Jeff Hill
46bf66f198 removed function parameter 2001-08-13 21:07:44 +00:00
Jeff Hill
f77bdc3b54 removed unused code 2001-08-13 21:06:38 +00:00
Jeff Hill
2f50543112 changes to ensure graceful shutdown on LInux 2001-08-13 21:06:08 +00:00
Jeff Hill
2a1d135889 dont pull bytes out of sock until obtaining the cb lock so single
threaded apps work better
2001-08-13 21:04:58 +00:00
Jeff Hill
48ea56d295 removed unused code 2001-08-13 20:30:35 +00:00
Marty Kraimer
b3f2c87697 make sure prompt has a value 2001-08-13 15:57:45 +00:00
Jeff Hill
0c9c5c1682 removed osi shutdown interface 2001-08-13 14:02:10 +00:00
Jeff Hill
224c7494b6 cosmetic 2001-08-13 14:01:50 +00:00
Marty Kraimer
9b117a376e fix compilation errors 2001-08-13 13:11:09 +00:00
Janet B. Anderson
ce506a77a7 Changes to mkmf. 2001-08-10 22:17:57 +00:00
Jeff Hill
81b169f059 *** empty log message *** 2001-08-10 19:47:20 +00:00
Janet B. Anderson
79d648229e Merged changes from epics_R3_13_1_branch branch. 2001-08-10 16:26:19 +00:00
Jeff Hill
dbf7b13e9f added some strftime tests 2001-08-10 00:46:15 +00:00
Jeff Hill
d19294499c fixed strftime formating 2001-08-10 00:45:53 +00:00
Jeff Hill
d6587ddca1 reliable solution for shutdown differences 2001-08-10 00:07:17 +00:00
Jeff Hill
192632eaf2 doc 2001-08-10 00:07:06 +00:00
W. Eric Norum
b5322ea925 Add new RTEMS initialization/configuration library. 2001-08-09 20:01:11 +00:00
W. Eric Norum
6fad25e2d1 Move RTEMS initialization/configuration files from the libCom
os-dependent directory to their own directory.
This solves the problem in which these files include header files
which are not yet installed when libCom is being built.
2001-08-09 17:54:06 +00:00
Jeff Hill
cfc8c2b8e0 better message 2001-08-09 16:29:56 +00:00
Jeff Hill
73b3a37881 fixed shutdown to work for circuits that are connecting 2001-08-09 00:56:15 +00:00
Jeff Hill
2c71674012 supress disconnect message unles DEBUG is set 2001-08-09 00:55:05 +00:00
Jeff Hill
6c2303a958 added try catch block to pend io 2001-08-09 00:54:08 +00:00
Jeff Hill
331b9b3d8b dont specify the default fd manager 2001-08-09 00:42:17 +00:00
Jeff Hill
7363d6a125 o increse stack size for threads calling call backs
o use shutdown() to knock threads out of recv(), but will this work on Solaris ?
The above change reacts to bugs in XTNextEvent() when an fd that has been
closed is registerd with XtAppAddInput
2001-08-08 23:51:33 +00:00
Jeff Hill
ec6806d071 added try catch to be safe 2001-08-08 23:48:15 +00:00
Janet B. Anderson
b5c0f11f5f Corrected spelling and line size. 2001-08-08 20:29:11 +00:00
Janet B. Anderson
634f25873b Initial version 2001-08-08 20:19:08 +00:00
Marty Kraimer
9765db4254 check for chid null 2001-08-08 15:04:34 +00:00
W. Eric Norum
4ebb8f4351 Remove unused include file.
Include header to get stack check function prototypes.
2001-08-07 21:44:22 +00:00
Janet B. Anderson
296d94a2c5 Added caExample_SRCS definition - SRCS required for automated depends. 2001-08-07 16:44:23 +00:00
Janet B. Anderson
355c0313f6 Removed R3.13 files Makefile.Host and Makefile.Ioc. 2001-08-07 16:32:03 +00:00
Janet B. Anderson
4cb9d0b7d8 Made MKMF the default for HOST_HDEPENDS_CMD. 2001-08-07 14:42:43 +00:00
Jeff Hill
7119b68a3b fixed borland warning 2001-08-06 23:27:53 +00:00
Jeff Hill
58989fb8e1 supress additional warnings 2001-08-06 23:22:17 +00:00
Jeff Hill
1d07007562 supress messages triggered by normal C++ coding partices 2001-08-06 21:00:42 +00:00
Jeff Hill
f47210502e use & in front of C++ member func pointer 2001-08-06 17:43:52 +00:00
Jeff Hill
de4f57cf5c added html doc 2001-08-03 00:43:25 +00:00
Jeff Hill
6beb555fcc installed into CVS 2001-08-03 00:41:56 +00:00
Jeff Hill
cfa8a80ee1 uninstalled 2001-08-03 00:41:37 +00:00
Jeff Hill
cbb5d190f5 installed into CVS 2001-08-03 00:34:26 +00:00
Jeff Hill
b05630a986 fixed benign purify warning 2001-08-02 23:58:40 +00:00
Jeff Hill
01a63dd7c5 made compatible with C++ test codes in mrkSoftTest 2001-08-02 22:46:59 +00:00
Janet B. Anderson
9391e3d9cc Added mkmf.pl 2001-08-02 22:09:18 +00:00
Janet B. Anderson
a83f3f9214 Added HDEPENDS_CMD option for compiler or mkmf.pl 2001-08-02 22:09:16 +00:00
Jeff Hill
e661474c44 fixed solaris warnings 2001-08-02 21:21:26 +00:00
Jeff Hill
96557512f5 cosmetic 2001-08-02 21:20:54 +00:00
Jeff Hill
758eaede80 added diagnostic 2001-08-02 21:20:13 +00:00
Jeff Hill
0205741354 improved beacon period test 2001-08-02 21:19:50 +00:00
Jeff Hill
2e34ee4829 improved recv schedualing 2001-08-02 18:17:20 +00:00
Jeff Hill
dc50563da0 cleaned out recvFlag 2001-08-02 18:16:55 +00:00
Jeff Hill
c1e34b85fd fixed IIU disconnect problem 2001-08-02 01:35:27 +00:00
Jeff Hill
d0e4a93563 simplified schedualing 2001-08-02 00:34:46 +00:00
Janet B. Anderson
cd43af94e1 Initial version. 2001-08-01 19:34:54 +00:00
Jeff Hill
4cb0e2b7cc use proper form of include 2001-08-01 19:18:08 +00:00
Marty Kraimer
1fab139eca really cant git rid of module_types.h and task_params.h 2001-08-01 18:14:39 +00:00
Marty Kraimer
cf99837560 get rid of dev/drv support; use OBJ library only 2001-08-01 14:33:15 +00:00
Marty Kraimer
9989ff73fe Make vxCom an OBJ library 2001-08-01 14:31:59 +00:00
Marty Kraimer
86d42a8283 add trailing */ 2001-08-01 13:34:13 +00:00
Jeff Hill
ba6a096e86 a fix for use of posix isnan() function 2001-07-31 21:35:26 +00:00
Jeff Hill
11ffedc376 removed extraneous else 2001-07-31 21:31:47 +00:00
Marty Kraimer
452d4df4fb remove all dev/drv support 2001-07-31 19:49:19 +00:00
Marty Kraimer
b85bdd318b increase stack size 2001-07-30 15:27:44 +00:00
Janet B. Anderson
464cb4b26b Modified for automated depends. 2001-07-26 20:31:02 +00:00
Janet B. Anderson
33dbdc68a3 Added automated depends for created db and dbd files. 2001-07-26 20:27:16 +00:00
Janet B. Anderson
5930f5b7d9 Reordered SRC_DIRS for consistancy.
Allow CONFORM flags to be target, target/osclass, and target/t-a specific.
2001-07-26 20:19:06 +00:00
Marty Kraimer
216105deeb add RAWL RAWF 2001-07-26 15:57:35 +00:00
Marty Kraimer
a5ebba6be3 use ansi function prototypes 2001-07-26 15:57:03 +00:00
Marty Kraimer
181f1e720f add support for RAWL RAWF 2001-07-26 15:56:33 +00:00
Marty Kraimer
9ebaf81de3 use isnan from standard library support
For vxWorks provide implementation
2001-07-26 15:47:12 +00:00
Marty Kraimer
11e57aa52d isnan was not impmemented on vxWorks 2001-07-26 15:43:22 +00:00
Ralph Lange
8a99fac979 Fixed HPUX warnings. 2001-07-26 08:58:34 +00:00
Ralph Lange
bbd6c9ef90 Fixed HPUX warnings. 2001-07-26 08:14:56 +00:00
Ralph Lange
3712987800 Fixed HPUX warnings. 2001-07-26 07:59:07 +00:00
Ralph Lange
e49a919434 Fixed HPUX errors (typename) 2001-07-26 07:45:30 +00:00
Janet B. Anderson
84007a0b20 Updated for header dependancy changes. 2001-07-25 20:46:09 +00:00
Janet B. Anderson
f11205de68 Comment changes. 2001-07-25 18:20:25 +00:00
Marty Kraimer
e573c4362f make ringPointerTestMain a .cpp file; timerTest is obsolete 2001-07-25 15:21:38 +00:00
Marty Kraimer
ca14e4eabc make exampleMain a .cpp file 2001-07-25 15:10:12 +00:00
Janet B. Anderson
c20c4c5380 Initial version. 2001-07-25 15:05:42 +00:00
Janet B. Anderson
fd6d55f1ae Changes for R3.14 2001-07-25 14:44:46 +00:00
Janet B. Anderson
5178220160 Changes to automatically generate header file dependancies 2001-07-25 14:44:44 +00:00
Janet B. Anderson
443f95471e CODE flag changes for cygwin build 2001-07-25 14:40:19 +00:00
Janet B. Anderson
bee24cadd8 Changes to automatically generate header dependancy files. 2001-07-25 14:40:18 +00:00
Janet B. Anderson
973e8eb0bc Edit updates. 2001-07-24 19:46:14 +00:00
Marty Kraimer
7c81b6920e remove old style C; use signed char for cvtCharToString; get rid of some warning messages 2001-07-24 13:47:29 +00:00
Marty Kraimer
420d583db2 allow hex and octal constants 2001-07-23 14:43:36 +00:00
Marty Kraimer
694f21d8b9 fix breakpoint table problem 2001-07-23 14:42:59 +00:00
Marty Kraimer
018f0b5186 Allow hex and octal constants for constant links 2001-07-23 14:39:40 +00:00
Marty Kraimer
3031016853 put VAL field in a promptgroup 2001-07-23 14:37:19 +00:00
Janet B. Anderson
ffdecd4a21 Undefine __STDC__ added for borland build. 2001-07-23 14:10:08 +00:00
Marty Kraimer
7df3905b5c hpcompat.c was needed for HPUX 9; not supported 2001-07-23 13:09:55 +00:00
Ralph Lange
a6e67869db Fixed Tornado warnings. 2001-07-20 17:38:20 +00:00
Ralph Lange
a67444ea1e Fixed HPUX 11 problem: isnan() is a macro. 2001-07-20 17:36:41 +00:00
Ralph Lange
48aac3bc86 Fixed Tornado warnings 2001-07-20 17:33:50 +00:00
Janet B. Anderson
993fbd06e9 Updated to solaris 8 POSIX flags. 2001-07-19 15:27:44 +00:00
Jeff Hill
4698215212 added try lock test 2001-07-16 18:14:53 +00:00
Jeff Hill
35110d3e88 fixed incorrect status returned from tryLock() 2001-07-16 17:30:51 +00:00
Jeff Hill
a520078ce2 fixed spelling 2001-07-16 17:12:57 +00:00
Jeff Hill
e095b7feba fixed sun pro warnings 2001-07-16 16:59:37 +00:00
Jeff Hill
13f8bc14ec better test to determine if this is a receive processing thread,
and moved delay == 0 is wait forever to legacy ca_pend_io interface
2001-07-16 15:39:59 +00:00
Jeff Hill
ef54680c9d better test to determine if this is a receive processing thread 2001-07-16 15:37:55 +00:00
Jeff Hill
4d3cf68a21 moved odd ball delay == 0.0 is wait forever behavior into
legacy ca_pend_io interface.
2001-07-16 15:36:19 +00:00
Jeff Hill
dd3baf0ce4 fixed and also simplified locking logic 2001-07-13 23:12:41 +00:00
Jeff Hill
57e8a344fc moved odd ball delay == 0.0 is wait forever behavior into
legacy ca_pend_event interface so that we dont need to
keep doing this in the future.
2001-07-13 23:11:19 +00:00
W. Eric Norum
9803b24aa9 Ensure that host name is always null-terminated. 2001-07-13 18:48:03 +00:00
Jeff Hill
24a08c9c78 fixed problem discovered by Eric Norum 2001-07-13 18:08:49 +00:00
Jeff Hill
df9b5703d5 more tests 2001-07-13 16:10:08 +00:00
Jeff Hill
d0e047f78f correct fix for thread switch problem on Linux 2001-07-13 16:06:39 +00:00
Marty Kraimer
d1c39d4089 dbNameToAddr dod the conversion 2001-07-13 13:16:19 +00:00
Jeff Hill
20aebe4460 kludge to test thread switch on Linux 2001-07-13 02:16:07 +00:00
Jeff Hill
2758df6db2 fixed potential deadlock 2001-07-13 02:06:16 +00:00
Jeff Hill
35d23ac6bd fixed cac rundown bugs 2001-07-13 01:58:23 +00:00
Jeff Hill
a29b0fafc7 changed name of constant and added block until recv
backlog is complete to pend_event
2001-07-12 23:57:24 +00:00
Jeff Hill
ef4ebf4d4b work correctly on systems without preemptive schedualing 2001-07-12 23:48:14 +00:00
Jeff Hill
bc0b51dbe4 made mf private 2001-07-12 23:25:58 +00:00
Jeff Hill
207f25f469 fixed typo 2001-07-12 18:03:45 +00:00
Jeff Hill
c61e68b4e3 revert to using virtual destroy() to destroy timers 2001-07-12 17:53:51 +00:00
Jeff Hill
b061bb6eb9 no need to save pointer to timer queue now 2001-07-12 16:04:04 +00:00
Jeff Hill
1042e657c8 improved internal class hierarchy 2001-07-12 16:02:54 +00:00
Jeff Hill
41a2ba5a9b make timer queue visible from epicsTimer 2001-07-12 02:23:14 +00:00
Jeff Hill
f82a4a28d2 fixed comment 2001-07-12 02:20:55 +00:00
Jeff Hill
1403317247 fixed gnu warning 2001-07-11 23:47:40 +00:00
Jeff Hill
2923f64442 improved syntax diagnostic 2001-07-11 23:33:53 +00:00
Jeff Hill
e5b28e846b adapt to new timer API 2001-07-11 23:31:45 +00:00
Jeff Hill
a16db0ee59 optimized word pop 2001-07-11 23:30:24 +00:00
Jeff Hill
ca2c93bda4 improved schedualing of recv process thread 2001-07-11 23:28:57 +00:00
Jeff Hill
72cbc5edf0 added recv proc flush postpone 2001-07-11 23:26:56 +00:00
Jeff Hill
c285cbfa30 optimized out v41ok test 2001-07-11 23:25:32 +00:00
Jeff Hill
bab43925ac removed dated entry 2001-07-11 23:24:30 +00:00
Jeff Hill
9a1023a5da optimized word pop 2001-07-11 23:24:02 +00:00
Jeff Hill
1ac9d69c64 added new pop routines 2001-07-11 23:22:08 +00:00
Jeff Hill
94a05a3077 removed junk 2001-07-11 23:19:45 +00:00
Jeff Hill
a5c339209b improved schedualing of recv process thread 2001-07-11 23:19:13 +00:00
Jeff Hill
b1fee9b6e3 detect problems with ca poll 2001-07-11 23:17:21 +00:00
Jeff Hill
8ffb5e5fb9 delete timer via timer queue 2001-07-11 23:16:34 +00:00
Janet B. Anderson
71fa55fd2a Removed unused shrlib suffix. 2001-07-09 20:05:04 +00:00
Janet B. Anderson
7b54119ff8 Changed to gnu compiler for depends rule. 2001-07-09 20:04:24 +00:00
Jeff Hill
21dc0da78c fixed benign memory leak 2001-07-05 18:01:03 +00:00
Jeff Hill
d36ee2b634 cosmetic 2001-07-05 16:11:37 +00:00
Jeff Hill
7a6a6dc53e fixed comment 2001-07-05 16:10:54 +00:00
Jeff Hill
5640c38032 removed garbage 2001-07-03 23:57:58 +00:00
Jeff Hill
c717ab3aec track with timer API changes 2001-07-03 23:36:10 +00:00
Janet B. Anderson
a9f1052b59 Removed unused HOST_OPT_FLAGS definition. 2001-07-03 23:13:56 +00:00
Marty Kraimer
29b706dd35 call asSubRecordFunctionsRegister 2001-07-03 19:25:39 +00:00
Jeff Hill
5a9517cc4c update the tiome stamp when scanning 2001-07-03 18:50:24 +00:00
Jeff Hill
803d57042d improved "usage" diagnostic 2001-07-03 18:04:55 +00:00
Jeff Hill
8f07a836f0 use errlogPrintf 2001-07-03 18:04:30 +00:00
Jeff Hill
0eba4833fb improved "usage" diagnostic and cmd line syntax 2001-07-03 18:03:49 +00:00
Jeff Hill
40ed20bdb1 use uniform PV name extension 2001-07-03 18:03:12 +00:00
Jeff Hill
40dab8bd5b fixed spelling in comment 2001-07-03 18:01:40 +00:00
Jeff Hill
2b5d0af492 upgraded test diagnostics 2001-07-03 17:01:27 +00:00
Marty Kraimer
5ff1a8f2a3 make default precision 6 instead of 0 2001-07-03 12:49:01 +00:00
Jeff Hill
6db46f8890 properly byte swap in exception message 2001-07-03 01:27:13 +00:00
Jeff Hill
00815ca1c9 changed interface so that unreferenced table will not optimize away,
and fixed problem where get callback exception was incorrectly
handled
2001-07-03 00:59:38 +00:00
Jeff Hill
1fdcd08c9d changed interface so that unreferenced table will not optimize away 2001-07-03 00:58:18 +00:00
Jeff Hill
e195df9f32 improved test diagnostics 2001-07-03 00:55:07 +00:00
Jeff Hill
b90c266295 fixed diagnostic 2001-07-03 00:54:37 +00:00
Andrew Johnson
185b773419 Added configuration files for the MVME2100 running Linux, both cross
and self-hosted compilation supported (but you don't want to use the
self-hosted if you can help it!).  Assumes the standard Hard Hat
Linux install locations for the cross-development tools.
2001-07-02 21:49:36 +00:00
Andrew Johnson
f4f3c931b0 Extended the ~tsSLList<T>() workaround, egcs-2.91.66 doesn't like this either. 2001-07-02 21:44:51 +00:00
Janet B. Anderson
ac19d5fba6 Added O.Common dir to dependancies of BUILD_ARCHS rule. 2001-07-02 21:39:39 +00:00
Jeff Hill
36e7eb94c0 fixed function to match prototype 2001-06-29 22:41:35 +00:00
Jeff Hill
87a3481b2a use Eric's new putenv API 2001-06-29 22:40:44 +00:00
Jeff Hill
c20ddad7c6 changed the API for CA context manipulation 2001-06-29 22:19:53 +00:00
Jeff Hill
f6ea24d417 allow subscription delete from subscription callback 2001-06-29 22:16:38 +00:00
Jeff Hill
7b16e38974 added test for monitor delete in event callback 2001-06-29 22:15:49 +00:00
Jeff Hill
69545bc772 installed some limited self test capabilities so that the hash tables
can be verified during regression testing
2001-06-28 22:12:54 +00:00
Janet B. Anderson
22abff43bf Removed references to EPICS_BASE_LIB. 2001-06-28 21:54:36 +00:00
Janet B. Anderson
f7d0bf146c Changed EPICS_BASE_HOST_BIN to INSTALL_HOST_BIN. 2001-06-28 21:38:25 +00:00
W. Eric Norum
61c057df16 Add comment explaining why aitConvert must be compiled without optimization
for RTEMS-pc386 targets.
2001-06-28 21:06:45 +00:00
Janet B. Anderson
60173f78cf Remove compiler path requirement. 2001-06-28 21:05:42 +00:00
Janet B. Anderson
aa8e36e015 Added include for time.h. 2001-06-28 16:19:06 +00:00
Janet B. Anderson
d7279bbcbf Allow make inc at top level 2001-06-28 16:07:56 +00:00
Janet B. Anderson
a6ceb5a3f1 Remove OPT flag for RTEMS-pc386 build. 2001-06-28 16:07:55 +00:00
Janet B. Anderson
b5e9036e79 Updated documentation for alpha3 release. 2001-06-27 18:30:07 +00:00
Janet B. Anderson
e76c4287ac Added T_A specific OPT and WARN flags. 2001-06-27 14:21:32 +00:00
Janet B. Anderson
b1643cf138 Moved +DAportable to CODE flags. 2001-06-26 16:29:12 +00:00
Jeff Hill
76cb1ca826 tabs to spaces 2001-06-25 21:50:50 +00:00
Jeff Hill
384af09c72 changed tabs to spaces 2001-06-25 21:47:44 +00:00
Jeff Hill
8dbecc7b16 try to accomodate PPC 2001-06-25 21:14:08 +00:00
Jeff Hill
bbd3a45142 try to accomodate PPC 2001-06-25 20:34:53 +00:00
Janet B. Anderson
1e595bfaa6 Don't try to create directory if symbolic link of same name exists. 2001-06-25 19:28:11 +00:00
Jeff Hill
6d9a8de270 fix improper auto ptr release bug 2001-06-25 17:08:06 +00:00
W. Eric Norum
33e11134e5 RTEMS now provides a mechanism for interrogating the memory allocator. 2001-06-23 20:44:29 +00:00
Jeff Hill
e4447d8c97 removed overly conservative list node verification 2001-06-22 01:02:52 +00:00
Jeff Hill
d4126b1c80 fixed autoLock where autoRelease should have been 2001-06-21 23:19:02 +00:00
Jeff Hill
22e9be48ad fixed bug in proper cleanup of client context 2001-06-21 23:04:44 +00:00
Jeff Hill
cf7df276ff fixed potential deadlock 2001-06-21 22:44:38 +00:00
Marty Kraimer
3ac74dd5a8 keep private copy of pvname 2001-06-21 18:07:25 +00:00
Jeff Hill
e684ff02eb simplified locking 2001-06-21 17:16:20 +00:00
Jeff Hill
f2332d1bb1 improved monitor first update test 2001-06-21 17:11:39 +00:00
Marty Kraimer
ae57d2592e fix bug that could cause dbNotifyCancel to timeout 2001-06-21 13:16:59 +00:00
Jeff Hill
da412768fa eliminate redundant code 2001-06-21 00:29:55 +00:00
Jeff Hill
99df1b5584 fixed a disconnect related problem and also improved
structure of locking
2001-06-20 17:45:19 +00:00
Janet B. Anderson
61ff831b2d Uncommented epicsListTest. 2001-06-20 15:27:52 +00:00
Jeff Hill
6348395b7f fixed gnu warning 2001-06-19 23:44:49 +00:00
Jeff Hill
13b74464ab rearranged code so that we have a late start
process receive thread again
2001-06-19 23:30:09 +00:00
Jeff Hill
ab52e91d66 IO deletes must wait for callback completion 2001-06-19 20:05:44 +00:00
Janet B. Anderson
843595ed42 Allowed file and file/os specific WARN and OPT values. 2001-06-19 14:37:08 +00:00
Janet B. Anderson
4cf55705d6 Removed references to DBDNAME and DEBEXPAND. 2001-06-19 14:35:56 +00:00
Jeff Hill
d02e01c55b fixed use of destroy member function without checking for nill pointer 2001-06-18 21:12:36 +00:00
Jeff Hill
8926a0a8b3 fixed uninitialized member 2001-06-18 21:11:49 +00:00
Jeff Hill
9a0f0900ce work around problems in the Tornado compiler 2001-06-16 00:47:09 +00:00
Jeff Hill
5b729b2f31 updated for R3.14 2001-06-15 23:27:04 +00:00
Jeff Hill
60be389ce0 no need to specify hash table size 2001-06-15 23:07:03 +00:00
Jeff Hill
b271bcf8e9 no longer need to specify hash table size 2001-06-15 22:51:38 +00:00
Jeff Hill
89a2c69651 adjust to changing hash table api 2001-06-15 22:45:25 +00:00
Jeff Hill
3e622f35b2 improved message 2001-06-15 22:43:38 +00:00
Jeff Hill
389ed62c33 no need to specify hash table size 2001-06-15 22:41:54 +00:00
Jeff Hill
12ea010e4b fixed bug where resource was deallocated but it was
still in the hash table, and no longer need to specify
the hash table size
2001-06-15 22:41:03 +00:00
Jeff Hill
25f6920f1f fixed bug where resource was deallocated but it was still in the hash table 2001-06-15 22:39:54 +00:00
Jeff Hill
ca76832387 non need to specify hash table size 2001-06-15 22:39:01 +00:00
Jeff Hill
759b1a3541 improved test 2001-06-15 22:34:35 +00:00
Jeff Hill
9c89eabc84 now uses linear hashing technique to expand the table w/o
causing significant outliers in insertion or lookup delays
2001-06-15 22:33:48 +00:00
Jeff Hill
535ead1241 allow one list to be initialized from, and also steal the contents from,
another list
2001-06-15 22:18:09 +00:00
Andrew Johnson
28ea1b66a3 sysClkRateGet() _is_ defined in sysLib.h, but indirectly in the
drv/timer/timerDev.h file that it includes.
2001-06-14 22:03:50 +00:00
Janet B. Anderson
d5b84741ca Fixed _USER_. 2001-06-14 21:45:43 +00:00
Janet B. Anderson
4375774da3 Added RTEMS template files. 2001-06-14 21:45:09 +00:00
Janet B. Anderson
d2c3f80fe4 Initial version. 2001-06-14 15:18:28 +00:00
Janet B. Anderson
865e4cbc01 Changed #if to make it more readable. 2001-06-14 14:48:42 +00:00
Janet B. Anderson
1688ff923b Changed OBJS to SRCS for registerRecordDeviceDriver. 2001-06-14 14:43:58 +00:00
W. Eric Norum
95c23a4784 Clean up printout when RTEMS task has gone away.
Treat a missing RTEMS task as suspended.  Do not print error message.
2001-06-13 20:43:48 +00:00
Janet B. Anderson
3a4435a70a Removed unneeded vxWorks LDFLAGS undefined iocInit line. 2001-06-13 19:52:12 +00:00
Marty Kraimer
8d1830b8c6 make sure iocshReg is defined 2001-06-13 19:49:56 +00:00
Marty Kraimer
8693ee19f9 registerRecordDeviceDriver was not in library 2001-06-13 14:20:59 +00:00
Jeff Hill
71ccf13585 eliminate option to turn off exceptions 2001-06-12 17:54:30 +00:00
Jeff Hill
4886ad2b6d fixed to use const for begin and end 2001-06-12 17:48:36 +00:00
Jeff Hill
bbb3b9a432 new timer creation API 2001-06-12 17:22:27 +00:00
Jeff Hill
4444b74a58 fixed purify warning 2001-06-12 17:20:07 +00:00
Jeff Hill
ff76c98aa3 removed warning message 2001-06-12 17:18:20 +00:00
Jeff Hill
87f9c12a77 dont use free list for passive timer queue because of entaglements
between the file scope free list destructor and any file scope
file descriptor manager destructor's attempts to destroy a
passive timer queue
2001-06-12 17:16:52 +00:00
Jeff Hill
08208e995d changed the api for creating timers to match new timer API
and dont allow exceptions to be dissabled
2001-06-12 17:15:06 +00:00
Jeff Hill
452ead8a9f changed the api for creating timers to match new timer API 2001-06-12 17:14:16 +00:00
Jeff Hill
403c377de8 revert because workaround for RTEMS didnt build 2001-06-11 22:28:51 +00:00
Janet B. Anderson
6098b72694 Added rules for all, install, and rebuild. 2001-06-11 20:41:47 +00:00
Jeff Hill
5395f95484 workarounds for problems discovered when building for RTEMS 2001-06-11 20:13:42 +00:00
Janet B. Anderson
dd95b5462e Removed references for baseLIBOBJS. 2001-06-11 18:53:07 +00:00
Jeff Hill
77a90ccc57 made diff computations const 2001-06-11 18:16:08 +00:00
Jeff Hill
24b1da7fff made diff computations identical 2001-06-11 18:15:14 +00:00
Jeff Hill
2a22727348 workarounds for problems discovered when building for RTEMS 2001-06-11 17:57:31 +00:00
Jeff Hill
01b7b23743 dont pull in stdio.h in the header since it isnt referenced there 2001-06-11 17:08:07 +00:00
Marty Kraimer
26a92d3526 make alarm a link LINK_ALARM 2001-06-11 14:31:30 +00:00
Marty Kraimer
c6696c209f force at least a 1 tick delay if timeOut >0.0 2001-06-11 14:30:04 +00:00
Janet B. Anderson
c3cbf1bd2c Die if rmtree fails. 2001-06-08 20:36:54 +00:00
Jeff Hill
c2a5eef5d4 added time stamp tests 2001-06-07 17:24:28 +00:00
Janet B. Anderson
cb0d92aa82 Changed LIBOBJS_HOST to LIBRARY_LD_OBJS. 2001-06-07 16:15:16 +00:00
Janet B. Anderson
d8ca8c6d72 R3.14.0alpha3 2001-06-07 16:00:45 +00:00
Janet B. Anderson
fddb0939a4 Added notes for building solaris-sparc-gnu. 2001-06-07 15:58:13 +00:00
Janet B. Anderson
c307a05e81 Changed MSI definition. 2001-06-07 15:57:22 +00:00
Jeff Hill
4ae24683fc fixed gnu warning 2001-06-07 15:53:24 +00:00
Janet B. Anderson
7874d35daf Changes to create vxWorks archive libraries and prods. 2001-06-07 14:26:06 +00:00
Jeff Hill
06bec39aa7 proper conversion from floating point offset to integer nsec 2001-06-06 19:33:25 +00:00
Jeff Hill
b6479bbc80 added parens 2001-06-06 18:51:05 +00:00
Jeff Hill
6a96052fcf fixed gnu warning 2001-06-06 18:24:12 +00:00
Jeff Hill
5e215a944d more changes for type safe thread id 2001-06-06 18:19:42 +00:00
Jeff Hill
6937cc4075 more changes for type safe thread id 2001-06-06 18:16:43 +00:00
Jeff Hill
39b28e9bd6 clean up resulting from type safe thread id 2001-06-06 17:55:48 +00:00
Jeff Hill
fbf5947f15 fixed wrong destroy method called 2001-06-06 17:45:16 +00:00
Jeff Hill
3ede456a0d fixed comment 2001-06-06 17:38:15 +00:00
Jeff Hill
b13d938b11 use struct ptr for ID types because:
o this is more type safe
o this works better with source level debuggers
2001-06-06 17:28:37 +00:00
Jeff Hill
07a767e345 possibly bad guess for the number of channels 2001-06-04 23:20:41 +00:00
Jeff Hill
1f8d22994c bad guess for the number of channels 2001-06-04 23:18:47 +00:00
Jeff Hill
54949779a9 dont always use default exception handler 2001-06-04 23:18:08 +00:00
Jeff Hill
1611bc40f7 set default number of channels guess 2001-06-04 23:16:25 +00:00
Jeff Hill
d9508ce1e4 o set default number of channels guess
o clean up get copy ifit fails prematurely
2001-06-04 23:15:50 +00:00
Jeff Hill
e4b95a6ae7 use proper printf 2001-06-04 23:15:19 +00:00
Jeff Hill
fde282b967 added printf MF 2001-06-04 23:13:49 +00:00
Jeff Hill
93a8be53d8 clean up get copy ifit fails prematurely 2001-06-04 23:12:59 +00:00
Jeff Hill
22b5eca868 set number of channels guess 2001-06-04 23:12:23 +00:00
Jeff Hill
5d3495485d dont always use default exception handler 2001-06-04 23:11:56 +00:00
Jeff Hill
11388a5ad3 removed comment 2001-06-04 23:10:45 +00:00
Jeff Hill
7be47b2b86 added more tests 2001-06-04 23:08:55 +00:00
Jeff Hill
4c50314331 o set default number of channels guess
o clean up get copy ifit fails prematurely
2001-06-04 23:08:39 +00:00
Jeff Hill
f49289fdd0 fixed problem where put conversion fails but nevertheless
1) caller of db_put_field gets successful status
2) the array size is modified.
2001-06-01 22:19:04 +00:00
Jeff Hill
2a50d5f897 added more exception tests 2001-06-01 22:10:10 +00:00
Jeff Hill
09be73c889 added array exception test 2001-06-01 17:56:37 +00:00
Jeff Hill
b716cca8b0 compiler restrictions 2001-06-01 16:47:57 +00:00
Jeff Hill
c585721024 cosmetic 2001-06-01 16:45:38 +00:00
Jeff Hill
31a2548d28 new tasks 2001-06-01 16:44:54 +00:00
Jeff Hill
ba8e61f26a fixed bug where suibscription cancel request was not sent to
server when user canceled IO
2001-06-01 16:44:17 +00:00
Jeff Hill
75a5891fb0 improved diagnostic 2001-06-01 16:40:31 +00:00
Jeff Hill
d0438b37a1 fixed win32 warning 2001-05-31 20:42:03 +00:00
Jeff Hill
a456376230 fixed syntax error not detected by ms vis c++ 2001-05-31 20:26:26 +00:00
Jeff Hill
d8a5dc3563 simplified 2001-05-31 20:19:34 +00:00
Jeff Hill
47757dffaf code clarity 2001-05-31 20:18:12 +00:00
Jeff Hill
e73613a699 added 8 bit unsigned integer type 2001-05-31 20:17:55 +00:00
Jeff Hill
b1ca3061a1 avoid precision problems with 0.0 constant 2001-05-31 20:17:20 +00:00
Jeff Hill
194435b010 removed use of TRUE and FALSE 2001-05-30 22:52:46 +00:00
Jeff Hill
0504af338b restored ca_pend() 2001-05-30 21:56:30 +00:00
Andrew Johnson
257d4af995 Fixed strange problems on win32, perl line endings. 2001-05-29 16:50:29 +00:00
Andrew Johnson
2f128e7e39 Oops, missing '!' in ARGV check 2001-05-29 15:12:20 +00:00
Andrew Johnson
e3203ca468 Fixed problem with Cygwin Perl not supporting globs properly,
and bug that -l option needed an argument.
2001-05-25 20:11:45 +00:00
Jeff Hill
564ca4a6f6 restart interrupted system call 2001-05-24 22:07:02 +00:00
Jeff Hill
4be3cc14a8 cosmetic 2001-05-24 21:28:18 +00:00
Jeff Hill
a7f8f90ddc restart sendto system call if it is interrupted 2001-05-24 21:14:40 +00:00
Jeff Hill
8d1e2327df better diagnostics 2001-05-24 00:24:05 +00:00
Jeff Hill
bc0b97556e properly display version number of server 2001-05-23 23:06:33 +00:00
Jeff Hill
fb7a2d6490 fixed bug in test 2001-05-23 23:06:07 +00:00
Jeff Hill
eb9b01e118 better messages 2001-05-23 23:05:30 +00:00
Jeff Hill
ac587806a0 fixed message 2001-05-23 22:43:23 +00:00
Jeff Hill
5961325186 fixed format problem 2001-05-23 22:34:26 +00:00
Jeff Hill
61e2a3f8ce removed redundant release data description 2001-05-23 21:34:27 +00:00
Jeff Hill
5179d0d505 better config of ifconfig differences 2001-05-23 20:54:48 +00:00
Janet B. Anderson
9ecf5a5349 Added pv_DIR defintions. 2001-05-23 16:17:35 +00:00
Janet B. Anderson
13de25e9f4 Reordered <lib>_DIR definitions. 2001-05-23 16:15:18 +00:00
Jeff Hill
6fbf031e75 fixed sun pro warnings 2001-05-23 01:23:23 +00:00
Jeff Hill
4a5067b8a6 fixed gnu warnings 2001-05-23 00:57:05 +00:00
Jeff Hill
245bd5ab5e fixed gnu warnings 2001-05-23 00:48:41 +00:00
Jeff Hill
069e25aa72 workaround gnu compiler bug 2001-05-23 00:12:59 +00:00
Jeff Hill
48aa0b3e45 small optimization 2001-05-22 23:35:23 +00:00
Jeff Hill
6d5a8b94a6 use osiSocklen_t 2001-05-22 16:26:22 +00:00
Jeff Hill
bee3c82735 fixed undefined symbol on Solaris 2001-05-22 16:24:39 +00:00
Jeff Hill
e3a0888cb3 removed unused variable 2001-05-22 15:45:56 +00:00
Jeff Hill
e6a9227421 added typedef 2001-05-22 15:43:40 +00:00
Jeff Hill
f78c134d31 fixed c++ loop index scope problem 2001-05-22 02:21:57 +00:00
Jeff Hill
7f88505a9a use socklen_t for linux 2001-05-22 02:10:51 +00:00
Jeff Hill
0b40765719 removed osiTimer 2001-05-22 02:05:23 +00:00
Jeff Hill
9940b408fb made compatible with changes in service API 2001-05-22 02:02:41 +00:00
Jeff Hill
70de17474b large array changes 2001-05-22 02:02:10 +00:00
Jeff Hill
fa87c186fe made compatible with timer library API changes 2001-05-22 01:51:55 +00:00
Jeff Hill
63c2a025d3 made compatible with timer library API changes 2001-05-22 01:46:13 +00:00
Jeff Hill
13212ddfea made compatible with time library API changes 2001-05-22 01:45:39 +00:00
Jeff Hill
976ce6a645 removed old timer tests 2001-05-22 01:44:40 +00:00
Jeff Hill
cf668c6448 no message 2001-05-22 01:40:37 +00:00
Jeff Hill
bc4bd0216e used a union after reading warnings about potential g++ optimizations 2001-05-22 01:39:35 +00:00
Jeff Hill
6440ee39e8 cosmetic 2001-05-22 01:38:29 +00:00
Jeff Hill
f8cf4a582e made compatible with timer library API changes 2001-05-22 01:37:09 +00:00
Jeff Hill
1f7c046c8f added new env var 2001-05-22 01:34:47 +00:00
Jeff Hill
f6c9619a48 use now throw new 2001-05-22 01:32:00 +00:00
Andrew Johnson
6bd55da631 Modifications to support architecture-specific template files.
vxWorks-specific and Common files for host IOCs
2001-05-19 02:42:59 +00:00
Andrew Johnson
2b0f55ad23 Modifications to support architecture-specific template files.
Only vxWorks IOCs need an nfsCommands file installing
2001-05-19 02:42:47 +00:00
Andrew Johnson
430ce13c0e Modifications to support architecture-specific template files.
nfsCommands is only needed for vxWorks IOCs
2001-05-19 02:40:46 +00:00
Andrew Johnson
f69a2933a9 Modifications to support architecture-specific template files.
iocBoot/ioc/Makefile specifies whether to build cdCommands
2001-05-19 02:40:23 +00:00
Andrew Johnson
db60073049 Modifications to support architecture-specific template files. 2001-05-19 02:39:09 +00:00
Jeff Hill
bf13ffdfe3 print error and error summary 2001-05-18 20:03:23 +00:00
W. Eric Norum
83a864997d Implement agreed-upon semantics for delay/timeout arguments.
A delay/timeout <=0.0 results in a yield/poll.
A delay/timeout >0.0 is rounded up to 1 tick.
2001-05-18 19:36:03 +00:00
Marty Kraimer
5f07d422fd new 2001-05-18 18:20:07 +00:00
Marty Kraimer
f30ceae58b if delay>0 than taswkDelay at least 1 tick 2001-05-18 18:11:42 +00:00
Jeff Hill
4dc395bb24 measure delay of zero 2001-05-18 18:04:59 +00:00
Jeff Hill
61b049dd46 use unsigned , not double, constant 2001-05-18 18:03:41 +00:00
Jeff Hill
5ba2368b00 used unsigned not double constant 2001-05-18 18:02:02 +00:00
Jeff Hill
962f6d08d1 fixed improper use of unsigned type 2001-05-18 16:35:06 +00:00
Jeff Hill
a0e4aeba1e round hibernation delays greater than zero but less than 1mS to 1mS 2001-05-18 16:31:07 +00:00
Jeff Hill
71b3d962cf round hibernation delays greater than zero but less than 1mS to 1 mS 2001-05-18 16:29:58 +00:00
Marty Kraimer
b4ef480a49 use DBF_DOUBLE instead of DBF_FLOAT 2001-05-17 19:18:39 +00:00
Marty Kraimer
0a48ac3a35 use double instead of float 2001-05-17 19:15:43 +00:00
Marty Kraimer
e14120a25d help prevent execptions on double to float 2001-05-17 19:15:07 +00:00
W. Eric Norum
d99fb7029d Change all instances of ioccrf' to iocsh' to reflect the added
capabilities of the IOC shell routines.
2001-05-17 18:16:49 +00:00
W. Eric Norum
84cd107ad9 Make epicsEnvShow work when called from vxWorks shell or iocsh.
Limits operation to a single argument.
2001-05-17 16:56:14 +00:00
Marty Kraimer
63a964914d gsubRecord obsolete 2001-05-16 14:34:00 +00:00
Marty Kraimer
a543f647ae remove old style c function prototypes 2001-05-16 13:45:32 +00:00
Jeff Hill
1e552c57e4 added info on the MDd option 2001-05-09 21:31:55 +00:00
Janet B. Anderson
aed2fd1f51 Added calls to recGblGetGraphicDouble and recGblGetControlDouble. 2001-05-09 14:32:30 +00:00
W. Eric Norum
b8f79c760b Clean up restart message. 2001-05-07 19:37:39 +00:00
W. Eric Norum
87a038a379 Add logging (console and syslog) of reason for most recent restart. 2001-05-07 19:32:18 +00:00
W. Eric Norum
3ec821a74a Create os-specific versions of routines to set and
display environment variables.
2001-05-07 16:11:57 +00:00
Jeff Hill
01311de271 added timeout and sleep delay tests 2001-05-04 21:41:23 +00:00
W. Eric Norum
9549c0dc00 Make network driver name match the one imposed by the 3C509 driver. 2001-05-02 15:55:47 +00:00
Marty Kraimer
b95129d71b replace dbDefs.h eefinitions with menu definitions
Fix OMSL bug reported by Andy Foster
2001-05-01 19:56:53 +00:00
Marty Kraimer
a4ba05e90c get rid of defs that should come from menus 2001-05-01 19:55:34 +00:00
W. Eric Norum
f8f306624e Remove env command -- vxWorks has no environ pointer.
Add epicsPrtEnvParams to print all EPICS environment parameters.
Add printEnv to print specified environment variables.
2001-05-01 18:38:50 +00:00
Jeff Hill
a1ef63686c use conatant INFINITE 2001-05-01 17:03:07 +00:00
Jeff Hill
d7126b0784 formatting 2001-05-01 17:02:22 +00:00
Jeff Hill
68f40981a3 detect overrange in sleep 2001-05-01 17:01:50 +00:00
W. Eric Norum
92d922d446 Add comment. 2001-04-30 21:05:21 +00:00
W. Eric Norum
ea74ab6e7a Allow network interface card to be selected using site-specific
configuration file.  Provide example selection for RTEMS pc386 target.
2001-04-30 21:03:12 +00:00
Janet B. Anderson
057fbc10a0 Now allows include statements. 2001-04-27 14:05:07 +00:00
Jeff Hill
636c028b56 changes from stephanie 2001-04-25 19:59:50 +00:00
W. Eric Norum
90e07a7840 Change prompt from rtems> ' to epics> '
Don't proceed until clock has been synchronized with NTP.
2001-04-24 19:40:39 +00:00
W. Eric Norum
f1f5f385bb Add `env' command to print enviornment variables. 2001-04-24 19:35:57 +00:00
W. Eric Norum
647221079f Fix up broken putenv(). 2001-04-24 18:36:31 +00:00
Janet B. Anderson
0a3f27c689 Changed lex and yacc rules. 2001-04-24 16:44:59 +00:00
Janet B. Anderson
42aa85a1d9 Added DEPSCHS to edf rule. 2001-04-24 14:27:35 +00:00
Jeff Hill
91707b9e92 fixed too many accept error messages problem 2001-04-23 17:24:46 +00:00
Jeff Hill
5152152edb added comment 2001-04-20 19:39:45 +00:00
W. Eric Norum
9f2d93d2d4 Allow application code to override RTEMS network configuration. 2001-04-20 19:18:54 +00:00
Jeff Hill
01c5adc8a7 test 2001-04-20 15:15:10 +00:00
Jeff Hill
22ec308865 test 2001-04-20 15:14:46 +00:00
Jeff Hill
e585c60d67 fixed sun pro warning 2001-04-20 01:21:48 +00:00
Jeff Hill
452c8d1384 dont use c++ style comment in header used by C files 2001-04-20 00:56:27 +00:00
Jeff Hill
00641af25c fixed gnu warnings 2001-04-20 00:50:19 +00:00
Jeff Hill
a42a95f60a updated to match service API changes 2001-04-20 00:46:18 +00:00
Jeff Hill
c6d116d1e8 fixed gnu warning 2001-04-20 00:13:58 +00:00
Jeff Hill
1c6767d3f2 broke apart monolithic iocinf.h header file 2001-04-20 00:08:41 +00:00
Jeff Hill
1e786e3d5a broke apart monolithic iocinf.h header file 2001-04-19 23:52:07 +00:00
Jeff Hill
03a92021a7 removed redundant parens 2001-04-19 23:50:50 +00:00
W. Eric Norum
7cbc79ff30 Clean up semaphore statistic gathering. 2001-04-19 01:53:06 +00:00
Jeff Hill
e20bf02652 moved oldChannelNotify inlines to oldAccess.h 2001-04-17 20:22:15 +00:00
Jeff Hill
20e702a629 moved oldChannelNotify inlines here 2001-04-17 20:21:07 +00:00
Jeff Hill
1f52aaf9d6 reformat 2001-04-17 17:37:41 +00:00
Jeff Hill
c2ffc9e893 automate production of version string 2001-04-17 17:37:17 +00:00
Jeff Hill
eeaf3af7a4 fixed sun pro warning 2001-04-17 17:36:37 +00:00
Jeff Hill
a8a86993e3 fixed sun pro warnings 2001-04-17 00:44:59 +00:00
Jeff Hill
76560ce7c3 added reset() 2001-04-17 00:14:42 +00:00
Jeff Hill
1ec6f444b7 changed file name 2001-04-17 00:03:02 +00:00
Jeff Hill
8d5075b441 fixed gnu warnings 2001-04-16 23:46:32 +00:00
Jeff Hill
84bec6ceba fixed gnu warning 2001-04-16 23:41:47 +00:00
Jeff Hill
ee60f232c1 made destructors virtual 2001-04-16 23:33:45 +00:00
Jeff Hill
e73d083131 fixed ws in endif clause 2001-04-16 23:30:42 +00:00
Jeff Hill
7a56359b73 added ws at eof 2001-04-16 23:30:12 +00:00
Jeff Hill
e73d66bbff added newline at eof 2001-04-16 23:25:03 +00:00
Jeff Hill
008b125aec fixed ws in endif clause 2001-04-16 23:14:18 +00:00
Jeff Hill
bfe4d463c1 changed to C style comment 2001-04-16 22:59:47 +00:00
Jeff Hill
f69a65a4fe dont hold lock while calling callbacks 2001-04-16 22:51:37 +00:00
Jeff Hill
332a7228a8 dont hold lock while calling callbacks 2001-04-16 22:38:38 +00:00
Jeff Hill
4b99a3d268 installed epics_auto_ptr.h 2001-04-16 22:36:59 +00:00
Jeff Hill
c2e6490220 installed 2001-04-16 22:36:28 +00:00
Jeff Hill
aa2516eb85 improved test 2001-04-16 21:59:38 +00:00
Jeff Hill
01fd6d5253 no need to check for nill 2001-04-16 21:49:53 +00:00
Andrew Johnson
95806cd1cd MSVC can't handle partial template specializations (swap<T>), so removed
removed swap<epicsList<T>> and renamed epicsSwap<epicsList<T>> to
epicsListSwap<T>
2001-04-12 15:35:56 +00:00
Marty Kraimer
22df1fb68a new files 2001-04-09 19:45:51 +00:00
590 changed files with 23984 additions and 38877 deletions

414
README Normal file
View File

@@ -0,0 +1,414 @@
README
Installation Instructions
EPICS base
Release 3.14.0beta1
What is EPICS base?
The Experimental Physics and Industrial Control Systems (EPICS) is
an extensible set of software components and tools with which
application developers can create a control system. This control system
can be used to control accelerators, detectors, telescopes, or other
scientific experimental equipment. EPICS base is the set of core
software, i.e. the components of EPICS without which EPICS would not
function. EPICS base allows an arbitrary number of target systems,
IOCs (input/output controllers), and host systems, OPIs (operator
interfaces) of various types.
What is new in this release?
This version of EPICS base contains significant changes and offers
major improvements in functionality over previous versions. Please
check the RELEASE_NOTES file in the distribution for description of
changes and release migration details.
Copyright
Please review the COPYRIGHT* files included in the distribution for
legal terms of usage.
Supported platforms
Currently this version of EPICS base has been built on the following
hosts for the following targets. If you are trying to build EPICS base on a
different host or for a different target machine you must get the proper
host/target cross compiler and header files and you will have to create
and add the appropriate new configure files to the
base/configure/os/directory. You can start by copying existing
configuration files in the configure/os directory and then make changes
for your new platforms.
Host platforms (operating system - architecture - <alternate c++
compiler>)
solaris-sparc
solaris-sparc-gnu
linux-x86
win32-x86
win32-x86-borland
Cross compile target platforms (operating system - architecture)
vxWorks-486
vxWorks-68040
vxWorks-68040lc
vxWorks-68060
vxWorks-ppc603
vxWorks-ppc604
vxWorks-pentium
RTEMS-gen68360
RTEMS-mvme167
RTEMS-pc386
Supported compilers
This version of EPICS base has been built and tested using the host
vendor's C and C++ compilers as well as the GNU gcc and g++
compilers. The GNU cross-compilers have been used for all
cross-compiled targets. You may need the host vendor's C++ compiler
in your search path to do EPICS builds. Check definitions of ACC and
CCC in base/configure/os/CONFIG.<host>.<host> or the definitions
for GCC and G++ if ANSI=GCC and CPLUSPLUS=GCC are specified
in CONFIG_SITE.
Software requirements
GNU make
You must use GNU make, gnumake, for any EPICS builds. Set your
path so that a gnumake version 3.70 or later is available.
Perl
You must have perl version 5.0 or later installed. The configure files do
not specify the perl full pathname. You need the perl executable in
your search path.
Unzip and tar (Winzip on WIN32 systems)
You must have tools available to unzip and untar the EPICS base
distribution file.
Tornado 2.0
You must have Tornado 2.0 installed if any of your target systems are
vxWorks systems. Tornado 2.0 provides the cross-compiler and header
files needed to build for these target systems. The full path location to
Tornado 2.0 must be specified in the base/configure/RELEASE or
base/configure/RELEASE.<hostarch> file. You will also need one or
more board support packages. Consult the vxWorks documentation for
details.
Optional GNU compiler requirement for solaris-sparc and
win32-x86 hosts
If you have state notation language source files (*.st files) which require
c preprocessing before conversion to c source, gcc must be in your path.
Host system storage requirements
The GNU zipped tar file is approximately 1.4 MB in size. The unzipped
untarred distribution source tree is approximately 6 MB. The build
created files for each host take approximately 40 MB and the build
created files for each target take approximately 10 MB.
Documentation
EPICS documentation is available on the WWW via the EPICS home
page at APS: URL http://www.aps.anl.gov/Epics
This README.htm is in the base distribution file and will be available
on the IOC software R3.14 EPICS WWW page which can be accessed
from the APS EPICS home page.
WWW pages
EPICS home page at APS
http://www.aps.anl.gov/epics
Other WWW sites
Additional information on EPICS can be found at the
various other WWW links on the EPICS home page at APS.
Mailing Lists
There are five EPICS mailing lists provided by APS. See The
EPICS home page for subscription instructions.
Directory Structure
Distribution directory structure:
base Root directory of the base istribution
base/config R3.13 compatibility build configuration files
base/config/tools Perl and shell scripts used in the R3.13 build
base/configure Operating system independent build config files
base/configure/os Operating system dependent build config files
base/configure/tools Perl and shell scripts used in the build
base/copyright Text files describing software copyrights
base/src All epics base source code in subdirectories
base/src/as Access security
base/src/bpt Break point table
base/src/ca Channel access
base/src/cas Channel access server
base/src/db Database access
base/src/db/test Database access tests
base/src/dbStatic Static database access
base/src/dbtools Database dbLoadTemplate tools
base/src/dev Device support (softDev and testDev)
base/src/gdd General data descriptor
base/src/iocsh Ioc shell command interpreter
base/src/libCom General purpose library code in subdirectories
base/src/libCom/bucketLib Hash bucket
base/src/libCom/calc Algebraic expression interpreter
base/src/libCom/cvtFast Fast number to string conversion
base/src/libCom/cxxTemplates C++ templates and templates tests
base/src/libCom/dbmf Memory management for frequent alloc/free
base/src/libCom/ellLib EPICS double linked list
base/src/libCom/env Default EPICS environment settings
base/src/libCom/error Error handling definitions and routines
base/src/libCom/fdmgr File descriptor manager
base/src/libCom/freeList Memory management using free lists
base/src/libCom/gpHash General purpose hash table
base/src/libCom/logClient Logging client
base/src/libCom/macLib Macro substitution handler
base/src/libCom/misc Miscellaneous utilities
base/src/libCom/osi Operating system independent code
base/src/libCom/osi/os Operating system dependant code in subdirectories
base/src/libCom/taskwd Task watchdog
base/src/libCom/test Test tools (timer, semBinary, semMutex,fdmgr, ?)
base/src/libCom/timer Timer
base/src/libCom/tsDefs R3.13 time stamp definitions and routines
base/src/libCom/ring ringPointer: First in first out circular buffers
base/src/libCom/cppStd epicsList: Lists of pointers to objects
base/src/makeBaseApp Perl tool+templates to create ioc app dvl tree
base/src/makeBaseExt Perl tool+templates to create extension dvl tree
base/src/misc Miscellaneous (coreRelease, iocInit, asSub*)
base/src/rec Record support
base/src/registry EPICS support function registry
base/src/rsrv Channel access ioc resource server library
base/src/toolsComm Code for the build tools antelope and e_flex
base/src/util Utilities (ca_test, iocLogServer, startCArepeater)
base/src/vxWorks R3.13 compatibility code specific to vxWorks
base/startup Scripts for setting up path and environment
Install directories created by the build:
base/bin Installed scripts and executables in subdirs
base/lib Installed libraries in arch subdirectories
base/dbd Installed data base definitions
base/include Installed header files
base/include/os Installed os specific header files
base/templates Installed templates
Build related components
base/README* files
README.htm Instructions for setup and building epics base
(i.e. this document)
README.WIN32 Microsoft WIN32 specific instructions
README.cxxTemplates Information about C++ templates in EPICS base
README.niCpu030 NI cpu030 specific instructions
base/startup directory - contains scripts to set environment and path
EpicsHostArch c shell script to set EPICS_HOST_ARCH env variable
EpicsHostArch.pl perl script to set EPICS_HOST_ARCH env variable
Site.profile bourne shell script to set path and env variables
Site.cshrc c shell script to set path and env variables
borland.bat WIN32 bat file to set path and env variables
win32.bat WIN32 bat file to set path and env variables
base/configure directory - contains build definitions and rules
CONFIG.CrossCommon Cross build definitions
CONFIG.gnuCommon Gnu compiler build definitions for all archs
CONFIG_ADDONS Definitions for <osclass> and DEFAULT options
CONFIG_BASE EPICS base tool and location definitions
CONFIG_BASE_VERSION Definitions for EPICS base version number
CONFIG_COMMON Definitions common to all builds
CONFIG_ENV Definitions of EPICS environment variables
CONFIG_SITE Site specific make defintions
CONFIG_SITE_ENV Site defaults for EPICS environment variables
CONFIG Includes configure files and allows variable overrides
RELEASE Location of external products such as Tornado II
RULES Includes appropriate rules file
RULES.Db Rules for database and database definition files
RULES_ARCHS Definitions and rules for building architectures
RULES_BUILD Build and install rules and definitions
RULES_DIRS Definitions and rules for building subdirectories
RULES_JAVA Definitions and rules for java jars and classes
RULES_TOP Rules specific to a <top> dir (uninstall and tar)
Sample.Makefile Sample makefile with comments
base/configure/os directory - contains os-arch specific definitions
CONFIG.<host>.<target> Specific host-target build definitions
CONFIG.Common.<target> Specific target definitions for all hosts
CONFIG.<host>.Common Specific host definitions for all targets
CONFIG.UnixCommon.Common Definitions for Unix hosts and all target
CONFIG.<host>.vxWorksCommon Specific host definitions for all vx targets
CONFIG_COMPAT R3.13 arch compatibility definitions
CONFIG_SITE.<host>.<target> Site specific host-target definitions
CONFIG_SITE.Common.<target> Site specific target defs for all hosts
CONFIG_SITE.<host>.Common Site specific host defs for all targets
base/configure/tools directory - contains Perl scripts used for the build
MakeReleae Unix shell script to create a release tar file
convertRelease.pl Performs consistancy checks on RELEASE files
cp.pl This Perl script copies an existing file
installEpics.pl Installs built files into install directories.
makeDependsTargets.pl Creates targets of include dependency files
makeMakefile.pl Creates a Makefile in O.<arch> dirs
makeMakefileInclude.pl Creates file to be included by Makefile
mkdir.pl Creates a directory (like Unix mkdir)
mkmf.pl Generates dependencies from include stmnts
munch.pl Creates a ctdt.c file for vxWorks targets
mv.pl Renames an existing file.
replaceVAR.pl Changes CapFast VAR(xxx) to $(xxx) notation
rm.pl Quietly removes an existing file.
Building EPICS base (Unix and Win32)
Unpack file
Unzip and untar the distribution file. Use WinZip on
Windows systems.
Set environment variable
Files in the base/startup directory have been provided to help
set required path and other environment variables .
EPICS_HOST_ARCH
Before you can build or use EPICS R3.14, the environment
variable EPICS_HOST_ARCH must be defined. A perl
script EpicsHostArch.pl in the base/startup directory has
been provided to help set EPICS_HOST_ARCH. You should
have EPICS_HOST_ARCH set to your host operating
system followed by a dash and then your host architecture,
e.g. solaris-sparc. If you are not using the OS vendor's
c/c++ compiler for host builds, you will need another dash
followed by the alternate compiler name (e.g. "-gnu" for GNU
c/c++ compilers on a solaris host or "-borland" for Borland
c/c++ compilers on a WIN32 host) . See configure/CONFIG_SITE
for a list of supported EPICS_HOST_ARCH values.
PERLLIB
On WIN32, some versions of Perl require that the
environment variable PERLLIB be set to <perl directory
location>.
PATH
As already mentioned, you must have the perl executable
and you may need C and C++ compilers in your search path.
For building base you also must have echo in your search
path. For Unix host builds you also need touch, cpp, cp, rm,
mv, and mkdir in your search path and /bin/chmod must
exist. On some Unix systems you may also need ar and ranlib
in your path, and the c compiler may require ld in your path.
Unix LD_LIBRARY_PATH
If you plan to build EPICS base shared libraries instead of
archive libraries, on Unix systems you will need to add
fullpathname to $(INSTALL_LOCATION)/lib/$(EPICS_HOST_ARCH) to
your LD_LIBRARY_PATH environment variable.
Win32 PATH
On WIN32 systems, building shared libraries is the default
setting and you will need to add fullpathname to
$(INSTALL_LOCATION)/bin/$(EPICS_HOST_ARCH) to your path.
Building shared libraries is determined by the value of the
macro SHARED_LIBRARIES in CONFIG_SITE (either YES or NO).
Do site-specific build configuration
Site configuration
To configure EPICS, you may want to modify the default
definitions in the following files:
configure/CONFIG_SITE Build choices. Specify target archs.
configure/CONFIG_SITE_ENV Environment variable defaults
configure/RELEASE TORNADO 2 full path location
Host configuration
To configure each host system, you may override the default
definitions by adding a new file with override definitions into
the configure/os directory. The new file should have the
same name as the distribution file to be overridden except
with CONFIG in the name changed to CONFIG_SITE.
configure/os/CONFIG.<host>.<host> - Host build settings
configure/os/CONFIG.<host>.Common - Host cross build settings
Target configuration
To configure each target system, you may override the
default definitions by adding a new file with override
definitions into the configure/os directory. The new file
should have the same name as the distribution file to be
overridden except with CONFIG in the name replaced by
CONFIG_SITE.
configure/os/CONFIG.Common.<target> - Target cross settings
configure/os/CONFIG.<host>.<target> - Host-target settings
R3.13 compatibility configuration
To configure EPICS base for building with R3.13 extensions
and ioc applications, you must modify the default definitions
in the base/config/CONFIG_SITE* files to agree with definitions
you made in base/configure and base/configure/os files.
Build EPICS base
After configuring the build you should be able to build
EPICS base by issuing the following commands in the
distribution's root directory (base)
gnumake clean uninstall
gnumake
The command "gnumake clean uninstall" will remove all
files and directories generated by a previous build. The
command "gnumake" will build and install everything for
the configured host and targets.
It is recommended that you do a "gnumake clean uninstall"
at the root directory of an EPICS directory structure before
each complete rebuild to ensure that all components will be
rebuilt.
Multiple host platforms
You can build using a single EPICS directory structure on multiple host
systems and for multiple cross target systems. The intermediate and
binary files generated by the build will be created in separate
subdirectories and installed into the appropriate separate host/target
install directories. EPICS executables and perl scripts are installed
into the $(INSTALL_LOCATION)/bin/<arch> directories. Libraries are
installed into $(INSTALL_LOCATION)/lib/<arch>. The default
definition for $(INSTALL_LOCATION) is $(TOP) which is the root
directory in the distribution directory structure, base. Created object
files are stored in O.<arch> source subdirectories, This allows objects
for multiple cross target architectures to be maintained at the same
time. To build EPICS base for a specific host/target combination you
must have the proper host/target c/c++ cross compiler and target header
files and the base/configure/os directory must have the appropriate
configure files.
Example application and extension
A perl tool, makeBaseApp.pl is included in the distribution file. This
script will create a sample application that can be built and then
executed to try out this release of base. Also, a perl script,
makeBaseExt.pl, is included in the distribution file. This script will
create a sample extension that can be built and executed. The
makeBaseApp.pl and makeBaseExt.pl scripts are installed into the
install location bin/<hostarch> directory during the base build.
Instructions for building and executing the 3.14 example application
can be found in the section "Example Application" of Chapter 2, "New
Features for 3.14", in the "IOC Application Developer's Guide
R3.14.0beta1". The "Example Application" section briefly explains
how to create and build an example application in a user created <top>
directory. It also explains how to run the example application on a
vxWorks ioc or a host system and run an example channel access client
on the host system.

View File

@@ -1,8 +1,8 @@
Compiling EPICS and Building IOC Applications on WIN32 (Windows95/NT)
Compiling EPICS and Building IOC Applications on win32-x86 (Windows95/NT)
---------------------------------------------------------------------
Original port of EPICS base to WIN32 (Windows95/NT)
Original port of EPICS base build system to WIN32 (Windows95/NT)
was done by Kay-Uwe Kasemir 11/96
please mail questions, comments, corrections, additional examples, etc
@@ -11,9 +11,9 @@ please mail questions, comments, corrections, additional examples, etc
0) what you will get
--------------------
Right now this port of EPICS to WIN32 should allow you to
Right now this port of EPICS to win32-x86 should allow you to
* compile almost all of EPICS base using {Tornado, MS Visual C, perl,
* compile all of EPICS base using {Tornado, MS Visual C, perl,
GNU make} (only {MS Visual C, perl, GNU make} if you prefer
to compile only the host portions of EPICS base).
* load EPICS on an IOC (486, pentium, 68k, ...),
@@ -23,16 +23,16 @@ Right now this port of EPICS to WIN32 should allow you to
* build and use ca.dll on NT or Win95 to access all IOCs,
as well as the Com-library, gdd-library, cas-library,
and all other EPICS base libraries as DLLs.
* build gdd, cas and a demo of the new portable CA server on WIN32.
To build only for WIN32 and not cross compile for IOC development type
"make host" or in your config files set "CROSS_COMPILER_HOST_ARCHS=void"
* build gdd, cas and a demo of the new portable CA server on win32-x86.
To build only for win32-x86 and not cross compile for IOC development type
"make win32-x86" or in your configure/CONFIG_SITE file set
"CROSS_COMPILER_HOST_ARCHS="
1) see what you have
--------------------
To compile EPICS on WIN32, we need
To compile EPICS on win32-x86, we need
WindRiver System's Tornado (used: 1.0) (not required if host only build)
Microsoft's Visual C/C++ (used: 6.0) (borland C++ rumored to work also)
@@ -51,7 +51,7 @@ If you cannot/don't want to find them, contact me, please!
(Setting env. vars. is different: for NT, use Settings/System,
for Win95 use autoexec.bat)
When setting paths in the EPICS CONFIG files for WIN32 the following
When setting paths in the EPICS CONFIG files for win32-x86 the following
are hints in case you have trouble. You should not need to worry about
this unless you type a path into one of the EPICS config files that
includes a "\". In most situations gnu make, windows NT, the MS compiler,
@@ -66,7 +66,7 @@ and the MS linker will accept "/" and this will result in less trouble.
a "\ " (this is because GNU make treats all " " separated
input as independent tokens in the input stream.
** WIN32 will generally allow "/" and "\" interchangeably in file paths,
** win32-x86 will generally allow "/" and "\" interchangeably in file paths,
but the DOS shell only accepts "\".
** Certain command line utilities such as the MS linker are known to in rare
@@ -75,7 +75,7 @@ and the MS linker will accept "/" and this will result in less trouble.
the bulk of our experience indicates that this is not the necessary.
Your path should include:
- The EPICS-binaries that we are about to build in <EPICS>base/bin/WIN32
- The EPICS-binaries that we are about to build in <EPICS>base/bin/win32-x86
- The System (for me it's in NT40...)
- The MS Visual C compiler binaries
@@ -108,7 +108,7 @@ include=c:\msdev\include;c:\msdev\mfc\include
lib=c:\msdev\lib;c:\msdev\mfc\lib
Select host arch to build:
HOST_ARCH=WIN32 (used by the make system)
EPICS_HOST_ARCH=win32-x86 (used by the make system)
Set the "TMP" environment variable if you need to specify where
temporary files are created.
@@ -139,7 +139,7 @@ Prepare apx. 2 ltr. Tee and type:
Watch for errors and send them to me.
Known problems:
* gnumake seems to be faster than WIN32 sometimes
* gnumake seems to be faster than win32-x86 sometimes
which results in warnings/errors like
"file has modification date in the future"
for newly created things.
@@ -150,7 +150,7 @@ Known problems:
WIN32 is WIN32, not win32. Gnumake fails
if e.g. base/src/include/os/WIN32 is ...win32.
4) Creating EPICS IOC applications under WIN32
4) Creating EPICS IOC applications under win32-x86
o create application development folder
@@ -192,8 +192,27 @@ in a visual C++ make file project: "kill caRepeater.exe&make -C ..". Be careful
not to introduce additional spaces around the &. The kill.exe command is in the
NT resource kit.
6) When compiling applications that link with EPICS base you will need to
include from <epics>\base\include, include from <epics>\base\include\os\win32,
and augment the link path with <epics>\base\lib\win32-x86. If the visual C++
/Za option is not used then you will also need to define __STDC__ to be zero
on the command line.
6) Issues that you should be aware of if you are building code that
calls EPICS, but you are not using the EPICS build system.
6a) You will need to include header files from the following paths.
<epics>\base\include
<epics>\base\include\os\win32
6b) You will need to link with the following path in effect.
<epics>\base\lib\win32-x86.
6c) If the visual C++ /Za option is not used then you will also need to define
__STDC__ to be zero on the command line so that EPICS headers will know that
a ANSI standard C compiler is in use.
6d) If you link with EPICS object libraries then specify /MT or /MTd
depending on whether EPICS base and your code are built for debugging.
This specifies the multithreaded operating environment required by EPICS.
This will also not define _DLL and therefore the EPICS header files will
not specify that sharable libraries are being called. EPICS object library
names follow the convention "xxxObj.lib".
6e) If you link with EPICS shareable libraries (with DLLs) then you must
use /MDd or /MD depending on whether EPICS base and your code are
built for debugging. This specifies the multithreaded operating environment
required by EPICS. This will also define _DLL and therefore the EPICS header
files will specify an optimized calling convention for shareable libraries.
EPICS shareable libraries (DLL) names follow the convention "xxx.lib"
and "xxx.dll".

View File

@@ -1,46 +0,0 @@
The C++ templates supplied with EPICS base are in
"$(EPICS)/base/src/cxxTemplates".
In Stroustrups's "The C++ Programming Language" Appendix A: r.14.9
(ANSI/ISO resolutions) a mechanism is described for the explicit
instantiation of template member functions (that are not inline).
At this time some compilers do not support this mechanism (and use
a template database snd/or smart linker instead). Other compilers
(such as g++) provide only limited support for other forms of
instantiation (g++ does not yet provide a template database or
a smart linker for templates).
Since there is no defacto standard mechanism for instatiating
templates at this time we are defining the preprocessor flag
EXPL_TEMPL in the build system when the compiler supports
explicit instantiation and the compiler does not support
automatic instantiation via a smart linker and/or template
database (currently this is only g++).
EPICS codes that use templates may need to include a code block
as follow that instantiates the template only once into each
program.
#include <classXYZ.h>
#include <templXXX.h>
//
// if the compiler supports explicit instantiation of
// template member functions
//
#if defined(EXPL_TEMPL)
//
// From Stroustrups's "The C++ Programming Language"
// Appendix A: r.14.9
//
// This explicitly instantiates the template class's member
// functions into "templInst.o"
//
template class templXXX <classXYZ>;
#endif
Jeff Hill 3-6-97
johill@lanl.gov

View File

@@ -3,7 +3,7 @@
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="Author" content="jba">
<meta name="GENERATOR" content="Mozilla/4.76 [en] (X11; U; SunOS 5.8 sun4u) [Netscape]">
<meta name="GENERATOR" content="Mozilla/4.77 [en] (X11; U; SunOS 5.8 sun4u) [Netscape]">
</head>
<body>
README.htm
@@ -17,7 +17,7 @@ EPICS base</h2></center>
<center>
<h2>
Release 3.14.0alpha2</h2></center>
Release 3.14.0beta1</h2></center>
<h3>
What is EPICS base?</h3>
@@ -75,6 +75,7 @@ Cross compile target platforms (operating system - architecture)</h4>
<br><tt>vxWorks-68040</tt>
<br><tt>vxWorks-68040lc</tt>
<br><tt>vxWorks-68060</tt>
<br><tt>vxWorks-ppc603</tt>
<br><tt>vxWorks-ppc604</tt>
<br><tt>vxWorks-pentium</tt>
<br><tt>RTEMS-gen68360</tt>
@@ -115,11 +116,9 @@ file. You will also need one or more board support packages. Consult the
vxWorks documentation for details.
<p><b>Optional GNU compiler requirement for solaris-sparc&nbsp; and win32-x86
hosts</b>
<br>If you wish to run "gnumake depends"&nbsp; to create header dependancy
include files for c/c++ source code, g++ must be be in your path. Also,
if you have state notation language source files (*.st files) which require
c preprocessing before conversion to c source,&nbsp; gcc must be in your
path.</blockquote>
<br>If you have state notation language source files (*.st files) which
require c preprocessing before conversion to c source,&nbsp; gcc must be
in your path.</blockquote>
<h3>
Host system storage requirements</h3>
@@ -166,15 +165,19 @@ Directory Structure</h3>
<blockquote>Distribution directory structure:</blockquote>
<tt>&nbsp;&nbsp;&nbsp;&nbsp; base&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Root directory of the base distribution</tt>
Root directory of the base istribution</tt>
<br><tt>&nbsp;&nbsp;&nbsp;&nbsp; base/config&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
R3.13 compatibility build configuration files</tt>
<br><tt>&nbsp;&nbsp;&nbsp;&nbsp; base/config/tools&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Perl and shell scripts used in the R3.13 build</tt>
<br><tt>&nbsp;&nbsp;&nbsp;&nbsp; base/configure&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Operating system independent build config files</tt>
<br><tt>&nbsp;&nbsp;&nbsp;&nbsp; base/configure/os&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Operating system dependent build config files</tt>
<br><tt>&nbsp;&nbsp;&nbsp;&nbsp; base/configure/tools&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Perl and shell scripts used in the build</tt>
<br><tt>&nbsp;&nbsp;&nbsp;&nbsp; base/config&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
R3.13 compatibility build configuration files</tt>
<br><tt>&nbsp;&nbsp;&nbsp;&nbsp; base/copyright&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Text files describing software copyrights</tt>
<br><tt>&nbsp;&nbsp;&nbsp;&nbsp; base/src&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
All epics base source code in subdirectories</tt>
<br><tt>&nbsp;&nbsp;&nbsp;&nbsp; base/src/as&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
@@ -187,12 +190,14 @@ Channel access</tt>
Channel access server</tt>
<br><tt>&nbsp;&nbsp;&nbsp;&nbsp; base/src/db&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Database access</tt>
<br><tt>&nbsp;&nbsp;&nbsp;&nbsp; base/src/db/test&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Database access tests</tt>
<br><tt>&nbsp;&nbsp;&nbsp;&nbsp; base/src/dbStatic&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Static database access</tt>
<br><tt>&nbsp;&nbsp;&nbsp;&nbsp; base/src/dbtools&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Database dbLoadTemplate tools</tt>
<br><tt>&nbsp;&nbsp;&nbsp;&nbsp; base/src/dev&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Device support</tt>
Device support (softDev and testDev)</tt>
<br><tt>&nbsp;&nbsp;&nbsp;&nbsp; base/src/gdd&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
General data descriptor</tt>
<br><tt>&nbsp;&nbsp;&nbsp;&nbsp; base/src/iocsh&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
@@ -205,7 +210,8 @@ Hash bucket</tt>
Algebraic expression interpreter</tt>
<br><tt>&nbsp;&nbsp;&nbsp;&nbsp; base/src/libCom/cvtFast&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Fast number to string conversion</tt>
<br><tt>&nbsp;&nbsp;&nbsp;&nbsp; base/src/libCom/cxxTemplates C++ templates</tt>
<br><tt>&nbsp;&nbsp;&nbsp;&nbsp; base/src/libCom/cxxTemplates C++ templates
and templates tests</tt>
<br><tt>&nbsp;&nbsp;&nbsp;&nbsp; base/src/libCom/dbmf&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Memory management for frequent alloc/free</tt>
<br><tt>&nbsp;&nbsp;&nbsp;&nbsp; base/src/libCom/ellLib&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
@@ -230,16 +236,20 @@ Miscellaneous utilities</tt>
Operating system independent code</tt>
<br><tt>&nbsp;&nbsp;&nbsp;&nbsp; base/src/libCom/osi/os&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Operating system dependant code in subdirectories</tt>
<br><tt>&nbsp;&nbsp;&nbsp;&nbsp; base/src/libCom/taskwd&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Task watchdog</tt>
<br><tt>&nbsp;&nbsp;&nbsp;&nbsp; base/src/libCom/test&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Test tools (timer, semBinary, semMutex,fdmgr, ?)</tt>
<br><tt>&nbsp;&nbsp;&nbsp;&nbsp; base/src/libCom/timer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Timer</tt>
<br><tt>&nbsp;&nbsp;&nbsp;&nbsp; base/src/libCom/taskwd&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Task watchdog</tt>
<br><tt>&nbsp;&nbsp;&nbsp;&nbsp; base/src/libCompat&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
EPICS base R3.13 compatibility code</tt>
<br><tt>&nbsp;&nbsp;&nbsp;&nbsp; base/src/libCom/tsDefs&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
R3.13 time stamp definitions and routines</tt>
<br><tt>&nbsp;&nbsp;&nbsp;&nbsp; base/src/libCom/ring&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
ringPointer: First in first out circular buffers</tt>
<br><tt>&nbsp;&nbsp;&nbsp;&nbsp; base/src/libCom/cppStd&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
epicsList: Lists of pointers to objects</tt>
<br><tt>&nbsp;&nbsp;&nbsp;&nbsp; base/src/makeBaseApp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Perl tool+templates to create app dvl tree</tt>
Perl tool+templates to create ioc app dvl tree</tt>
<br><tt>&nbsp;&nbsp;&nbsp;&nbsp; base/src/makeBaseExt&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Perl tool+templates to create extension dvl tree</tt>
<br><tt>&nbsp;&nbsp;&nbsp;&nbsp; base/src/misc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
@@ -258,8 +268,9 @@ Utilities (ca_test, iocLogServer, startCArepeater)</tt>
R3.13 compatibility code specific to vxWorks</tt>
<br><tt>&nbsp;&nbsp;&nbsp;&nbsp; base/startup&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Scripts for setting up path and environment</tt>
<p><tt>&nbsp;&nbsp;&nbsp;&nbsp; Install directories created by the build</tt>
<br><tt>&nbsp;&nbsp;&nbsp;&nbsp; base/bin&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<p><tt>&nbsp;&nbsp;&nbsp;&nbsp; </tt>Install directories created by the
build:
<p><tt>&nbsp;&nbsp;&nbsp;&nbsp; base/bin&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Installed scripts and executables in subdirs</tt>
<br><tt>&nbsp;&nbsp;&nbsp;&nbsp; base/lib&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Installed libraries in arch subdirectories</tt>
@@ -309,6 +320,8 @@ WIN32 bat file to set path and env variables</tt>
base/configure&nbsp; directory - contains build definitions and rules</li>
<br><tt>CONFIG.CrossCommon&nbsp;&nbsp;&nbsp; Cross build definitions</tt>
<br><tt>CONFIG.gnuCommon&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Gnu compiler build
definitions for all archs</tt>
<br><tt>CONFIG_ADDONS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Definitions
for &lt;osclass> and DEFAULT options</tt>
<br><tt>CONFIG_BASE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
@@ -341,6 +354,8 @@ Definitions and rules for building subdirectories</tt>
Definitions and rules for java jars and classes</tt>
<br><tt>RULES_TOP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Rules specific to a &lt;top> dir (uninstall and tar)</tt>
<br><tt>Sample.Makefile&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Sample makefile
with comments</tt>
<br>&nbsp;
<li>
base/configure/os directory - contains os-arch specific definitions</li>
@@ -357,24 +372,32 @@ hosts and all target</tt>
vx targets</tt>
<br><tt>CONFIG_COMPAT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
R3.13 arch compatibility definitions</tt>
<br><tt>CONFIG_SITE.&lt;host>.&lt;target> Site specific host-target definitions</tt>
<br><tt>CONFIG_SITE.Common.&lt;target> Site specific target defs for all
hosts</tt>
<br><tt>CONFIG_SITE.&lt;host>.Common&nbsp;&nbsp; Site specific host defs
for all targets</tt>
<br>&nbsp;
<li>
base/configure/tools directory - contains Perl scripts used for the build</li>
<br><tt>MakeReleae&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Unix shell script to create a release tar file</tt>
<br><tt>convertRelease.pl&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Performs
consistancy checks on RELEASE files</tt>
<br><tt>cp.pl&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
This Perl script copies an existing file</tt>
<br><tt>installEpics.pl&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Installs built files into install directories.</tt>
<br><tt>makeConfigAppInclude.pl Generates include,bin, lib dir definitions</tt>
<br><tt>makeDbDepends.pl&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Generates
dependencies from substitution files</tt>
<br><tt>makeIocCdCommands.pl&nbsp;&nbsp;&nbsp; Generates cdCommands file
for use in IOCs</tt>
<br><tt>makeDependsTargets.pl&nbsp;&nbsp; Creates targets of include dependency
files</tt>
<br><tt>makeMakefile.pl&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Creates a Makefile in O.&lt;arch> dirs</tt>
<br><tt>makeMakefileInclude.pl&nbsp; Creates file to be included by Makefile</tt>
<br><tt>mkdir.pl&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Creates a directory (like Unix mkdir)</tt>
<br><tt>mkmf.pl&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Generates dependencies from include stmnts</tt>
<br><tt>munch.pl&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Creates a ctdt.c file for vxWorks targets</tt>
<br><tt>mv.pl&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
@@ -390,40 +413,51 @@ Building EPICS base (Unix and Win32)</h3>
<blockquote><b>Unpack file</b>
<blockquote>Unzip and untar the distribution file. Use WinZip on Windows
systems.</blockquote>
S<b>et environment variable</b>
<blockquote>Before you can build or use EPICS R3.14, the environment variable
EPICS_HOST_ARCH must be defined. A perl script EpicsHostArch.pl in the
base/startup directory has been provided to help set EPICS_HOST_ARCH. You
should have EPICS_HOST_ARCH set to your host operating system followed
by a dash and then your host architecture, e.g. solaris-sparc.
<p>On WIN32, some versions of Perl require that&nbsp; the environment variable
PERLLIB be set to &lt;perl directory location>.</blockquote>
<b>Check path requirements</b>
<blockquote>As already mentioned, you must have the perl executable and
you may need C and C++ compilers in your search path. For building base
you also must have echo in your search path. For Unix host builds you also
need touch, cpp, cp, rm, mv, and mkdir in your search path and /bin/chmod
must exist. On some Unix systems you may also need ar and ranlib in you
path, and the c compiler may require ld in your path.
<p>If you plan to build EPICS base shared libraries instead of archive
S<b>et environment variables</b>
<blockquote>Files in the base/startup directory have been provided to help
set required path and other environment variables .
<p><b>EPICS_HOST_ARCH</b>
<br>Before you can build or use EPICS R3.14, the environment variable EPICS_HOST_ARCH
must be defined. A perl script EpicsHostArch.pl in the base/startup directory
has been provided to help set EPICS_HOST_ARCH. You should have EPICS_HOST_ARCH
set to your host operating system followed by a dash and then your host
architecture, e.g. solaris-sparc. If you are not using the OS vendor's
c/c++ compiler for host
<br>builds, you will need another dash followed by the alternate compiler
name (e.g. "-gnu" for GNU c/c++ compilers on a solaris host or "-borland"
for Borland c/c++ compilers on a WIN32 host) .&nbsp; See configure/CONFIG_SITE
for a list of supported EPICS_HOST_ARCH values.
<p><b>PERLLIB</b>
<br>On WIN32, some versions of Perl require that&nbsp; the environment
variable PERLLIB be set to &lt;perl directory location>.</blockquote>
<blockquote><b>PATH</b>
<br>As already mentioned, you must have the perl executable and you may
need C and C++ compilers in your search path. For building base you also
must have echo in your search path. For Unix host builds you also need
touch, cpp, cp, rm, mv, and mkdir in your search path and /bin/chmod must
exist. On some Unix systems you may also need ar and ranlib in your path,
and the c compiler may require ld in your path.
<p><b>LD_LIBRARY_PATH</b>
<br>If you plan to build EPICS base shared libraries instead of archive
libraries, on Unix systems you will need to add&nbsp; fullpathname to $(INSTALL_LOCATION)/lib/$(EPICS_HOST_ARCH)
to your LD_LIBRARY_PATH&nbsp;environment variable. On WIN32 systems, building
shared libraries is the default setting and you will need to add&nbsp;
fullpathname to $(INSTALL_LOCATION)/lib/$(EPICS_HOST_ARCH) to your path.
Building shared libraries is determined by the value of the macro SHARED_LIBRARIES&nbsp;in
CONFIG_SITE (YES or NO).</blockquote>
to your LD_LIBRARY_PATH environment variable.
<p><b>PATH</b>
<br>On WIN32 systems, building shared libraries is the default setting
and you will need to add&nbsp; fullpathname to $(INSTALL_LOCATION)/lib/$(EPICS_HOST_ARCH)
to your path. Building shared libraries is determined by the value of the
macro SHARED_LIBRARIES in CONFIG_SITE (either YES or NO).
<br>&nbsp;</blockquote>
<b>Do site-specific build configuration</b>
<blockquote><b>Site configuration</b>
<br>To configure EPICS, you may want to modify the default definitions
in the following files:
<blockquote><tt>configure/CONFIG_SITE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </tt>-
Build choices. Specify your target archs.
<br><tt>configure/CONFIG_SITE_ENV&nbsp; </tt>- Set your environment variable
definitions
<br><tt>configure/RELEASE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </tt>-
TORNADO 2 full path location</blockquote>
<p><br><b>Host configuration</b>
<blockquote><tt>configure/CONFIG_SITE&nbsp;&nbsp;&nbsp;&nbsp; </tt>Build
choices. Specify target archs.
<br><tt>configure/CONFIG_SITE_ENV </tt>Environment variable&nbsp; defaults
<br><tt>configure/RELEASE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </tt>TORNADO
2 full path location</blockquote>
<b>Host configuration</b>
<br>To configure each host system, you may override the default definitions
by adding a new file with override definitions into the configure/os directory.
The new file should have the same name as the distribution file to be overridden
@@ -443,8 +477,9 @@ except with CONFIG in the name replaced by CONFIG_SITE.
settings</blockquote>
<b>R3.13 compatibility configuration</b>
<br>To configure EPICS base for building with R3.13 extensions and ioc
applications , you will want to modify the default definitions in the base/config/CONFIG_SITE*&nbsp;
files to agree with the definitions in your base/configure files.</blockquote>
applications , you must modify the default definitions in the base/config/CONFIG_SITE*&nbsp;
files to agree with definitions you made in base/configure and base/configure/os
files.</blockquote>
<h4>
<b>Build EPICS base</b></h4>
@@ -476,31 +511,28 @@ which is the root directory in the distribution directory structure, base.
Created object files are stored in O.&lt;arch> source subdirectories, This
allows objects for multiple cross target architectures to be maintained
at the same time. To build EPICS base for a specific host/target combination
you must have the proper host/target c++ cross compiler and target header
you must have the proper host/target c/c++ cross compiler and target header
files and the base/configure/os directory must have the appropriate configure
files.</blockquote>
<h3>
Examples</h3>
Example application and extension</h3>
<blockquote>A perl tool, makeBaseApp.pl is included in the distribution
file. This script will create a sample application that then can be built
and then executed to try out this release of base. Also, a perl script,
makeBaseExt.pl, is included in the distribution file. This script will
create a sample extension that can be built and executed. The makeBaseApp.pl
and makeBaseExt.pl scripts are installed into the install location bin/&lt;hostarch>
directory during the base build.</blockquote>
file. This script will create a sample application that can be built and
then executed to try out this release of base. Also, a perl script, makeBaseExt.pl,
is included in the distribution file. This script will create a sample
extension that can be built and executed. The makeBaseApp.pl and makeBaseExt.pl
scripts are installed into the install location bin/&lt;hostarch> directory
during the base build.</blockquote>
<h3>
Example base application</h3>
<blockquote>Instructions for building and executing a 3.14 example application
<blockquote>Instructions for building and executing the 3.14 example application
can be found in the section "Example Application" of Chapter 2, "New Features
for 3.14", in the&nbsp; "IOC Application Developer's Guide R3.14.0alpha2"
. The "Example Application"&nbsp; section briefly explains how to create
and build an example application in a user created &lt;top> directory.
It also explains how to run the example application on a vxWorks ioc or
a host system and run an example channel access client on the host system.</blockquote>
for 3.14", in the&nbsp; "IOC Application Developer's Guide R3.14.0beta1".
The "Example Application" section briefly explains how to create and build
an example application in a user created &lt;top> directory. It also explains
how to run the example application on a vxWorks ioc or a host system and
run an example channel access client on the host system.</blockquote>
</body>
</html>

View File

@@ -0,0 +1,298 @@
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="ProgId" content="Word.Document">
<meta name="Generator" content="Microsoft Word 9">
<meta name="Originator" content="Microsoft Word 9">
<meta name="GENERATOR" content="Mozilla/4.77 [en] (X11; U; SunOS 5.8 sun4u) [Netscape]">
<title>Instruction on building existing R3</title>
<link rel=File-List href="./READMEbuildingR3.13AppsWithR3.14_files/filelist.xml">
<!--[if gte mso 9]><xml>
<o:DocumentProperties>
<o:LastAuthor>Jba</o:LastAuthor>
<o:Revision>3</o:Revision>
<o:TotalTime>4</o:TotalTime>
<o:Created>2000-10-25T19:43:00Z</o:Created>
<o:LastSaved>2000-10-25T19:47:00Z</o:LastSaved>
<o:Pages>1</o:Pages>
<o:Company>Argonne National Laboratory</o:Company>
<o:Lines>1</o:Lines>
<o:Paragraphs>1</o:Paragraphs>
<o:Version>9.2720</o:Version>
</o:DocumentProperties>
</xml><![endif]-->
<!--[if gte mso 9]><xml>
<w:WordDocument>
<w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery>
<w:DisplayVerticalDrawingGridEvery>0</w:DisplayVerticalDrawingGridEvery>
<w:UseMarginsForDrawingGridOrigin/>
<w:Compatibility>
<w:FootnoteLayoutLikeWW8/>
<w:ShapeLayoutLikeWW8/>
<w:AlignTablesRowByRow/>
<w:ForgetLastTabAlignment/>
<w:LayoutRawTableWidth/>
<w:LayoutTableRowsApart/>
</w:Compatibility>
</w:WordDocument>
</xml><![endif]-->
<style>
<!--
/* Font Definitions */
@font-face
{font-family:"MS Mincho";
panose-1:2 2 6 9 4 2 5 8 3 4;
mso-font-alt:"\FF2D\FF33 \660E\671D";
mso-font-charset:128;
mso-generic-font-family:roman;
mso-font-pitch:fixed;
mso-font-signature:-1610612033 1757936891 16 0 131231 0;}
@font-face
{font-family:"\@MS Mincho";
mso-font-charset:128;
mso-generic-font-family:roman;
mso-font-pitch:fixed;
mso-font-signature:1 134676480 16 0 131072 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{mso-style-parent:"";
margin:0in;
margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.0pt;
font-family:"Times New Roman";
mso-fareast-font-family:"Times New Roman";}
p.MsoPlainText, li.MsoPlainText, div.MsoPlainText
{margin:0in;
margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.0pt;
font-family:"Courier New";
mso-fareast-font-family:"Times New Roman";}
@page Section1
{size:8.5in 11.0in;
margin:1.0in 66.0pt 1.0in 66.0pt;
mso-header-margin:.5in;
mso-footer-margin:.5in;
mso-paper-source:0;}
div.Section1
{page:Section1;}
-->
</style>
</head>
<body lang="EN-US" style="tab-interval:.5in">
<center>
<h2>
Building EPICS R3.13 applications with R3.14.0beta1 base</h2></center>
<p><br>This document describes how to modify a R3.13 vxWorks application
so that it builds with release R3.14.0beta1.&nbsp; It describes an easy
way to modify applications subject to the following restrictions:
<ul>
<li>
The application still uses config rules rather than the configure rules
which are new to release 3.14.</li>
<li>
The OSI (Operating System Independent) features of R3.14 are not available,
i.e. iocCore products can only be build for vxWorks.</li>
<li>
Once the application is changed to build with base R3.14, it will not build
with earlier base releases.</li>
</ul>
Ultimately applications should be converted to use the new configure rules
so that the OSI features are available.
<h3>
<b>Gnumake clean uninstall</b></h3>
<blockquote>At the top of the application execute:
<pre>"<tt>gnumake clean uninstall</tt>"</pre>
to remove all files and directories created by earlier builds.</blockquote>
<h3>
Update RELEASE</h3>
<blockquote>Change&nbsp; the <tt>EPICS_BASE</tt> 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 &lt;top>/config/RELEASE.</blockquote>
<h3>
Update target arch definitions</h3>
<blockquote>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.
<p>For example, in config/CONFIG change
<pre>CROSS_COMPILER_TARGET_ARCHS = mv167</pre>
to
<pre>CROSS_COMPILER_TARGET_ARCHS = vxWorks-68040</pre>
In the iocBoot/*/Makefile files, change
<pre>ARCH=&lt;old arch name></pre>
to
<pre>ARCH=&lt;new arch name></pre>
and do a "<tt>gnumake"</tt> in the iocBoot directory to update the cdCommands
files.</blockquote>
<h3>
State Notation Language changes</h3>
<blockquote>snc is no longer in base. If snc is used in your application,
you must download and build the seq module with baseR3.14.0beta1. See the
Application Developer's Guide to see how to build sequence programs.</blockquote>
<blockquote>Change
<pre>INSTALLS=seq</pre>
to
<pre>LIBOBJS += $(SEQ_BIN)/seqLibrary.o</pre>
<p><br>in application src/Makefile.Vx files to link seq library into your
application library,.
<br>Also add
<pre>SEQ=&lt;full path to seq module directory></pre>
to config/RELEASE.
<br>Also remove
<pre>ld &lt; seq</pre>
from the st.cmd files in the iocBoot subdirectories.</blockquote>
<h3>
iocCore changes</h3>
<blockquote>iocCore has been renamed to iocCoreLibrary.o.
<br>Change
<pre>INSTALLS=iocCore</pre>
to
<pre>LIBOBJS += $(EPICS_BASE_BIN)/iocCoreLibrary.o</pre>
in your application src/Makefile.Vx files .
<br>Also remove
<pre>ld &lt; iocCore</pre>
from the st.cmd files in the iocBoot subdirectories.</blockquote>
<h3>
Library db changes</h3>
<blockquote>The Db library name was changed to dbStaticHost for host builds
and dbStaticIoc for ioc builds.
<br>Change
<pre>PROD_LIBS+=Db</pre>
to
<pre>PROD_LIBS+=dbStaticHost</pre>
and
<pre>Db_DIR=$(EPICS_BASE_LIB)</pre>
to
<pre>dbStaticHost_DIR=$(EPICS_BASE_LIB)</pre>
in your application src/Makefile.Host files.</blockquote>
<h3>
VxWorks C++ munched libraries and object files</h3>
<blockquote>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 "<tt>.munch</tt>"
to the ld lines where object files were previously loaded. For example
change
<pre>ld &lt; exampleLib</pre>
to
<pre>ld &lt; exampleLibrary.munch</pre>
</blockquote>
<h3>
recGbl calls</h3>
<blockquote>You may need to add the line&nbsp; "<tt>#include "recGbl.h</tt>"
to any source files that have recGbl* calls so that the file will compile
without errors.</blockquote>
<h3>
Record support changes</h3>
<blockquote>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 <tt>LIBOBJS</tt> definitions. For example
<br>add
<pre>PID=&lt;full path to modules directory>/pid</pre>
to config/RELEASE.
<br>Remove
<pre>LIBOBJS += $(EPICS_BASE_BIN)/pidRecord.o</pre>
from baseLIBOBJS,
<br>and add
<pre>LIBOBJS += $(PID_BIN)/pidRecord.o</pre>
to your application src/Makefile.
<p>You should consider changing any existing old steppermotor records to
the new EPICS&nbsp; <a href="http://www.aps.anl.gov/upd/people/sluiter/epics/modules/mechanism/motor/index.html">motor
record</a>&nbsp; module supported by Beamline Controls and Data Acquisition
at APS.</blockquote>
<h3>
RecDynLink.o and devPtSoft changes</h3>
<blockquote>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.</blockquote>
<h3>
Hardware support changes</h3>
<blockquote>All hardware support (dev, drv and dbd files) has been unbundled
from base R3.14. This support includes the files <tt>symb, symb.dbd, drvHp1404a.o,
drvEpvxiMsg.o, and drvEpvxi.o</tt>.&nbsp; If they are not used in your
application, comment out references to these files in base.dbd and baseLIBOBJS.
<p>Hardware support files now exist as separate modules available for download
from the <a href="http://www.aps.anl.gov/epics/">EPICS www home page at
ANL</a>. You must now download all the hardware support modules needed
for your application, build the modules with R3.14 base,&nbsp; add the
appropriate module full path definitions to your application config/RELEASE
file, and change <tt>LIBOBJS</tt> location definition <tt>$(EPICS_BASE_BIN)</tt>
to the module definition bin directory in your application src directory
files.
<p>For example, remove
<pre>LIBOBJS+=$(EPICS_BASE_BIN)/symb</pre>
from baseLIBOBJS and add
<pre>LIBOBJS+=$(SYMB_BIN)/symb</pre>
to your application src/Makefile,
<br>and add the line
<pre>SYMB=&lt;full path definition for the built module SYMB></pre>
into your application config/RELEASE file .
<p>After a gnumake in the symb module followed by a gnumake in the application
config directory, the definitions <tt>SYMB_BIN</tt> and <tt>SYMB_LIB</tt>
will be created,&nbsp; the directory $(SYMB)/include will be added to the
include directories on the compiler command lines&nbsp; (in the <tt>INSTALL_INCLUDES</tt>
definition)&nbsp; and the directory $(SYMB)/dbd will be added to the dbd
search directories on the dbExpand command lines (in the <tt>INSTALL_DBDFLAGS</tt>
definition).</blockquote>
<h3>
dbLoadtemplate tool changes</h3>
<blockquote>The host tool dbLoadTemplate has been replaced by a new extension,
msi. dbLoadTemplate is still supported on iocs. Build the msi extension
with base R3.14 and change the following definitions in your application
files.
<p>In config/RULES.Db replace the line
<pre>DBLOADTEMPLATE=$(EPICS_BASE_HOST_BIN)/dbLoadTemplate$(EXE)</pre>
with
<pre>MSI = $(firstword $(wildcard $(EPICS_EXTENSIONS_HOST_BIN)/msi$(HOSTEXE) \
&nbsp;&nbsp; (EPICS_EXTENSIONS)/bin/$(HOST_OS_CLASS)/msi$(HOSTEXE)) msi$(HOSTEXE))</pre>
and change line:
<pre>@$(DBLOADTEMPLATE) $&lt; > $@</pre>
to
<pre>@$(MSI) $&lt; > $@</pre>
Also, if dbLoadTemplate was used by your application,&nbsp; add the definition
<blockquote>
<pre>EPICS_EXTENSIONS=&lt;full path name to epics extensions directory></pre>
</blockquote>
to your application config/RELEASE file.</blockquote>
depends changes
<p>&nbsp;&nbsp;&nbsp;&nbsp; Remove any SRCS.c and SRCS.cc definitions in
your application src/Makefile..*files. The depends rule no longer uses
these definitions.
</body>
</html>

View File

@@ -0,0 +1,132 @@
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="Author" content="jba">
<meta name="GENERATOR" content="Mozilla/4.76 [en] (X11; U; SunOS 5.8 sun4u) [Netscape]">
</head>
<body>
<center>
<h2>
Building EPICS R3.13 extensions with R3.14 base</h2></center>
<p><br>EPICS R3.13 extensions have both a Makefile and a Makefile.Host
in the build directories and the EPICS R3.13 extension tree has an extensions/config
directory.
<h3>
Preliminary steps for all extensions</h3>
<blockquote>
<li>
Download the latest version (10/25/00) of the extensions/config files,
extensionsConfig.tar.gz,&nbsp; from the APS EPICS www page.</li>
<li>
Make certain that you have set the HOST_ARCH environment variable.</li>
<li>
Set EPICS_BASE in extensions/config/RELEASE to the full path location of
a built R3.14 base.</li>
<li>
BASE_3_14 is now defined in the base/config/CONFIG_BASE_VERSION.&nbsp;
The commented BASE_3_14 definition can be removed from extensions/config/RELEASE.</li>
</blockquote>
<h3>
Building downloaded APS distribution extensions with base R3.14</h3>
<blockquote>
<li>
Download the latest version (10/25/00) of extensions distributed from the
APS EPICS www page. The latest versions of the extensions should build
with both R3.13 and R3.14. Note that the order of building extensions is
important, i.e. some extensions depend on other extensions being built
first. The extensions/config/CONFIG_EXTENSIONS file contains notes on extension
dependancies and contains a definition of DIRS (used by extensions/src/Makefile)
with the proper order for building the APS distributed extensions.</li>
<li>
Executing gnumake at the root level of the extensions tree or in the src
directory should build the APS extensions in the proper order.</li>
</blockquote>
<h3>
Building your extensions with base R3.14</h3>
<blockquote>
<li>
<b>Library Db renamed</b></li>
<br>Library Db has been renamed to dbStaticHost in EPICS base R3.14. In
some extensions lib Db is not used and Db can be removed from the USR_LIBS
(or PROD_LIBS) line. If the library is needed ( you get unresolved items
after removing Db), the following lines should be added to Makefile.Host.
<blockquote><tt>ifdef BASE_3_14</tt>
<br><tt>USR_LIBS += dbStaticHost</tt>
<br><tt>dbStaticHost_DIR = $(EPICS_BASE_LIB)</tt>
<br><tt>else</tt>
<br><tt>USR_LIBS += Db</tt>
<br><tt>Db_DIR = $(EPICS_BASE_LIB)</tt>
<br><tt>endif</tt></blockquote>
<li>
<b>Target architecture specifications changed</b></li>
<br>Since target architecture specifications have been changed (solaris
to solaris-sparc, win32 to win32-x86, ...) Makefile.Host references to
and tests on T_A have to be changed.&nbsp; In most cases T_A can be replaced
by OS_CLASS.&nbsp; Since HOST_ARCH will eventually be phased out, it would
be a good idea to change any Makefile.Host references to HOST_ARCH to OS_CLASS
if possible.
<br>For example change
<blockquote><tt>ifeq ($(T_A),solaris)</tt>
<br><tt>RPCFLAGS = -K -1</tt>
<br><tt>endif</tt></blockquote>
to
<blockquote><tt>ifeq ($(OS_CLASS),solaris)</tt>
<br><tt>RPCFLAGS = -K -1</tt>
<br><tt>endif</tt></blockquote>
<li>
<b>New ca_set_puser</b></li>
<br>Statements of the form: <tt>ca_puser(chid) = xyz</tt>; should to be
changed to:&nbsp; <tt>ca_set_puser(chid,xyz)</tt>;
<br>&nbsp;
<li>
<b>Extern C around includes</b></li>
<br>Remove any extern "C" braces around #includes of EPICS base header
files.
<br>For example change
<blockquote><tt>extern "C" {</tt>
<br><tt>#include "cadefs.h"</tt>
<br><tt>} /* end extern C */</tt></blockquote>
to
<blockquote><tt>#include "cadefs.h"</tt></blockquote>
<li>
<b>Infrequently used R3.13 timestamp functions unbundled from base</b></li>
<br>Some infrequently used R3.13 timestamp functions and macro definitions
have been removed from EPICS base and now exist in a library, ts, created
and installed in the ar extension.&nbsp; The only ANL distributed extension
that uses these unbundled functions and macros&nbsp; is cau. The two R3.13
functions tsStampToText and tsLocalTime along with the definitions TS_TEXT_MONDDYYYY
and TS_TEXT_MMDDYY have been retained in R3.14 for extension compatibility
purposes.
<br>If your extension gets undefines for TS_* usage and ts* function calls
when built with R3.14, you must obtain and build the ar extension. Add
an #include for tsSubr.h to your extension source code and add library
ts to PROD_LIBS or USR_LIBS in your Makefile.Host as follows:
<blockquote><tt>#include "tsSubr.h"</tt>
<p><tt>ifdef BASE_3_14</tt>
<br><tt>PROD_LIBS += ts</tt>
<br><tt>ts_DIR = $(EPICS_EXTENSIONS_LIB)</tt>
<br><tt>endif</tt></blockquote>
</blockquote>
</body>
</html>

View File

@@ -0,0 +1,302 @@
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="Author" content="jba">
<meta name="GENERATOR" content="Mozilla/4.76 [en] (X11; U; SunOS 5.8 sun4u) [Netscape]">
</head>
<body>
<center>
<h2>
Converting an EPICS R3.13 application to R3.14.0alpha3</h2></center>
<p><br>This document describes how to convert a R3.13 vxWorks application
so that it builds with release R3.14.0alpha3.&nbsp; It describes procedures
such that:
<ul>
<li>
The application uses the configure rules which are new to R3.14.</li>
</ul>
<ul>
<li>
The OSI (Operating System Independent) features of R3.14 are available,
i.e. iocCore products can be build for vxWorks as well as other platforms,
e.g. solaris and linux.</li>
</ul>
<h3>
Gnumake clean uninstall</h3>
<blockquote>First do a gnumake clean uninstall in the application's root
directory to remove all files created by earlier builds.</blockquote>
<h3>
Create a new R3.14 application</h3>
<blockquote><tt>mkdir &lt;top></tt>
<br><tt>cd &lt;top></tt>
<br><tt>&lt;full path to R3.14.0alpha3 base>/bin/&lt;host_arch>/makeBaseApp.pl
-t example example</tt></blockquote>
<h3>
Copy all *App and iocBoot directories and files to the new &lt;top> directory</h3>
<blockquote><tt>cd &lt;oldtop></tt>
<br><tt>find *App iocBoot -print | cpio -pvmd &lt;fullpath name to new
top></tt></blockquote>
<h3>
Modify &lt;top>/configure/RELEASE</h3>
<blockquote>Copy definitions of external modules excluding EPICS_BASE and
TEMPLATES_TOP from old application RELEASE file.
<br>If sequence programs (*.st or *.stt files) exist in your application,
add the SNCSEQ location definition for the R3.14 seq external module
<blockquote><tt>SNCSEQ =&lt;full path to seq module top></tt></blockquote>
The R3.14 seq module must exist and be built with EPICS base R3.14.0alpha3.</blockquote>
<h3>
Modify the Makefiles in &lt;top>/*App directories.</h3>
<blockquote>Change&nbsp;&nbsp;&nbsp;&nbsp; <tt>include $(TOP)/config/CONFIG_APP</tt>
<br>to&nbsp;&nbsp;&nbsp;&nbsp; <tt>include $(TOP)/configure/CONFIG</tt>
<p>Change&nbsp;&nbsp;&nbsp;&nbsp; i<tt>nclude $(TOP)/config/RULES_DIRS</tt>
<br>to&nbsp;&nbsp;&nbsp;&nbsp; <tt>include $(TOP)/configure/RULES_DIRS</tt></blockquote>
<h3>
Modify the Makefiles in &lt;top>/*App/*Db directories.</h3>
<blockquote>Remove existing Makefile
<br>Rename Makefile.Host to Makefile
<br>Modify Makefile as follows:
<p>Change&nbsp;&nbsp;&nbsp;&nbsp; <tt>TOP=../../..</tt>
<br>to&nbsp;&nbsp;&nbsp;&nbsp; <tt>TOP=../..</tt>
<p>Change&nbsp;&nbsp;&nbsp; i<tt>nclude $(TOP)/config/CONFIG_APP</tt>
<br>to&nbsp;&nbsp;&nbsp;&nbsp; <tt>include $(TOP)/configure/CONFIG</tt>
<p>Change&nbsp;&nbsp;&nbsp;&nbsp; <tt>include $(TOP)/config/RULES.Db</tt>
<br>to <tt>include $(TOP)/configure/RULES</tt>
<p>Place all definitions between the include lines.
<p>Place any rules after the last include line.</blockquote>
<h3>
Modify the Makefiles in &lt;top>/*App/src directories.</h3>
<blockquote>Remove existing Makefile
<br>Rename Makefile.Host to Makefile
<br>Modify Makefile as follows:
<p>Change <tt>TOP=../../..</tt>
<br>to&nbsp;&nbsp;&nbsp;&nbsp; <tt>TOP=../..</tt>
<p>Change&nbsp;&nbsp;&nbsp;&nbsp; <tt>include $(TOP)/config/CONFIG_APP</tt>
<br>to&nbsp;&nbsp;&nbsp;&nbsp; <tt>include $(TOP)/configure/CONFIG</tt>
<p>Change&nbsp;&nbsp;&nbsp;&nbsp; i<tt>nclude $(TOP)/config/RULES.Host</tt>
<br>to&nbsp;&nbsp;&nbsp;&nbsp; <tt>include $(TOP)/configure/RULES</tt>
<p>Change&nbsp;&nbsp;&nbsp;&nbsp; <tt>PROD_LIBS = &lt;name></tt>
<br>to&nbsp;&nbsp;&nbsp;&nbsp;<tt> &lt;prod name>_LIBS = dbStaticHost</tt>
<br>where&nbsp; <tt>&lt;prod name></tt> is a specifified product to be
built.
<p>Change&nbsp; library name <tt>Db</tt> to <tt>dbStaticHost.</tt>
<br>Change<tt> PROD_LIBS = Db</tt>
<br>to&nbsp;<tt> &lt;prodname>_LIBS += dbStaticHost</tt>
<br>and <tt>Db_DIR = $(EPICS_BASE_LIB)</tt>
<br>to&nbsp;&nbsp;&nbsp;&nbsp; <tt>dbStaticHost_DIR = $(EPICS_BASE_LIB)</tt>
<p>Change&nbsp;&nbsp;&nbsp;&nbsp; <tt>USER_DBDFLAGS</tt>
<br>to&nbsp;&nbsp;&nbsp;&nbsp; <tt>USR_DBDFLAGS</tt>
<p>Change&nbsp;&nbsp;&nbsp;&nbsp; <tt>RECTYPES +=&nbsp; xxxRecord.h</tt>
<br>to&nbsp;&nbsp;&nbsp;&nbsp; <tt>DBDINC += xxxRecord</tt>
<p>Change&nbsp;&nbsp;&nbsp;&nbsp; <tt>DBDNAME = &lt;name>App.dbd</tt>
<br>to&nbsp;&nbsp;&nbsp;&nbsp; <tt>DBD += &lt;name>.dbd</tt>
<p>Remove all <tt>DBDEXPAND</tt>&nbsp; lines.
<p>Change&nbsp; <tt>PROD = &lt;prodname></tt>
<br>to <tt>PROD_HOST = &lt;prodname></tt>
<p>Change&nbsp; <tt>SRCS.c += &lt;name></tt>
<br>to <tt>&lt;prodname>_SRCS += &lt;name></tt>
<br>or<tt> &lt;libname>_SRCS += &lt;name></tt>
<p>Add the contents of Makefile.Vx to Makefile removing the include lines
and the TOP definition.</blockquote>
<blockquote>Change&nbsp;&nbsp;&nbsp;&nbsp; <tt>LIBNAME = &lt;libname>Lib</tt>
<br>to&nbsp;&nbsp;&nbsp;&nbsp; <tt>PROD_vxWorks = &lt;libname></tt><tt></tt>
<p>Remove line&nbsp;<tt> -include ../baseLIBOBJS</tt>
<p>Remove&nbsp; line&nbsp;&nbsp;&nbsp; <tt>INSTALLS = iocCore seq</tt><tt></tt>
<p>Change all <tt>SRCS.c += ../&lt;name>.c </tt>lines
<br>to&nbsp;&nbsp; <font face="Arial,Helvetica">&lt;prodname>_SRCS += &lt;name>.c</font>
<br>if the source files exist in the current directory.<tt></tt>
<p>Change all <tt>*OBJS += &lt;name>.o</tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
lines
<br>to&nbsp;&nbsp; <font face="Arial,Helvetica">&lt;prodname>_SRCS += &lt;name>.c</font>
<br>or&nbsp;<font face="Arial,Helvetica"> &lt;prodname>_SRCS += &lt;name>.cc</font>
<br>if the c/c++ source files exist in the current directory.
<p>Change&nbsp;&nbsp;&nbsp; <tt>LIBOBJS += &lt;seq_program_name>.o</tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
lines
<br>to&nbsp;&nbsp; <tt>&lt;prodname>_SRCS += &lt;seq_program_name>.stt</tt>
<br>or&nbsp; <tt>&lt;prodname>_SRCS += &lt;seq_program_name>.st</tt><tt></tt>
<p>Add the lines
<blockquote><tt>#&lt;name>_LIBS += seq</tt>
<br><tt>#&lt;name>_LIBS += pv</tt>
<br><tt>#seq_DIR&nbsp;&nbsp;&nbsp; = $(SNCSEQ_LIB)</tt>
<br><tt>#pv_DIR&nbsp;&nbsp;&nbsp;&nbsp; = $(SNCSEQ_LIB)</tt><tt></tt>
<p><tt>&lt;name>_LIBS += recIoc</tt>
<br><tt>&lt;name>_LIBS += softDevIoc</tt>
<br><tt>&lt;name>_LIBS += testDevIoc</tt>
<br><tt>&lt;name>_LIBS += iocsh</tt>
<br><tt>&lt;name>_LIBS += miscIoc</tt>
<br><tt>&lt;name>_LIBS += rsrvIoc</tt>
<br><tt>&lt;name>_LIBS += dbtoolsIoc</tt>
<br><tt>&lt;name>_LIBS += asIoc</tt>
<br><tt>&lt;name>_LIBS += dbIoc</tt>
<br><tt>&lt;name>_LIBS += registryIoc</tt>
<br><tt>&lt;name>_LIBS += dbStaticIoc</tt>
<br><tt>&lt;name>_LIBS += ca</tt>
<br><tt>&lt;name>_LIBS += Com</tt></blockquote>
where <tt>&lt;name></tt> is the&nbsp; name in the <tt>PROD_vxWorks</tt>
definition, and uncomment the first four lines if you have sequence programs
(.st or .stt files) in the current directory.
<p>Place all macro definitions between the include lines.
<p>Place any rules after the last include line.</blockquote>
<h3>
Modify the Makefiles in &lt;top>/iocBoot directory.</h3>
<blockquote>Change i<tt>nclude $(TOP)/config/CONFIG_APP</tt>
<br>to&nbsp;&nbsp;&nbsp;&nbsp; <tt>include $(TOP)/configure/CONFIG</tt>
<p>Remove the line <tt>DIRS += $(wildcard *ioc*)</tt>
<p>Change <tt>include $(TOP)/config/RULES.iocBoot</tt>
<br>to&nbsp;&nbsp;&nbsp;&nbsp; i<tt>nclude $(TOP)/configure/RULES.iocBoot</tt></blockquote>
<h3>
Modify the Makefiles in &lt;top>/iocBoot/ioc* directories.</h3>
<blockquote>Change <tt>include $(TOP)/config/CONFIG_APP</tt>
<br>to&nbsp;&nbsp;&nbsp;&nbsp; <tt>include $(TOP)/configure/CONFIG</tt>
<p>Change <tt>include ARCH = &lt;old arch specification e.g. mv167></tt>
<br>to&nbsp;&nbsp;&nbsp;&nbsp; <tt>include ARCH = &lt;new arch specificatio
e.g. vxWorks-68040></tt><tt></tt>
<p>Change <tt>include $(TOP)/config/RULES.ioc</tt>
<br>to&nbsp;&nbsp;&nbsp;&nbsp; <tt>include $(TOP)/configure/RULES.ioc</tt>
<p>Add the following rule at the end of the Makefile.
<blockquote><tt>buildInstall: cdCommands</tt></blockquote>
</blockquote>
<h3>
Modify st.cmd in &lt;top>/iocBoot/ioc* directories.</h3>
<blockquote>Remove the lines</blockquote>
<blockquote>
<blockquote>
<pre>ld &lt; seq</pre>
<pre>ld &lt; iocCore</pre>
</blockquote>
Change&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <tt>ld &lt; &lt;libname>Lib</tt>
<br>to&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <tt>ld &lt; &lt;libname>.munch</tt>
<p>Change&nbsp; load statements&nbsp; for db and dbd files from
<blockquote><tt>cd startup</tt>
<br><tt>dbLoadDatabase("../../dbd/exampleApp.dbd")</tt>
<br><tt>dbLoadRecords("../../db/dbExample1.db","user=jba")</tt>
<br><tt>dbLoadRecords("../../db/dbExample2.db")</tt></blockquote>
to
<blockquote><tt>cd top</tt>
<br><tt>dbLoadDatabase("dbd/example.dbd")</tt>
<br><tt>registerRecordDeviceDriver(pdbbase)</tt>
<br><tt>dbLoadRecords("db/dbExample1.db","user=jba")</tt>
<br><tt>dbLoadRecords("db/dbExample2.db")</tt></blockquote>
</blockquote>
<h3>
Record support changes</h3>
<blockquote>The steppermotor, scan, and pid records are no longer in base.&nbsp;
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&nbsp;
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&nbsp; add appropriate module definitions to your application's
config/RELEASE file and change the <tt>LIBOBJS</tt> definitions.
<p>For example add</blockquote>
<blockquote>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <tt>PID=&lt;full
path to modules directory>/pid</tt>
<p>to config/RELEASE.
<br>Remove</blockquote>
<blockquote>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <tt>LIBOBJS
+= $(EPICS_BASE_BIN)/pidRecord.o</tt>
<p>from baseLIBOBJS, and add</blockquote>
<blockquote>
<blockquote><tt>LIBOBJS += $(PID_BIN)/pidRecord.o</tt></blockquote>
to your application src/Makefile.</blockquote>
<blockquote>You should consider changing any existing old steppermotor
records to the new EPICS&nbsp; motor record&nbsp; module supported by Beamline
Controls and Data Acquisition at APS.</blockquote>
<h3>
RecDynLink.o and devPtSoft changes</h3>
<blockquote>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
<tt>LIBOBJS</tt>
location definition <tt>$(EPICS_BASE_BIN)</tt> to the module definition
bin directory in your application src directory files.&nbsp; See "Hardware
support changes" below for instructions.</blockquote>
<h3>
Hardware support changes</h3>
<blockquote>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.</blockquote>
<blockquote>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
<tt>LIBOBJS</tt>
location from <tt>$(EPICS_BASE_BIN) </tt>to the module&nbsp; bin directory
in your application src directory files.
<p>For example, remove</blockquote>
<blockquote>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <tt>LIBOBJS+=$(EPICS_BASE_BIN)/symb</tt></blockquote>
<blockquote>from baseLIBOBJS and add</blockquote>
<blockquote>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <tt>LIBOBJS+=$(SYMB_BIN)/symb</tt></blockquote>
<blockquote>to your application src/Makefile,
<br>and add the line</blockquote>
<blockquote>
<blockquote><tt>SYMB=&lt;full path definition for the built module SYMB></tt></blockquote>
</blockquote>
<blockquote>into your application config/RELEASE file .</blockquote>
<h3>
dbLoadtemplate tool changes</h3>
<blockquote>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.&nbsp;
If, in your application, db files are created from template and substitution
files you should&nbsp; add the definition
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <tt>EPICS_EXTENSIONS=&lt;full
path name to epics extensions directory></tt>
<p>to your application config/RELEASE file.</blockquote>
<blockquote>
<blockquote>&nbsp;</blockquote>
<blockquote>
<pre></pre>
</blockquote>
</blockquote>
<br>&nbsp;
</body>
</html>

View File

@@ -0,0 +1,145 @@
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="Author" content="jba">
<meta name="GENERATOR" content="Mozilla/4.77 [en] (X11; U; SunOS 5.8 sun4u) [Netscape]">
</head>
<body>
<center>
<h2>
Converting an EPICS R3.14.0 alpha2 application to beta1</h2></center>
<p><br>This document describes how to convert a R3.14.0alpha2 application
so that it builds with release R3.14.0beta1.
<h3>
Gnumake clean uninstall</h3>
<blockquote>First do a "<tt>gnumake clean uninstall"</tt> in the application's
root directory to remove all files created by earlier builds.</blockquote>
<h3>
Replace configure/RULES.ioc and configure/Makefile</h3>
<blockquote>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 &lt;base>/templates/makeBaseApp/top/configure</blockquote>
<h3>
Remove baseLIBOBJS</h3>
<blockquote>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
<blockquote><tt>-include ../baseLIBOBJS</tt></blockquote>
and the file baseLIBOBJS. If there are no LIBOBJS definitions in the Makefile,
also remove
<blockquote><tt>example_OBJS += $(LIBOBJS)</tt></blockquote>
</blockquote>
<h3>
Libraries recIoc, softDevIoc, and testDevIoc</h3>
<blockquote>Add the new record and dev support libraries to &lt;name>App/src/Makefile,
i.e. add the lines
<blockquote><tt>example_LIBS += recIoc</tt>
<br><tt>example_LIBS += softDevIoc</tt>
<br><tt>example_LIBS += testDevIoc</tt></blockquote>
and remove any references to iocLibrary, e.g. remove the line
<blockquote><tt>example_OBJS_vxWorks += $(EPICS_BASE_BIN)/iocCoreLibrary</tt></blockquote>
The order of references to base libraries is important so place recIoc
and softDevIoc&nbsp; before the the other base library references.
<p>If you are building on a WIN32 host add the following lines instead:
<blockquote><tt># Use win32 object libs for registered support</tt>
<br><tt>example_LIBS_win32 += recIocObj</tt>
<br><tt>example_LIBS_win32 += softDevIocObj</tt>
<br><tt>example_LIBS_win32 += testDevIocObj</tt>
<br><tt>example_LIBS_DEFAULT += recIoc</tt>
<br><tt>example_LIBS_DEFAULT += softDevIoc</tt>
<br><tt>example_LIBS_DEFAULT += testDevIoc</tt></blockquote>
</blockquote>
<h3>
iocrf renamed to iocsh</h3>
<blockquote>Change all references to ioccrf in your application src directories
to iocsh e.g.
<p>change <tt>#include "ioccrf.h"</tt>
<br>to&nbsp; <tt>#include "iocsh.h"</tt>
<p>change<tt> ioccrf(argv[1]);</tt>
<br>to&nbsp;<tt> iocsh(argv[1]);</tt>
<p>and change&nbsp;<tt> ioccrf(NULL);</tt>
<br>to <tt>iocsh(NULL)</tt>;
<p>in &lt;name>App/src/exampleMain.c.</blockquote>
<h3>
PROD changes</h3>
<blockquote>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.&nbsp; in your application src Makefiles
<blockquote>change <tt>PROD += caExample</tt>
<br>to&nbsp; <tt>PROD_HOST += caExample</tt>
<br>and
<br>change <tt>PROD = sncExample</tt>
<br>to <tt>PROD_HOST += sncExample</tt></blockquote>
</blockquote>
<b>LIBRARY and PROD changes</b>
<blockquote>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,
<blockquote>change <tt>LIBRARY_vxWorks = &lt;name></tt>
<br>to <tt>PROD_vxWorks = &lt;name></tt>
<br>or
<br>remove the lines <tt>LIBRARY_vxWorks = &lt;name></tt>
<br>and <tt>PROD_RTEMS = &lt;name></tt>
<br>and change <tt>PROD = &lt;name></tt>
<br>to <tt>PROD_IOC = &lt;name></tt>.</blockquote>
In the iocBoot/ioc&lt;name>/st.cmd files,
<blockquote>change <tt>ld &lt; &lt;name>Library.munch</tt>
<br>to <tt>ld &lt; &lt;name>.munch</tt></blockquote>
A SRCS definition is now required for every PROD&nbsp; 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&nbsp; the line
<blockquote>&nbsp;caExample_SRCS += caExample.c</blockquote>
</blockquote>
<h3>
registerRecordDeviceDriver changes</h3>
<blockquote>The created file registerRecordDeviceDriver.cpp is now used
for all target architectures. Thus in your application src Makefiles
<blockquote>change <tt>example_SRCS_DEFAULT += example_registerRecordDeviceDriver.cpp</tt>
<br>to&nbsp; <tt>example_SRCS += example_registerRecordDeviceDriver.cpp</tt>
<br><tt></tt>&nbsp;</blockquote>
</blockquote>
<h3>
RTEMS-specific pathname changes</h3>
<blockquote>1. The RTEMS TFTP remote filesystem no longer ignores leading
`../' components in path names.&nbsp; All st.cmd file lines with path names
of the form <tt>dbLoadRecords("../../db/dbExample1.db","user=norume")</tt>
<br>must be changed to
<br><tt>dbLoadRecords("db/dbExample1.db","user=norume")</tt><tt></tt>
<p>The makeBaseApp.pl script distributed with R3.14-beta1 creates st.cmd
scripts with the proper path names.
<p>2. The RTEMS TFTP remote filesystem supports a limited set of chdir
operations.
<br>All paths passed to chdir (or to the IOC shell `cd' command) must end
in a `/'
<br>character.</blockquote>
<blockquote>
<blockquote>&nbsp;</blockquote>
</blockquote>
</body>
</html>

View File

@@ -7,7 +7,29 @@
</title>
</head>
<body>
<center>
<h1>
EPICS Release base 3.14.0beta1</h1></center>
<h2>Changes since alpha2</h2>
All changes for release 3.13.5 that also apply to 3.14 have been made.
<p>
<b>devAiSoftRaw and devAoSoftRaw</b>
</p>
<p>
A new state is defined for the LINR field. The name is "SLOPE",
which allows any device type to be used with manual settings of
the EOFF and ESLO fields. With this setting, the device support's
special_linconv() routine is only called when LINR=LINEAR.
</p>
<p>
The RTEMS TFTP remote filesystem driver now supports a limited form of
the chdir() system call. One restriction is that all pathnames passed
to chdir() must end in a / character, so IOC shell commands to change
directories must be given as
</p>
<p>
cd ../db
</p>
<center>
<h1>
EPICS Release base 3.14.0alpha2</h1></center>
@@ -186,7 +208,8 @@ and MC68360 processors. RTEMS also supports powerPC.
<li>
solaris</li>
<br>Has been tested on solaris 2.6 and solaris 8.
<br>Has been tested on solaris 2.6 and solaris 8 with Sun workshop 6.0 (C++ 5.2).
Sun workshop 5.0 (C++ 5.0) will not compile this version of EPICS.
<li>
Linux</li>

View File

@@ -104,7 +104,7 @@ CCC_TEMPL_INST_FLAG =
# -w-8012 Comparing signed and unsigned values
# -w-8060 Possibly incorrect assignment
# -w-8071 Conversion may lose significant digits
CCC_WARN_YES = -w -g0 -w-8012 -w-8060 -w-8071
CCC_WARN_YES = -w -g0 -w-8012 -w-8060 -w-8071 -w-8008 -w-8027 -w-8066 -w-8080 -w-8004
# -w- display warnings off
CCC_WARN_NO = -w-

View File

@@ -20,9 +20,7 @@ SHRLIB_SUFFIX = .so
SHRLIBNAME = lib$(LIBRARY)$(SHRLIB_SUFFIX)$(SHRLIB_VERSION:%=.%)
#For backward compatability only
DLL_LIBS = $(subst $(LIBRARY),, $(PROD_LIBS))
DLL_LIBS = $(patsubst $(LIBRARY),, $(PROD_LIBS) $(USR_LIBS))
DLL_LDLIBS = $(PRODNAME_LIBS:%=-l%) $(DLL_LIBS:%=-l%)
INSTALL_SHRLIB = $(INSTALL_LIB)

View File

@@ -27,6 +27,7 @@ ACC_SLIBS_YES =
ACC_SLIBS_NO=
ACC_SHRLIB_CFLAGS_YES = +Z
ACC_SHRLIB_LDFLAGS_YES = -b
ACC_DEP_CFLAGS=+DAportable
# Configure OS vendor C++ compiler
HPCC = cc
@@ -43,6 +44,7 @@ HPCC_SLIBS_YES =
HPCC_SLIBS_NO=
HPCC_SHRLIB_CFLAGS_YES = +Z
HPCC_SHRLIB_LDFLAGS_YES = -b
HPCC_DEP_CFLAGS=+DAportable
#Old HP C++ compiler
#CCC = CC
@@ -67,11 +69,12 @@ CCC_SHRLIB_CFLAGS_YES = +Z
# then by searching the specified path (see below)
CCC_SHRLIB_LDFLAGS_YES = -b
CCC_DEPENDS_FLAG = +m
CCC_DEP_CFLAGS=+DAportable
# +DAportable causes portable object code to be created for execution
# on different PA-Risc machines
ARCH_DEP_CFLAGS = -D_HPUX_SOURCE -DHP_UX +DAportable
ARCH_DEP_CXXFLAGS = -D_HPUX_SOURCE -DHP_UX +DAportable
ARCH_DEP_CFLAGS = -D_HPUX_SOURCE -DHP_UX
ARCH_DEP_CXXFLAGS = -D_HPUX_SOURCE -DHP_UX
ARCH_DEP_LDLIBS =
ARCH_DEP_LDFLAGS = -Wl,+b$(DEFAULT_SHRLIB_SEARCH_PATH),+s

View File

@@ -11,6 +11,6 @@ CMPLR_SUFFIX = 68k
ARCH_CLASS = 68k
# Architecture specific build flags
ARCH_DEP_CPPFLAGS = -DCPU=MC68030
ARCH_DEP_CPPFLAGS = -DCPU=MC68030 -DNICPU030
ARCH_DEP_CFLAGS = -m68030

View File

@@ -10,8 +10,8 @@
EPICS_VERSION=3
EPICS_REVISION=14
EPICS_MODIFICATION=0
EPICS_UPDATE_NAME=alpha
EPICS_UPDATE_LEVEL=2
EPICS_UPDATE_NAME=beta
EPICS_UPDATE_LEVEL=1
EPICS_LOCAL_NAME=B
EPICS_LOCAL_VERSION=0

View File

@@ -22,3 +22,15 @@ endif
endif
HOST_ARCH := $(EPICS_HOST_ARCH)
# Note:
# The EPICS_HOST_ARCH solaris-sparc-gnu is new for base release R3.14
# so existing R3.13 applications, when HOST_ARCH is set to solaris and
# when built with R3.14, will look for base solaris-sparc directories
# and not solaris-sparc-gnu. If you plan to build R3.13 applications
# against a solaris-sparc-gnu built R3.14 base, you should set
# ANSI=GCC and CPLUSPLUS=G++ in base/config/CONFIG_SITE.Host.solaris
# and change ARCH_solaris=solaris-sparc to ARCH_solaris=solaris-sparc-gnu
# in base/config/CONFIG_COMPAT.

View File

@@ -66,7 +66,7 @@ TORNADO=YES
# VxWorks directory for TORNADO=YES
#VX_DIR_YES=c:\\Tornado
#VX_DIR_YES = /usr/local/vw/tornado101
VX_DIR_YES = /usr/local/vw/tornado20
VX_DIR_YES = /usr/local/vw/tornado202
# VxWorks directory for TORNADO=NO
#VX_DIR_NO=$(VW)

View File

@@ -11,8 +11,8 @@ INSTALL_CONFIG = $(INSTALL_LOCATION)/config
CONFIGS += $(subst ../,,$(wildcard ../CONFIG*))
CONFIGS += $(subst ../,,$(wildcard ../RULES*))
BIN_INSTALLS += $(wildcard ../tools/*.pl)
BIN_INSTALLS += ../tools/installEpics
SCRIPTS_HOST += $(wildcard ../tools/*.pl)
SCRIPTS_HOST += ../tools/installEpics
include $(TOP)/configure/RULES

View File

@@ -7,7 +7,7 @@ MAKEBPT = $(EPICS_BASE_HOST_BIN)/makeBpt$(EXE)
ifndef MSI
# Tool from R3.14 extensions bin, R3.13 extensions bin, or user path
MSI = $(firstword $(wildcard $(EPICS_EXTENSIONS_HOST_BIN)/msi$(HOSTEXE) \
$(EPICS_EXTENSIONS)/bin/$(HOST_OS_CLASS)/msi$(HOSTEXE)) msi$(HOSTEXE))
$(EPICS_EXTENSIONS)/bin/$(HOST_ARCH)/msi$(HOSTEXE)) msi$(HOSTEXE))
endif
DBEXPAND = $(EPICS_BASE_HOST_BIN)/dbExpand$(EXE)

View File

@@ -306,11 +306,6 @@ LIBTARGETS += $(LIBNAME) $(INSTALL_LIBS)
LIBNAME_RCS=$(foreach lib, $(basename $(LIBRARY)), $(RCS) $($(lib)_RCS) $($(lib)_RCS_$(ARCH_CLASS)))
LIBNAME_RESS=$(addsuffix $(RES), $(basename $(LIBNAME_RCS)))
ifneq ($(words $(DLL_LIBS)), $(words $(DLL_DEPLIBS)))
# If invalid library names, don't make DLL file
SHARED_LIBRARIES = NO
endif
# check if shared libraries requested
ifeq ($(strip $(SHARED_LIBRARIES)),YES)
@@ -329,8 +324,6 @@ endif # LIBOBJS
endif # LIBRARY
#---------------------------------------------------------------
# Main targets
all:: install
build:: inc
@@ -520,9 +513,11 @@ $(PACKAGE)_%.h:$(INSTALL_JAVA)/$(PACKAGE)/%.class
# The order of the following rules is
# VERY IMPORTANT !!!!
depends:: $(LIBSRCS) $(SRCS) $(COND_PROD_SRCS)
depends:: $(LIBSRCS) $(SRCS) $(COND_PROD_SRCS) $(SRCS.c) $(SRCS.cc)
$(RM) DEPENDS
ifneq ($(strip $(LIBSRCS) $(SRCS) $(COND_PROD_SRCS) $(SRCS.c) $(SRCS.cc)),)
$(DEPENDS_RULE)
endif
ifeq ($(HOST_ARCH),Borland)
%$(EXE): %.c
@@ -633,7 +628,7 @@ endif
%.db: ../%.edf
$(E2DB) $(E2DB_SYSFLAGS) $(E2DB_FLAGS) $<
%.edf: ../%.sch
%.edf: ../%.sch $(DEPSCHS)
@if [ ! -f cad.rc -a -r ../cad.rc ] ; then ln -s ../cad.rc ; fi
$(SCH2EDIF) $(SCH2EDIF_SYSFLAGS) $(SCH2EDIF_FLAGS) $<

View File

@@ -77,7 +77,9 @@ endif
depends:: $(SRCS.c) $(SRCS.cc)
$(RM) DEPENDS
ifneq ($(strip $(SRCS.c) $(SRCS.cc)),)
$(DEPENDS_RULE)
endif
clean::
@echo "Cleaning"

View File

@@ -3,6 +3,7 @@
# UNIX-cp in Perl
use File::Copy;
use File::Basename;
sub Usage
{
@@ -26,7 +27,8 @@ if (-d $target)
{
foreach $file ( @sources )
{
copy ($file, "$target/$file");
$base=basename($file);
copy ($file, "$target/$base");
}
}
else

View File

@@ -37,7 +37,7 @@ $install_dir =~ s[/$][]; # remove trailing '/'
$install_dir =~ s[//][/]g; # replace '//' by '/'
# Do we have to create the directory?
unless (-d $install_dir)
unless ( (-d $install_dir) || (-l $install_dir) )
{
# Create dir only if -d option given
Usage ("$install_dir does not exist") unless ($opt_d);

View File

@@ -9,16 +9,22 @@ eval 'exec perl -S $0 ${1+"$@"}' # -*- Mode: perl -*-
while ($line = <STDIN>)
{
next if ($line =~ /__?GLOBAL_.F.+/);
next if ($line =~ /__?GLOBAL_.I._GLOBAL_.D.+/);
if ($line =~ /__?GLOBAL_.D.+/) {
($adr,$type,$name) = split ' ',$line,3;
chop $name;
$name =~ s/^__/_/;
next if ( $name =~ /^__?GLOBAL_.D.*.\.cpp/ );
next if ( $name =~ /^__?GLOBAL_.D.\.\./ );
@dtorlist = (@dtorlist,$name);
};
if ($line =~ /__?GLOBAL_.I.+/) {
($adr,$type,$name) = split ' ',$line,3;
chop $name;
$name =~ s/^__/_/;
next if ( $name =~ /^__?GLOBAL_.I.*.\.cpp/ );
next if ( $name =~ /^__?GLOBAL_.I.\.\./ );
@ctorlist = (@ctorlist,$name);
};
}

View File

@@ -22,6 +22,10 @@ foreach $arg ( @ARGV )
{
rmdir ($arg) or die "Cannot delete $arg";
}
if (-d $arg)
{
die "Failed to delete $arg";
}
}
else
{

View File

@@ -12,11 +12,12 @@ CROSS = YES
GNU_TARGET_INCLUDE_DIR = $(GNU_DIR)/$(GNU_TARGET)/include
GNU_TARGET_LIB_DIR = $(GNU_DIR)/$(GNU_TARGET)/lib
export GCC_EXEC_PREFIX = $(GNU_LIB)/gcc-lib/
CROSS_CPPFLAGS = -nostdinc
CROSS_CFLAGS = -B$(GNU_LIB)/gcc-lib/
CROSS_INCLUDES = $(addprefix -I,$(GNU_TARGET_INCLUDE_DIR))
CROSS_LDFLAGS = $(addprefix -L,$(GNU_TARGET_LIB_DIR))
# All cross builds use the gnu compiler
include $(CONFIG)/CONFIG.gnuCommon

View File

@@ -4,8 +4,6 @@
GNU_BIN = $(GNU_DIR)/bin
GNU_LIB = $(GNU_DIR)/lib
export GCC_EXEC_PREFIX = $(GNU_LIB)/gcc-lib/
CC = $(GNU_BIN)/$(CMPLR_PREFIX)cc$(CMPLR_SUFFIX)
CCC = $(GNU_BIN)/$(CMPLR_PREFIX)cc$(CMPLR_SUFFIX)
AR = $(GNU_BIN)/$(CMPLR_PREFIX)ar$(CMPLR_SUFFIX) -rc
@@ -23,10 +21,7 @@ WARN_CFLAGS_NO = -w
OPT_CFLAGS_YES = -O3
OPT_CFLAGS_NO = -g
# Template instantiation c++ flags
TEMPL_INST_CXXFLAG = -DEXPL_TEMPL
CODE_CXXFLAGS = -fPIC
CODE_CXXFLAGS = -fPIC -fno-implicit-templates
CONFORM_CXXFLAGS_NORMAL = -ansi -pedantic
CONFORM_CXXFLAGS_STRICT = -ansi -pedantic
#WARN_CXXFLAGS_YES = -Wall -Weffc++
@@ -42,5 +37,5 @@ STATIC_LDFLAGS_NO =
SHRLIB_LDFLAGS_YES = -shared
SHRLIB_LDFLAGS_NO =
DEPENDS_FLAG = -MM
HDEPENDS_FLAGS_CMPLR = -MM

View File

@@ -203,12 +203,13 @@ endif
endif
ifneq ($(strip $(PROD_LIBS_$(OS_CLASS))),)
PROD_LIBS += $(subst -nil-,,$(PROD_LIBS_$(OS_CLASS)))
PROD_LDLIBS += $(subst -nil-,,$(PROD_LIBS_$(OS_CLASS)))
else
ifdef PROD_LIBS_DEFAULT
PROD_LIBS += $(PROD_LIBS_DEFAULT)
PROD_LDLIBS += $(PROD_LIBS_DEFAULT)
endif
endif
PROD_LDLIBS += $(PROD_LIBS)
ifneq ($(strip $(SHRLIB_LIBS_$(OS_CLASS))),)
SHRLIB_LIBS += $(subst -nil-,,$(SHRLIB_LIBS_$(OS_CLASS)))
@@ -219,12 +220,13 @@ endif
endif
ifneq ($(strip $(USR_LIBS_$(OS_CLASS))),)
USR_LIBS += $(subst -nil-,,$(USR_LIBS_$(OS_CLASS)))
USR_LDLIBS += $(subst -nil-,,$(USR_LIBS_$(OS_CLASS)))
else
ifdef USR_LIBS_DEFAULT
USR_LIBS += $(USR_LIBS_DEFAULT)
USR_LDLIBS += $(USR_LIBS_DEFAULT)
endif
endif
USR_LDLIBS += $(USR_LIBS)
#
# concat specific library contents (if defined) to SYS_PROD_LIBS
@@ -241,10 +243,26 @@ endif
# concat specific products
#
ifneq ($(strip $(PROD_$(OS_CLASS))),)
PROD += $(subst -nil-,,$(PROD_$(OS_CLASS)))
PROD+=$(subst -nil-,,$(PROD_$(OS_CLASS)))
else
ifdef PROD_DEFAULT
PROD += $(PROD_DEFAULT)
ifneq (,$(strip $(PROD_DEFAULT)))
PROD+=$(PROD_DEFAULT)
endif
endif
ifneq ($(strip $(PROD_IOC_$(OS_CLASS))),)
PROD_IOC+=$(subst -nil-,,$(PROD_IOC_$(OS_CLASS)))
else
ifneq (,$(strip $(PROD_IOC_DEFAULT)))
PROD_IOC+=$(PROD_IOC_DEFAULT)
endif
endif
ifneq ($(strip $(PROD_HOST_$(OS_CLASS))),)
PROD_HOST+=$(subst -nil-,,$(PROD_HOST_$(OS_CLASS)))
else
ifneq (,$(strip $(PROD_HOST_DEFAULT)))
PROD_HOST+=$(PROD_HOST_DEFAULT)
endif
endif
@@ -252,10 +270,26 @@ endif
# concat specific products
#
ifneq ($(strip $(TESTPROD_$(OS_CLASS))),)
TESTPROD += $(subst -nil-,,$(TESTPROD_$(OS_CLASS)))
TESTPROD+=$(subst -nil-,,$(TESTPROD_$(OS_CLASS)))
else
ifdef TESTPROD_DEFAULT
TESTPROD += $(TESTPROD_DEFAULT)
ifneq (,$(strip $(TESTPROD_DEFAULT)))
TESTPROD+=$(TESTPROD_DEFAULT)
endif
endif
ifneq ($(strip $(TESTPROD_IOC_$(OS_CLASS))),)
TESTPROD_IOC+=$(subst -nil-,,$(TESTPROD_IOC_$(OS_CLASS)))
else
ifneq (,$(strip $(TESTPROD_IOC_DEFAULT)))
TESTPROD_IOC+=$(TESTPROD_IOC_DEFAULT)
endif
endif
ifneq ($(strip $(TESTPROD_HOST_$(OS_CLASS))),)
TESTPROD_HOST+=$(subst -nil-,,$(TESTPROD_HOST_$(OS_CLASS)))
else
ifneq (,$(strip $(TESTPROD_HOST_DEFAULT)))
TESTPROD_HOST+=$(TESTPROD_HOST_DEFAULT)
endif
endif
@@ -270,6 +304,22 @@ SCRIPTS += $(SCRIPTS_DEFAULT)
endif
endif
ifneq ($(strip $(SCRIPTS_IOC_$(OS_CLASS))),)
SCRIPTS_IOC+=$(subst -nil-,,$(SCRIPTS_IOC_$(OS_CLASS)))
else
ifneq (,$(strip $(SCRIPTS_IOC_DEFAULT)))
SCRIPTS_IOC+=$(SCRIPTS_IOC_DEFAULT)
endif
endif
ifneq ($(strip $(SCRIPTS_HOST_$(OS_CLASS))),)
SCRIPTS_HOST+=$(subst -nil-,,$(SCRIPTS_HOST_$(OS_CLASS)))
else
ifneq (,$(strip $(SCRIPTS_HOST_DEFAULT)))
SCRIPTS_HOST+=$(SCRIPTS_HOST_DEFAULT)
endif
endif
#
# concat specific resource files
#

View File

@@ -6,44 +6,32 @@ endif
# Epics base directories
EPICS_BASE_HOST_BIN = $(EPICS_BASE)/bin/$(EPICS_HOST_ARCH)
EPICS_BASE_HOST_LIB = $(EPICS_BASE)/lib/$(EPICS_HOST_ARCH)
EPICS_EXTENSIONS_HOST_BIN = $(EPICS_EXTENSIONS)/bin/$(EPICS_HOST_ARCH)
EPICS_EXTENSIONS_HOST_LIB = $(EPICS_EXTENSIONS)/lib/$(EPICS_HOST_ARCH)
EPICS_BASE_INCLUDE = $(EPICS_BASE)/include
ifdef T_A
EPICS_BASE_LIB = $(EPICS_BASE)/lib/$(T_A)
EPICS_BASE_BIN = $(EPICS_BASE)/bin/$(T_A)
endif
#Definitions for extensions convenience
As_DIR = $(EPICS_BASE_LIB)
ca_DIR = $(EPICS_BASE_LIB)
cas_DIR = $(EPICS_BASE_LIB)
Com_DIR = $(EPICS_BASE_LIB)
dbtoolsIoc_DIR = $(EPICS_BASE_LIB)
iocsh_DIR = $(EPICS_BASE_LIB)
miscIoc_DIR = $(EPICS_BASE_LIB)
rsrvIoc_DIR = $(EPICS_BASE_LIB)
registryIoc_DIR = $(EPICS_BASE_LIB)
asHost_DIR = $(EPICS_BASE_LIB)
asIoc_DIR = $(EPICS_BASE_LIB)
ca_DIR = $(EPICS_BASE_LIB)
cas_DIR = $(EPICS_BASE_LIB)
dbIoc_DIR = $(EPICS_BASE_LIB)
dbStaticHost_DIR = $(EPICS_BASE_LIB)
dbStaticIoc_DIR = $(EPICS_BASE_LIB)
dbtoolsIoc_DIR = $(EPICS_BASE_LIB)
gdd_DIR = $(EPICS_BASE_LIB)
#---------------------------------------------------------------
# For applications and extensions
# add epics/base include directories
ifneq ($(strip $(EPICS_BASE)),$(strip $(TOP)))
ifneq ($(strip $(EPICS_BASE)),$(strip $(INSTALL_LOCATION)))
INSTALL_INCLUDES += \
-I$(EPICS_BASE_INCLUDE)/os/$(OS_CLASS) \
-I$(EPICS_BASE_INCLUDE)
endif
endif
iocsh_DIR = $(EPICS_BASE_LIB)
miscIoc_DIR = $(EPICS_BASE_LIB)
registryIoc_DIR = $(EPICS_BASE_LIB)
rsrvIoc_DIR = $(EPICS_BASE_LIB)
recIoc_DIR = $(EPICS_BASE_LIB)
softDevIoc_DIR = $(EPICS_BASE_LIB)
testDevIoc_DIR = $(EPICS_BASE_LIB)
recIocObj_DIR = $(EPICS_BASE_LIB)
softDevIocObj_DIR = $(EPICS_BASE_LIB)
testDevIocObj_DIR = $(EPICS_BASE_LIB)
iocCore_DIR = $(EPICS_BASE_LIB)
#---------------------------------------------------------------
# Version number for base shared libraries (and win32 products)
@@ -56,11 +44,7 @@ endif # EPICS_BASE
#---------------------------------------------------------------
# Epics base c preprocessor flags
# c++ exceptions
CXX_EXCEPTIONS = YES
CXX_EXCEPTIONS_FLAGS_YES =
CXX_EXCEPTIONS_FLAGS_NO = -DnoExceptionsFromCXX
EPICS_BASE_CPPFLAGS = $(CXX_EXCEPTIONS_FLAGS_$(CXX_EXCEPTIONS))
EPICS_BASE_CPPFLAGS =
# osithread default stack
OSITHREAD_USE_DEFAULT_STACK = YES
@@ -73,8 +57,7 @@ EPICS_BASE_CPPFLAGS += $(OSITHREAD_DEFAULT_STACK_FLAGS_$(OSITHREAD_USE_DEFAULT_S
MAKEBPT = $(EPICS_BASE_HOST_BIN)/makeBpt$(HOSTEXE)
DBEXPAND = $(EPICS_BASE_HOST_BIN)/dbExpand$(HOSTEXE)
MAKEDBDEPENDS = $(PERL) $(TOOLS)/makeDbDepends.pl
MAKEDBDDEPENDS = $(EPICS_BASE_HOST_BIN)/dbMakeDBDDepends$(HOSTEXE)
MKMF = $(PERL) $(TOOLS)/mkmf.pl
REPLACEVAR = $(PERL) $(TOOLS)/replaceVAR.pl
DBTORECORDTYPEH = $(EPICS_BASE_HOST_BIN)/dbToRecordtypeH$(HOSTEXE)
DBTOMENUH = $(EPICS_BASE_HOST_BIN)/dbToMenuH$(HOSTEXE)
@@ -82,48 +65,38 @@ REGISTERRECORDDEVICEDRIVER = $(PERL) $(EPICS_BASE_HOST_BIN)/registerRecordDevice
# private versions of lex/yacc from EPICS
EYACC = $(EPICS_BASE_HOST_BIN)/antelope$(HOSTEXE)
ELEX = $(EPICS_BASE_HOST_BIN)/e_flex$(HOSTEXE) -S$(EPICS_BASE_INCLUDE)/flex.skel.static
ELEX = $(EPICS_BASE_HOST_BIN)/e_flex$(HOSTEXE) -S$(EPICS_BASE)/include/flex.skel.static
YACC = $(EYACC)
LEX = $(ELEX)
#---------------------------------------------------------------
# External tools and tool flags
# External tools and tool flags - must be in path or defined in application
# adl2dl
ifndef ADL2DL
# Tool from R3.14 extensions bin, R3.13 extensions bin, or user path
ADL2DL = $(firstword $(wildcard $(EPICS_EXTENSIONS_HOST_BIN)/adl2dl \
$(EPICS_EXTENSIONS)/bin/$(HOST_OS_CLASS)/adl2dl) adl2dl)
ADL2DL = adl2dl
endif
# sch2edif compiler and flags
SCH2EDIF = sch2edif
SCH2EDIF_PATH =
SCH2EDIF_SYSFLAGS = -n -ap -p.+..+$(SCH2EDIF_PATH)+$(EPICS_EXTENSIONS)/templates/capfast/sym+
SCH2EDIF_SYSFLAGS = -n -ap -p.+..+$(SCH2EDIF_PATH)+$(CAPFAST_TEMPLATES)/sym+
SCH2EDIF_FLAGS =
# e2db and flags
# - again there is an assumption where edb.def is installed.
ifndef E2DB
# Tool from R3.14 extensions bin, R3.13 extensions bin, or user path
E2DB = $(firstword $(wildcard $(EPICS_EXTENSIONS_HOST_BIN)/e2db \
$(EPICS_EXTENSIONS)/bin/$(HOST_OS_CLASS)/e2db) e2db)
E2DB = e2db
endif
E2DB_SYSFLAGS = -ate -d $(EPICS_EXTENSIONS)/templates/capfast/edb.def
E2DB_SYSFLAGS = -ate -d $(CAPFAST_TEMPLATES)/edb.def
E2DB_FLAGS =
#dbst
ifndef DBST
# Tool from R3.14 extensions bin, R3.13 extensions bin, or user path
DBST = $(firstword $(wildcard $(EPICS_EXTENSIONS_HOST_BIN)/dbst \
$(EPICS_EXTENSIONS)/bin/$(HOST_OS_CLASS)/dbst) dbst)
DBST = dbst
endif
#msi
ifndef MSI
# Tool from R3.14 extensions bin, R3.13 extensions bin, or user path
MSI = $(firstword $(wildcard $(EPICS_EXTENSIONS_HOST_BIN)/msi$(HOSTEXE) \
$(EPICS_EXTENSIONS)/bin/$(HOST_OS_CLASS)/msi$(HOSTEXE)) msi$(HOSTEXE))
MSI = msi
endif

View File

@@ -10,8 +10,8 @@
EPICS_VERSION=3
EPICS_REVISION=14
EPICS_MODIFICATION=0
EPICS_UPDATE_NAME=alpha
EPICS_UPDATE_LEVEL=2
EPICS_UPDATE_NAME=beta
EPICS_UPDATE_LEVEL=1
EPICS_VERSION_STRING="EPICS Version ${EPICS_VERSION}.${EPICS_REVISION}.${EPICS_MODIFICATION}.${EPICS_UPDATE_NAME}${EPICS_UPDATE_LEVEL}"

View File

@@ -24,12 +24,18 @@ BUILD_ARCHS = $(EPICS_HOST_ARCH) $(CROSS1) $(CROSS2)
CONFIG_TARGETS += CONFIG_APP_INCLUDE RULES_INCLUDE
CONFIG_INSTALLS += ../RULES_BUILD
#-------------------------------------------------------
# Check configure/RELEASE file for consistency
CHECK_RELEASE_YES = checkRelease
CHECK_RELEASE_NO =
#-------------------------------------------------------
# Cross compile default, HOST or CROSS, CONFIG.crossCommon will override
BUILD_CLASS = HOST
#-------------------------------------------------------
# Divider and suffix
# Prefix and suffix
DEP=.depends
DIVIDER = .
OBJ = .
RES = .
@@ -79,7 +85,7 @@ INSTALL_BIN = $(INSTALL_LOCATION_BIN)/$(T_A)
#--------------------------------------------------
# vpath directories
GENERIC_SRC_DIRS = .. $(SRC_DIRS)
OS_SRC_DIRS += . $(foreach dir, $(SRC_DIRS) .., \
OS_SRC_DIRS += . $(foreach dir, .. $(SRC_DIRS), \
$(dir)/os/$(OS_CLASS) $(dir)/os/posix $(dir)/os/default )
ALL_SRC_DIRS = $(OS_SRC_DIRS) $(GENERIC_SRC_DIRS)
@@ -96,6 +102,8 @@ OBJSNAME = $(addsuffix $(OBJ),$(basename $(OBJS)))
PRODNAME = $(addsuffix $(EXE),$(basename $(PROD)))
TESTPRODNAME = $(addsuffix $(EXE),$(basename $(TESTPROD)))
SHRLIBNAME = $(SHRLIBNAME_$(SHARED_LIBRARIES))
#--------------------------------------------------
# obj files
@@ -150,30 +158,37 @@ USR_INCLUDES =
USR_CFLAGS =
USR_CXXFLAGS =
USR_LDFLAGS =
USR_LDLIBS =
USR_LIBS =
USR_CPPFLAGS =
USR_DBDFLAGS =
USR_ARFLAGS =
# Target specific options
TARGET_INCLUDES = $($(basename $@)_INCLUDES) $($(basename $@)_INCLUDES_$(OS_CLASS))
TARGET_CFLAGS = $($(basename $@)_CFLAGS) $($(basename $@)_CFLAGS_$(OS_CLASS))
TARGET_CXXFLAGS = $($(basename $@)_CXXFLAGS) $($(basename $@)_CXXFLAGS_$(OS_CLASS))
TARGET_LDFLAGS = $($(basename $@)_LDFLAGS) $($(basename $@)_LDFLAGS_$(OS_CLASS))
TARGET_LDLIBS = $($(basename $@)_LDLIBS) $($(basename $@)_LDLIBS_$(OS_CLASS))
TARGET_CPPFLAGS = $($(basename $@)_CPPFLAGS) $($(basename $@)_CPPFLAGS_$(OS_CLASS))
TARGET_INCLUDES = $($(basename $@)_INCLUDES_$(OS_CLASS)) $($(basename $@)_INCLUDES)
TARGET_CFLAGS = $($(basename $@)_CFLAGS_$(OS_CLASS)) $($(basename $@)_CFLAGS)
TARGET_CXXFLAGS = $($(basename $@)_CXXFLAGS_$(OS_CLASS)) $($(basename $@)_CXXFLAGS)
TARGET_LDFLAGS = $($(basename $@)_LDFLAGS_$(OS_CLASS)) $($(basename $@)_LDFLAGS)
TARGET_CPPFLAGS = $($(basename $@)_CPPFLAGS_$(OS_CLASS)) $($(basename $@)_CPPFLAGS)
# Level of ansi conformance flags
CONFORM_CFLAGS = $(CONFORM_CFLAGS_$(CMPLR))
CONFORM_CXXFLAGS = $(CONFORM_CXXFLAGS_$(CMPLR))
CONFORM_CPPFLAGS = $(CONFORM_CPPFLAGS_$(firstword $($(basename $@)_CMPLR_$(T_A)) \
$($(basename $@)_CMPLR_$(OS_CLASS)) $($(basename $@)_CMPLR) $(CMPLR)))
CONFORM_CFLAGS = $(CONFORM_CFLAGS_$(firstword $($(basename $@)_CMPLR_$(T_A)) \
$($(basename $@)_CMPLR_$(OS_CLASS)) $($(basename $@)_CMPLR) $(CMPLR)))
CONFORM_CXXFLAGS = $(CONFORM_CXXFLAGS_$(firstword $($(basename $@)_CMPLR_$(T_A)) \
$($(basename $@)_CMPLR_$(OS_CLASS)) $($(basename $@)_CMPLR) $(CXXCMPLR)))
# Warnings flags
WARN_CFLAGS = $(WARN_CFLAGS_$($(BUILD_CLASS)_WARN))
WARN_CXXFLAGS = $(WARN_CXXFLAGS_$($(BUILD_CLASS)_WARN))
WARN_CFLAGS = $(WARN_CFLAGS_$(firstword $($(basename $@)_WARN_$(T_A)) \
$($(basename $@)_WARN_$(OS_CLASS)) $($(basename $@)_WARN) $($(BUILD_CLASS)_WARN)))
WARN_CXXFLAGS = $(WARN_CXXFLAGS_$(firstword $($(basename $@)_WARN_$(T_A)) \
$($(basename $@)_WARN_$(OS_CLASS)) $($(basename $@)_WARN) $($(BUILD_CLASS)_WARN)))
# Optimization flags
OPT_CFLAGS = $(OPT_CFLAGS_$($(BUILD_CLASS)_OPT))
OPT_CXXFLAGS = $(OPT_CXXFLAGS_$($(BUILD_CLASS)_OPT))
OPT_CFLAGS = $(OPT_CFLAGS_$(firstword $($(basename $@)_OPT_$(T_A)) \
$($(basename $@)_OPT_$(OS_CLASS)) $($(basename $@)_OPT) $($(BUILD_CLASS)_OPT)))
OPT_CXXFLAGS = $(OPT_CXXFLAGS_$(firstword $($(basename $@)_OPT_$(T_A)) \
$($(basename $@)_OPT_$(OS_CLASS)) $($(basename $@)_OPT) $($(BUILD_CLASS)_OPT)))
# Posix flags
POSIX=YES
@@ -189,8 +204,8 @@ STATIC_LDLIBS = $(STATIC_LDLIBS_$(STATIC_BUILD))
#--------------------------------------------------
# Flags
INCLUDES = -I. $(GENERIC_SRC_INCLUDES) $(INSTALL_INCLUDES) $(TARGET_INCLUDES)\
$(USR_INCLUDES) $(OP_SYS_INCLUDES) $(CROSS_INCLUDES)
INCLUDES = -I. $(GENERIC_SRC_INCLUDES) $(INSTALL_INCLUDES) $(RELEASE_INCLUDES)\
$(TARGET_INCLUDES) $(USR_INCLUDES) $(OP_SYS_INCLUDES) $(CROSS_INCLUDES)
CFLAGS = $(CONFORM_CFLAGS) $(CROSS_CFLAGS) $(OPT_CFLAGS) $(DEBUG_CFLAGS)\
$(WARN_CFLAGS) $(TARGET_CFLAGS) $(USR_CFLAGS) $(ARCH_DEP_CFLAGS)\
@@ -198,17 +213,16 @@ CFLAGS = $(CONFORM_CFLAGS) $(CROSS_CFLAGS) $(OPT_CFLAGS) $(DEBUG_CFLAGS)\
CXXFLAGS = $(CONFORM_CXXFLAGS) $(CROSS_CXXFLAGS) $(OPT_CXXFLAGS)\
$(DEBUG_CXXFLAGS) $(WARN_CXXFLAGS) $(TARGET_CXXFLAGS) $(USR_CXXFLAGS)\
$(ARCH_DEP_CXXFLAGS) $(CODE_CXXFLAGS) $(STATIC_CXXCFLAGS) $(OP_SYS_CXXFLAGS)\
$(TEMPL_INST_CXXFLAG) $(CROSS_CXXFLAGS)
$(ARCH_DEP_CXXFLAGS) $(CODE_CXXFLAGS) $(STATIC_CXXCFLAGS) $(OP_SYS_CXXFLAGS)
LDFLAGS = $(OPT_LDFLAGS) $(TARGET_LDFLAGS) $(USR_LDFLAGS) $(DEPLIB_LDFLAGS)\
$(ARCH_DEP_LDFLAGS) $(STATIC_LDFLAGS) $(OP_SYS_LDFLAGS) $(CROSS_LDFLAGS)
LDLIBS = $(TARGET_LDLIBS) $(USR_LDLIBS) $(DEPLIB_LDLIBS) $(STATIC_LDLIBS)\
LDLIBS = $(DEPLIB_LDLIBS) $(STATIC_LDLIBS)\
$(POSIX_LDLIBS) $(ARCH_DEP_LDLIBS) $(OP_SYS_LDLIBS)
CPPFLAGS += $(CROSS_CPPFLAGS) $(POSIX_CPPFLAGS) $(EPICS_BASE_CPPFLAGS)\
$(TARGET_CPPFLAGS) $(USR_CPPFLAGS) $(ARCH_DEP_CPPFLAGS)\
CPPFLAGS += $(CONFORM_CPPFLAGS) $(CROSS_CPPFLAGS) $(POSIX_CPPFLAGS)\
$(EPICS_BASE_CPPFLAGS) $(TARGET_CPPFLAGS) $(USR_CPPFLAGS) $(ARCH_DEP_CPPFLAGS)\
$(OP_SYS_CPPFLAGS) $(OP_SYS_INCLUDE_CPPFLAGS) $(CODE_CPPFLAGS)
#--------------------------------------------------
@@ -229,16 +243,34 @@ COMPILE.cpp = $(CCC) -c $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) $(SOURCE_CXXFLAG)
#--------------------------------------------------
# Build depends command here
DEPENDS.cpp = $(CCC)
DEPENDSFLAGS += $(CPPFLAGS) $(INCLUDES) $(DEPENDS_FLAG)
DEPENDS_CMD.cpp = -$(DEPENDS.cpp) $(DEPENDSFLAGS) $(DEPENDS_SRC_FILES) > DEPENDS
HOST_HDEPENDS_CMD = MKMF
CROSS_HDEPENDS_CMD = MKMF
HDEPENDS_CMD = $($(BUILD_CLASS)_HDEPENDS_CMD)
HDEPENDS.c_CMPLR = $(CC)
HDEPENDS.cpp_CMPLR = $(CCC)
HDEPENDSFLAGS_CMPLR += $(CPPFLAGS) $(INCLUDES) $< > $*$(DEP)
HDEPENDS.c_MKMF = $(PERL) $(TOOLS)/mkmf.pl
HDEPENDS.cpp_MKMF = $(PERL) $(TOOLS)/mkmf.pl
HDEPENDSFLAGS_MKMF = -m $*$(DEP) $(HDEPENDS_INCLUDES_MKMF) $@ $<
HDEPENDS_INCLUDES_MKMF = $(filter .%,$(subst -I,,$(INCLUDES)))
HDEPENDS.c = $(HDEPENDS.c_$(HDEPENDS_CMD))
HDEPENDS.cpp = $(HDEPENDS.cpp_$(HDEPENDS_CMD))
HDEPENDSFLAGS = $(HDEPENDSFLAGS_$(HDEPENDS_CMD))
HDEPENDS_FLAGS = $(HDEPENDS_FLAGS_$(HDEPENDS_CMD))
HDEPENDS_CMD.c = -$(HDEPENDS.c) $(HDEPENDS_FLAGS) $(HDEPENDSFLAGS)
HDEPENDS_CMD.cpp = -$(HDEPENDS.cpp) $(HDEPENDS_FLAGS) $(HDEPENDSFLAGS)
HDEPENDS_TARGETS_CMD = $(PERL) $(TOOLS)/makeDependsTargets.pl $*$(DEP)
#--------------------------------------------------
# depends definition
TARGET_SRCS = $(foreach name, $(TESTPROD) $(PROD) $(LIBRARY), $($(name)_SRCS))
SRC_FILES = $(foreach src, $(LIB_SRCS) $(LIBSRCS) $(SRCS) $(PROD_SRCS) $(TARGET_SRCS) , \
$(firstword $(wildcard $(addsuffix /$(src),$(ALL_SRC_DIRS))) $(src)))
DEPENDS_SRC_FILES = $(SRC_FILES)
SRC_FILES = $(LIB_SRCS) $(LIBSRCS) $(SRCS) $(PROD_SRCS) $(TARGET_SRCS)
HDEPENDS_FILES = $(addsuffix $(DEP),$(notdir $(basename $(SRC_FILES))))
#---------------------------------------------------------------
# Names of installed items
@@ -248,7 +280,7 @@ DEPENDS_SRC_FILES = $(SRC_FILES)
INSTALL_PROD= $(PRODNAME:%= $(INSTALL_BIN)/%)
INSTALL_LIBS= $(LIBNAME:%=$(INSTALL_LIB)/%)
INSTALL_MUNCHS= $(MUNCHNAME:%=$(INSTALL_LIB)/%)
INSTALL_MUNCHS= $(MUNCHNAME:%=$(INSTALL_BIN)/%)
INSTALL_SHRLIBS= $(SHRLIBNAME:%=$(INSTALL_SHRLIB)/%)
INSTALL_DLL_LINK_LIBS=$(DLL_LINK_LIBNAME:%=$(INSTALL_LIB)/%)
INSTALL_TCLLIBS=$(TCLLIBNAME:%=$(INSTALL_TCLLIB)/%)

View File

@@ -24,22 +24,33 @@
# Augment beacon/search dest ip addr list
# from white space separated ip addresses in this
# environment variable. "Quote" if more than one addr.
#
# EPICS_CA_AUTO_ADDR_LIST
# YES = augment beacon/search dest ip
# addr list from network interfaces found; NO = only use
# EPICS_CA_ADDR_LIST to create this list.
#
# EPICS_CA_CONN_TMO
# after not seeing a server beacon for this number
# of seconds the clients will send an echo request over
# tcp/ip to verify the connection.
#
# EPICS_CA_REPEATER_PORT CA repeater port number.
#
# EPICS_CA_SERVER_PORT CA server port number.
#
# EPICS_CA_MAX_ARRAY_BYTES
# This parameter specifies the size (in bytes) of the largest array
# that will transport through CA. It must be specified for both the
# client and the server library.
#
EPICS_CA_ADDR_LIST=""
EPICS_CA_AUTO_ADDR_LIST=YES
EPICS_CA_CONN_TMO=30.0
EPICS_CA_REPEATER_PORT=5065
EPICS_CA_SERVER_PORT=5064
EPICS_CA_MAX_ARRAY_BYTES=16384
#
# These parameters are only used by the CA server library
@@ -111,40 +122,39 @@ EPICS_CA_SERVER_PORT=5064
# --------------------------------------------------
#
# o Make sure that the broadcast addresses are identical on the
# server's host and on the client's host. This can be checked with
# "netstat -i" or "ifconfig -a".
# server's host and on the client's host. This can be checked
# on UNIX with "netstat -i" or "ifconfig -a"; on vxWorks with
# ifShow; and on windows with ipconfig.
#
# o Make sure that the client and server are using the same UDP
# port. Check the server's port by running "netstat -a | grep nnn"
# where nnn is the port number involved. If you do not set
# EPICS_CA_SERVER_PORT or EPICS_CAS_SERVER_PORT
# then the default port will be 5064.
# EPICS_CA_SERVER_PORT or EPICS_CAS_SERVER_PORT then the default port
# will be 5064.
#
# o Two servers can run on the same host with the same server port number
# if the following restrictions are understood (good luck). If the host has a
# modern IP kernel it is possible to have two servers on the same UDP port.
# It is not possible for two servers to run on the same host using the same
# TCP IP server port. If the CA server library detects that a 2nd server is attempting
# to start on the same port as an existing CA server then both servers will use the
# same UDP port if it is a modern IP kernel, and the 2nd server will
# be allocated a new TCP port. In this situation the clients will still be
# configured to use the same port number for both servers. The clients
# will find the 2nd server via the shared UDP port, and transparently
# connect to the 2nd server's allocated TCP port. Be aware that If there are
# two server's running on the same host on the same UDP port then they will
# both receive all UDP search requests sent as broadcasts, but will unfortunately (due to
# what I consider to be a real weakness of most IP kernel implementations) only one
# of the servers will typically receive UDP search requests sent to unicast addresses (i.e.
# a specific host's ip address).
# TCP IP server port. If the CA server library detects that a 2nd server is
# attempting to start on the same port as an existing CA server then both
# servers will use the same UDP port if it is a modern IP kernel, and the 2nd
# server will be allocated a new TCP port. In this situation the clients will
# still be configured to use the same port number for both servers. The clients
# will find the 2nd server via the shared UDP port, and transparently connect
# to the 2nd server's allocated TCP port. Be aware that If there are two server's
# running on the same host on the same UDP port then they will both receive all
# UDP search requests sent as broadcasts, but will unfortunately (due to a common
# weakness of most IP kernel implementations) only one of the servers will
# typically receive UDP search requests sent to unicast addresses (i.e. a specific
# host's ip address).
#
EPICS_CA_BEACON_PERIOD=15.0
EPICS_CAS_INTF_ADDR_LIST=""
EPICS_CAS_BEACON_ADDR_LIST=""
EPICS_CAS_SERVER_PORT=
# Log Server:
# EPICS_IOC_LOG_PORT Log server port number etc.
EPICS_IOC_LOG_PORT=7004

View File

@@ -49,7 +49,7 @@
# override
#
#CROSS_COMPILER_TARGET_ARCHS=
CROSS_COMPILER_TARGET_ARCHS=vxWorks-68040
CROSS_COMPILER_TARGET_ARCHS=vxWorks-68040 vxWorks-ppc604
# If only a subset of the host architectures perform
@@ -74,7 +74,8 @@ CXXCMPLR=STRICT
# Build shared libraries?
# (archive libraries will also be built)
# must be either YES or NO
# NOTE: CONFIG_SITE.Host.$(HOST_ARCH) files may override
# NOTE: os/CONFIG.$(EPICS_HOST_ARCH).$(EPICS_HOST_ARCH) files and
# os/CONFIG_SITE.$(EPICS_HOST_ARCH).$(EPICS_HOST_ARCH) files may override
#
# NOTE WIN32: YES results in a DLL. CONFIG_SITE.Host.WIN32
# distribution file contains YES override
@@ -88,6 +89,11 @@ SHARED_LIBRARIES=NO
# must be either YES or NO
STATIC_BUILD=NO
# Should header dependancy files be automatically generated
# for each C/C++ created object file?
# must be either YES or NO
HDEPENDS=YES
# Host build optimization
# must be either YES or NO
HOST_OPT=YES

View File

@@ -19,10 +19,12 @@
# Site-specific environment settings
# Time service:
# EPICS_TS_MIN_WEST the local time difference from GMT.
# EPICS_TIMEZONE needed for vxWorks
# EPICS_TIMEZONE=<name>::<minutesWest>:<start daylight>:<end daylight>
# eg EPICS_TIMEZONE=CUS::360:033102:102802
# EPICS_TS_NTP_INET ntp or Unix time server ip addr.
EPICS_TS_MIN_WEST=360
EPICS_TIMEZONE=CUS::360:033102:102802
EPICS_TS_NTP_INET=

View File

@@ -3,5 +3,4 @@
# NOTE: RELEASE.$(EPICS_HOST_ARCH) files will override
# Tornado directory
#VX_DIR = /usr/local/vw/tornado101
VX_DIR = /usr/local/vw/tornado20
VX_DIR = /usr/local/vw/tornado202

View File

@@ -6,12 +6,14 @@ vpath %.dbd $(USR_VPATH) $(GENERIC_SRC_DIRS) $(dir $(DBD)) $(COMMON_DIR)
vpath %.db $(USR_VPATH) $(GENERIC_SRC_DIRS) $(dir $(DB)) $(COMMON_DIR)
vpath %.substitutions $(USR_VPATH) $(GENERIC_SRC_DIRS) $(COMMON_DIR)
vpath %.template $(USR_VPATH) $(GENERIC_SRC_DIRS) $(COMMON_DIR)
vpath %.edf $(USR_VPATH) $(GENERIC_SRC_DIRS) $(COMMON_DIR)
vpath bpt%.data $(USR_VPATH) $(GENERIC_SRC_DIRS) $(COMMON_DIR)
##################################################### dbdflags
# dbExpand
INSTALL_DBDFLAGS += -I $(INSTALL_LOCATION)/dbd
DBDFLAGS = $(USR_DBDFLAGS) -I . -I .. $(INSTALL_DBDFLAGS)
DBDFLAGS = $(USR_DBDFLAGS) -I . -I .. $(INSTALL_DBDFLAGS) $(RELEASE_DBDFLAGS)
##################################################### Targets
@@ -21,7 +23,7 @@ DBD += $(DBDNAME)
DBD += $(addsuffix .dbd,$(patsubst %.h,%,$(patsubst %.db,%,$(DBDINC))))
INC += $(addsuffix .h,$(patsubst %.h,%,$(patsubst %.db,%,$(DBDINC))))
INSTALL_DBDS += $(DBD:%= $(INSTALL_DBD)/%)
INSTALL_DBDS += $(addprefix $(INSTALL_DBD)/,$(notdir $(DBD)))
COMMON_DBDS += $(filter $(COMMON_DIR)/%, $(foreach file, $(DBD), \
$(firstword $(SOURCE_DBD) $(COMMON_DIR)/$(file) ) ) )
@@ -37,8 +39,19 @@ SOURCE_DB = $(wildcard $(file) $(SOURCE_DB_bbb) )
SOURCE_DB_bbb = $(foreach dir, $(GENERIC_SRC_DIRS), $(SOURCE_DB_aaa) )
SOURCE_DB_aaa = $(addsuffix /$(file), $(dir) )
COMMONS = $(COMMON_DIR)/*.dbd $(COMMON_DIR)/*.db $(COMMON_DIR)/*.h $(COMMON_DIR)/*.substitutions $(COMMON_DIR)/*.template
COMMONS = $(COMMON_DIR)/*.dbd $(COMMON_DIR)/*.db $(COMMON_DIR)/*.h \
$(COMMON_DIR)/*.substitutions $(COMMON_DIR)/*.template
##################################################### dependancies
HINC += $(addsuffix .h,$(patsubst %.h,%,$(patsubst %.db,%,$(DBDINC))))
COMMON_DBDINC += $(addprefix $(COMMON_DIR),$(HINC))
DBDDEPENDS_FILES += $(addsuffix $(DEP),$(COMMON_DBDS) \
$(COMMON_DBDINC) $(COMMON_DBS))
DBDDEPENDS_FLAGS = $(filter .%,$(subst -I,,$(filter-out -S%,$(DBDFLAGS))))
DBDDEPENDS_CMD=@-$(MKMF) -m $@$(DEP) $(DBDDEPENDS_FLAGS) $@ $<
#####################################################
@@ -61,19 +74,26 @@ install: buildInstall
rebuild: clean install
.PHONY: all inc depends build install clean rebuild buildInstall
.PHONY: all inc build install clean rebuild buildInstall
endif # T_A defined
ifneq (,$(strip $(DBDDEPENDS_FILES)))
-include $(DBDDEPENDS_FILES)
endif
$(DBDDEPENDS_FILES):
##################################################### build dependancies, clean rule
inc : $(COMMON_INC) $(INSTALL_INC)
build : $(COMMON_DBDS) $(COMMON_DBS) \
$(INSTALL_DBDS) $(INSTALL_DBS)
$(INSTALL_DBDS) $(INSTALL_DBS) \
$(DBDDEPENDS_FILES)
clean::
@$(RM) $(COMMONS)
@$(RM) $(COMMONS) $(DBDDEPENDS_FILES)
@$(RM) *_registerRecordDeviceDriver.cpp
##################################################### "Foreign" templates
@@ -104,10 +124,7 @@ $(COMMON_DIR)/%.edf: ../%.sch $(DEPSCHS)
##################################################### Substitution files
#$(COMMON_DIR)/%.substitutions: ../%.substitutions $(COMMON_DIR)/%.template
# @$(CP) $< $@
# WARNING: CREATESUBSTITUTIONS script need output dir on command line
# WARNING: CREATESUBSTITUTIONS script needs output dir on command line
ifdef CREATESUBSTITUTIONS
$(COMMON_DIR)/%.substitutions:
@@ -118,18 +135,7 @@ endif
##################################################### Template files
#$(COMMON_DIR)/%.template: ../%.template
# @$(CP) $< $@
$(COMMON_DIR)/%.template:
@$(TOUCH) $@
$(COMMON_DIR)/%.template: $(COMMON_DIR)/%.edf
$(E2DB) $(E2DB_SYSFLAGS) $(E2DB_FLAGS) -n $@.VAR $<
@$(REPLACEVAR) < $@.VAR > $@
@$(RM) $@.VAR
$(COMMON_DIR)/%.template: ../%.edf
$(COMMON_DIR)/%.template: %.edf
$(E2DB) $(E2DB_SYSFLAGS) $(E2DB_FLAGS) -n $@.VAR $<
@$(REPLACEVAR) < $@.VAR > $@
@$(RM) $@.VAR
@@ -138,39 +144,28 @@ $(COMMON_DIR)/%.template: ../%.edf
##################################################### INC files
$(COMMON_DIR)/%Record.h: ../%Record.dbd
$(COMMON_DIR)/%Record.h: %Record.dbd
@$(RM) $@
$(DBTORECORDTYPEH) $(DBDFLAGS) $< $@
$(COMMON_DIR)/menu%.h: ../menu%.dbd
$(COMMON_DIR)/menu%.h: menu%.dbd
@$(RM) $@
$(DBTOMENUH) $< $@
##################################################### DBD files
$(COMMON_DIR)/bpt%.dbd: ../bpt%.data
$(RM) $@
$(MAKEBPT) $< $@
$(COMMON_DIR)/bpt%.dbd: bpt%.data
$(RM) $@
@$(RM) $@
$(MAKEBPT) $< $@
$(COMMON_DIR)/%.dbd: ../%Include.dbd
@echo "Expanding dbd"
$(RM) $@
$(DBEXPAND) $(DBDFLAGS) $< > $@
$(COMMON_DIR)/%.dbd: %Include.dbd
@$(RM) $@$(DEP)
@$(DBDDEPENDS_CMD)
@echo "Expanding dbd"
$(RM) $@
@$(RM) $@
$(DBEXPAND) $(DBDFLAGS) $< > $@
$(INSTALL_DBD)/%: $(COMMON_DIR)/%
@echo "Installing dbd file $@"
@$(INSTALL) -d -m 644 $< $(@D)
$(INSTALL_DBD)/%: ../%
$(INSTALL_DBD)/%: %
@echo "Installing dbd file $@"
@$(INSTALL) -d -m 644 $< $(@D)
@@ -178,20 +173,14 @@ $(INSTALL_DBD)/%: ../%
##################################################### DB files
$(COMMON_DIR)/%.db$(RAW): ../%.db
$(CP) $< $@
$(COMMON_DIR)/%.db$(RAW): $(COMMON_DIR)/%.edf
$(E2DB) $(E2DB_SYSFLAGS) $(E2DB_FLAGS) -n $@.VAR $<
@$(REPLACEVAR) < $@.VAR > $@
@$(RM) $@.VAR
$(COMMON_DIR)/%.db$(RAW): ../%.edf
$(COMMON_DIR)/%.db$(RAW): %.edf
$(E2DB) $(E2DB_SYSFLAGS) $(E2DB_FLAGS) -n $@.VAR $<
@$(REPLACEVAR) < $@.VAR > $@
@$(RM) $@.VAR
$(COMMON_DIR)/%.db$(RAW): %.substitutions %.template
@$(RM) $@$(DEP)
@$(DBDDEPENDS_CMD)
@echo "Inflating database from $<"
@$(RM) $@
$(MSI) -S $^ > $@
@@ -199,6 +188,9 @@ $(COMMON_DIR)/%.db$(RAW): %.substitutions %.template
# dbst based database optimization
ifeq '$(DB_OPT)' 'YES'
$(COMMON_DIR)/%.db$(RAW): %.db
$(CP) $< $@
$(COMMON_DIR)/%.db: $(COMMON_DIR)/%.db$(RAW)
@echo "Optimizing database $@"
$(DBST) . $< -d > $@
@@ -206,15 +198,9 @@ $(COMMON_DIR)/%.db: $(COMMON_DIR)/%.db$(RAW)
RAW=.raw
.PRECIOUS: $(DB:%=$(COMMON_DIR)/%$(RAW))
else
$(INSTALL_DB)/%: %
@echo "Installing db file $@"
@$(INSTALL) -d -m 644 $< $(@D)
endif
$(INSTALL_DB)/%: $(COMMON_DIR)/%
$(INSTALL_DB)/%: %
@echo "Installing db file $@"
@$(INSTALL) -d -m 644 $< $(@D)
@@ -222,35 +208,11 @@ $(INSTALL_DB)/%: $(COMMON_DIR)/%
##################################################### register record,device,driver support
%_registerRecordDeviceDriver.cpp: $(COMMON_DIR)/%.dbd
$(RM) $@
$(REGISTERRECORDDEVICEDRIVER) $< > $@
%_registerRecordDeviceDriver.cpp: ../%.dbd
$(RM) $@
$(REGISTERRECORDDEVICEDRIVER) $< > $@
##################################################### DB dependancies
ifneq (,$(COMMON_DBS))
DBDEPENDS: $(COMMON_DBS:$(COMMON_DIR)/%.db=%.substitutions) $(COMMON_DBS:$(COMMON_DIR)/%.db=%.template)
@echo 'Creating DB dependancy file $@'
@echo "Making template database dependencies"
@$(MAKEDBDEPENDS) $^
-include DBDEPENDS
endif
##################################################### DBD dependancies
ifneq (,$(wildcard $(patsubst %.dbd,../%Include.dbd,$(notdir $(COMMON_DBDS)))))
DBDDEPENDS_%: ../%Include.dbd
@echo 'Creating DBD dependancy file $@'
%_registerRecordDeviceDriver.cpp: %.dbd
@$(RM) $@
$(MAKEDBDDEPENDS) $(DBDFLAGS) $(COMMON_DIR)/$*.dbd $< > $@
-include $(patsubst ../%Include.dbd,DBDDEPENDS_%,$(wildcard $(patsubst %.dbd,../%Include.dbd,$(notdir $(COMMON_DBDS)))))
endif
$(REGISTERRECORDDEVICEDRIVER) $< > $@
.PRECIOUS: %_registerRecordDeviceDriver.cpp
##################################################### END OF FILE

18
configure/RULES.ioc Normal file
View File

@@ -0,0 +1,18 @@
#RULES.ioc
include $(EPICS_BASE)/configure/RULES_DIRS
build: buildInstall
install: buildInstall
buildInstall: $(TARGETS)
cdCommands: $(wildcard $(TOP)/config/RELEASE*)
ifeq ($(IOCS_APPL_TOP),)
$(PERL) $(TOOLS)/convertRelease.pl -a $(ARCH) $@
else
$(PERL) $(TOOLS)/convertRelease.pl -a $(ARCH) -t $(IOCS_APPL_TOP) $@
endif
clean:
@$(RM) cdCommands

View File

@@ -4,13 +4,14 @@
all: install
build install buildInstall: $(CHECK_RELEASE_$(CHECK_RELEASE))
rebuild: clean all
ACTIONS = inc
ACTIONS += build
ACTIONS += install
ACTIONS += buildInstall
ACTIONS += depends
ACTIONS += browse
actionPart = $(word 1, $(subst $(DIVIDER), ,$@))
@@ -24,7 +25,7 @@ buildDirs = $(addprefix O.,$(BUILD_ARCHS))
$(actionArchTargets) : $(buildDirs) O.Common
$(MAKE) -C O.$(archPart) -f ../Makefile TOP=$(TOP)/.. T_A=$(archPart) $(actionPart)
$(BUILD_ARCHS) : % : O.%
$(BUILD_ARCHS) : % : O.% O.Common
$(MAKE) -C O.$@ -f ../Makefile TOP=$(TOP)/.. T_A=$@
$(ACTIONS):%: $(foreach arch, $(BUILD_ARCHS), %$(DIVIDER)$(arch))
@@ -35,6 +36,9 @@ $(buildDirs):
O.Common:
$(MKDIR) O.Common
checkRelease: $(wildcard $(TOP)/configure/RELEASE*)
$(PERL) $(TOOLS)/convertRelease.pl -h $(EPICS_HOST_ARCH) -t $(TOP) $@
#
# special clean rule
#
@@ -48,4 +52,5 @@ clean$(DIVIDER)% ::
.PHONY : $(buildActionArchTargets)
.PHONY : $(buildArchs)
.PHONY : $(ACTIONS) clean all
.PHONY : checkRelease

View File

@@ -28,13 +28,18 @@
# vpath, of course, has the disadvantage that we need explicit rules
# for scripts or similar os-specific filed which have _no_ suffix...
ifndef BASE_RULES_BUILD
BASE_RULES_BUILD=1
vpath %.c $(USR_VPATH) $(ALL_SRC_DIRS)
vpath %.cc $(USR_VPATH) $(ALL_SRC_DIRS)
vpath %.cpp $(USR_VPATH) $(ALL_SRC_DIRS)
vpath %.C $(USR_VPATH) $(ALL_SRC_DIRS)
vpath %.rc $(USR_VPATH) $(ALL_SRC_DIRS)
vpath %.h $(USR_VPATH) $(ALL_SRC_DIRS)
vpath %.skel.static $(USR_VPATH) $(GENERIC_SRC_DIRS)
vpath %.skel.static $(USR_VPATH) $(ALL_SRC_DIRS)
vpath %.y $(USR_VPATH) $(ALL_SRC_DIRS)
vpath %.l $(USR_VPATH) $(ALL_SRC_DIRS)
#---------------------------------------------------------------
@@ -46,18 +51,17 @@ include $(CONFIG)/CONFIG_ADDONS
ifeq ($(findstring Host,$(VALID_BUILDS)),Host)
LIBRARY += $(LIBRARY_HOST)
OBJS += $(OBJS_HOST)
else
PROD = $(PROD_$(OS_CLASS))
TESTPROD = $(TESTPROD_$(OS_CLASS))
ifneq ($(findstring Ioc,$(VALID_BUILDS)),Ioc)
LIBRARY = $(LIBRARY_$(OS_CLASS))
OBJS = $(OBJS_$(OS_CLASS))
endif
PROD += $(PROD_HOST)
SCRIPTS += $(SCRIPTS_HOST)
TESTPROD += $(TESTPROD_HOST)
endif
ifeq ($(findstring Ioc,$(VALID_BUILDS)),Ioc)
LIBRARY += $(LIBRARY_IOC)
OBJS += $(OBJS_IOC)
PROD += $(PROD_IOC)
SCRIPTS += $(SCRIPTS_IOC)
TESTPROD += $(TESTPROD_IOC)
endif
#---------------------------------------------------------------
@@ -73,6 +77,14 @@ endif
all: install
-include $(CONFIG)/RULES.Db
ifeq ($(HDEPENDS),YES)
ifneq (,$(strip $(HDEPENDS_FILES)))
-include $(HDEPENDS_FILES)
endif
endif
#---------------------------------------------------------------
# Create included Makefile for prod,testprod, and library targets
@@ -86,18 +98,18 @@ MakefileInclude: ../Makefile
endif # PROD, TESTPROD, or LIBRARY defined
#---------------------------------------------------------------
# Products and Object libraries
#
PRODTARGETS += $(PRODNAME) $(MUNCHNAME) $(CTDT_SRCS) $(CTDT_OBJS) $(NMS)
#---------------------------------------------------------------
# Libraries
#
LIBTARGETS += $(LIBNAME)
LIBTARGETS += $(MUNCHNAME) $(LIBRARY_CTDT_SRCS) $(LIBRARY_CTDT_OBJS) $(LIBRARY_NM)
ifneq (,$(strip $(LIBTARGETS)))
LIBTARGETS += $(INSTALL_LIBS) $(INSTALL_MUNCHS)
ifeq ($(strip $(SHARED_LIBRARIES)),YES)
LIBTARGETS += $(INSTALL_LIBS)
LIBTARGETS += $(SHRLIBNAME) $(INSTALL_SHRLIBS) $(INSTALL_DLL_LINK_LIBS)
endif # SHARED_LIBRARIES=YES
endif # LIBTARGETS
#---------------------------------------------------------------
ifneq ($(CONFIG),$(TOP)/configure)
@@ -118,11 +130,11 @@ install: buildInstall
rebuild: clean install
build: $(OBJSNAME) $(LIBTARGETS) $(PRODNAME) $(TESTPRODNAME) \
build: $(OBJSNAME) $(LIBTARGETS) $(PRODTARGETS) $(TESTPRODNAME) \
$(TARGETS)
buildInstall : \
$(INSTALL_SCRIPTS) $(INSTALL_PROD) \
$(INSTALL_SCRIPTS) $(INSTALL_PROD) $(INSTALL_MUNCHS) \
$(INSTALL_TCLLIBS) $(INSTALL_TCLINDEX) \
$(INSTALL_OBJS) \
$(INSTALL_DOCS) \
@@ -136,13 +148,10 @@ endif
clean::
@echo "Cleaning"
@$(RM) *.i *$(OBJ) *.a $(PRODNAME) $(TESTPRODNAME) $(LIBNAME) $(SHRLIBNAME)\
@$(RM) *.i *$(OBJ) *.a $(TESTPRODNAME) $(LIBNAME) $(SHRLIBNAME)\
$(INC) *$(RES) $(TARGETS) \
*.out MakefileInclude \
$(COMMON_INC)
ifdef MUNCHNAME
@$(RM) $(MUNCHNAME) $(LIBRARY_CTDT_SRCS) $(LIBRARY_CTDT_OBJS) $(LIBRARY_NM)
endif
$(COMMON_INC) $(HDEPENDS_FILES) $(PRODTARGETS)
ifdef BAF
@$(RM) $(PROD_BAF) $(LIB_BAF) *$(BOF)
endif
@@ -171,34 +180,52 @@ $(DIRECTORY_TARGETS) :
# The order of the following rules is
# VERY IMPORTANT !!!!
depends: inc $(DEPENDS_SRC_FILES)
@$(RM) DEPENDS
@touch DEPENDS
ifneq (,$(strip $(DEPENDS_SRC_FILES)))
$(DEPENDS_CMD.cpp)
endif
$(TESTPRODNAME) $(PRODNAME):%$(EXE): $(PRODUCT_OBJS) $(PROD_RESS) $(PROD_DEPLIBS)
@$(RM) $@
$(LINK.cpp)
$(PURIFY_$(OS_CLASS)) $(LINK.cpp)
# object libs for R3.13 vxWorks compatibility only
$(OBJLIBNAME):%$(OBJ): $(OBJLIB_LD_OBJS)
@$(RM) $@
$(OBJLIB_LINK.cpp)
%_ctdt$(OBJ) : %_ctdt.c
@$(RM) $@
$(COMPILE.c) -traditional $<
%$(OBJ): %.c
ifeq ($(HDEPENDS),YES)
@$(RM) $*$(DEP)
@$(HDEPENDS_CMD.c)
@$(HDEPENDS_TARGETS_CMD) $*$(DEP)
endif
@$(RM) $@
$(COMPILE.c) $<
%$(OBJ): %.cc
ifeq ($(HDEPENDS),YES)
@$(RM) $*$(DEP)
@$(HDEPENDS_CMD.cpp)
@$(HDEPENDS_TARGETS_CMD) $*$(DEP)
endif
@$(RM) $@
$(COMPILE.cpp) $<
%$(OBJ): %.cpp
ifeq ($(HDEPENDS),YES)
@$(RM) $*$(DEP)
@$(HDEPENDS_CMD.cpp)
@$(HDEPENDS_TARGETS_CMD) $*$(DEP)
endif
@$(RM) $@
$(COMPILE.cpp) $<
%$(OBJ): %.C
ifeq ($(HDEPENDS),YES)
@$(RM) $*$(DEP)
@$(HDEPENDS_CMD.cpp)
@$(HDEPENDS_TARGETS_CMD) $*$(DEP)
endif
@$(RM) $@
$(COMPILE.cpp) $<
@@ -218,20 +245,20 @@ $(TESTPRODNAME) $(PRODNAME):%$(EXE): $(PRODUCT_OBJS) $(PROD_RESS) $(PROD_DEPLIBS
# are creating it
#
ifeq ($(findstring -d, $(YACCOPT)),-d)
%.h %.c: ../%.y
%.h %.c: %.y
$(RM) $*.c y.tab.c
$(RM) $*.h y.tab.h
$(YACC) $(YACCOPT) $<
$(MV) y.tab.c $*.c
$(MV) y.tab.h $*.h
else
%.c: ../%.y
%.c: %.y
$(RM) $*.c y.tab.c
$(YACC) $(YACCOPT) $<
$(MV) y.tab.c $*.c
endif
%.c: ../%.l
%.c: %.l
@$(RM) lex.yy.c
$(LEX) $(LEXOPT) $<
@$(RM) $@
@@ -280,6 +307,10 @@ $(SHRLIBNAME):$(LIB_PREFIX)%$(SHRLIB_SUFFIX): $(LIBRARY_OBJS) $(LIBRARY_RESS)
$(LINK.shrlib)
# C++ munching for VxWorks
%.nm : %$(EXE)
@$(RM) $@
$(NM) $< > $@
%.nm : %$(OBJ)
@$(RM) $@
$(NM) $< > $@
@@ -288,20 +319,17 @@ $(SHRLIBNAME):$(LIB_PREFIX)%$(SHRLIB_SUFFIX): $(LIBRARY_OBJS) $(LIBRARY_RESS)
@$(RM) $@
$(PERL) $(TOOLS)/munch.pl < $< > $@
$(MUNCHNAME):%.munch : %_ctdt$(OBJ) %.o
$(MUNCHNAME):%.munch : %_ctdt$(OBJ) %$(EXE)
@$(RM) $@
$(LDCMD)
$(OBJLIB_MUNCHNAME):%.munch : %_ctdt$(OBJ) %$(OBJ)
@$(RM) $@
$(LDCMD)
# Ext, app and module rules
CONFIG_APP_INCLUDE: $(wildcard $(TOP)/configure/RELEASE*)
@$(RM) $@
@$(PERL) $(TOOLS)/makeConfigAppInclude.pl $(EPICS_HOST_ARCH) $(T_A) $@ $(TOP)
RULES_INCLUDE: $(wildcard $(TOP)/configure/RELEASE*)
@$(RM) $@
@$(PERL) $(TOOLS)/makeRulesInclude.pl $(EPICS_HOST_ARCH) $(T_A) $@ $(TOP)
RULES_INCLUDE CONFIG_APP_INCLUDE: $(wildcard $(TOP)/configure/RELEASE*)
$(PERL) $(TOOLS)/convertRelease.pl -h $(EPICS_HOST_ARCH) $@
binInstalls: $(BIN_INSTALLS)
@echo "Installing $(^F)"
@@ -392,14 +420,12 @@ $(INSTALL_TEMPLATES_SUBDIR)/%: %
@echo "Installing $@"
@$(INSTALL) -d -m 644 $< $(@D)
.PRECIOUS: %.i %.o %.c %.nm %.cpp
.PRECIOUS: %.i %.o %.c %.nm %.cpp %.cc
.PRECIOUS: $(COMMON_INC)
-include $(CONFIG)/RULES.Db
-include DEPENDS
.PHONY: all inc depends build install clean rebuild buildInstall binInstalls
.PHONY: all inc build install clean rebuild buildInstall binInstalls
endif # BASE_RULES_BUILD
# EOF RULES_BUILD

View File

@@ -4,7 +4,7 @@
ARCHS += $(BUILD_ARCHS)
ACTIONS += inc build install buildInstall depends clean
ACTIONS += inc build install buildInstall clean
dirPart = $(word 1, $(subst $(DIVIDER), ,$@))
actionArchPart = $(join $(word 2, $(subst $(DIVIDER), ,$@)), \

View File

@@ -68,14 +68,12 @@ help:
@echo " in all except the O.<arch> level Makefile"
@echo " rebuild - Same as clean install"
@echo " inc - Installs header files"
@echo " depends - Generates include header file dependencies"
@echo " build - Builds all targets"
@echo "\"Partial\" build targets supported by Makefiles:"
@echo " inc.<arch> - Installs <arch> only header files."
@echo " install.<arch> - Builds and installs <arch> only."
@echo " clean.<arch> - Cleans <arch> binaries in O.<arch> dirs only."
@echo " build.<arch> - Builds <arch> only."
@echo " depends.<arch> - Generates <arch> dependencies only."
@echo "Targets supported by top level Makefile:"
@echo " uninstall - Cleans directories created by the install."
@echo " distclean - Same as clean uninstall."

View File

@@ -8,33 +8,35 @@
TOP = ../../..
include $(TOP)/configure/CONFIG
# Add-on CFLAGS that are needed by this Makefile.
# Add-on CPPFLAGS that are needed by this Makefile.
# (If possible, all system specific flags should be
# defined in configure/os/CONFIG.<host>.<target>
#
# These CFLAGS rules also apply to these Makefile-variables:
# These CPPFLAGS rules also apply to these Makefile-variables:
# CPPFLAGS C preprocessor flags
# CFLAGS C flags
# CXXFLAGS C++ flags
# LDFLAGS link flags
#
# This is used on all systems:
USR_CFLAGS = -DVAR=value -Ddefine_for_all_systems
USR_CPPFLAGS = -DVAR=value -Ddefine_for_all_systems
# ..only for WIN32:
USR_CFLAGS_WIN32 = -DVERSION='WIN32 port'
USR_CPPFLAGS_WIN32 = -DVERSION='WIN32 port'
#
# -nil- is special:
# if USR_CFLAGS_WIN32 was undefined or empty, .._DEFAULT would have
# if USR_CPPFLAGS_WIN32 was undefined or empty, .._DEFAULT would have
# been used.
# To indicate
# "yes, there is a special USR_CFLAGS for WIN32, but it's empty"
# "yes, there is a special USR_CPPFLAGS for WIN32, but it's empty"
# you have to set it to -nil-:
USR_CFLAGS_WIN32 = -nil-
USR_CPPFLAGS_WIN32 = -nil-
# .. for all other arch classes:
USR_CFLAGS_DEFAULT = -DVERSION='generic Unix'
USR_CPPFLAGS_DEFAULT = -DVERSION='generic Unix'
# CFLAGS that are only used to compile a_file.c or a_file.cpp:
# CPPFLAGS that are only used to compile a_file.c or a_file.cpp:
#
a_file_CFLAGS = -DIN_A_FILE
a_file_CFLAGS_WIN32 = -DVERSION='WIN32 port'
a_file_CPPFLAGS = -DIN_A_FILE
a_file_CPPFLAGS_WIN32 = -DVERSION='WIN32 port'
# ---------------------------------------------------------
# general rule for all .c .cpp .h .hh files and scripts:

View File

@@ -29,13 +29,14 @@ include $(CONFIG.CC)
#-------------------------------------------------------
# RTEMS cross-development tools
CC = $(CC_FOR_TARGET) $(GCCSPECS) -fasm
CC = $(RTEMS_BASE)/bin/$(CC_FOR_TARGET) $(GCCSPECS) -fasm
CCC = $(CC)
CPP = $(CC_FOR_TARGET) -x c -E
AR = $(AR_FOR_TARGET)
LD = $(LD_FOR_TARGET) -r
CPP = $(RTEMS_BASE)/bin/$(CC_FOR_TARGET) -x c -E
AR = $(RTEMS_BASE)/bin/$(AR_FOR_TARGET)
LD = $(RTEMS_BASE)/bin/$(LD_FOR_TARGET) -r
RTEMS_LDFLAGS := $(LDFLAGS)
LINK.cpp = $(CCC) -o $@ $(RTEMS_LDFLAGS) $(LDFLAGS) $(LINK_OBJS) $(PROD_LD_OBJS) $(PROD_LD_RESS) $(LDLIBS)
RANLIB := $(RTEMS_BASE)/bin/$(RANLIB)
#-------------------------------------------------------
# Build types
@@ -51,12 +52,12 @@ CFLAGS = $(CONFORM_CFLAGS) $(CROSS_CFLAGS) $(OPT_CFLAGS) $(DEBUG_CFLAGS)\
CXXFLAGS = $(CONFORM_CXXFLAGS) $(CROSS_CXXFLAGS) $(OPT_CXXFLAGS)\
$(DEBUG_CXXFLAGS) $(WARN_CXXFLAGS) $(TARGET_CXXFLAGS) $(USR_CXXFLAGS)\
$(ARCH_DEP_CXXFLAGS) $(CODE_CXXFLAGS) $(STATIC_CXXCFLAGS) $(OP_SYS_CXXFLAGS)\
$(TEMPL_INST_CXXFLAG) $(CROSS_CXXFLAGS)
$(CROSS_CXXFLAGS)
LDFLAGS = $(OPT_LDFLAGS) $(TARGET_LDFLAGS) $(USR_LDFLAGS) $(DEPLIB_LDFLAGS)\
$(ARCH_DEP_LDFLAGS) $(STATIC_LDFLAGS) $(OP_SYS_LDFLAGS) $(CROSS_LDFLAGS)
LDLIBS = $(TARGET_LDLIBS) $(USR_LDLIBS) $(DEPLIB_LDLIBS) $(STATIC_LDLIBS)\
LDLIBS = $(DEPLIB_LDLIBS) $(STATIC_LDLIBS)\
$(POSIX_LDLIBS) $(ARCH_DEP_LDLIBS) $(OP_SYS_LDLIBS)
CPPFLAGS += $(CROSS_CPPFLAGS) $(POSIX_CPPFLAGS) $(EPICS_BASE_CPPFLAGS)\
@@ -74,19 +75,15 @@ OS_CLASS = RTEMS
#--------------------------------------------------
# Operating system flags
OP_SYS_CPPFLAGS = -Dfopen=rtems_fopen -Dmain=rtems_main
OP_SYS_LDLIBS = -lreadline -lcurses -lm
OP_SYS_LDFLAGS = $(CPU_CFLAGS) -u Init -lCom \
OP_SYS_CPPFLAGS = -Dmain=rtems_main
OP_SYS_LDLIBS = -lrtemsall -lrtemsCom -lreadline -lcurses -lm
OP_SYS_LDFLAGS = $(CPU_CFLAGS) -u Init \
$(PROJECT_RELEASE)/lib/no-dpmem.rel \
$(PROJECT_RELEASE)/lib/no-mp.rel \
$(PROJECT_RELEASE)/lib/no-part.rel \
$(PROJECT_RELEASE)/lib/no-signal.rel \
$(PROJECT_RELEASE)/lib/no-rtmon.rel
#--------------------------------------------------
# c++ exceptions, YES or NO
CXX_EXCEPTIONS = YES
#--------------------------------------------------
# RTEMS has neither shared libraries nor dynamic loading
STATIC_BUILD=YES

View File

@@ -8,4 +8,8 @@
#
RTEMS_TARGET_CPU=i386
include $(CONFIG)/os/CONFIG.Common.RTEMS
#
# Put text segment where it will work with etherboot
#
OP_SYS_LDFLAGS = -Wl,-Ttext,0x100000

View File

@@ -30,7 +30,7 @@ SHRLIB_SUFFIX = .so$(addprefix .,$(SHRLIB_VERSION))
# <lib> -> lib<lib>.a
LIBNAME = $(BUILD_LIBRARY:%=$(LIB_PREFIX)%$(LIB_SUFFIX))
# <lib> -> lib<lib>.so.<version>
SHRLIBNAME = $(BUILD_LIBRARY:%=$(LIB_PREFIX)%$(SHRLIB_SUFFIX))
SHRLIBNAME_YES = $(BUILD_LIBRARY:%=$(LIB_PREFIX)%$(SHRLIB_SUFFIX))
#-------------------------------------------------------
# shrlib: dependancy definitions
@@ -46,7 +46,7 @@ SHRLIB_LDFLAGS += $(sort $(SHRLIB_DEPLIB_DIRS:%=-L%))
#--------------------------------------------------
# Prod: dependancy definitions
PROD_DEPLIBS = $(foreach lib,$(PROD_LIBS) $(USR_LIBS),$(firstword $(wildcard \
PROD_DEPLIBS = $(foreach lib,$(PROD_LDLIBS) $(USR_LDLIBS),$(firstword $(wildcard \
$($(lib)_DIR)/$(LIB_PREFIX)$(lib).*)))
#--------------------------------------------------
@@ -54,7 +54,7 @@ $($(lib)_DIR)/$(LIB_PREFIX)$(lib).*)))
DEPLIB_DIRS = $(dir $($*_DEPLIBS)) $(dir $(PROD_DEPLIBS))
DEPLIB_LDFLAGS += $(sort $(DEPLIB_DIRS:%=-L%))
DEPLIB_LDLIBS = $($*_LIBS:%=-l%) $(PROD_LIBS:%=-l%) $(USR_LIBS:%=-l%)\
DEPLIB_LDLIBS = $($*_LDLIBS:%=-l%) $(PROD_LDLIBS:%=-l%) $(USR_LDLIBS:%=-l%)\
$($*_SYS_LIBS:%=-l%) $(SYS_PROD_LIBS:%=-l%)
#--------------------------------------------------

View File

@@ -18,12 +18,9 @@ POSIX_CPPFLAGS_NO =
POSIX_LDLIBS_YES +=
POSIX_LDLIBS_NO +=
######################################################
# +DAportable causes portable object code to be created for execution
# on different PA-Risc machines
OP_SYS_CPPFLAGS = -D_HPUX_SOURCE -DHP_UX
OP_SYS_CFLAGS = +DAportable +z
OP_SYS_CXXFLAGS = +DAportable +z
OP_SYS_CFLAGS = +z
OP_SYS_CXXFLAGS = +z
OP_SYS_LDLIBS +=
SHRLIB_SUFFIX = .sl

View File

@@ -0,0 +1,34 @@
# $Id$
# This file is maintained by the build community.
#
# Definitions for linux-mpc82xx target builds
# Sites may override these definitions in CONFIG_SITE.Common.linux-mpc82xx
#-------------------------------------------------------
# Include definitions common to all Unix targets
include $(CONFIG)/os/CONFIG.Common.UnixCommon
OS_CLASS = Linux
ARCH_CLASS = mpc82xx
CODE_CPPFLAGS = -D_REENTRANT
POSIX_CPPFLAGS_YES = -D_POSIX_C_SOURCE=199506L -D_POSIX_THREADS
POSIX_CPPFLAGS_NO =
POSIX_LDLIBS_YES = -lpthread
POSIX_LDLIBS_NO =
# -D_BSD_SOURCE for gethostname() in unistd.h as needed by cacChannelIO.cpp.
OP_SYS_CPPFLAGS += -D_BSD_SOURCE
OP_SYS_CPPFLAGS += -Dlinux
OP_SYS_LDFLAGS =
OP_SYS_LDLIBS = -lreadline -lcurses -lrt
#ARCH_DEP_CPPFLAGS += -D_X86_
ifdef CROSS
GNU_TARGET=ppc_82xx
CMPLR_SUFFIX=
CMPLR_PREFIX=$(addsuffix -,$(GNU_TARGET))
endif

View File

@@ -27,6 +27,7 @@ OP_SYS_LDFLAGS =
OP_SYS_LDLIBS = -lreadline -lcurses -lrt
ARCH_DEP_CPPFLAGS += -D_X86_
ARCH_DEP_CFLAGS += -mpentium
ifdef CROSS
GNU_TARGET=i586-pc-linux-gnu

View File

@@ -16,12 +16,12 @@ ARCH_CLASS = sparc
CODE_CPPFLAGS = -D__EXTENSIONS__
# This is the only combination of posix threads flags that works with solaris 6
POSIX_CPPFLAGS_YES = -D_REENTRANT -D_POSIX_C_SOURCE=199506L
POSIX_LDLIBS_YES += -lposix4 -lpthread -lthread
####POSIX_CPPFLAGS_YES = -D_REENTRANT -D_POSIX_C_SOURCE=199506L
####POSIX_LDLIBS_YES += -lposix4 -lpthread -lthread
# This set of flags is recommended by sun for posix threads and works with solaris 8
####POSIX_CPPFLAGS_YES = -D_POSIX_C_SOURCE=199506L
####POSIX_LDLIBS_YES += -lposix4 -lpthread
POSIX_CPPFLAGS_YES = -D_POSIX_C_SOURCE=199506L
POSIX_LDLIBS_YES += -lposix4 -lpthread
POSIX_CPPFLAGS_NO =
POSIX_LDLIBS_NO +=

View File

@@ -19,22 +19,51 @@ OS_CLASS = vxWorks
# Prefix and suffix definitions
EXE =
OBJ = .o
LIB_PREFIX =
LIB_SUFFIX = Library.o
LIB_PREFIX =lib
LIB_SUFFIX = .a
MUNCH_SUFFIX = .munch
#-------------------------------------------------------
# Library definition
# Build both *.o and *.munch libraries
# Library definitions
LIBNAME = $(BUILD_LIBRARY:%=$(LIB_PREFIX)%$(LIB_SUFFIX))
MUNCHNAME = $(LIBNAME:%$(OBJ)=%$(MUNCH_SUFFIX))
LIBRARY_CTDT_SRCS = $(LIBNAME:%$(OBJ)=%_ctdt.c)
LIBRARY_CTDT_OBJS = $(LIBNAME:%$(OBJ)=%_ctdt$(OBJ))
LIBRARY_NM = $(LIBNAME:%$(OBJ)=%.nm)
#--------------------------------------------------
# Library install location override
INSTALL_LOCATION_LIB=$(INSTALL_LOCATION)/bin
# Prod: dependancy definitions
PROD_DEPLIBS = $(foreach lib,$(PROD_LDLIBS) $(USR_LDLIBS),$(firstword $(wildcard \
$($(lib)_DIR)/$(LIB_PREFIX)$(lib).*)))
#--------------------------------------------------
# Prod: LDFLAGS and LDLIBS definitions
DEPLIB_DIRS = $(dir $($*_DEPLIBS)) $(dir $(PROD_DEPLIBS))
DEPLIB_LDFLAGS += $(sort $(DEPLIB_DIRS:%=-L%))
DEPLIB_LDLIBS = $($*_LDLIBS:%=-l%) $(PROD_LDLIBS:%=-l%) $(USR_LDLIBS:%=-l%)\
$($*_SYS_LIBS:%=-l%) $(SYS_PROD_LIBS:%=-l%)
#-------------------------------------------------------
# Prod definitions
MUNCHNAME = $(PRODNAME:%$(EXE)=%$(MUNCH_SUFFIX))
CTDT_SRCS = $(PRODNAME:%$(EXE)=%_ctdt.c)
CTDT_OBJS = $(PRODNAME:%$(EXE)=%_ctdt$(OBJ))
NMS = $(PRODNAME:%$(EXE)=%.nm)
#-------------------------------------------------------
# R3.13 compatability object library definitions
OBJLIB += $(OBJLIB_$(OS_CLASS))
OBJLIB_SUFFIX = Library.o
OBJLIBNAME = $(addsuffix $(OBJLIB_SUFFIX),$(basename $(OBJLIB)))
OBJLIB_LD_OBJS = $(addsuffix $(OBJ),$(basename $(OBJLIB_SRCS) $(OBJLIB_OBJS)))
PRODTARGETS += $(OBJLIBNAME)
INSTALL_PROD += $(OBJLIBNAME:%=$(INSTALL_BIN)/%)
OBJLIB_MUNCHNAME += $(OBJLIBNAME:%$(OBJ)=%$(MUNCH_SUFFIX))
INSTALL_MUNCHS += $(OBJLIB_MUNCHNAME:%=$(INSTALL_BIN)/%)
PRODTARGETS += $(OBJLIB_MUNCHNAME)
CTDT_SRCS += $(OBJLIBNAME:%$(OBJ)=%_ctdt.c)
CTDT_OBJS += $(OBJLIBNAME:%$(OBJ)=%_ctdt$(OBJ))
NMS += $(OBJLIBNAME:%$(OBJ)=%.nm)
OBJLIB_LINK.cpp = $(LD) -o $@ $(OBJLIB_LD_OBJS)
TARGET_SRCS += $(foreach name, $(OBJLIB), $($(name)_SRCS))
SRC_FILES += $(OBJLIB_SRCS)
#--------------------------------------------------
# vxWorks directory definitions
@@ -42,14 +71,6 @@ INSTALL_LOCATION_LIB=$(INSTALL_LOCATION)/bin
GNU_TARGET_INCLUDE_DIR = $(VX_DIR)/target/h
GNU_DIR = $(VX_DIR)/host/$(WIND_HOST_TYPE)
#-------------------------------------------------------
# Command definition overrides
# use ld partial linking not ar to create libraries)
AR = $(LD)
ARFLAGS = -o
RANLIB =
#--------------------------------------------------
# C++ host processing
NM = $(GNU_BIN)/$(CMPLR_PREFIX)nm$(CMPLR_SUFFIX)$(HOSTEXE)
@@ -88,19 +109,16 @@ OPT_CFLAGS_NO =
OPT_CXXFLAGS_YES = -O3
OPT_CXXFLAGS_NO =
#--------------------------------------------------
# c++ exceptions, YES or NO override
CXX_EXCEPTIONS = NO
#--------------------------------------------------
# osithead use default stack, YES or NO override
OSITHREAD_USE_DEFAULT_STACK = NO
#--------------------------------------------------
# Link definitions
LINK.cpp = $(LD) -o $@ $(LDFLAGS) $(PROD_LD_OBJS) $(PROD_LD_RES) $(LDLIBS)
LINK.cpp = $(LD) -o $@ $(LDFLAGS) $(PROD_LD_OBJS) $(PROD_LD_RESS) $(LDLIBS)
#--------------------------------------------------
# Allow site overrides
-include $(CONFIG)/os/CONFIG_SITE.Common.vxWorksCommon
-include $(CONFIG)/os/CONFIG_SITE.$(EPICS_HOST_ARCH).vxWorksCommon

View File

@@ -18,7 +18,10 @@ LD = ld -r
CONFORM_CFLAGS_ANSI = -Aa
CONFORM_CFLAGS_STRICT = -Aa
CONFORM_CFLAGS_TRAD = -Ac
CODE_CFLAGS =
######################################################
# +DAportable causes portable object code to be created for execution
# on different PA-Risc machines
CODE_CFLAGS = +DAportable
WARN_CFLAGS_YES =
WARN_CFLAGS_NO = -w
OPT_CFLAGS_YES = -O
@@ -30,8 +33,10 @@ CXXCMPLR=NORMAL
# Configure OS vendor C++ compiler
CONFORM_CXXFLAGS_NORMAL = +W302 +W829 +W818 +W392 +W469 +W495 +W749 +W667 +W392 +W684
CONFORM_CXXFLAGS_STRICT = +p
CODE_CXXFLAGS =
TEMPL_INST_CXXFLAG =
######################################################
# +DAportable causes portable object code to be created for execution
# on different PA-Risc machines
CODE_CXXFLAGS = +DAportable
WARN_CXXFLAGS_YES = +w
WARN_CXXFLAGS_NO =
OPT_CXXFLAGS_YES = -O
@@ -47,5 +52,5 @@ STATIC_LDLIBS_NO=
SHRLIB_LDFLAGS_YES = -G -h $@
DEPENDS_FLAG = +m
HDEPENDS_FLAGS_CMPLR = +m

View File

@@ -0,0 +1,10 @@
# $Id$
# This file is maintained by the build community.
#
# Definitions for linux-mpc82xx host builds
# Sites may override these definitions in CONFIG_SITE.linux-mpc82xx.Common
#-------------------------------------------------------
#Include definitions common to unix hosts
include $(CONFIG)/os/CONFIG.UnixCommon.Common

View File

@@ -0,0 +1,13 @@
# $Id$
#
# Definitions for linux-mpc82xx host - linux-mpc82xx target builds
# Sites may override these definitions in CONFIG_SITE.linux-mpc82xx.linux-mpc82xx
#-------------------------------------------------------
# Include common gnu compiler definitions
include $(CONFIG)/CONFIG.gnuCommon
GNU_DIR = /usr
CC = $(GNU_BIN)/gcc
CCC = $(GNU_BIN)/g++

View File

@@ -0,0 +1,17 @@
# $Id$
#
# Definitions for linux-x86 host - linux-mpc82xx target builds
# Sites may override these definitions in CONFIG_SITE.linux-x86.linux-mpc82xx
#-------------------------------------------------------
# Include common gnu compiler definitions
include $(CONFIG)/CONFIG.gnuCommon
GNU_DIR = /opt/hardhat/devkit/ppc/82xx
GNU_TARGET_INCLUDE_DIR = $(GNU_DIR)/target/usr/include/
CC = $(GNU_BIN)/ppc_82xx-gcc
CCC = $(GNU_BIN)/ppc_82xx-g++
# Override the -nostdinc flag, needed here...
CROSS_CPPFLAGS =

View File

@@ -30,7 +30,6 @@ CONFORM_CXXFLAGS_STRICT =
PROF_CXXFLAGS_YES = +p
PROF_CXXFLAGS_NO =
CODE_CXXFLAGS =
TEMPL_INST_CXXFLAG =
WARN_CXXFLAGS_YES =
WARN_CXXFLAGS_NO =
OPT_CXXFLAGS_YES = -O
@@ -43,7 +42,7 @@ STATIC_LDLIBS_NO=
SHRLIB_LDFLAGS_YES = -shared
DEPENDS_FLAG =
HDEPENDS_FLAGS_CMPLR =
############# ???????????
#####ACC_SFLAGS_YES= -non_shared

View File

@@ -11,6 +11,8 @@ SPARCWORKS = /opt/SUNWspro
CC = $(SPARCWORKS)/bin/cc
CCC = $(SPARCWORKS)/bin/CC
#CC = purify -max-threads=100 $(SPARCWORKS)/bin/cc
#CCC = purify -max-threads=100 $(SPARCWORKS)/bin/CC
# required by sun's C++ compiler
AR = $(CCC) -xar -o
LD = ld -r
@@ -38,7 +40,6 @@ CONFORM_CXXFLAGS_STRICT =
PROF_CXXFLAGS_YES = +p
PROF_CXXFLAGS_NO =
CODE_CXXFLAGS = -KPIC $(PROF_CXXFLAGS_$(PROFILE))
TEMPL_INST_CXXFLAG =
WARN_CXXFLAGS_YES = +w
WARN_CXXFLAGS_NO =
OPT_CXXFLAGS_YES = -O
@@ -51,10 +52,5 @@ STATIC_LDLIBS_NO=
SHRLIB_LDFLAGS_YES = -G -h $@
# gnu compiler used because Sun compiler output
# includes headers from /opt/SUNWspro and does
# not work for c++ headers without .h suffix.
DEPENDS_FLAG = -MM
DEPENDS.cpp = g++
HDEPENDS_FLAGS_CMPLR = -xM1

View File

@@ -41,7 +41,6 @@ CONFORM_CXXFLAGS_STRICT =
PROF_CXXFLAGS_YES = +p
PROF_CXXFLAGS_NO =
CODE_CXXFLAGS = -KPIC $(PROF_CXXFLAGS_$(PROFILE))
TEMPL_INST_CXXFLAG =
WARN_CXXFLAGS_YES = +w
WARN_CXXFLAGS_NO =
OPT_CXXFLAGS_YES = -O
@@ -52,7 +51,7 @@ STATIC_LDFLAGS_NO=
STATIC_LDLIBS_YES= -Bdynamic
STATIC_LDLIBS_NO=
SHRLIB_LDFLAGS_YES = -G -h $@
SHRLIB_LDFLAGS_YES = -G -h $@
DEPENDS_FLAG = -xM1
HDEPENDS_FLAGS_CMPLR = -xM1

View File

@@ -30,14 +30,14 @@ WARN_CFLAGS_NO = -w
OPT_CFLAGS_YES = -O
OPT_CFLAGS_NO = -g
CONFORM_CFLAGS_NORMAL =
CONFORM_CFLAGS_STRICT =
CONFORM_CFLAGS_TRAD =
CODE_CFLAGS = -pic
WARN_CFLAGS_YES =
WARN_CFLAGS_NO = -w
OPT_CFLAGS_YES = -O
OPT_CFLAGS_NO = -g
CONFORM_CXXFLAGS_NORMAL =
CONFORM_CXXFLAGS_STRICT =
CONFORM_CXXFLAGS_TRAD =
CODE_CXXFLAGS = -pic
WARN_CXXFLAGS_YES =
WARN_CXXFLAGS_NO = -w
OPT_CXXFLAGS_YES = -O
OPT_CXXFLAGS_NO = -g
STATIC_LDFLAGS_YES= -Bstatic
STATIC_LDFLAGS_NO=
@@ -46,5 +46,5 @@ STATIC_LDLIBS_NO=
SHRLIB_LDFLAGS_YES = -assert pure-text -h $@
DEPENDS_FLAG = -xM1
HDEPENDS_FLAGS_CMPLR = -xM1

View File

@@ -61,7 +61,6 @@ CONFORM_CFLAGS_ANSI = -D__STDC__=0
CONFORM_CFLAGS_STRICT = -D__STDC__=0
endif
CONFORM_CFLAGS_TRAD =
TEMPL_INST_CXXFLAG =
# -w display warnings on
# -g0 no limit to warning messages
@@ -70,7 +69,7 @@ TEMPL_INST_CXXFLAG =
# -w-8012 Comparing signed and unsigned values
# -w-8060 Possibly incorrect assignment
# -w-8071 Conversion may lose significant digits
WARN_CFLAGS_YES = -w -g0 -w-8012 -w-8060 -w-8071
WARN_CFLAGS_YES = -w -g0 -w-8012 -w-8060 -w-8071
# -w- display warnings off
WARN_CFLAGS_NO = -w-
@@ -108,7 +107,19 @@ endif
# -w-8012 Comparing signed and unsigned values
# -w-8060 Possibly incorrect assignment
# -w-8071 Conversion may lose significant digits
WARN_CXXFLAGS_YES = -w -g0 -w-8012 -w-8060 -w-8071
# -w-8008 Condition is always true or always false (compile time
# know template parameters causes this to spew garbage)
# -w-8027 Functions containing reserved words are not expanded inline
# (Some compilers are better than others with inline)
# -w-8066 Unreachable code (compile time know template parameters
# causes this to spew garbage)
# -w-8080 'identifier' declared but never used
# (instantiating unused static const external parameters is
# anachronistic compiler practice)
# -w-8004 'identifier' is assigned a value that is never used
# (compile time know template parameters
# causes this to spew garbage)
WARN_CXXFLAGS_YES = -w -g0 -w-8012 -w-8060 -w-8071 -w-8008 -w-8027 -w-8066 -w-8080 -w-8004
# -w- display warnings off
WARN_CXXFLAGS_NO = -w-
@@ -171,7 +182,7 @@ OP_SYS_CFLAGS =
#
# Borland specific include files
#
#OP_SYS_INCLUDES = -I$(BORLAND_INC)
OP_SYS_INCLUDES = -I$(BORLAND_INC)
#
OP_SYS_LDLIBS =
@@ -181,17 +192,6 @@ OP_SYS_LDLIBS =
#DLL_DEF_FLAG = $(addprefix /def:,$(wildcard ../$(addsuffix .def,$(LIBRARY))))
DLL_DEF_FLAG = $(subst /,\\,$(wildcard ../$(addsuffix .def,$(LIBRARY))))
# HOST_OPT_FLAGS is part of CFLAGS/CXXFLAGS,
# which in turn are used in COMPILE.c[c]
#
# If we compile a .c, .cc into an $(OBJ),
# we test if this object is part of the
# library objects LIBOBJS_HOST.
# If so, we define _WINDLL so that
# e.g. include/shareLib.h works correctly.
#
OPT_CFLAGS_YES += $(subst $@, /_WINDLL, $(findstring $@,$(LIBOBJS_HOST)))
#
# A WIN32 dll has three parts:
# x.dll: the real dll (SHRLIBNAME)
@@ -209,7 +209,7 @@ LINK.shrlib+= $(DLL_DEF_FLAG),$(LIBRARY_LD_RESS)
# in this library (may be for e.g. base/src/libCompat
# on some archs), don't define (and build) any library!
SHRLIB_SUFFIX=.dll
SHRLIBNAME = $(BUILD_LIBRARY:%=%$(SHRLIB_SUFFIX))
SHRLIBNAME_YES = $(BUILD_LIBRARY:%=%$(SHRLIB_SUFFIX))
#
@@ -237,7 +237,7 @@ OBJECT_LIB_EXT = $(OBJECT_LIB_EXT_$(STATIC_BUILD))
#--------------------------------------------------
# Products dependancy definitions
PROD_DEPLIBS = $(foreach lib,$(PROD_LIBS) $(USR_LIBS),$(firstword \
PROD_DEPLIBS = $(foreach lib,$(PROD_LDLIBS) $(USR_LDLIBS),$(firstword \
$($(lib)_DIR)/$(lib)$(OBJECT_LIB_EXT)))
DEPLIB_LDLIBS = $($*_DEPLIBS) $(PROD_DEPLIBS) \
$($*_SYS_LIBS:%=%.lib) $(SYS_PROD_LIBS:%=%.lib)
@@ -274,3 +274,13 @@ LINK.cpp += , $@ ,,$(LINKLIBS) $(subst /,\\,$(LDLIBS))
# override of CONFIG_SITE default
SHARED_LIBRARIES = YES
# gnu compiler used to create depends files
HDEPENDS_FLAGS_CMPLR = -MM
HDEPENDS.c_CMPLR = gcc
HDEPENDS.cpp_CMPLR = g++
# override of CONFIG_COMMON
HDEPENDS_INCLUDES_MKMF = $(filter-out $(BORLAND_INC),$(subst -I,,$(INCLUDES)))
# override of CONFIG_SITE
HOST_HDEPENDS_CMD=MKMF

View File

@@ -14,3 +14,7 @@ SHARED_LIBRARIES=NO
CC = $(GNU_BIN)/gcc
CCC = $(GNU_BIN)/g++
CODE_CFLAGS =
CODE_CXXFLAGS =

View File

@@ -29,10 +29,13 @@ ARCMD = lib /nologo /verbose /out:$@ $(LIBRARY_LD_OBJS)
BAFCMD = bscmake /nologo /o $@
#DEPENDS_RULE = @echo depends target not supported
#GNU depends flag
DEPENDS.cpp = g++
DEPENDS_FLAG = -MM
# gnu compiler used to create depends files
HDEPENDS_FLAGS_CMPLR = -MM
HDEPENDS.c_CMPLR = gcc
HDEPENDS.cpp_CMPLR = g++
# override of CONFIG_SITE
HOST_HDEPENDS_CMD=MKMF
#
# Configure OS vendor C compiler
@@ -46,8 +49,8 @@ CC = cl
#
# Use of /Za would dissable DLL import/export keywords which
# include/excludes using architecture neutral macros
CONFORM_CFLAGS_ANSI = /nologo /D__STDC__=0
CONFORM_CFLAGS_STRICT = /nologo /D__STDC__=0
CONFORM_CFLAGS_ANSI = /nologo /D__STDC__=0
CONFORM_CFLAGS_STRICT = /nologo /D__STDC__=0
CONFORM_CFLAGS_TRAD = /nologo
#
@@ -62,9 +65,10 @@ WARN_CFLAGS_NO = /W1
OPT_CFLAGS_YES = /Ox
#
# /Zi include debugging info in object files
# /Z7 include debugging info in object files
# /Fr create source browser file
OPT_CFLAGS_NO = /Zi /Fr
# /GZ catch bugs occurring only in optimized code
OPT_CFLAGS_NO = /Z7 /GZ /DEPICS_DEBUG /D_CRTDBG_MAP_ALLOC
#
# the following options are required when
@@ -105,12 +109,12 @@ CPP = gcc -x c -E
CCC = cl
CONFORM_CXXFLAGS_NORMAL = /nologo /D__STDC__=0 /GX /GR
CONFORM_CXXFLAGS_STRICT = /nologo /D__STDC__=0 /GX /GR
TEMPL_INST_CXXFLAG =
#
# /W<N> use warning level N
# (maximum lint level warnings at level 4)
WARN_CXXFLAGS_YES = /W3
#WARN_CXXFLAGS_YES = /W4
WARN_CXXFLAGS_NO = /W1
#
@@ -118,9 +122,10 @@ WARN_CXXFLAGS_NO = /W1
OPT_CXXFLAGS_YES = /Ox
#
# /Zi include debugging info in object files
# /Z7 include debugging info in object files
# /Fr create source browser file
OPT_CXXFLAGS_NO = /Zi /Fr
# /GZ catch bugs occurring only in optimized code
OPT_CXXFLAGS_NO = /Z7 /GZ /DEPICS_DEBUG /D_CRTDBG_MAP_ALLOC
#
# the following options are required when
@@ -139,7 +144,8 @@ STATIC_CXXFLAGS_NO= /MD$(VISC_STATIC_CFLAGS_DEBUG) $(VISC_DLL)
#
STATIC_LDLIBS_YES=ws2_32.lib advapi32.lib user32.lib kernel32.lib winmm.lib
STATIC_LDLIBS_NO=
# add /profile here to run the ms profiler
LINK_OPT_FLAGS_YES = /WARN:3 /incremental:no /opt:ref\
/release $(PROD_VERSION:%=/version:%)
LINK_OPT_FLAGS_NO = /WARN:3 /debug
@@ -196,17 +202,6 @@ WIN32_DLLFLAGS = /subsystem:windows /dll $(OPT_LDFLAGS)
#
DLL_DEF_FLAG = $(addprefix /def:,$(wildcard ../$(addsuffix .def,$(LIBRARY))))
# HOST_OPT_FLAGS is part of CFLAGS/CXXFLAGS,
# which in turn are used in COMPILE.c[c]
#
# If we compile a .c, .cc into an $(OBJ),
# we test if this object is part of the
# library objects LIBOBJS_HOST.
# If so, we define _WINDLL so that
# e.g. include/shareLib.h works correctly.
#
HOST_OPT_FLAGS += $(subst $@, /_WINDLL, $(findstring $@,$(LIBOBJS_HOST)))
#
# A WIN32 dll has three parts:
# x.dll: the real dll (SHRLIBNAME)
@@ -220,11 +215,11 @@ LDCMD = $(CCC) /Fo $@ $^
# adjust names of libraries to build
#
# But: if there are no objects LIBOBJS to include
# But: if there are no objects LIBRARY_LD_OBJS to include
# in this library (may be for e.g. base/src/libCompat
# on some archs), don't define (and build) any library!
SHRLIB_SUFFIX=.dll
SHRLIBNAME = $(BUILD_LIBRARY:%=%$(SHRLIB_SUFFIX))
SHRLIBNAME_YES = $(BUILD_LIBRARY:%=%$(SHRLIB_SUFFIX))
#
@@ -252,7 +247,7 @@ OBJECT_LIB_EXT = $(OBJECT_LIB_EXT_$(STATIC_BUILD))
#--------------------------------------------------
# Products dependancy definitions
PROD_DEPLIBS = $(foreach lib,$(PROD_LIBS) $(USR_LIBS),$(firstword \
PROD_DEPLIBS = $(foreach lib,$(PROD_LDLIBS) $(USR_LDLIBS),$(firstword \
$($(lib)_DIR)/$(lib)$(OBJECT_LIB_EXT)))
DEPLIB_LDLIBS = $($*_DEPLIBS) $(PROD_DEPLIBS) \
$($*_SYS_LIBS:%=%.lib) $(SYS_PROD_LIBS:%=%.lib)

View File

@@ -0,0 +1,4 @@
#
# Site-specific overrides for RTEMS-pc386 target
#
TARGET_CFLAGS += -DEPICS_RTEMS_NIC_3C509

View File

@@ -2,13 +2,11 @@
#
# $Id$
#
# Site specific definitions for win32-x86 borland compiler host
# Site specific definitions for win32-x86-borland host
# Only the local epics system manager should modify this file
# jba overrides
#CROSS_COMPILER_TARGET_ARCHS=vxWorks-486
CROSS_COMPILER_TARGET_ARCHS=
VX_DIR = D:/tornado
#INSTALL_LOCATION = G:\\testBaseNew
#VX_DIR = T:/tornado20
BORLAND = c:\\Borland\\Bcc55

View File

@@ -7,8 +7,7 @@
# jba test overrides
#CROSS_COMPILER_TARGET_ARCHS=vxWorks-486
#VX_DIR = D:/tornado
#VX_DIR = T:/tornado20
#INSTALL_LOCATION = G:/testInstall
#STATIC_BUILD=YES
#SHARED_LIBRARIES=NO
#CROSS_COMPILER_TARGET_ARCHS=

236
configure/tools/convertRelease.pl Executable file
View File

@@ -0,0 +1,236 @@
eval 'exec perl -S $0 ${1+"$@"}' # -*- Mode: perl -*-
if $running_under_some_shell; # convertRelease.pl
#
# $Id$
#
# Parse configure/RELEASE file(s) and generate a derived output file.
#
# This tool replaces makeConfigAppInclude.pl, makeIocCdCommands.pl and
# makeRulesInclude.pl and adds consistency checks for RELEASE files.
#
use Cwd;
use Getopt::Std;
$cwd = cwd();
$cwd =~ s/\/tmp_mnt//; # hack for sun4
$cwd =~ s/\\/\//g; # hack for win32
getopt "aht";
if ($opt_a) {
$arch = $opt_a;
} else { # Look for O.<arch> in current path
$_ = $cwd;
($arch) = /.*\/O.([\w-]+)$/;
}
$hostarch = $arch;
$hostarch = $opt_h if ($opt_h);
if ($opt_t) {
$top = $opt_t;
} else { # Find $top from current path
$top = $cwd;
$top =~ s/\/iocBoot.*//;
$top =~ s/\/configure\/O\..*//;
}
unless (@ARGV == 1) {
print "Usage: convertRelease.pl [-a arch] [-h hostarch] [-t top] outfile\n";
print " where outfile is be one of:\n";
print "\tcheckRelease - checks consistency with support apps\n";
print "\tcdCommands - generate cd path strings for IOC use\n";
print "\tCONFIG_APP_INCLUDE - additional build variables\n";
print "\tRULES_INCLUDE - supports installable build rules\n";
exit 2;
}
$outfile = $ARGV[0];
# TOP refers to this application
%macros = (TOP => $top);
@apps = (TOP); # Records the order of definitions in RELEASE file
# Read the RELEASE file(s)
$relfile = "$top/configure/RELEASE";
die "Can't find configure/RELEASE file" unless (-r $relfile);
&readRelease($relfile, \%macros, \@apps);
if ($hostarch) {
$relfile .= ".$hostarch";
&readRelease($relfile, \%macros, \@apps) if (-r $relfile);
}
&expandRelease(\%macros, \@apps);
# This is a perl switch statement:
for ($outfile) {
/CONFIG_APP_INCLUDE/ and do { &configAppInclude; last; };
/RULES_INCLUDE/ and do { &rulesInclude; last; };
/cdCommands/ and do { &cdCommands; last; };
/checkRelease/ and do { &checkRelease; last; };
die "Output file type \'$outfile\' not supported";
}
#
# Parse a configure/RELEASE file.
#
# NB: This subroutine also appears in base/src/makeBaseApp/makeBaseApp.pl
# If you make changes here, they will be needed there as well.
#
sub readRelease {
my ($file, $Rmacros, $Rapps) = @_;
# $Rmacros is a reference to a hash, $Rapps a ref to an array
my ($pre, $var, $post, $macro, $path);
local *IN;
open(IN, $file) or die "Can't open $file: $!\n";
while (<IN>) {
chomp;
s/\r$//; # Shouldn't need this, but sometimes...
s/\s*#.*$//; # Remove trailing comments
next if /^\s*$/; # Skip blank lines
# Expand all already-defined macros in the line:
while (($pre,$var,$post) = /(.*)\$\((\w+)\)(.*)/) {
last unless (exists $Rmacros->{$var});
$_ = $pre . $Rmacros->{$var} . $post;
}
# Handle "<macro> = <path>"
($macro, $path) = /^\s*(\w+)\s*=\s*(.*)/;
if ($macro ne "") {
$Rmacros->{$macro} = $path;
push @$Rapps, $macro;
next;
}
# Handle "include <path>" syntax
($path) = /^\s*include\s+(.*)/;
&readRelease($path, $Rmacros, $Rapps) if (-r $path);
}
close IN;
}
sub expandRelease {
my ($Rmacros, $Rapps) = @_;
# Expand any (possibly nested) macros that were defined after use
while (($macro, $path) = each %$Rmacros) {
while (($pre,$var,$post) = $path =~ /(.*)\$\((\w+)\)(.*)/) {
$path = $pre . $Rmacros->{$var} . $post;
$Rmacros->{$macro} = $path;
}
}
}
sub configAppInclude {
@includes = grep !/^(TOP|TEMPLATE_TOP)$/, @apps;
unlink($outfile);
open(OUT,">$outfile") or die "$! creating $outfile";
print OUT "# Do not modify this file, changes made here will\n";
print OUT "# be lost when the application is next rebuilt.\n\n";
if ($arch) {
foreach $app (@includes) {
$path = $macros{$app};
next unless (-d "$path/bin/$hostarch");
print OUT "${app}_HOST_BIN = \$($app)/bin/\$(EPICS_HOST_ARCH)\n";
}
foreach $app (@includes) {
$path = $macros{$app};
next unless (-d "$path/lib/$hostarch");
print OUT "${app}_HOST_LIB = \$($app)/bin/\$(EPICS_HOST_ARCH)\n";
}
foreach $app (@includes) {
$path = $macros{$app};
next unless (-d "$path/bin/$arch");
print OUT "${app}_BIN = \$($app)/bin/$arch\n";
}
foreach $app (@includes) {
$path = $macros{$app};
next unless (-d "$path/lib/$arch");
print OUT "${app}_LIB = \$($app)/lib/$arch\n";
}
}
foreach $app (@includes) {
$path = $macros{$app};
next unless (-d "$path/include");
print OUT "RELEASE_INCLUDES += -I\$($app)/include/os/\$(OS_CLASS)\n";
print OUT "RELEASE_INCLUDES += -I\$($app)/include\n";
}
foreach $app (@includes) {
$path = $macros{$app};
next unless (-d "$path/dbd");
print OUT "RELEASE_DBDFLAGS += -I \$($app)/dbd\n";
}
close OUT;
}
sub rulesInclude {
@includes = grep !/^(TOP|TEMPLATE_TOP|EPICS_BASE)$/, @apps;
unlink($outfile);
open(OUT,">$outfile") or die "$! creating $outfile";
print OUT "# Do not modify this file, changes made here will\n";
print OUT "# be lost when the application is next rebuilt.\n\n";
foreach $app (@includes) {
$path = $macros{$app};
next unless (-r "$path/configure/RULES_BUILD");
print OUT "-include \$($app)/configure/RULES_BUILD\n";
}
close OUT;
}
sub cdCommands {
die "Architecture not set (use -a option)" unless ($arch);
@includes = grep !/^TEMPLATE_TOP$/, @apps;
# if -t <top> was given, substitute it in the startup path
$startup = $cwd;
$startup =~ s/.*(\/iocBoot\/.*)/$top$1/ if ($opt_t);
unlink($outfile);
open(OUT,">$outfile") or die "$! creating $outfile";
print OUT "startup = \"$startup\"\n";
print OUT "appbin = \"$top/bin/$arch\"\n"; # compatibility with R3.13.1
foreach $app (@includes) {
$path = $macros{$app};
$lcapp = lc($app);
print OUT "$lcapp = \"$path\"\n" if (-d $path);
print OUT "${lcapp}bin = \"$path/bin/$arch\"\n" if (-d "$path/bin/$arch");
}
close OUT;
}
sub checkRelease {
$status = 0;
delete $macros{TOP};
delete $macros{TEMPLATE_TOP};
while (($app, $path) = each %macros) {
%check = (TOP => $path);
@order = ();
$relfile = "$path/configure/RELEASE";
&readRelease($relfile, \%check, \@order) if (-r $relfile);
if ($hostarch) {
$relfile .= ".$hostarch";
&readRelease($relfile, \%check, \@order) if (-r $relfile);
}
&expandRelease(\%check, \@order);
delete $check{TOP};
while (($parent, $ppath) = each %check) {
if (exists $macros{$parent} && ($macros{$parent} ne $ppath)) {
print "\n" unless ($status);
print "Definition of $parent conflicts with $app support.\n";
print "In this application configure/RELEASE defines\n";
print "\t$parent = $macros{$parent}\n";
print "but $app at $path has\n";
print "\t$parent = $ppath\n";
$status = 1;
}
}
}
print "\n" if ($status);
exit $status;
}

View File

@@ -3,6 +3,7 @@
# UNIX-cp in Perl
use File::Copy;
use File::Basename;
sub Usage
{
@@ -26,7 +27,8 @@ if (-d $target)
{
foreach $file ( @sources )
{
copy ($file, "$target/$file");
$base=basename($file);
copy ($file, "$target/$base");
}
}
else

View File

@@ -37,7 +37,7 @@ $install_dir =~ s[/$][]; # remove trailing '/'
$install_dir =~ s[//][/]g; # replace '//' by '/'
# Do we have to create the directory?
unless (-d $install_dir)
unless ( (-d $install_dir) || (-l $install_dir) )
{
# Create dir only if -d option given
Usage ("$install_dir does not exist") unless ($opt_d);

View File

@@ -1,73 +0,0 @@
# $Id$
eval 'exec perl -S $0 ${1+"$@"}' # -*- Mode: perl -*-
if $running_under_some_shell; # makeConfigAppInclude.pl
use Cwd;
$hostarch = $ARGV[0];
$arch = $ARGV[1];
$outfile = $ARGV[2];
$top = $ARGV[3];
$applications{TOP} = $top;
unlink("${outfile}");
open(OUT,">${outfile}") or die "$! opening ${outfile}";
print OUT "#Do not modify this file.\n";
print OUT "#This file is created during the build.\n";
@files =();
push(@files,"$top/configure/RELEASE");
push(@files,"$top/configure/RELEASE.${hostarch}");
foreach $file (@files) {
if (-r "$file") {
open(IN, "$file") or die "Cannot open $file\n";
while ($line = <IN>) {
next if ( $line =~ /\s*#/ );
chomp($line);
$line =~ s/[ ]//g; # remove blanks and tabs
next if ( $line =~ /^$/ ); # skip empty lines
$_ = $line;
#the following looks for
# prefix = $(macro)post
($prefix,$macro,$post) = /(.*)\s*=\s*\$\((.*)\)(.*)/;
if ($macro eq "") { # true if no macro is present
# the following looks for
# prefix = post
($prefix,$post) = /(.*)\s*=\s*(.*)/;
$app_post = $post;
} else {
$base = $applications{$macro};
if ($base eq "") {
#print "error: $macro was not previously defined\n";
} else {
$app_post = "\$($macro)" . $post;
$post = $base . $post;
}
}
$applications{$prefix} = $post;
if ( -d "$post") { #check that directory exists
print OUT "\n";
if ( -d "$post/bin/$arch") { #check that directory exists
print OUT "${prefix}_BIN = $app_post/bin/${arch}\n";
}
if ( -d "$post/bin/$arch") { #check that directory exists
print OUT "${prefix}_HOST_BIN = $app_post/bin/\$(EPICS_HOST_ARCH)\n";
}
if ( -d "$post/lib/$arch") { #check that directory exists
print OUT "${prefix}_LIB = $app_post/lib/${arch}\n";
}
if ( -d "$post/include") { #check that directory exists
print OUT "INSTALL_INCLUDES += -I$app_post/include/os/\$(OS_CLASS)\n";
}
if ( -d "$post/include") { #check that directory exists
print OUT "INSTALL_INCLUDES += -I$app_post/include\n";
}
if ( -d "$post/dbd") { #check that directory exists
print OUT "INSTALL_DBDFLAGS += -I $app_post/dbd\n";
}
}
}
close IN;
}
}

View File

@@ -1,23 +0,0 @@
eval 'exec perl -S $0 ${1+"$@"}' # -*- Mode: perl -*-
if $running_under_some_shell; # makeDbDepends.pl
# Called from within the object directory.
# Searches the .substitutions files (from the command line) for
# "file xxx {" entries to create a DEPENDS file
open(OUT, ">DBDEPENDS") or die "Cannot open DBDEPENDS: $!";
foreach $file (@ARGV) {
open(IN, "<$file") or die "Cannot open $file: $!";
@substfile = <IN>;
close IN or die "Cannot close $file: $!";
@depends = grep { s/^\s*file\s*(.*)\s*\{.*$/\1/ } @substfile;
chomp @depends;
if (@depends) {
$file =~ s/\.substitutions/\.t.db.raw/;
print OUT "${file}:: @depends\n";
}
}
close OUT or die "Cannot close $file: $!";

View File

@@ -0,0 +1,63 @@
eval 'exec perl -S $0 ${1+"$@"}' # -*- Mode: perl -*-
if $running_under_some_shell; # makeDependsTargets.pl
# $Id$
#
# Author: Janet Anderson
#
sub Usage
{
my ($txt) = @_;
print "Usage:\n";
print "\makeDependsTargets infile\n";
print "\nError: $txt\n" if $txt;
exit 2;
}
# need at least one args: ARGV[0]
Usage("need an arg") if $#ARGV < 0;
use Cwd;
use File::Path;
use File::Copy;
$depfile = $ARGV[0];
$tempfile = $ARGV[0].temp;
if (-f $depfile) {
unlink("$tempfile");
copy ($depfile, $tempfile) or die "$! copying $depfile";
open(OUT,">> $depfile") or die "$! opening $depfile";
open(IN,"< $tempfile") or die "$! opening $tempfile";
print OUT "\n#Depend files must be targets to avoid 'No rule to make target ...' errors\n";
$startline = 1;
while ($line = <IN>) {
next if ( $line =~ /\s*#/ ); # skip comments
chomp($line);
#$line =~ s/[ ]//g; # remove blanks and tabs
next if ( $line =~ /^$/ ); # skip empty lines
$depends = $line;
if ( $startline ) {
$depends =~ s/.*?://;
}
@dependsarray = split(//,$depends);
if ( $dependsarray[$#dependsarray] =~ /\\/
or ( $dependsarray[$#dependsarray-1] =~ /\\/ ) ) {
$depends =~ s/[ ]*\\\cM?$//;
$startline = 0;
} else {
$depends =~ s/[ ]*\cM?$//;
$startline = 1;
}
print OUT "$depends : \n";
}
print OUT "\n";
close IN or die "Cannot close $tempfile: $!";
close OUT or die "Cannot close $depfile: $!";
unlink("$tempfile");
}

View File

@@ -1,70 +0,0 @@
eval 'exec perl -S $0 ${1+"$@"}' # -*- Mode: perl -*-
if $running_under_some_shell; # makeIocCdCommands.pl
use Cwd;
$cwd = cwd();
#hack for sun4
$cwd =~ s|/tmp_mnt||;
#hack for win32
$cwd =~ s|\\|\/|g;
$arch = $ARGV[0];
$iocsApplTop = $ARGV[1];
#remove top parts of current working directory
#and add ioc's appl top alias (if supplied)
if ( $iocsApplTop ne "" ) {
$cwd =~ s|.*(/iocBoot.*)|$1|;
$cwd = $iocsApplTop . $cwd;
}
unlink("cdCommands");
open(OUT,">cdCommands") or die "$! opening cdCommands";
print OUT "startup = \"$cwd\"\n";
#appbin is kept for compatibility with 3.13.1
$appbin = $cwd;
$appbin =~ s/iocBoot.*//;
$appbin = $appbin . "/bin/${arch}";
print OUT "appbin = \"$appbin\"\n";
$top = $cwd;
$top =~ s/\/iocBoot.*//;
$applications{TOP} = $top;
print OUT "top = \"$top\"\n";
$topbin = "${top}/bin/${arch}";
#skip check that top/bin/${arch} exists; src may not have been builT
print OUT "topbin = \"$topbin\"\n";
$release = "$top/configure/RELEASE";
if (-r "$release") {
open(IN, "$release") or die "Cannot open $release\n";
while ($line = <IN>) {
next if ( $line =~ /\s*#/ );
chomp($line);
$_ = $line;
#the following looks for
# prefix = $(macro)post
($prefix,$macro,$post) = /(.*)\s*=\s*\$\((.*)\)(.*)/;
if ($macro eq "") { # true if no macro is present
# the following looks for
# prefix = post
($prefix,$post) = /(.*)\s*=\s*(.*)/;
} else {
$base = $applications{$macro};
if ($base eq "") {
print "error: $macro was not previously defined\n";
} else {
$post = $base . $post;
}
}
$applications{$prefix} = $post;
$app = lc($prefix);
if ( -d "$post") { #check that directory exists
print OUT "$app = \"$post\"\n";
}
if ( -d "$post/bin/$arch") { #check that directory exists
print OUT "${app}bin = \"$post/bin/$arch\"\n";
}
}
close IN;
}
close OUT;

View File

@@ -53,12 +53,13 @@ foreach $name ( @nameList ) {
print OUT "endif\n";
print OUT "endif\n";
print OUT "ifneq (\$(strip \$(${name}_LIBS_\$(OS_CLASS))),)\n";
print OUT "${name}_LIBS+=\$(subst -nil-,,\$(${name}_LIBS_\$(OS_CLASS)))\n";
print OUT "${name}_LDLIBS+=\$(subst -nil-,,\$(${name}_LIBS_\$(OS_CLASS)))\n";
print OUT "else\n";
print OUT "ifdef ${name}_LIBS_DEFAULT\n";
print OUT "${name}_LIBS+=\$(${name}_LIBS_DEFAULT)\n";
print OUT "${name}_LDLIBS+=\$(${name}_LIBS_DEFAULT)\n";
print OUT "endif\n";
print OUT "endif\n";
print OUT "${name}_LDLIBS+=\$(${name}_LIBS)\n";
print OUT "ifneq (\$(strip \$(${name}_SYS_LIBS_\$(OS_CLASS))),)\n";
print OUT "${name}_SYS_LIBS+=\$(subst -nil-,,\$(${name}_SYS_LIBS_\$(OS_CLASS)))\n";
print OUT "else\n";
@@ -68,15 +69,13 @@ foreach $name ( @nameList ) {
print OUT "endif\n";
print OUT "${name}_OBJS+=\$(addsuffix \$(OBJ),\$(basename \$(${name}_SRCS)))\n";
print OUT "\n";
print OUT "depends: \$(${name}_SRCS)\n";
print OUT "\n";
print OUT "ifeq (\$(filter ${name},\$(TESTPROD)),${name})\n";
print OUT "ifeq (,\$(strip \$(${name}_OBJS) \$(PRODUCT_OBJS)))\n";
print OUT "${name}_OBJS+=${name}\$(OBJ)\n";
print OUT "endif\n";
print OUT "${name}_RESS+=\$(addsuffix \$(RES),\$(basename \$(${name}_RCS)))\n";
print OUT "${name}_OBJSNAME+=\$(addsuffix \$(OBJ),\$(basename \$(${name}_OBJS)))\n";
print OUT "${name}_DEPLIBS=\$(foreach lib, \$(${name}_LIBS),\$(firstword \$(wildcard \\\n";
print OUT "${name}_DEPLIBS=\$(foreach lib, \$(${name}_LDLIBS),\$(firstword \$(wildcard \\\n";
print OUT " \$(\$(lib)_DIR)/\$(LIB_PREFIX)\$(lib)\*)))\n";
print OUT "${name}\$(EXE): \$(${name}_OBJSNAME) \$(${name}_RESS) \$(${name}_DEPLIBS)\n";
print OUT "endif\n";
@@ -87,7 +86,7 @@ foreach $name ( @nameList ) {
print OUT "endif\n";
print OUT "${name}_RESS+=\$(addsuffix \$(RES),\$(basename \$(${name}_RCS)))\n";
print OUT "${name}_OBJSNAME+=\$(addsuffix \$(OBJ),\$(basename \$(${name}_OBJS)))\n";
print OUT "${name}_DEPLIBS=\$(foreach lib, \$(${name}_LIBS),\$(firstword \$(wildcard \\\n";
print OUT "${name}_DEPLIBS=\$(foreach lib, \$(${name}_LDLIBS),\$(firstword \$(wildcard \\\n";
print OUT " \$(\$(lib)_DIR)/\$(LIB_PREFIX)\$(lib)\*)))\n";
print OUT "${name}\$(EXE): \$(${name}_OBJSNAME) \$(${name}_RESS) \$(${name}_DEPLIBS)\n";
print OUT "endif\n";
@@ -98,27 +97,13 @@ foreach $name ( @nameList ) {
print OUT "endif\n";
print OUT "${name}_RESS+=\$(addsuffix \$(RES),\$(basename \$(${name}_RCS)))\n";
print OUT "${name}_OBJSNAME+=\$(addsuffix \$(OBJ),\$(basename \$(${name}_OBJS)))\n";
print OUT "${name}_DEPLIBS=\$(foreach lib, \$(${name}_LIBS),\$(firstword \$(wildcard \\\n";
print OUT "${name}_DEPLIBS=\$(foreach lib, \$(${name}_LDLIBS),\$(firstword \$(wildcard \\\n";
print OUT " \$(\$(lib)_DIR)/\$(LIB_PREFIX)\$(lib)\*)))\n";
print OUT "\$(LIB_PREFIX)${name}\$(LIB_SUFFIX):\$(${name}_OBJSNAME) \$(${name}_RESS)\n";
print OUT "\$(LIB_PREFIX)${name}\$(LIB_SUFFIX):\$(${name}_DEPLIBS)\n";
print OUT "\$(LIB_PREFIX)${name}\$(SHRLIB_SUFFIX):\$(${name}_OBJSNAME) \$(${name}_RESS)\n";
print OUT "\$(LIB_PREFIX)${name}\$(SHRLIB_SUFFIX):\$(${name}_DEPLIBS)\n";
print OUT "endif\n";
print OUT "ifneq (\$(strip \$(DBDEXPAND_\$(OS_CLASS))),)\n";
print OUT "DBDEXPAND+=\$(subst -nil-,,\$(DBDEXPAND_\$(OS_CLASS)))\n";
print OUT "else\n";
print OUT "ifdef DBDEXPAND_DEFAULT\n";
print OUT "DBDEXPAND+=\$(DBDEXPAND_DEFAULT)\n";
print OUT "endif\n";
print OUT "endif\n";
print OUT "ifneq (\$(strip \$(DBDNAME_\$(OS_CLASS))),)\n";
print OUT "DBDNAME+=\$(subst -nil-,,\$(DBDNAME_\$(OS_CLASS)))\n";
print OUT "else\n";
print OUT "ifdef DBDNAME_DEFAULT\n";
print OUT "DBDNAME+=\$(DBDNAME_DEFAULT)\n";
print OUT "endif\n";
print OUT "endif\n";
print OUT "\n";
}
close OUT or die "Cannot close $outfile: $!";

View File

@@ -1,59 +0,0 @@
# $Id$
eval 'exec perl -S $0 ${1+"$@"}' # -*- Mode: perl -*-
if $running_under_some_shell; # makeConfigAppInclude.pl
use Cwd;
$hostarch = $ARGV[0];
$arch = $ARGV[1];
$outfile = $ARGV[2];
$top = $ARGV[3];
$applications{TOP} = $top;
unlink("${outfile}");
open(OUT,">${outfile}") or die "$! opening ${outfile}";
print OUT "#Do not modify this file.\n";
print OUT "#This file is created during the build.\n";
@files =();
push(@files,"$top/configure/RELEASE");
push(@files,"$top/configure/RELEASE.${hostarch}");
foreach $file (@files) {
if (-r "$file") {
open(IN, "$file") or die "Cannot open $file\n";
while ($line = <IN>) {
next if ( $line =~ /\s*#/ );
chomp($line);
$line =~ s/[ ]//g; # remove blanks and tabs
next if ( $line =~ /^$/ ); # skip empty lines
$_ = $line;
#the following looks for
# prefix = $(macro)post
($prefix,$macro,$post) = /(.*)\s*=\s*\$\((.*)\)(.*)/;
if ($macro eq "") { # true if no macro is present
# the following looks for
# prefix = post
($prefix,$post) = /(.*)\s*=\s*(.*)/;
$app_post = $post;
} else {
$base = $applications{$macro};
if ($base eq "") {
#print "error: $macro was not previously defined\n";
} else {
$app_post = "\$($macro)" . $post;
$post = $base . $post;
}
}
$applications{$prefix} = $post;
next if ( $prefix eq "EPICS_BASE" );
next if ( $prefix eq "TEMPLATE_TOP" );
if ( -d "$post") { #check that directory exists
if ( -d "$post/configure") { #check that directory exists
print OUT "-include $app_post/configure/RULES_BUILD\n";
}
}
}
close IN;
}
}

182
configure/tools/mkmf.pl Executable file
View File

@@ -0,0 +1,182 @@
#!/usr/bin/perl
#-----------------------------------------------------------------------
# mkmf.pl: Perl script to create include file dependancies
#
# mkmf.pl is mkmf modified for the EPICS system to output only include
# file dependancies. It is intendend as a fallback when the gnu compilers
# gcc and g++ are not available, and it has the following limitations.
#
# 1) Only handles the #include preprocessor command. Does not understand
# the preproceeor commands #define, #if, #ifdef, #ifndef, ...
# 2) Does not know a compilers internal macro definitions e.g.
# __cplusplus, __STDC__
# 3) Does not keep track of the macros defined in #include files so can't
# do #ifdefs #ifndef ...
# 4) Does not know where system include files are located
#
#-----------------------------------------------------------------------
# mkmf: Perl script for makefile construction
#
# AUTHOR: V. Balaji (vb@gfdl.gov)
# SGI/GFDL Princeton University
#
# Full web documentation for mkmf:
# http://www.gfdl.gov/~vb/mkmf.html
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# For the full text of the GNU General Public License,
# write to: Free Software Foundation, Inc.,
# 675 Mass Ave, Cambridge, MA 02139, USA.
#-----------------------------------------------------------------------
require 5;
use strict;
use File::Basename;
use Getopt::Std;
use vars qw( $opt_d $opt_m $opt_v ); # declare these global to be shared with Getopt:Std
my $version = '$Id$ ';
# initialize variables: use getopts for these
getopts( 'dm:v' ) || die "\aSyntax: $0 [-d] [-m makefile] [-v] [targets]\n";
$opt_v = 1 if $opt_d; # debug flag turns on verbose flag also
print "$0 $version\n" if $opt_v;
$opt_m = 'depends' unless $opt_m; # set default file name
print "Making depends file $opt_m ...\n" if $opt_v;
my @dirs;
my $i;
foreach $i (0 .. $#ARGV-2) {
push @dirs, $ARGV[$i];
}
#some generic declarations
my( $file, $line);
my %scanned; # list of directories/files already scanned
my $object = $ARGV[$#ARGV-1]; # object file
my $source = $ARGV[$#ARGV]; # sourcefile from object
#some constants
my $endline = $/;
my %delim_match = ( q/'/ => q/'/, # hash to find includefile delimiter pair
q/"/ => q/"/,
q/</ => q/>/ );
#formatting command for MAKEFILE, keeps very long lines to 80 characters
format MAKEFILE =
^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< \~
$line
.
sub print_formatted_list{
#this routine, in conjunction with the format line above, can be used to break up long lines
# it is currently used to break up the potentially long defs of SRC, OBJ, CPPDEFS, etc.
# not used for the dependency lists
$line = "@_";
local $: = " \t\n"; # the default formatting word boundary includes the hyphen, but not here
while ( length $line > 78 ) {
write MAKEFILE, $line;
}
print MAKEFILE $line unless $line eq '';
print MAKEFILE "\n";
}
#begin writing makefile
open MAKEFILE, ">$opt_m" or die "\aERROR opening file $opt_m for writing: $!\n";
printf MAKEFILE "# Makefile created by %s $version\n\n", basename($0);
if( $opt_d ) {
print "DEBUG: dirs= @dirs\n";
print "DEBUG: source= $source\n";
print "DEBUG: object= $object\n";
}
my %includes_in; # hash of includes in a given source file (hashed against the corresponding object)
#subroutine to scan file for include files
# first argument is $object, second is $file
sub scanfile_for_keywords {
my $object = shift;
my $file = shift;
local $/ = $endline;
#if file has already been scanned, return
return if $scanned{$file};
print "Scanning file $file of object $object ...\n" if $opt_v;
open FILE, $file or die "\aERROR opening file $file of object $object: $!\n";
foreach $line ( <FILE> ) {
next if !($line =~ m/^[ ]*\#?[ ]*include/);
if( $line =~ /^[\#?\s]*include\s*(['""'<])([\w\.\/]*)$delim_match{\1}/ix ) {
$includes_in{$file} .= ' ' . $2 if $2;
}
}
close FILE;
$scanned{$file} = 1;
print " uses includes=$includes_in{$file}.\n" if $opt_d;
}
&scanfile_for_keywords( $object, $source );
my %includes; # global list of includes
my @cmdline;
my %obj_of_include; # hash of includes for current object
print "Collecting dependencies for $object ...\n" if $opt_v;
@cmdline = "$object: $source";
#includes: done in subroutine since it must be recursively called to look for embedded includes
&get_include_list( $object, $source );
#write the command line: if no file-specific command, use generic command for this suffix
&print_formatted_list(@cmdline);
# subroutine to seek out includes recursively
sub get_include_list {
my( $incfile, $incname, $incpath );
my @paths;
my $object = shift;
my $file = shift;
my $include;
foreach ( split /\s+/, $includes_in{$file} ) {
print "object=$object, file=$file, include=$_.\n" if $opt_d;
if ( $scanned{"$_"} ) {
print "DEBUG: skipping scanned file $_\n" if $opt_d;
next;
}
$include = $_;
$incname = basename($_);
next if ( $incname eq '' );
$incpath = dirname($_);
undef $incpath if $incpath eq './';
undef $incpath if $incpath eq '.';
if( $incpath =~ /^\// ) {
@paths = $incpath; # exact incpath specified, use it
} else {
@paths = @dirs;
}
foreach ( @paths ) {
local $/ = '/'; chomp; # remove trailing / if present
my $newincpath = "$_/$incpath" if $_;
undef $newincpath if $newincpath eq './';
$incfile = "$newincpath$incname";
print "DEBUG: checking for $incfile in $_\n" if $opt_d;
if ( -f $incfile and $obj_of_include{$incfile} ne $object ) {
push @cmdline, $incfile;
$includes{$incfile} = 1;
chomp( $newincpath );
$newincpath = '.' if $newincpath eq '';
&scanfile_for_keywords($object,$incfile);
$obj_of_include{$incfile} = $object;
&get_include_list($object,$incfile); # recursively look for includes
last;
}
}
$scanned{"$include"} = 1;
}
}

View File

@@ -15,7 +15,7 @@ while ($line = <STDIN>)
($adr,$type,$name) = split ' ',$line,3;
chop $name;
$name =~ s/^__/_/;
next if ( $name =~ /^__?GLOBAL_.D.*\.cpp/ );
next if ( $name =~ /^__?GLOBAL_.D.*.\.cpp/ );
next if ( $name =~ /^__?GLOBAL_.D.\.\./ );
@dtorlist = (@dtorlist,$name);
};
@@ -23,7 +23,7 @@ while ($line = <STDIN>)
($adr,$type,$name) = split ' ',$line,3;
chop $name;
$name =~ s/^__/_/;
next if ( $name =~ /^__?GLOBAL_.I.*\.cpp/ );
next if ( $name =~ /^__?GLOBAL_.I.*.\.cpp/ );
next if ( $name =~ /^__?GLOBAL_.I.\.\./ );
@ctorlist = (@ctorlist,$name);
};

View File

@@ -22,6 +22,10 @@ foreach $arg ( @ARGV )
{
rmdir ($arg) or die "Cannot delete $arg";
}
if (-d $arg)
{
die "Failed to delete $arg";
}
}
else
{

View File

@@ -32,6 +32,9 @@ DIRS += iocsh
ifeq ($(findstring vxWorks,$(BUILD_ARCHS)),vxWorks)
DIRS += vxWorks
endif
ifneq (,$(findstring RTEMS,$(BUILD_ARCHS)))
DIRS += RTEMS
endif
DIRS += gdd
DIRS += cas

View File

@@ -1,9 +1,12 @@
#
# $Id$
#
TOP=../../..
TOP = ../..
include $(TOP)/configure/CONFIG
DIRS = ansi old
DIRS += base
include $(TOP)/configure/RULES_DIRS

12
src/RTEMS/base/Makefile Normal file
View File

@@ -0,0 +1,12 @@
TOP=../../..
include $(TOP)/configure/CONFIG
SRCS += rtems_init.c
SRCS += rtems_config.c
SRCS += rtems_netconfig.c
SRCS += rtems_util.c
LIBRARY_RTEMS = rtemsCom
LIBRARY_SRCS = $(SRCS) $(BUILD_ARCHS)
include $(TOP)/configure/RULES

View File

@@ -20,13 +20,15 @@
#include <syslog.h>
#include <rtems.h>
#include <rtems/error.h>
#include <rtems/stackchk.h>
#include <rtems/rtems_bsdnet.h>
#include <rtems/tftp.h>
#include <epicsThread.h>
#include <logClient.h>
#include <ioccrf.h>
#include <dbStaticLib.h>
#include <iocsh.h>
static void logReset (void);
/*
***********************************************************************
@@ -86,10 +88,10 @@ LogNetFatal (const char *msg, int err)
***********************************************************************
*/
/*
* Add TFTP server and target prefix to pathname
* Add TFTP server and target prefix to pathnames
*/
static char *
rtems_tftp_path (const char *name)
static void
rtems_set_directory (void)
{
char *path;
int pathsize = 200;
@@ -97,33 +99,13 @@ rtems_tftp_path (const char *name)
if ((path = malloc (pathsize)) == NULL)
LogFatal ("Can't create TFTP path name -- no memory.\n");
strcpy (path, "/TFTP/");
strcpy (path, "/TFTP/BOOTP_HOST/epics/");
l = strlen (path);
if (inet_ntop (AF_INET, &rtems_bsdnet_bootp_server_address, &path[l], pathsize - l) == NULL)
LogFatal ("Can't convert BOOTP server name");
l = strlen (path);
strcpy (&path[l], "/epics/");
l = strlen (path);
if (gethostname (&path[l], pathsize - l) || (path[l] == '\0'))
if (gethostname (&path[l], pathsize - l - 2) || (path[l] == '\0'))
LogFatal ("Can't get host name");
l = strlen (path);
path[l++] = '/';
for (;;) {
if (name[0] == '.') {
if (name[1] == '/') {
name += 2;
continue;
}
if ((name[1] == '.') && (name[2] == '/')) {
name += 3;
continue;
}
}
break;
}
path = realloc (path, l + 1 + strlen (name));
strcpy (&path[l], name);
return path;
strcat (path, "/");
if (chdir (path) < 0)
LogFatal ("Can't set initial TFTP directory");
}
/*
@@ -150,40 +132,22 @@ rtems_netstat (unsigned int level)
}
}
static const ioccrfArg netStatArg0 = { "level",ioccrfArgInt};
static const ioccrfArg * const netStatArgs[1] = {&netStatArg0};
static const ioccrfFuncDef netStatFuncDef = {"netstat",1,netStatArgs};
static void netStatCallFunc(const ioccrfArgBuf *args)
static const iocshArg netStatArg0 = { "level",iocshArgInt};
static const iocshArg * const netStatArgs[1] = {&netStatArg0};
static const iocshFuncDef netStatFuncDef = {"netstat",1,netStatArgs};
static void netStatCallFunc(const iocshArgBuf *args)
{
rtems_netstat(args[0].ival);
}
static const ioccrfFuncDef stackCheckFuncDef = {"stackCheck",0,NULL};
static void stackCheckCallFunc(const ioccrfArgBuf *args)
static const iocshFuncDef stackCheckFuncDef = {"stackCheck",0,NULL};
static void stackCheckCallFunc(const iocshArgBuf *args)
{
Stack_check_Dump_usage ();
}
static void ioccrfRegisterRTEMS (void)
static void iocshRegisterRTEMS (void)
{
ioccrfRegister(&netStatFuncDef, netStatCallFunc);
ioccrfRegister(&stackCheckFuncDef, stackCheckCallFunc);
}
/*
* Since RTEMS doesn't have NFS we fake it by making sure that
* all paths refer to files in the TFTP area.
*/
#ifdef fopen
# undef fopen
extern FILE *fopen (const char *, const char *);
#endif
FILE *rtems_fopen (const char *name, const char *mode)
{
FILE *fp;
char *cp = rtems_tftp_path (name);
fp = fopen (cp, mode);
free (cp);
return fp;
iocshRegister(&netStatFuncDef, netStatCallFunc);
iocshRegister(&stackCheckFuncDef, stackCheckCallFunc);
}
void
@@ -240,7 +204,7 @@ Init (rtems_task_argument ignored)
*/
initConsole ();
putenv ("TERM=xterm");
putenv ("IOCSH_PS1=rtems> ");
putenv ("IOCSH_PS1=epics> ");
putenv ("IOCSH_HISTSIZE=20");
/*
@@ -250,23 +214,78 @@ Init (rtems_task_argument ignored)
rtems_bsdnet_initialize_network ();
printf ("***** Initializing TFTP *****\n");
rtems_bsdnet_initialize_tftp_filesystem ();
printf ("***** Initializing NTP *****\n");
rtems_bsdnet_synchronize_ntp (0, 0);
for (;;) {
printf ("***** Initializing NTP *****\n");
if (rtems_bsdnet_synchronize_ntp (0, 0) >= 0)
break;
epicsThreadSleep (10.0);
}
printf ("***** Initializing syslog *****\n");
openlog ("IOC", LOG_CONS, LOG_DAEMON);
syslog (LOG_NOTICE, "IOC started.");
logReset ();
/*
* Run the EPICS startup script
*/
printf ("***** Executing EPICS startup script *****\n");
ioccrfRegisterRTEMS ();
ioccrf ("st.cmd");
iocshRegisterRTEMS ();
rtems_set_directory ();
iocsh ("st.cmd");
/*
* Everything's running!
*/
epicsThreadSleep (2.0);
ioccrf (NULL);
iocsh (NULL);
LogFatal ("Console command interpreter terminated");
}
/*
* Architecture-dependent routines
*/
#ifdef __mcpu32__
#include <m68360.h>
static void
logReset (void)
{
int bit, rsr;
int i;
const char *cp;
char cbuf[80];
rsr = m360.rsr;
for (i = 0, bit = 0x80 ; bit != 0 ; bit >>= 1) {
if (rsr & bit) {
switch (bit) {
case 0x80: cp = "RESETH*"; break;
case 0x40: cp = "POWER-UP"; break;
case 0x20: cp = "WATCHDOG"; break;
case 0x10: cp = "DOUBLE FAULT"; break;
case 0x04: cp = "LOST CLOCK"; break;
case 0x02: cp = "RESET"; break;
case 0x01: cp = "RESETS*"; break;
default: cp = "??"; break;
}
i += sprintf (cbuf+i, cp);
rsr &= ~bit;
if (rsr)
i += sprintf (cbuf+i, ", ");
else
break;
}
}
syslog (LOG_NOTICE, "Startup after %s.", cbuf);
printf ("Startup after %s.\n", cbuf);
m360.rsr = ~0;
}
#else
static void
logReset (void)
{
syslog (LOG_NOTICE, "Started.");
}
#endif

View File

@@ -0,0 +1,60 @@
/*
* RTEMS network configuration for EPICS
* $Id$
* Author: W. Eric Norum
* eric.norum@usask.ca
* (306) 966-5394
*
* This file can be copied to an application source dirctory
* and modified to override the values shown below.
*/
#include <stdio.h>
#include <bsp.h>
#include <rtems/rtems_bsdnet.h>
#define NETWORK_TASK_PRIORITY 90
extern void rtems_bsdnet_loopattach();
static struct rtems_bsdnet_ifconfig loopback_config = {
"lo0", /* name */
(int (*)(struct rtems_bsdnet_ifconfig *, int))rtems_bsdnet_loopattach, /* attach function */
NULL, /* link to next interface */
"127.0.0.1", /* IP address */
"255.0.0.0", /* IP net mask */
};
/*
* The following conditionals select the network interface card.
*
* By default the network interface specified by the board-support
* package is used.
* To use a different NIC for a particular application, copy this file to the
* application directory and add the appropriate -Dxxxx to the compiler flag.
* To specify a different NIC on a site-wide basis, add the appropriate
* flags to the site configuration file for the target. For example, to
* specify a 3COM 3C509 for all RTEMS-pc386 targets at your site, add
* TARGET_CFLAGS += -DEPICS_RTEMS_NIC_3C509
* to configure/os/CONFIG_SITE.Common.RTEMS-pc386.
*/
#if defined(EPICS_RTEMS_NIC_3C509) /* 3COM 3C509 */
extern int rtems_3c509_driver_attach (struct rtems_bsdnet_ifconfig *, int);
# define NIC_NAME "ep0"
# define NIC_ATTACH rtems_3c509_driver_attach
#else /* Use NIC provided by BSP */
# define NIC_NAME RTEMS_BSP_NETWORK_DRIVER_NAME
# define NIC_ATTACH RTEMS_BSP_NETWORK_DRIVER_ATTACH
#endif
static struct rtems_bsdnet_ifconfig netdriver_config = {
NIC_NAME, /* name */
NIC_ATTACH, /* attach function */
&loopback_config, /* link to next interface */
};
struct rtems_bsdnet_config rtems_bsdnet_config = {
&netdriver_config, /* Network interface */
rtems_bsdnet_do_bootp, /* Use BOOTP to get network configuration */
NETWORK_TASK_PRIORITY, /* Network task priority */
180*1024, /* MBUF space */
350*1024, /* MBUF cluster space */
};

View File

@@ -20,23 +20,25 @@ asIoc_DLL_LIBS = dbIoc dbStaticIoc ca Com
asHost_DIR=.
PROD_LIBS = asHost dbStaticHost Com
PROD = ascheck
PROD_HOST = ascheck
ascheck_SRCS = ascheck.c
asHost_RCS_WIN32 = asHost.rc
asIoc_RCS_WIN32 = asIoc.rc
# For R3.13 compatibility only
OBJLIB_vxWorks=asIoc
OBJLIB_SRCS = $(LIBSRCS) $(asIoc_SRCS)
include $(TOP)/configure/RULES
# Extra rule since asLib_lex.c is included in asLib.c
# In my opinion, these objects should really be built
# independently.
asLib$(OBJ): asLib_lex.c ../asLibRoutines.c
asLib.c: asLib_lex.c ../asLibRoutines.c
$(INSTALL_INC)/asLib.h:../asLib.h
clean::
@$(RM) asLib.c asLib_lex.c
depends: asLib.c
asLib.c : asLib_lex.c

View File

@@ -168,14 +168,13 @@ LOCAL void eventCallback(struct event_handler_args arg)
LOCAL void asCaTask(void)
{
static const int enablePreemption = 1u;
ASG *pasg;
ASGINP *pasginp;
CAPVT *pcapvt;
int status;
taskwdInsert(epicsThreadGetIdSelf(),NULL,NULL);
SEVCHK(ca_context_create(enablePreemption),
SEVCHK(ca_context_create(ca_enable_preemptive_callback),
"asCaTask calling ca_context_create");
SEVCHK(ca_add_exception_event(exceptionCallback,NULL),
"ca_add_exception_event");

View File

@@ -14,8 +14,17 @@ of this distribution.
#define INCasCah
#include "shareLib.h"
#ifdef __cplusplus
extern "C" {
#endif
epicsShareFunc void epicsShareAPI asCaStart(void);
epicsShareFunc void epicsShareAPI asCaStop(void);
epicsShareExtern int asCaDebug;
#ifdef __cplusplus
}
#endif
#endif /*INCasCah*/

View File

@@ -188,7 +188,7 @@ int epicsShareAPI asInitAsyn(ASDBCALLBACK *pcallback)
return(-1);
}
asInitTheadId = epicsThreadCreate("asInitTask",
(epicsThreadPriorityChannelAccessServer + 9),
(epicsThreadPriorityCAServerHigh + 1),
epicsThreadGetStackSize(epicsThreadStackBig),
(EPICSTHREADFUNC)asInitTask,(void *)pcallback);
if(asInitTheadId==0) {

View File

@@ -12,10 +12,10 @@ DBD += bptTypeKdegC.dbd
DBD += bptTypeKdegF.dbd
PROD_LIBS = dbStaticHost Com
PROD += makeBpt
PROD_HOST += makeBpt
makeBpt_SRCS=makeBpt
include $(TOP)/configure/RULES
inc: $(INSTALL_PROD)
$(COMMON_DBDS): $(INSTALL_PROD)
depends: $(INSTALL_PROD)

View File

@@ -1,5 +1,6 @@
menu(menuConvert) {
choice(menuConvertNO_CONVERSION,"NO CONVERSION")
choice(menuConvertSLOPE,"SLOPE")
choice(menuConvertLINEAR,"LINEAR")
choice(menuConverttypeKdegF,"typeKdegF")
choice(menuConverttypeKdegC,"typeKdegC")

View File

@@ -27,15 +27,33 @@
*
*/
#define epicsAssertAuthor "Jeff Hill johill@lanl.gov"
#include "iocinf.h"
#include "syncGroup.h"
#include "oldAccess.h"
#include "autoPtrDestroy.h"
#include "cac.h"
#if defined ( _MSC_VER )
# pragma warning ( push )
# pragma warning ( disable: 4660 )
#endif
template class tsSLNode < CASG>;
template class tsFreeList < CASG, 128, 0 >;
template class tsFreeList < syncGroupWriteNotify, 128, 0 >;
template class tsFreeList < syncGroupReadNotify, 128, 0 >;
#if defined ( _MSC_VER )
# pragma warning ( pop )
#endif
tsFreeList < struct CASG, 128 > CASG::freeList;
epicsMutex CASG::freeListMutex;
CASG::CASG ( cac &cacIn ) :
opPendCount ( 0u ), seqNo ( 0u ),
client ( cacIn ), magic ( CASG_MAGIC )
CASG::CASG ( oldCAC &cacIn ) :
client ( cacIn ), magic ( CASG_MAGIC )
{
client.installCASG ( *this );
}
@@ -48,19 +66,12 @@ void CASG::destroy ()
CASG::~CASG ()
{
if ( this->verify () ) {
{
epicsAutoMutex locker ( this->mutex );
tsDLIterBD <syncGroupNotify> notify = this->ioList.firstIter ();
while ( notify.valid () ) {
notify->release ();
notify = this->ioList.firstIter ();
}
}
this->reset ();
this->client.uninstallCASG ( *this );
this->magic = 0;
}
else {
ca_printf ("cac: attempt to destroy invalid sync group ignored\n");
this->printf ("cac: attempt to destroy invalid sync group ignored\n");
}
}
@@ -74,12 +85,17 @@ bool CASG::verify () const
*/
int CASG::block ( double timeout )
{
unsigned long initialSeqNo = this->seqNo;
epicsTime cur_time;
epicsTime beg_time;
double delay;
double remaining;
int status;
double delay;
double remaining;
int status;
// prevent recursion nightmares by disabling blocking
// for IO from within a CA callback.
if ( epicsThreadPrivateGet ( caClientCallbackThreadId ) ) {
return ECA_EVDISALLOW;
}
if ( timeout < 0.0 ) {
return ECA_TIMEOUT;
@@ -92,36 +108,26 @@ int CASG::block ( double timeout )
beg_time = cur_time;
delay = 0.0;
this->client.enableCallbackPreemption ();
status = ECA_NORMAL;
while ( 1 ) {
{
epicsAutoMutex locker ( this->mutex );
if ( this->seqNo != initialSeqNo ) {
break;
}
if ( this->opPendCount == 0u ) {
this->seqNo++;
break;
}
if ( this->ioPendingList.count() == 0u ) {
status = ECA_NORMAL;
break;
}
remaining = timeout - delay;
if ( remaining <= CAC_SIGNIFICANT_SELECT_DELAY ) {
if ( remaining <= CAC_SIGNIFICANT_DELAY ) {
/*
* Make sure that we take care of
* recv backlog at least once
*/
status = ECA_TIMEOUT;
{
epicsAutoMutex locker ( this->mutex );
this->seqNo++;
}
break;
}
this->sem.wait ( remaining );
status = this->client.blockForEventAndEnableCallbacks ( this->sem, remaining );
if ( status != ECA_NORMAL ) {
break;
}
/*
* force a time update
@@ -131,7 +137,7 @@ int CASG::block ( double timeout )
delay = cur_time - beg_time;
}
this->client.disableCallbackPreemption ();
this->reset ();
return status;
}
@@ -139,28 +145,230 @@ int CASG::block ( double timeout )
void CASG::reset ()
{
epicsAutoMutex locker ( this->mutex );
this->opPendCount = 0;
this->seqNo++;
this->destroyCompletedIO ();
this->destroyPendingIO ();
}
void CASG::show ( unsigned level) const
// lock must be applied
void CASG::destroyCompletedIO ()
{
printf ( "Sync Group: id=%u, magic=%u, opPend=%lu, seqNo=%lu\n",
this->getId (), this->magic, this->opPendCount, this->seqNo );
tsDLList < syncGroupNotify > userStillRequestingList;
syncGroupNotify *pNotify;
while ( ( pNotify = this->ioCompletedList.get () ) ) {
if ( pNotify->ioInitiated() ) {
pNotify->destroy ( * this );
}
else {
userStillRequestingList.add ( *pNotify );
}
}
this->ioCompletedList.add ( userStillRequestingList );
}
// lock must be applied
void CASG::destroyPendingIO ()
{
tsDLList < syncGroupNotify > userStillRequestingList;
syncGroupNotify *pNotify;
while ( ( pNotify = this->ioPendingList.get () ) ) {
if ( pNotify->ioInitiated() ) {
pNotify->destroy ( * this );
}
else {
userStillRequestingList.add ( *pNotify );
}
}
this->ioPendingList.add ( userStillRequestingList );
}
void CASG::show ( unsigned level ) const
{
::printf ( "Sync Group: id=%u, magic=%u, opPend=%u\n",
this->getId (), this->magic, this->ioPendingList.count () );
if ( level ) {
epicsAutoMutex locker ( this->mutex );
tsDLIterConstBD < syncGroupNotify > notify = this->ioList.firstIter ();
while ( notify.valid () ) {
notify->show (level);
notify++;
::printf ( "\tPending" );
tsDLIterConstBD < syncGroupNotify > notifyPending = this->ioPendingList.firstIter ();
while ( notifyPending.valid () ) {
notifyPending->show ( level - 1u );
notifyPending++;
}
::printf ( "\tCompleted" );
tsDLIterConstBD < syncGroupNotify > notifyCompleted = this->ioCompletedList.firstIter ();
while ( notifyCompleted.valid () ) {
notifyCompleted->show ( level - 1u );
notifyCompleted++;
}
}
}
bool CASG::ioComplete () const
bool CASG::ioComplete ()
{
return ( this->opPendCount == 0u );
bool isCompleted;
{
epicsAutoMutex locker ( this->mutex );
this->destroyCompletedIO ();
isCompleted = ( this->ioPendingList.count () == 0u );
}
return isCompleted;
}
int CASG::put ( chid pChan, unsigned type, arrayElementCount count, const void *pValue )
{
syncGroupWriteNotify * pNotify = 0;
try {
{
epicsAutoMutex locker ( this->mutex );
pNotify = syncGroupWriteNotify::factory (
this->freeListWriteOP, *this, pChan );
if ( pNotify ) {
this->ioPendingList.add ( *pNotify );
}
else {
return ECA_ALLOCMEM;
}
}
pNotify->begin ( type, count, pValue );
return ECA_NORMAL;
}
catch ( cacChannel::badString & )
{
destroyPendingIO ( pNotify );
return ECA_BADSTR;
}
catch ( cacChannel::badType & )
{
destroyPendingIO ( pNotify );
return ECA_BADTYPE;
}
catch ( cacChannel::outOfBounds & )
{
destroyPendingIO ( pNotify );
return ECA_BADCOUNT;
}
catch ( cacChannel::noWriteAccess & )
{
destroyPendingIO ( pNotify );
return ECA_NOWTACCESS;
}
catch ( cacChannel::notConnected & )
{
destroyPendingIO ( pNotify );
return ECA_DISCONN;
}
catch ( cacChannel::unsupportedByService & )
{
destroyPendingIO ( pNotify );
return ECA_NOTINSERVICE;
}
catch ( cacChannel::requestTimedOut & )
{
destroyPendingIO ( pNotify );
return ECA_TIMEOUT;
}
catch ( std::bad_alloc & )
{
destroyPendingIO ( pNotify );
return ECA_ALLOCMEM;
}
catch ( ... )
{
destroyPendingIO ( pNotify );
return ECA_INTERNAL;
}
}
int CASG::get ( chid pChan, unsigned type, arrayElementCount count, void *pValue )
{
syncGroupReadNotify * pNotify = 0;
try {
{
epicsAutoMutex locker ( this->mutex );
pNotify = syncGroupReadNotify::factory (
this->freeListReadOP, *this, pChan, pValue );
if ( pNotify ) {
this->ioPendingList.add ( *pNotify );
}
else {
return ECA_ALLOCMEM;
}
}
pNotify->begin ( type, count );
return ECA_NORMAL;
}
catch ( cacChannel::badString & )
{
destroyPendingIO ( pNotify );
return ECA_BADSTR;
}
catch ( cacChannel::badType & )
{
destroyPendingIO ( pNotify );
return ECA_BADTYPE;
}
catch ( cacChannel::outOfBounds & )
{
destroyPendingIO ( pNotify );
return ECA_BADCOUNT;
}
catch ( cacChannel::noReadAccess & )
{
destroyPendingIO ( pNotify );
return ECA_NORDACCESS;
}
catch ( cacChannel::notConnected & )
{
destroyPendingIO ( pNotify );
return ECA_DISCONN;
}
catch ( cacChannel::unsupportedByService & )
{
destroyPendingIO ( pNotify );
return ECA_NOTINSERVICE;
}
catch ( std::bad_alloc & )
{
destroyPendingIO ( pNotify );
return ECA_ALLOCMEM;
}
catch ( ... )
{
destroyPendingIO ( pNotify );
return ECA_INTERNAL;
}
}
void CASG::destroyPendingIO ( syncGroupNotify * pNotify )
{
epicsAutoMutex locker ( this->mutex );
if ( pNotify ) {
this->ioPendingList.remove ( *pNotify );
pNotify->destroy ( *this );
}
}
void CASG::completionNotify ( syncGroupNotify & notify )
{
unsigned requestsIncomplete;
{
epicsAutoMutex locker ( this->mutex );
this->ioPendingList.remove ( notify );
this->ioCompletedList.add ( notify );
requestsIncomplete = this->ioPendingList.count ();
}
if ( requestsIncomplete == 0u ) {
this->sem.signal ();
}
}
void CASG::recycleSyncGroupWriteNotify ( syncGroupWriteNotify &io )
{
this->freeListWriteOP.release ( &io, sizeof ( io ) );
}
void CASG::recycleSyncGroupReadNotify ( syncGroupReadNotify &io )
{
this->freeListReadOP.release ( &io, sizeof ( io ) );
}
void * CASG::operator new (size_t size)
@@ -175,29 +383,33 @@ void CASG::operator delete (void *pCadaver, size_t size)
CASG::freeList.release ( pCadaver, size );
}
int CASG::put (chid pChan, unsigned type, unsigned long count, const void *pValue)
int CASG::printf ( const char *pformat, ... )
{
syncGroupNotify *pNotify = new syncGroupNotify ( *this, 0);
if ( ! pNotify ) {
return ECA_ALLOCMEM;
}
int status = pChan->write ( type, count, pValue, *pNotify );
if ( status != ECA_NORMAL ) {
pNotify->release ();
}
va_list theArgs;
int status;
va_start ( theArgs, pformat );
status = this->client.vPrintf ( pformat, theArgs );
va_end ( theArgs );
return status;
}
int CASG::get (chid pChan, unsigned type, unsigned long count, void *pValue)
void CASG::exception ( int status, const char *pContext,
const char *pFileName, unsigned lineNo )
{
syncGroupNotify *pNotify = new syncGroupNotify ( *this, pValue);
if ( ! pNotify ) {
return ECA_ALLOCMEM;
}
int status = pChan->read ( type, count, *pNotify );
if ( status != ECA_NORMAL ) {
pNotify->release ();
}
return status;
this->client.exception ( status, pContext, pFileName, lineNo );
}
void CASG::exception ( int status, const char *pContext,
const char *pFileName, unsigned lineNo, oldChannelNotify &chan,
unsigned type, arrayElementCount count, unsigned op )
{
this->client.exception ( status, pContext, pFileName,
lineNo, chan, type, count, op );
}

2404
src/ca/CAref.html Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -3,6 +3,8 @@ TOP=../..
include $(TOP)/configure/CONFIG
HTMLS += CAref.html
#
# includes to install from this subproject
#
@@ -13,14 +15,16 @@ INC += caProto.h
INC += db_access.h
INC += addrList.h
INC += cacIO.h
INC += caDiagnostics.h
LIBSRCS += cacChannelIO.cpp
LIBSRCS += cacChannel.cpp
LIBSRCS += cacChannelNotify.cpp
LIBSRCS += cacNotify.cpp
LIBSRCS += cacNotifyIO.cpp
LIBSRCS += cacReadNotify.cpp
LIBSRCS += cacWriteNotify.cpp
LIBSRCS += cacStateNotify.cpp
LIBSRCS += cacServiceList.cpp
LIBSRCS += access.cpp
LIBSRCS += recvProcessThread.cpp
LIBSRCS += iocinf.cpp
LIBSRCS += convert.cpp
LIBSRCS += test_event.cpp
@@ -39,6 +43,7 @@ LIBSRCS += cac.cpp
LIBSRCS += tcpSendWatchdog.cpp
LIBSRCS += tcpRecvWatchdog.cpp
LIBSRCS += bhe.cpp
LIBSRCS += oldCAC.cpp
LIBSRCS += oldChannelNotify.cpp
LIBSRCS += oldSubscription.cpp
LIBSRCS += getCallback.cpp
@@ -47,20 +52,23 @@ LIBSRCS += putCallback.cpp
LIBSRCS += syncgrp.cpp
LIBSRCS += CASG.cpp
LIBSRCS += syncGroupNotify.cpp
LIBSRCS += syncGroupReadNotify.cpp
LIBSRCS += syncGroupWriteNotify.cpp
LIBSRCS += localHostName.cpp
LIBSRCS += comQueRecv.cpp
LIBSRCS += comQueSend.cpp
LIBSRCS += comBuf.cpp
LIBSRCS += hostNameCache.cpp
LIBSRCS += ioCounterNet.cpp
LIBSRCS += msgForMultiplyDefinedPV.cpp
LIBSRCS += limboiiu.cpp
LIBRARY=ca
# For R3.13 compatibility only
OBJLIB_vxWorks=ca
OBJLIB_SRCS = $(LIBSRCS)
# only for WIN32:
# build LIBRARY as a DLL, use the specified def file
LIBTYPE := SHARED
SYS_DLL_LIBS = ws2_32
DLL_LIBS = Com
@@ -75,9 +83,9 @@ ca_DIR = .
Com_DIR = $(INSTALL_LIB)
caRepeater_SRCS = caRepeater.cpp
PROD += caRepeater
PROD_HOST += caRepeater
PROD_DEFAULT += catime acctst caConnTest casw caEventRate
PROD_HOST += catime acctst caConnTest casw caEventRate
OBJS_IOC += catime acctst caConnTest casw caEventRate
catime_SRCS = catimeMain.c catime.c
acctst_SRCS = acctstMain.c acctst.c
@@ -85,8 +93,5 @@ caEventRate_SRCS = caEventRateMain.cpp caEventRate.cpp
casw_SRCS = casw.cpp
caConnTest_SRCS = caConnTestMain.cpp caConnTest.cpp
PROD_vxWorks = catime acctst caConnTest caEventRate
include $(TOP)/configure/RULES

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -10,7 +10,7 @@ int main ( int argc, char **argv )
unsigned repetitionCount;
if ( argc < 2 || argc > 4 ) {
printf ( "usage: %s <chan name> [channel count] [repetition count]\n", argv[0] );
printf ( "usage: %s <PV name> [channel count] [repetition count]\n", argv[0] );
}
if ( argc >= 3 ) {

View File

@@ -1,5 +1,8 @@
#ifndef addrListh
#define addrListh
#include "shareLib.h"
#include "envDefs.h"
#ifdef __cplusplus
@@ -22,3 +25,5 @@ epicsShareFunc void epicsShareAPI removeDuplicatesAddresses
}
#endif
#endif /* ifndef addrListh */

72
src/ca/autoPtrDestroy.h Normal file
View File

@@ -0,0 +1,72 @@
/*
* $Id$
*
*
* L O S A L A M O S
* Los Alamos National Laboratory
* Los Alamos, New Mexico 87545
*
* Copyright, The Regents of the University of California.
*
*
* Author Jeffrey O. Hill
* johill@lanl.gov
* 505 665 1831
*/
#ifndef autoPtrDestroyh
#define autoPtrDestroyh
template < class T >
class autoPtrDestroy {
public:
autoPtrDestroy ( T * );
~autoPtrDestroy ();
T & operator * () const;
T * operator -> () const;
T * get () const;
T * release ();
private:
T *p;
};
template < class T >
inline autoPtrDestroy<T>::autoPtrDestroy ( T *pIn ) :
p ( pIn ) {}
template < class T >
inline autoPtrDestroy<T>::~autoPtrDestroy ()
{
if ( this->p ) {
p->destroy ();
}
}
template < class T >
inline T & autoPtrDestroy<T>::operator * () const
{
return * this->p;
}
template < class T >
inline T * autoPtrDestroy<T>::operator -> () const
{
return this->p;
}
template < class T >
inline T * autoPtrDestroy<T>::get () const
{
return this->p;
}
template < class T >
inline T * autoPtrDestroy<T>::release ()
{
T *pTmp = this->p;
this->p = 0;
return pTmp;
}
#endif // #ifdef autoPtrDestroyh

80
src/ca/autoPtrRecycle.h Normal file
View File

@@ -0,0 +1,80 @@
/*
* $Id$
*
*
* L O S A L A M O S
* Los Alamos National Laboratory
* Los Alamos, New Mexico 87545
*
* Copyright, The Regents of the University of California.
*
*
* Author Jeffrey O. Hill
* johill@lanl.gov
* 505 665 1831
*/
#ifndef autoPtrRecycleh
#define autoPtrRecycleh
template < class T >
class autoPtrRecycle {
public:
autoPtrRecycle ( chronIntIdResTable < baseNMIU > &,
tsDLList < class baseNMIU > &, cacRecycle &, T * );
~autoPtrRecycle ();
T & operator * () const;
T * operator -> () const;
T * get () const;
T * release ();
private:
T *p;
cacRecycle &r;
tsDLList < class baseNMIU > &eventq;
chronIntIdResTable < baseNMIU > &ioTable;
};
template < class T >
inline autoPtrRecycle<T>::autoPtrRecycle ( chronIntIdResTable < baseNMIU > &tbl,
tsDLList < class baseNMIU > &list, cacRecycle &rIn, T *pIn ) :
p ( pIn ), r ( rIn ), eventq ( list ), ioTable ( tbl ) {}
template < class T >
inline autoPtrRecycle<T>::~autoPtrRecycle ()
{
if ( this->p ) {
baseNMIU *pb = this->p;
this->ioTable.remove ( *pb );
this->eventq.remove ( *pb );
pb->destroy ( this->r );
}
}
template < class T >
inline T & autoPtrRecycle<T>::operator * () const
{
return * this->p;
}
template < class T >
inline T * autoPtrRecycle<T>::operator -> () const
{
return this->p;
}
template < class T >
inline T * autoPtrRecycle<T>::get () const
{
return this->p;
}
template < class T >
inline T * autoPtrRecycle<T>::release ()
{
T *pTmp = this->p;
this->p = 0;
return pTmp;
}
#endif // #ifdef autoPtrRecycleh

View File

@@ -10,12 +10,14 @@
* Author: Jeff Hill
*/
#include "iocinf.h"
#include "nciu_IL.h"
#include "baseNMIU_IL.h"
#define epicsAssertAuthor "Jeff Hill johill@lanl.gov"
baseNMIU::baseNMIU ( cacNotify &notifyIn, nciu &chanIn ) :
cacNotifyIO ( notifyIn ), chan ( chanIn )
#include "iocinf.h"
#include "nciu.h"
#include "netIO.h"
baseNMIU::baseNMIU ( nciu &chanIn ) :
chan ( chanIn )
{
}
@@ -30,13 +32,7 @@ class netSubscription * baseNMIU::isSubscription ()
void baseNMIU::show ( unsigned /* level */ ) const
{
printf ( "CA IO primitive at %p for channel %s\n",
static_cast <const void *> ( this ), this->chan.pName () );
::printf ( "CA IO primitive at %p\n",
static_cast <const void *> ( this ) );
}
cacChannelIO & baseNMIU::channelIO () const
{
return this->chan;
}

View File

@@ -1,31 +0,0 @@
/*
* $Id$
*
*
* L O S A L A M O S
* Los Alamos National Laboratory
* Los Alamos, New Mexico 87545
*
* Copyright, 1986, The Regents of the University of California.
*
*
* Author Jeffrey O. Hill
* johill@lanl.gov
* 505 665 1831
*/
#ifndef baseNMIU_ILh
#define baseNMIU_ILh
inline ca_uint32_t baseNMIU::getID () const
{
return this->id;
}
inline nciu & baseNMIU::channel () const
{
return this->chan;
}
#endif // baseNMIU

View File

@@ -10,9 +10,26 @@
* Author: Jeff Hill
*/
#define epicsAssertAuthor "Jeff Hill johill@lanl.gov"
#include "iocinf.h"
#include "bhe_IL.h"
#include "tcpiiu_IL.h"
#include "virtualCircuit.h"
#define epicsExportSharedSymbols
#include "bhe.h"
#undef epicsExportSharedSymbols
#if defined ( _MSC_VER )
# pragma warning ( push )
# pragma warning ( disable: 4660 )
#endif
template class tsDLNode < tcpiiu >;
template class tsFreeList < class bhe, 1024 >;
#if defined ( _MSC_VER )
# pragma warning ( pop )
#endif
tsFreeList < class bhe, 1024 > bhe::freeList;
epicsMutex bhe::freeListMutex;
@@ -33,22 +50,29 @@ bhe::~bhe ()
{
}
void bhe::beaconAnomalyNotify ()
{
tsDLIterBD < tcpiiu > iter = this->iiuList.firstIter ();
while ( iter.valid() ) {
iter->beaconAnomalyNotify ();
iter++;
}
}
/*
* update beacon period
*
* updates beacon period, and looks for beacon anomalies
*/
bool bhe::updatePeriod ( epicsTime programBeginTime )
bool bhe::updatePeriod ( const epicsTime & programBeginTime,
const epicsTime & currentTime )
{
double currentPeriod;
bool netChange = false;
epicsTime current = epicsTime::getCurrent ();
if ( this->timeStamp == epicsTime () ) {
if ( this->piiu ) {
this->piiu->beaconAnomalyNotify ();
}
this->beaconAnomalyNotify ();
/*
* this is the 1st beacon seen - the beacon time stamp
@@ -56,7 +80,7 @@ bool bhe::updatePeriod ( epicsTime programBeginTime )
* a TCP/IP connection created the beacon.
* (nothing to do but set the beacon time stamp and return)
*/
this->timeStamp = current;
this->timeStamp = currentTime;
return netChange;
}
@@ -64,13 +88,11 @@ bool bhe::updatePeriod ( epicsTime programBeginTime )
/*
* compute the beacon period (if we have seen at least two beacons)
*/
currentPeriod = current - this->timeStamp;
currentPeriod = currentTime - this->timeStamp;
if ( this->averagePeriod < 0.0 ) {
ca_real totalRunningTime;
double totalRunningTime;
if ( this->piiu ) {
this->piiu->beaconAnomalyNotify ();
}
this->beaconAnomalyNotify ();
/*
* this is the 2nd beacon seen. We cant tell about
@@ -107,9 +129,7 @@ bool bhe::updatePeriod ( epicsTime programBeginTime )
* trigger on any missing beacon
* if connected to this server
*/
if ( this->piiu ) {
this->piiu->beaconAnomalyNotify ();
}
this->beaconAnomalyNotify ();
if ( currentPeriod >= this->averagePeriod * 3.25 ) {
/*
@@ -132,9 +152,7 @@ bool bhe::updatePeriod ( epicsTime programBeginTime )
* that the server is available
*/
else if ( currentPeriod <= this->averagePeriod * 0.80 ) {
if ( this->piiu ) {
this->piiu->beaconAnomalyNotify ();
}
this->beaconAnomalyNotify ();
netChange = true;
}
else {
@@ -142,8 +160,10 @@ bool bhe::updatePeriod ( epicsTime programBeginTime )
* update state of health for active virtual circuits
* if the beacon looks ok
*/
if ( this->piiu ) {
piiu->beaconArrivalNotify (); // reset connection activity watchdog
tsDLIterBD < tcpiiu > iter = this->iiuList.firstIter ();
while ( iter.valid() ) {
iter->beaconArrivalNotify ();
iter++;
}
}
@@ -153,19 +173,23 @@ bool bhe::updatePeriod ( epicsTime programBeginTime )
this->averagePeriod = currentPeriod * 0.125 + this->averagePeriod * 0.875;
}
this->timeStamp = current;
//{
// char name[64];
// this->name ( name, sizeof ( name ) );
//
// printf ( "new beacon period %f for %s\n",
// this->averagePeriod, name );
//}
this->timeStamp = currentTime;
return netChange;
}
void bhe::show ( unsigned level ) const
void bhe::show ( unsigned /* level */ ) const
{
printf ( "CA beacon hash entry at %p with average period %f\n",
::printf ( "CA beacon hash entry at %p with average period %f\n",
static_cast <const void *> ( this ), this->averagePeriod );
if ( level > 0u ) {
printf ( "network IO pointer %p\n",
static_cast <void *> ( this->piiu ) );
}
}
void bhe::destroy ()
@@ -178,4 +202,15 @@ double bhe::period () const
return this->averagePeriod;
}
void bhe::registerIIU ( tcpiiu & iiu )
{
this->iiuList.add ( iiu );
}
void bhe::unregisterIIU ( tcpiiu & iiu )
{
this->iiuList.remove ( iiu );
this->timeStamp = epicsTime();
this->averagePeriod = - DBL_MAX;
}

Some files were not shown because too many files have changed in this diff Show More