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. 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" 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 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, and the MS linker will accept "/" and this will result in less trouble. ** Note that that each "\" in any path variables you set 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 you set 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 only accepts "\". ** Certain command line utilities such as the MS linker are known to in rare situations confuse "/" in a path with command line options, and it may be necessary to replace a "/" in a path that configured with "\\", but 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 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 /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 /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