Argonne National Laboratory

Experimental Physics and
Industrial Control System

1994  <19951996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  Index 1994  <19951996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020 
<== Date ==> <== Thread ==>

Subject: More on building Epics on Solaris
From: npr@jach.hawaii.edu (Nick Rees)
Date: Tue, 9 May 95 12:37:36 HST
           More experiences with building Epics on Solaris....

I sent out a message about compiling Epics on Solaris in native mode a
few weeks ago. This is a few more experiences including some more of
the extensions, building on Solaris 2.4 (instead of 2.3) and a bit more
time thinking about it.


1. Redundant include files in base/include.

I have can't find any references to the following include files in the
base directory tree:

alarmString.h
ht2992.h
sydDefs.h

Should they be moved to the extensions tree, or deleted?


2. Library dependencies in extensions.

Currently, when a library is used by more than one extension, it
usually appears in the source tree of one extension or the other. This
can lead to it being impossible to have a clean build since you may not
have all the external files required to build the extension, but you
have enough to build the library you want.

I would suggest that any library that is used by more than one
extension be treated as a separate extension in its own right. This
would avoid the problem.

The case I encountered was the syd library. On Solaris 2.3 I didn't
have Motif, so I couldn't build libUnix, but needed syd for edd/dm.


3. Problem with blderrSymTbl

This turned out to be a known problem and it didn't work for Solaris
2.4. Janet has the fix provided by Andrew Johnson of RGO.


4. CMPLR = STRICT option

I have started building Solaris releases using the CMPLR=STRICT option
as default. This appears to work, so I would recommend it.

I started doing this is because of a feature of the Solaris compiler
which causes problems with the X libraries.

Basically, a a few of the Solaris X header files rely on __STDC__ being
defined to be non zero for ANSI compilers. One of the examples is in
Xmd.h:

#if __STDC__ && !defined(UNIXCPP)
#define _SIZEOF(x) sz_##x
#define SIZEOF(x) _SIZEOF(x)
#else
#define SIZEOF(x) sz_/**/x
#endif /* if ANSI C compiler else not */

However, the -Xa option of the Sun Solaris compiler sets __STDC__ to 0,
which results in the compiler including the wrong options with the
warning message:

"/usr/openwin/include/X11/Xmd.h", line 67: warning: comment does not concatenate tokens

I must admit that this problem doesn't cause any hard errors that I am
aware of, but I am also happier using the strict option, if I can get
away with it.

The only change that was required for base to compile with CMPLR=STRICT
is that the value SYSV has to be defined. This caused a problem in one
of the header files when compiling dct. I did this by changing the
reference to SVR4 in the CONFIG.Unix.solaris to a reference to SYSV.
i.e.:

OP_SYS_FLAGS = -DUNIX -DSYSV

I could not find any reference to SVR4 in the release and I often found
a reference to SYSV. I consider the original SVR4 reference to be an
error. I would be interested to hear from Andrew why he chose it - it
appears to be against convention.

As to the extensions, I have compiled ca, cau, libUnix, medm and opi.
Medm used the dummy XrtGraph stubs from Tony Cox.

The opi version was a version of opi Release 2 that I got directly from
Los Alamos. There were quite a number of changes and I suggest you get
the updated version from Bob.

For the other extensions the diffs from the file Janet provided with
beta 12 (extensions_04_13_95.Tar.Z) are:

===================================================================
RCS file: /usr/local/cvsroot/epics/extensions/src/ca/cafunc.c,v
retrieving revision 1.1.1.1
diff -r1.1.1.1 cafunc.c
195c195
< #if defined(HP_UX)
---
> #if defined(HP_UX) || defined(SYSV)
===================================================================
RCS file: /usr/local/cvsroot/epics/extensions/src/medm/medm/displayList.h,v
retrieving revision 1.1.1.1
diff -r1.1.1.1 displayList.h
72c72,76
< #include <strings.h>
---
> #ifdef SYSV
> #  include <string.h>
> #else
> #  include <strings.h>
> #endif
cvs diff: Diffing extensions/src/medm/xc
===================================================================
RCS file: /usr/local/cvsroot/epics/extensions/src/medm/xc/Matrix.c,v
retrieving revision 1.1.1.1
diff -r1.1.1.1 Matrix.c
48c48
< #ifdef sun
---
> #ifdef sun && !defined(SYSV)
===================================================================
RCS file: /usr/local/cvsroot/epics/extensions/src/medm/xc/MeterP.h,v
retrieving revision 1.1.1.1
diff -r1.1.1.1 MeterP.h
36a37,39
> #if !defined( M_PI )
> #define M_PI 3.14159265358979323846
> #endif


Nick Rees

Joint Astronomy Centre                    Ph:       +1 (808) 961-3756
660 N. Aohoku Place                       Fax:      +1 (808) 961-6516
Hilo, HI.  96720                          Internet: npr@jach.hawaii.edu

Navigate by Date:
Prev: Re: Recommended setting for XyCom 566 Analog input module? Andrew Johnson
Next: Re: Recommended setting for XyCom 566 Analog input module? 415
Index: 1994  <19951996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020 
Navigate by Thread:
Prev: Re: Recommended setting for XyCom 566 Analog input module? 415
Next: subscribe Hide Mizuno
Index: 1994  <19951996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020 
ANJ, 10 Aug 2010 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·