Wed Dec 10 23:36:16 2003 Ben Pfaff <blp@gnu.org>
[pspp-builds.git] / configure.in
1 dnl Process this file with autoconf to produce a configure script.
2 AC_INIT(src/q2c.c)
3 AC_PREREQ(2.12)
4 AM_CONFIG_HEADER(config.h)
5 CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE=1"
6 AC_ISC_POSIX
7 AC_PROG_CC
8 AM_PROG_CC_STDC
9 AC_CANONICAL_SYSTEM
10 AM_INIT_AUTOMAKE(pspp, [0.3.0])
11
12 #AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE")
13 AC_DEFINE_UNQUOTED(VERSION, "$VERSION")
14
15 #GNU_PACKAGE="GNU $PACKAGE"
16 #AC_DEFINE_UNQUOTED(GNU_PACKAGE, "$GNU_PACKAGE")
17
18 ALL_LINGUAS=""
19
20 AC_ARG_PROGRAM
21 AC_PROG_INSTALL
22 AC_PROG_RANLIB
23
24 dnl internationalization macros
25 AM_GNU_GETTEXT
26
27 AC_LINK_FILES($nls_cv_header_libgt, $nls_cv_header_intl)
28
29 AC_ARG_WITH(checker, 
30             [  --with-checker          compile with Checker (for debugging)],
31             CC="checkergcc" LOCAL_CC="gcc" CC_OPTIONS="-Werror")
32 AC_ARG_ENABLE(debugging,
33             [  --enable-debugging      turn on debugging options],
34             CC_OPTIONS="-DDEBUGGING=1")
35
36 # LOCAL_CC runs on the build system, targets the build system.
37 # CC runs on the build system, targets the host system.
38 if test -z "$LOCAL_CC"; then
39   LOCAL_CC="$CC"
40 fi
41 AC_SUBST(LOCAL_CC)
42
43 AC_CHECK_LIB(m, sin)
44 AC_CHECK_LIB(gmp, mpf_get_str, 
45   LIBS="-lgmp $LIBS" GMP_SUBDIRS= GMP_LIBS=,
46   GMP_SUBDIRS=gmp GMP_LIBS='$(GMP_LIBS)')
47 AC_SUBST(GMP_SUBDIRS)
48 AC_SUBST(GMP_LIBS)
49
50 AC_CHECK_LIB(ncurses, tgetent, LIBS="-lncurses $LIBS" termcap=yes,
51   AC_CHECK_LIB(termcap, tgetent, LIBS="-ltermcap $LIBS" termcap=yes,
52                termcap=no))
53 if test "$termcap" = yes; then
54   AC_CHECK_HEADERS(termcap.h)
55   AC_DEFINE(HAVE_LIBTERMCAP)
56 fi
57
58 AC_CHECK_LIB(readline, readline)
59 if test "$ac_cv_lib_readline_readline" = yes; then
60   AC_CHECK_HEADERS(readline/readline.h)
61   AC_CHECK_LIB(readline, add_history, history=yes,
62     AC_CHECK_LIB(history, add_history, LIBS="-lhistory" history=yes,
63                  history=no))
64   if test "$history" = yes; then
65     AC_CHECK_HEADERS(readline/history.h)
66     AC_DEFINE(HAVE_LIBHISTORY)
67   fi
68 fi
69
70 AC_CHECK_HEADERS(limits.h memory.h sys/stat.h sys/time.h sys/types.h \
71                  fpu_control.h sys/mman.h sys/wait.h ieeefp.h fenv.h)
72 AC_HEADER_STAT
73 AC_HEADER_STDC
74 AC_HEADER_TIME
75
76 dnl This test must precede tests of compiler characteristics like
77 dnl that for the inline keyword, since it may change the degree to
78 dnl which the compiler supports such features.
79 AM_C_PROTOTYPES
80
81 AC_C_CONST
82 AC_C_INLINE
83 AC_TYPE_SIZE_T
84 AC_STRUCT_TM
85
86 AC_CHECK_SIZEOF(short, 2)
87 AC_CHECK_SIZEOF(int, 4)
88 AC_CHECK_SIZEOF(long, 4)
89 AC_CHECK_SIZEOF(long long, 0)
90 AC_CHECK_SIZEOF(float, 0)
91 AC_CHECK_SIZEOF(double, 8)
92 AC_CHECK_SIZEOF(long double, 0)
93
94 dnl There used to be a check for floating-point representation here, but
95 dnl for some reason it didn't work on certain m68k GNU/Linux machines, and
96 dnl I was unable to determine why.  So, since every modern computer uses
97 dnl ieee754 format anyway, I've hard-coded it to ieee754.  Anyone who uses
98 dnl something else can enumerate the exceptions.
99
100 AC_DEFINE(FPREP, FPREP_IEEE754)
101
102 dnl if test "$cross_compiling" = yes; then
103 dnl   AC_MSG_WARN([Edit config.h to set proper values for SIZEOF_SHORT, \
104 dnl SIZEOF_INT,])
105 dnl   AC_MSG_WARN([SIZEOF_LONG, and SIZEOF_LONG_LONG (if available), if the \
106 dnl values])
107 dnl   AC_MSG_WARN([are not 2, 4, 4, and 8, respectively.])
108 dnl   AC_MSG_WARN([Also set the floating point representation (IEEE754, etc.).])
109 dnl else
110 dnl   AC_CACHE_CHECK(
111 dnl       floating point representation, ac_cv_sys_fprep,
112 dnl 
113 dnl       AC_TRY_RUN(
114 dnl             [changequote(<<, >>)dnl
115 dnl             <<
116 dnl           main () {
117 dnl           /* Test for IEEE754 floating point representation. */
118 dnl           union { unsigned char c[8]; double d; }
119 dnl             l = {{0x1c, 0xbc, 0x6e, 0xf2, 0x54, 0x8b, 0x11, 0x43}},
120 dnl             b = {{0x43, 0x11, 0x8b, 0x54, 0xf2, 0x6e, 0xbc, 0x1c}};
121 dnl           return l.d!=1234567891234567.0 && b.d!=1234567891234567.0;
122 dnl           }
123 dnl             >>
124 dnl             changequote([, ])dnl
125 dnl             ], ac_cv_sys_fprep=ieee754, ac_cv_sys_fprep=unknown,
126 dnl         AC_MSG_WARN([This error cannot occur.])))
127 dnl   if test "$ac_cv_sys_fprep" = ieee754; then
128 dnl     AC_DEFINE(FPREP, FPREP_IEEE754)
129 dnl   else
130 dnl     AC_MSG_WARN([Unknown floating-point representation.  This is a serious \
131 dnl error.])
132 dnl     AC_MSG_WARN([Please contact the author for porting information.])
133 dnl     AC_MSG_WARN([(It should be a fairly simple port, by the way.)])
134 dnl     AC_DEFINE(FPREP, FPREP_UNKNOWN)
135 dnl   fi
136 dnl fi
137
138 if test "$cross_compiling" = no; then
139   dnl This code was taken from acspecific.m4 and modified.
140   dnl It began life as AC_C_BIGENDIAN.
141   AC_CACHE_CHECK(
142       whether byte ordering is bigendian, ac_cv_c_bigendian,
143       [ac_cv_c_bigendian=unknown
144        # See if sys/param.h defines the BYTE_ORDER macro.
145        AC_TRY_COMPILE(
146            [#include <sys/types.h>
147             #include <sys/param.h>], 
148            [#if !BYTE_ORDER || !BIG_ENDIAN || !LITTLE_ENDIAN
149             bogus endian macros
150             #endif], 
151            [# It does; now see whether it defined to BIG_ENDIAN or not.
152             AC_TRY_COMPILE(
153                 [#include <sys/types.h>
154                  #include <sys/param.h>], 
155                 [#if BYTE_ORDER != BIG_ENDIAN
156                  not big endian
157                  #endif], 
158                 ac_cv_c_bigendian=yes, ac_cv_c_bigendian=no)])
159        if test $ac_cv_c_bigendian = unknown; then
160            AC_TRY_RUN(
161                [main () {
162                 /* Are we little or big endian?  From Harbison&Steele.  */
163                 union
164                   {
165                     long l;
166                     char c[sizeof (long)];
167                   } u;
168                 u.l = 1;
169                 exit (u.c[sizeof (long) - 1] == 1);
170                 }], 
171                ac_cv_c_bigendian=no, ac_cv_c_bigendian=yes, 
172                AC_MSG_ERROR([Internal error determining endianness.]))
173        fi])
174
175   if test "$ac_cv_c_bigendian" = yes; then
176     AC_DEFINE(ENDIAN, BIG)
177   elif test "$ac_cv_c_bigendian" = no; then
178     AC_DEFINE(ENDIAN, LITTLE)
179   else
180     AC_MSG_ERROR([Machine's endianness is unknown.])
181   fi
182 else
183   AC_DEFINE(ENDIAN, UNKNOWN)
184
185   AC_MSG_WARN([Optionally set value for endianness for best performance.])
186 fi
187
188 BLP_IS_SPRINTF_GOOD
189 BLP_INT_DIGITS
190 BLP_RANDOM
191
192 AC_FUNC_ALLOCA
193 AC_FUNC_MEMCMP
194 AC_FUNC_VPRINTF
195 AC_REPLACE_FUNCS(memmove memset stpcpy strpbrk strerror strtol strtoul memchr \
196                  getline getdelim strcasecmp strncasecmp memmem strtok_r)
197 AC_CHECK_FUNCS(gethostname strstr strtod __setfpucw isinf isnan finite getpid \
198                feholdexcept)
199
200 AC_PROG_LN_S
201
202 dnl This must be after other tests so warnings don't provoke errors above.
203 if test "$ac_cv_prog_gcc" = yes; then
204         CFLAGS="-g -Wall -W -Wno-uninitialized -Wwrite-strings \
205 -Wstrict-prototypes -Wpointer-arith"
206         if test "$CC_OPTIONS" != ""; then
207                 CFLAGS="$CFLAGS $CC_OPTIONS"
208         fi
209 fi
210 AC_SUBST(CFLAGS)
211
212 AC_OUTPUT(Makefile                              \
213           intl/Makefile                         \
214           po/Makefile.in                        \
215           lib/Makefile                          \
216           lib/gmp/Makefile                      \
217           lib/gmp/mpn/Makefile                  \
218           lib/gmp/mpf/Makefile                  \
219           lib/julcal/Makefile                   \
220           lib/misc/Makefile                     \
221           lib/dcdflib/Makefile                  \
222           doc/Makefile                          \
223           src/Makefile                          \
224           config/Makefile                       \
225           tests/Makefile,
226           [sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile
227
228            # Copy pref.h from pref.h.orig if prudent
229            if test ! -f pref.h; then
230              echo "creating pref.h"
231              cp $ac_given_srcdir/pref.h.orig pref.h
232            elif test "`ls -t pref.h.orig pref.h 2>/dev/null | sed 1q`" = pref.h.orig; then
233              echo "replacing pref.h with newer pref.h.orig"
234              cp $ac_given_srcdir/pref.h.orig pref.h
235            else
236              echo "pref.h exists"
237            fi
238            if test -f pref.h; then touch pref.h; fi
239           ])
240
241 dnl configure.in ends here