updated version, but need to update installation scripts
[cls.git] / configure.in
blob61c42ab44f4180f651b81972620b245e3edcd8f5
1 AC_INIT(Makefile.in)
2 AC_CONFIG_HEADER(src/include/xlconfig.h)
3 AC_CONFIG_AUX_DIR(config)
7 # Determine host information
9 AC_CANONICAL_HOST
13 # Set some default values
15 LIBS=-lm
16 UCFLAGS=-O
17 ULDFLAGS=
18 X11INCDIR_FLAG=
19 X11LIBDIR_FLAG=
20 EXTRALIBS=
21 EXTRAOBJS=
22 FOREIGN_FILE=dummy-foreign.h
26 # Determine the C compiler to use and adjust its flags
29 # Use gcc only if specified using --with-gcc or CC environment variable
30 AC_ARG_WITH(gcc, [  --with-gcc              use gcc compiler],
31             CC=gcc,[if test -z "$CC"; then CC=cc; fi])
33 # Set a variable using_gcc to make checking for gcc easy below
34 if test `$CC -v 2>&1 | grep -c gcc` != "0" ; then using_gcc=1; fi
36 AC_PROG_CPP
38 if test "$using_gcc"; then
39   # Adjust gcc flags
40   case $host in
41     *linux*)
42       # This may be needed on other systems using gnu ld
43       ULDFLAGS="$ULDFLAGS -export-dynamic"
44       ;;
45   esac
46   case $host in
47     i?86-*)
48       # Enable IEEE floating point comparisons.
49       UCFLAGS="$UCFLAGS -mieee-fp"
50       ;;
51     alpha*)
52       # This needs to be checked out. Something is needed to get
53       # divide by zero to produce a NaN instead of a SIGFPE.
54       UCFLAGS="$UCFLAGS -mieee"
55       ;;
56   esac
57 else
58   # Adjust native cc flags
59   case $host in
60     *aix*)
61       # This needs to be checked out.
62       UCFLAGS="$UCFLAGS -qmaxmem=3000 -qlanglvl=ansi"
63       ;;
64     alpha-dec-osf*)
65       # This needs to be checked out.
66       UCFLAGS="$UCFLAGS -std -ieee_with_no_inexact -Olimit 2000"
67       ;;
68     *unicos*)
69       # This needs to be checked out.
70       UCFLAGS="$UCFLAGS -h tolerant -DCRAYCC"
71       ;;
72     *hpux*)
73       # Turn -Aa and -D_HPUX_SOURCE turn on ANSI compliance and some
74       # POSIX stuff. Drop limit on optimization to make sure byte code
75       # loop is optimized.
76       UCFLAGS="$UCFLAGS -Aa -D_HPUX_SOURCE +Onolimit"
77       ;;
78     mips-sgi-irix*)
79       # IRIX 6.4's cc uses -OPT:Olimit=n instead of -Olimit n. My
80       # guess is that it changed with 6.0, but I don't know for sure.
81       set `echo "$host_os" | sed 's/irix//' | tr '.' ' '`
82       os_major=$1
83       if test "$os_major" -ge 6; then
84         UCFLAGS="$UCFLAGS -OPT:Olimit=2000"
85       else
86         UCFLAGS="$UCFLAGS -Olimit 2000"
87       fi
88       ;;
89     mips*)
90       # Most compilers for the mips architecture use this flag to
91       # increase the optimization limit; this is needed for
92       # xlbcode.c:bcloop
93       UCFLAGS="$UCFLAGS -Olimit 2000"
94       ;;
95   esac
100 # Adjust libraries
102 case $host in
103   alpha-dec-osf*)
104     # This needs to be checked out.
105     EXTRALIBS="$EXTRALIBS -ldnet_stub"
106     ;;
107   *hpux9*|*hpux10*)
108     # Need this to bring in finite. Don't know if this is needed in hpux8.
109     # It isn't needed in hpux10.2 but may be in earlier hpux10's. Don't
110     # know about hpux11.
111     if test "$using_gcc"; then
112       LIBS="-L/lib/pa1.1 $LIBS"
113       EXTRALIBS="-L/lib/pa1.1 $EXTRALIBS"
114     fi
115     ;;
116   *linux*)
117     # Older Linux versions produce a SIGFPE on divide by zero unless
118     # ieee library is used.
119     AC_CHECK_LIB(ieee, main, [EXTRALIBS="$EXTRALIBS -lieee"])
120     ;;
121   *sun-solaris*)
122     # Recent Solaris versions seem to have moved socket functions out
123     # into the socket library
124     AC_CHECK_FUNC(socket,,
125       AC_CHECK_LIB(socket,socket,
126         EXTRALIBS="$EXTRALIBS -lsocket",
127         AC_MSG_ERROR(can't find socket functions)))
128     ;;
129 esac
133 # Check for IEEE math support
135 case $host in
136   *sun-solaris*)
137     # Bring in finite and isnan on newer versions of solaris
138     CFLAGS="$CFLAGS -D__EXTENSIONS__"
139     UCFLAGS="$UCFLAGS -D__EXTENSIONS__"
140     ;;
141 esac
142 AC_CHECK_FUNCS(finite isnan)
146 # Check for some other functions
148 AC_CHECK_FUNCS(memmove difftime matherr)
152 # Check for POSIX sigsetjmp and friends. 
153 # Use grep for sigjmp_buf since sigsetjmp/siglongjmp may be macros.
155 AC_EGREP_HEADER(sigjmp_buf, setjmp.h, AC_DEFINE(HAVE_SIGSETJMP))
159 # Determine the graphics system to use
161 AC_PATH_X
162 if test "$no_x"; then
163   GRAPHSYS=GNUPLOT
164 else
165   GRAPHSYS=X11WINDOWS
166   if test "$x_includes"; then X11INCDIR_FLAG="-I$x_includes"; fi
167   if test "$x_libraries"; then X11LIBDIR_FLAG="-L$x_libraries"; fi
172 # Check for dynamic loaing support
175 # First try for SysVR4-style dlfcn support
176 AC_CHECK_FUNC(dlopen,[
177   FOREIGN_FILE="sysvr4-foreign.h"
178   foreign=1
179   AC_DEFINE(HAVE_DLOPEN)  # not sure why I need this but I seem to
180   AC_DEFINE(HAVE_FOREIGN)],
181   AC_CHECK_LIB(dl,dlopen,[
182     FOREIGN_FILE="sysvr4-foreign.h"
183     foreign=1
184     AC_DEFINE(HAVE_DLOPEN)  # not sure why I need this but I seem to
185     AC_DEFINE(HAVE_FOREIGN)
186     EXTRALIBS="$EXTRALIBS -ldl"]))
188 # Next try some os-specific solutions
189 if test ! "$foreign"; then
190   case $host in
191     *aix*)
192       # This needs to be checked
193       ULDFLAGS="-bE:xlisp.exp -bM:SRE"
194       link_sources="$link_sources src/c/machines/aix/xlisp.exp"
195       link_sources="$link_sources src/cmachines/aix/dynload/dlfcn.c"
196       link_targets ="$link_targets src/c/xlisp.exp src/c/dlfcn.c"
197       FOREIGN_FILE="sysvr4-foreign.h";
198       AC_DEFINE(HAVE_FOREIGN)
199       AC_DEFINE(HAVE_DLOPEN)
200       UCFLAGS="$UCFLAGS -Imachines/aix/dynload"
201       EXTRAOBJS=dlfcn.o
202       EXTRALIBS="$EXTRALIBS -lld"
203       foreign=1
204       ;;
205     *hpux*)
206       FOREIGN_FILE="sysvr4-foreign.h"
207       AC_DEFINE(HAVE_FOREIGN)
208       AC_DEFINE(HAVE_DLOPEN)
209       UCFLAGS="$UCFLAGS -Imachines/hpux/dlfcn"
210       EXTRAOBJS="$EXTRAOBJS dlfcn.o"
211       link_sources="$link_sources src/c/machines/hpux/dlfcn/dlfcn.c"
212       link_targets="$link_targets src/c/dlfcn.c"
213       EXTRALIBS="$EXTRALIBS -ldld"
214       ULDFLAGS="$ULDFLAGS -Wl,-E"
215       foreign=1
216       ;;
217     mips-dec-ultrix*)
218       FOREIGN_FILE="pmax-foreign.h"
219       AC_DEFINE(HAVE_FOREIGN)
220       ULDFLAGS="$ULDFLAGS -Wl,-D -Wl,c00000"
221       foreign=1
222       ;;
223     vax*)
224       FOREIGN_FILE="bsd-foreign.h"
225       AC_DEFINE(HAVE_FOREIGN)
226       foreign=1
227       ;;
228     *bsd*)
229       FOREIGN_FILE="bsd-foreign.h"
230       AC_DEFINE(HAVE_FOREIGN)
231       foreign=1
232       ;;
233   esac
235 # As last resort try for GNU dld
236 if test ! "$foreign"; then
237   AC_CHECK_LIB(dld,dld_init,[
238     FOREIGN_FILE="dld-foreign.h"
239     foreign=1
240     AC_DEFINE(HAVE_FOREIGN)
241     EXTRALIBS="$EXTRALIBS -ldld"])
246 # Determine how to create shared libraries -- adapted from Tcl 8.0
248 SHLIB_CFLAGS=""
249 SHLIB_LD_LIBS=""
250 case $host in
251   *aix*)  # **** this doesn't work yet
252     SHLIB_LD="$fullSrcDir/ldAix /bin/ld -bhalt:4 -bM:SRE -bE:lib.exp -H512 -T512 -bnoentry"
253     SHLIB_LD_LIBS='${LIBS}'
254     ;;
255   alpha-dec-osf*)
256     # check this out
257     SHLIB_LD='ld -shared -expect_unresolved "*"'
258     ;;
259   *hpux*)
260     SHLIB_CFLAGS="+z -Aa -D_HPUX_SOURCE"
261     SHLIB_LD="ld -b"
262     ;;
263   *irix*)
264     SHLIB_LD="ld -shared -rdata_shared"
265     ;;
266   *linux*)
267     SHLIB_CFLAGS="-fPIC"
268     SHLIB_LD="${CC} -shared"
269     ;;
270   *netbsd*|*freebsd*|*openbsd*)
271     SHLIB_CFLAGS="-fpic"
272     SHLIB_LD="ld -Bshareable -x"
273     ;;
274   *sunos*)
275     SHLIB_CFLAGS="-PIC"
276     SHLIB_LD="ld"
277     ;;
278   *solaris*)
279     SHLIB_CFLAGS="-KPIC"
280     SHLIB_LD="/usr/ccs/bin/ld -G -z text"
281     SHLIB_LD_LIBS='${LIBS}'
282     ;;
283   *)
284     AC_MSG_WARN(Don't know how to create shared libraries on this platform)
285 esac
287 # If we're running gcc, then change the C flags for compiling shared
288 # libraries to the right flags for gcc, instead of those for the
289 # standard manufacturer compiler.
290 if test `$CC -v 2>&1 | grep -c gcc` != "0" ; then
291   case $system in
292     *aix*)
293       ;;
294     *irix*)
295       ;;
296     *netbsd*|*freebsd*|*openbsd*|*linux*)
297       ;;
298     *)
299       SHLIB_CFLAGS="-fPIC"
300       ;;
301   esac
306 # Register variables for substitution
308 AC_SUBST(GRAPHSYS)
309 AC_SUBST(X11INCDIR_FLAG)
310 AC_SUBST(X11LIBDIR_FLAG)
311 AC_SUBST(UCFLAGS)
312 AC_SUBST(ULDFLAGS)
313 AC_SUBST(EXTRALIBS)
314 AC_SUBST(EXTRAOBJS)
315 AC_SUBST(FOREIGN_FILE)
316 AC_SUBST(CC)
317 AC_SUBST(CC)
318 AC_SUBST(SHLIB_CFLAGS)
319 AC_SUBST(SHLIB_LD)
320 AC_SUBST(SHLIB_LD_LIBS)
322 echo GRAPHSYS       = $GRAPHSYS
323 echo X11INCDIR_FLAG = $X11INCDIR_FLAG
324 echo X11LIBDIR_FLAG = $X11LIBDIR_FLAG
325 echo UCFLAGS        = $UCFLAGS
326 echo ULDFLAGS       = $ULDFLAGS
327 echo EXTRALIBS      = $EXTRALIBS
328 echo EXTRAOBJS      = $EXTRAOBJS
329 echo FOREIGN_FILE   = $FOREIGN_FILE
330 echo CC             = $CC
331 echo SHLIB_CFLAGS   = $SHLIB_CFLAGS
332 echo SHLIB_LD       = $SHLIB_LD
333 echo SHLIB_LD_LIBS  = $SHLIB_LD_LIBS
335 AC_LINK_FILES($link_sources,$link_targets)
336 AC_OUTPUT(Makefile shlibconfig.sh src/c/Makefile)