186 lines
6.7 KiB
Plaintext
186 lines
6.7 KiB
Plaintext
|
|
Compiling EPICS and Building IOC Applications on WIN32 (Windows95/NT)
|
|
---------------------------------------------------------------------
|
|
|
|
Original port of EPICS base to WIN32 (Windows95/NT)
|
|
was done by Kay-Uwe Kasemir 11/96
|
|
|
|
please mail questions, comments, corrections, additional examples, etc
|
|
to johill@lanl.gov
|
|
|
|
0) what you will get
|
|
--------------------
|
|
|
|
Right now this port of EPICS to WIN32 should allow you to
|
|
|
|
* compile almost 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, ...),
|
|
load databases
|
|
(no drivers/devices for real I/O available, yet.
|
|
Some Greenspring IP support [Relay, Dig, ADC, DAC] is in progress)
|
|
* 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.
|
|
|
|
1) see what you have
|
|
--------------------
|
|
|
|
To compile EPICS on WIN32, we need
|
|
|
|
WindRiver System's Tornado (used: 1.0) (not required if host only build)
|
|
Microsoft's Visual C/C++ (used: 4.0) (borland C++ rumored to work also)
|
|
|
|
and some tools:
|
|
|
|
gnu make - www.gnu.org (we used 3.76)
|
|
perl - www.perl.org (we used 5.003)
|
|
|
|
The perl interpreter and gnu make are available 'on the net'
|
|
as sources which compile with MS Visual C++.
|
|
If you cannot/don't want to find them, contact me, please!
|
|
|
|
2) set environment variables
|
|
|
|
(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:
|
|
|
|
** Note that that each "\" in any path variables
|
|
must be replaced with a "\\" (this is because GNU make treats
|
|
all "\" characters as line continuation)
|
|
|
|
** Note that that each space in any file name or
|
|
path name variable must be replaced with
|
|
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,
|
|
but the DOS shell appears to only accept "\".
|
|
|
|
** Certain command line utilities such as the MS linker are known to confuse
|
|
"/" in a path with command line options, and so in these situations it may be
|
|
necessary to replace a "/" in a configured path with "\\".
|
|
|
|
Your path should include:
|
|
- The EPICS-binaries that we are about to build in <EPICS>base/bin/WIN32
|
|
- The System (for me it's in NT40...)
|
|
- The MS Visual C compiler binaries
|
|
|
|
Check with e.g.:
|
|
|
|
>echo %Path%
|
|
C:\WINNT35.0\system32;
|
|
C:\WINNT35.0;
|
|
c:\msdev\bin;
|
|
c:\perl5\bin;
|
|
c:\make-3.75\WinRel;
|
|
c:\epics\base\bin\win32 (really where INSTALL_LOCATION specifies)
|
|
|
|
On NT, "Path" is defined by the operating system, on Win95, it's "PATH" instead.
|
|
|
|
MS Visual C and Tornado should be installed properly with
|
|
these env. variables set:
|
|
|
|
WIND_BASE=c:\Tornado (required for cross development only)
|
|
WIND_HOST_TYPE=x86-win32 (required for cross development only)
|
|
|
|
This way the EPICS makesystem can locate Tornado
|
|
without any changes to the files in base/config.
|
|
So for pc486 the settings in CONFIG_SITE where
|
|
you specify the location of VxWorks are ignored,
|
|
this information is taken from WIND_BASE and _HOST_TYPE!!
|
|
|
|
MSDevDir=C:\MSDEV
|
|
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)
|
|
|
|
Set the "TMP" environment variable if you need to specify where
|
|
temporary files are created.
|
|
|
|
Directory Used For Temporary Files Conditions
|
|
---------------------------------- ----------
|
|
Directory specified by TMP TMP environment variable is set,
|
|
and directory specified by TMP exists.
|
|
dir argument to _tempnam TMP environment variable is not set, or
|
|
directory specified by TMP does not exist.
|
|
P_tmpdir in STDIO.H dir argument is NULL, or dir is name of
|
|
nonexistent directory.
|
|
Current working directory P_tmpdir does not exist.
|
|
|
|
On my system I see in stdio.h that _P_tmpdir is "/". Here is a common
|
|
setting for "TMP" (the C:\TEMP directory must exist).
|
|
|
|
TMP=C:\TEMP
|
|
|
|
3) building EPICS
|
|
-----------------
|
|
|
|
Prepare apx. 2 ltr. Tee and type:
|
|
|
|
cd <epics>/base
|
|
make (use gnu make)
|
|
|
|
Watch for errors and send them to me.
|
|
|
|
Known problems:
|
|
* gnumake seems to be faster than WIN32 sometimes
|
|
which results in warnings/errors like
|
|
"file has modification date in the future"
|
|
for newly created things.
|
|
Very seldom this is fatal, so you have to
|
|
stop gnumake and restart it.
|
|
* This is strange because Windows95/NT doesn't care
|
|
about upper/lower case:
|
|
WIN32 is WIN32, not win32. Gnumake fails
|
|
if e.g. base/src/include/os/WIN32 is ...win32.
|
|
|
|
4) Creating EPICS IOC applications under WIN32
|
|
|
|
o create application development folder
|
|
|
|
o start a DOS window and change your working directory to the folder
|
|
created above (with the DOS "cd" command)
|
|
|
|
o to create an example application type:
|
|
"perl c:\epics\bin\win32\makeBaseApp.pl -b c:\\epics -e
|
|
|
|
** Note that that each "\" above in any path arguments to makeBaseApp.pl
|
|
must be replaced with a "\\" (this is because GNU make treats
|
|
all "\" characters as line continuation)
|
|
|
|
** Note that that each space in any file name or
|
|
path name argument to makeBaseApp.pl must be replaced with
|
|
a "\ " (this is because GNU make treats all " " separated
|
|
input as independent tokens in the input stream.
|
|
|
|
** Note that c:\epics above must be replaced by the path
|
|
to your epics source installation (or where INSTALL_LOCATION
|
|
specifies)
|
|
|
|
o General information on EPICS IOC application development can be found in
|
|
the "EPICS IOC Application Developers Guide". To see all of the options
|
|
supported by makeBaseApp.pl type "perl c:\epics\bin\win32\makeBaseApp.pl"
|
|
|
|
5) EPICS GNU make makefiles can be executed from within a Visual C++ "makefile"
|
|
style project. This allows EPICS programs to be developed directly inside of
|
|
the visual C++ environment. To do this create a "makefile" project and place your
|
|
gnu make command in the build configuration (accessed from the project/settings menu).
|
|
You will also need to add GNU make and <EPICS>/bin/win32 into the Visual C++
|
|
executable search path (from the tools/options menu). I have not so far determined
|
|
how to configure visual C++ so that it is possible to double click on the compiler
|
|
error messages generated within an EPICS "makefile" style project and have visual
|
|
C++ immediately position the cursor on the corresponding line in the source (as is
|
|
normally the case in the visual C++ environment). If you solve this problem please
|
|
forward the details to johill@lanl.gov.
|
|
|
|
Good luck !
|
|
|
|
-Kay
|