Experimental Physics and
I am making a soft IOC to run Mark River's area detector module (AD). AD requires several synApps modules to run. I have built EPICS 3-14-10 successfully with the MS Windows compiler (.NET 2003). I ran into a problem with the make utility when compiling the synApps modules.
For example, to compile gensub using the windows compiler I have to set EPICS_BASE in the RELEASE file to something. I can use a DOS style path or a UNIX style path. If I set EPICS_BASE to D:/EPICS/base-3.14.10, the make system gives an error:
...RULES_TARGET:90 *** target pattern contains no '%'
This is due to the ':' in the DOS path. IN unix make land, the : is used to concatenate variables and is not recognized as part of a path.
If I set EPICS_BASE to a UNIX path, say, EPICS_BASE=/cygdrive/d/epics/base I get another error.
The problem here is that make is attempting to pass UNIX paths to the Microsoft compiler, cl. cl does not understand
UNIX paths as arguments.
I found a way to compile that seems to work OK. This is in the top make file, say in gensub/1-6a. TOP=/. Put this in the top of the configure/RELEASE file: EPICS_BASE=$(TOP)/../../../../base-3.14.10
Now we only use relative paths. IN this way we never have to use a : in the pathname, and both DOS and gnu make can
understand the paths.
I propose we change the Makefile Rules to include calls to shell cygpath .... cygpath can convert UNIX paths to DOS and vice versa
IN this way we can use
if HOST_ARCH= win32-x86
to conditionally call cygpath within the make system to convert to the proper paths.
This way we could would not even have to have a RELEASE.win32-x86 file. The make system would automatically convert
the path names to DOS or UNIX depending on which type of path is needed.
|ANJ, 02 Sep 2010||
· EPICSv4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·