g+
g+ Communities
Argonne National Laboratory

Experimental Physics and
Industrial Control System

1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  <20092010  2011  2012  2013  2014  Index 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  <20092010  2011  2012  2013  2014 
<== Date ==> <== Thread ==>

Subject: AreaDetector, Compiling synApps modules for Windows Microsoft compiler
From: Timothy Madden <tmadden@aps.anl.gov>
To: tech-talk@aps.anl.gov
Date: Mon, 12 Jan 2009 12:35:25 -0600
Folks

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.

Tim Madden




Replies:
RE: AreaDetector, Compiling synApps modules for Windows Microsoft compiler Mark Rivers

Navigate by Date:
Prev: Re: MAXvSetup is an undefined symbol Eric Norum
Next: RE: AreaDetector, Compiling synApps modules for Windows Microsoft compiler Mark Rivers
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  <20092010  2011  2012  2013  2014 
Navigate by Thread:
Prev: RE: MAXvSetup is an undefined symbol Mark Rivers
Next: RE: AreaDetector, Compiling synApps modules for Windows Microsoft compiler Mark Rivers
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  <20092010  2011  2012  2013  2014 
ANJ, 31 Jan 2014 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· EPICSv4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·