Moved call to gl_NEXT_HEADER outside the conditional.
[pspp] / configure.ac
1 dnl Process this file with autoconf to produce a configure script.
2
3 dnl Initialize.
4 AC_PREREQ(2.63)
5 AC_INIT([GNU PSPP], [0.7.8], [bug-gnu-pspp@gnu.org], [pspp])
6 AC_CONFIG_AUX_DIR([build-aux])
7 AC_CONFIG_HEADERS([config.h])
8 AC_CONFIG_TESTDIR([tests])
9 AM_INIT_AUTOMAKE
10
11 dnl Checks for programs.
12 AC_GNU_SOURCE
13 AC_PROG_CC
14 gl_EARLY
15 AM_PROG_CC_C_O
16 AC_LIBTOOL_WIN32_DLL
17 AC_LIBTOOL_DLOPEN
18 AC_PROG_LIBTOOL
19 PKG_PROG_PKG_CONFIG
20 m4_pattern_forbid([PKG_CHECK_MODULES])
21 PSPP_CHECK_CLICKSEQUENCE
22
23 AC_ARG_ENABLE(
24   anachronistic-dependencies, 
25   [AS_HELP_STRING([--enable-anachronistic-dependencies], 
26                   [Attempt to allow building against older versions of dependent libraries])])
27
28 PSPP_ENABLE_OPTION(-Wdeclaration-after-statement)
29
30 AM_CONDITIONAL(cc_is_gcc, test x"$GCC" = x"yes" )
31
32 PSPP_CC_FOR_BUILD
33 PSPP_PERL
34
35 dnl Disable automatic po/ support, because PSPP provides its own po/ support.
36 AC_PROVIDE([AM_PO_SUBDIRS])
37 AM_GNU_GETTEXT([external], [need-ngettext])
38 LIBS="$LIBINTL $LIBS"
39
40 dnl Checks for libraries.
41 AC_SYS_LARGEFILE
42 AC_SEARCH_LIBS([sin], [m])
43 PSPP_LC_PAPER
44
45
46 AC_ARG_VAR([PSPP_LDFLAGS], [linker flags to be used for linking the pspp binary only])
47 AC_ARG_VAR([PSPPIRE_LDFLAGS], [linker flags to be used for linking the psppire binary only])
48
49 # Support for Cairo and Pango.
50 AC_ARG_WITH([cairo],
51   [AS_HELP_STRING(
52     [--without-cairo], 
53     [Don't build support for charts (using Cairo and Pango);
54      implies --without-gui])],
55   [], [with_cairo=yes])
56 AM_CONDITIONAL([HAVE_CAIRO], [test "$with_cairo" != no])
57 if test "$with_cairo" != no; then
58   PKG_CHECK_MODULES([CAIRO], [cairo >= 1.5 pango >= 1.20 pangocairo], 
59     [CPPFLAGS="$CPPFLAGS $CAIRO_CFLAGS"
60      AC_DEFINE([HAVE_CAIRO], 1, 
61        [Define to 1 if Cairo and Pango are available.])],
62     [PSPP_REQUIRED_PREREQ([cairo 1.5 or later and pango 1.20 or later (or use --without-cairo)])])
63   AC_PATH_PROG([XMLLINT], [xmllint], [echo], [$PATH])
64   AC_SUBST(XMLLINT)
65 fi
66
67 # Support for GUI.
68 AC_ARG_WITH([gui], 
69   [AS_HELP_STRING([--without-gui], 
70                   [Don't build the PSPPIRE GUI (using GTK+)])],
71   [], [with_gui=yes])
72 AM_CONDITIONAL([HAVE_GUI], 
73                [test "$with_cairo" != no && test "$with_gui" != "no"])
74 if test "$with_cairo" != no && test "$with_gui" != "no"; then
75   PKG_CHECK_MODULES([GTK], [gtk+-2.0 >= 2.16], [],
76     [PSPP_REQUIRED_PREREQ([gtk+ 2.0 version 2.16 or later (or use --without-gui)])])
77
78   PKG_CHECK_MODULES([GTKSOURCEVIEW], [gtksourceview-2.0 >= 2.2], [],
79     [PSPP_REQUIRED_PREREQ([gtksourceview 2.0 version 2.2 or later (or use --without-gui)])])
80
81   AC_ARG_VAR([GLIB_GENMARSHAL])
82   AC_CHECK_PROGS([GLIB_GENMARSHAL], [glib-genmarshal])
83   if test "x$GLIB_GENMARSHAL" = x; then
84     PSPP_REQUIRED_PREREQ([glib-genmarshal (or use --without-gui)])
85   fi
86
87 fi
88
89 gl_NEXT_HEADERS([gtk/gtk.h])
90
91 dnl Checks needed for psql reader
92
93 dnl The 8.x series postgres tarballs installs with a default prefix of
94 dnl /usr/local/pgsql whereas, OSes (such as debian)  install into /usr .
95
96 dnl If the libpq.so file is in a non standard path, (one which the linker
97 dnl doesn't search) then we must set the PG_LDFLAGS to -R/usr/wherever/
98 dnl However, if the system happens to have more than one version of other
99 dnl dependent libraries (eg. libgtk) in different standard paths. (eg:
100 dnl /usr and /usr/local) then the wrong one may get linked. 
101
102 dnl To overcome this, we first check for libpq in the standard places, and
103 dnl only set PG_LDFLAGS if it's not found.
104
105
106 AC_ARG_WITH(
107   libpq, 
108   [AS_HELP_STRING([--without-libpq], [don't compile in Postgres capability])])
109 AC_ARG_VAR([PG_CONFIG], 
110            [Full pathname of the pg_config program shipped with Postgresql])
111 AC_PATH_PROG([PG_CONFIG], [pg_config], [], 
112              [$PATH:/usr/local/pgsql/bin:/usr/pgsql/bin])
113
114 if test x"$with_libpq" != x"no" && test -n "$PG_CONFIG" ; then 
115   AC_SUBST(PG_CONFIG)
116   PG_CFLAGS=-I`$PG_CONFIG --includedir` 
117   AC_SUBST(PG_CFLAGS)
118
119   AC_CHECK_LIB([pq], [PQexec],
120      [:], 
121      [PG_LDFLAGS="-L`$PG_CONFIG --libdir` -R`$PG_CONFIG --libdir`"])
122   AC_SUBST(PG_LDFLAGS)
123
124   PG_LIBS=-lpq
125   AC_SUBST(PG_LIBS)
126
127   PKG_CHECK_EXISTS(libssl,
128         AC_DEFINE([USE_SSL],1,
129                    [Define to 1 if the openssl library is present.])
130            ,)
131
132   # Now verify that we can actually link against libpq.  If we are
133   # cross-compiling and picked up a host libpq, or if libpq is just
134   # badly installed, this will fail.
135   AC_CACHE_CHECK(
136     [whether -lpq links successfully],
137     [pspp_cv_have_libpq],
138     [save_CPPFLAGS=$CPPFLAGS
139      save_LIBS=$LIBS
140      save_LDFLAGS=$LDFLAGS
141      CPPFLAGS="$PG_CFLAGS $CPPFLAGS"
142      LIBS="$PG_LIBS $LIBS"
143      LDFLAGS="$PG_LDFLAGS $LDFLAGS"
144      AC_LINK_IFELSE(
145        [AC_LANG_PROGRAM(
146          [#include <libpq-fe.h>
147          ], [PQfinish (0);])],
148        [pspp_cv_have_libpq=yes],
149        [pspp_cv_have_libpq=no])
150      CPPFLAGS=$save_CPPFLAGS
151      LIBS=$save_LIBS
152      LDFLAGS=$save_LDFLAGS])
153
154   if test $pspp_cv_have_libpq = yes; then
155     PSQL_SUPPORT=yes
156     AC_DEFINE([PSQL_SUPPORT], [1],
157       [Define to 1 if building in support for reading from postgres
158        databases.])
159   else
160     PSQL_SUPPORT=no
161     PG_CONFIG=
162     PG_CFLAGS=
163     PG_LDFLAGS=
164     PG_LIBS=
165   fi
166 else
167   PSQL_SUPPORT=no
168   pspp_cv_have_libpq=no
169 fi
170 AC_SUBST([PSQL_SUPPORT])
171
172 dnl Check for libxml2
173 PKG_CHECK_MODULES(
174   [LIBXML2], [libxml-2.0], 
175   [HAVE_LIBXML2=yes],
176   [HAVE_LIBXML2=no
177    PSPP_OPTIONAL_PREREQ([libxml2])])
178
179 dnl Check for zlib.
180 AC_SEARCH_LIBS(
181   [gzopen], [z],
182   [HAVE_ZLIB=yes],
183   [HAVE_ZLIB=no
184    PSPP_OPTIONAL_PREREQ([zlib])])
185 AC_CHECK_HEADERS(
186   [zlib.h], 
187   [],
188   [HAVE_ZLIB=no
189    PSPP_OPTIONAL_PREREQ([zlib])])
190
191 dnl Avoid interference between zlib's crc32() function and gnulib's
192 dnl crc32() function, which have different signatures.  PSPP calls
193 dnl only gnulib's crc32() directly, but it calls zlib's crc32()
194 dnl indirectly through other zlib calls.  If we don't rename gnulib's
195 dnl crc32(), then zlib will call gnulib's version instead of its own,
196 dnl causing failures.  (This can happen even if zlib isn't detected
197 dnl directly, because other libraries that PSPP uses, e.g. libpng,
198 dnl sometimes use zlib themselves.)
199 AC_DEFINE(
200   [crc32], [gl_crc32],
201   [Avoid making zlib call gnulib's crc32() instead of its own.])
202
203 dnl Gnumeric and OpenDocument (read) support requires libxml2 and zlib.
204 if test $HAVE_LIBXML2 = yes && test $HAVE_ZLIB = yes; then
205   GNM_SUPPORT=yes
206   ODF_READ_SUPPORT=yes
207   AC_DEFINE(
208     [GNM_SUPPORT], [1],
209     [Define to 1 if building in support for reading Gnumeric files.])
210   AC_DEFINE(
211     [ODF_READ_SUPPORT], [1],
212     [Define to 1 if building in support for reading OpenDocument files.])
213 else
214   GNM_SUPPORT=no
215   ODF_READ_SUPPORT=no
216 fi
217 AC_SUBST([GNM_SUPPORT])
218 AC_SUBST([ODF_READ_SUPPORT])
219
220 dnl ODF support requires libxml2 (zlib is optional).
221 if test $HAVE_LIBXML2 = yes; then
222   AC_DEFINE(
223     [ODF_WRITE_SUPPORT], [1],
224     [Define to 1 if building in support for writing OpenDocument files.])
225 fi
226 AM_CONDITIONAL([ODF_WRITE_SUPPORT], [test $HAVE_LIBXML2 = yes])
227
228 AC_ARG_WITH(
229   gui_tools,
230   [AS_HELP_STRING([--with-gui-tools], [build the gui developer tools.  For DEVELOPERS only! There is no reason why users will need this flag.])])
231 if test x"$with_gui_tools" = x"yes" ; then 
232         PKG_CHECK_MODULES(GLADE_UI, gladeui-1.0)
233 fi
234 AM_CONDITIONAL(WITH_GUI_TOOLS, test x"$with_gui_tools" = x"yes")
235
236 AC_ARG_WITH(
237   [perl-module],
238   [AS_HELP_STRING([--without-perl-module], [do not build the Perl module])],
239   [case $with_perl_module in # (
240      yes|no) ;; # (
241      *) AC_MSG_FAILURE([--with-perl-module argument must be 'yes' or 'no']) ;;
242    esac
243    WITH_PERL_MODULE=$with_perl_module],
244   [if test x"$cross_compiling" != x"yes"; then
245      WITH_PERL_MODULE=yes
246    else
247      WITH_PERL_MODULE=no
248    fi])
249 AC_SUBST([WITH_PERL_MODULE])
250 AM_CONDITIONAL(WITH_PERL_MODULE, test $WITH_PERL_MODULE = yes)
251
252 AC_SEARCH_LIBS([cblas_dsdot], [gslcblas],,[PSPP_REQUIRED_PREREQ([libgslcblas])])
253 PKG_CHECK_MODULES([GSL], [gsl >= 1.12], [],
254                          AC_SEARCH_LIBS([gsl_linalg_cholesky_invert], [gsl],,[PSPP_REQUIRED_PREREQ([gsl 2.0 version 1.12 or later])]))
255
256
257 PSPP_GSL_NEEDS_FGNU89_INLINE
258
259 dnl Recent versions of GNU ncurses install the curses header files into
260 dnl /usr/include/ncurses, and provide a 'ncurses5-config' program which
261 dnl enables us to discover where they are. Earlier versions don't have
262 dnl this, so we can't rely on it.  So if ncurses5-config is present,
263 dnl we'll trust it to find the right information.  Otherwise, we'll
264 dnl try to discover it ourselves.
265 dnl To confound things further, Cygwin has decided to rename ncurses5-config
266 dnl to ncurses8-config !!!
267 AC_ARG_WITH(
268   libncurses, 
269   [AS_HELP_STRING([--without-libncurses], [don't compile in ncurses functions])])
270
271 if test x"$with_libncurses" != x"no" ; then
272   if test x"$cross_compiling" != x"yes" ; then
273           AC_CHECK_PROGS([NCURSES_CONFIG], [ncurses5-config ncurses8-config])
274   fi
275   if test x"$NCURSES_CONFIG" = x ; then
276           AC_SEARCH_LIBS([tgetent], [ncurses],
277               [curses_available=yes; AC_CHECK_HEADERS([term.h curses.h],,[curses_available=no])])
278   else
279           old_cflags=$CFLAGS
280           CFLAGS="$CFLAGS `$NCURSES_CONFIG --cflags`"
281           AC_CHECK_HEADERS([term.h curses.h],[curses_available=yes])
282           CFLAGS=$old_cflags
283           if test x"$curses_available" = x"yes" ; then
284            NCURSES_LIBS=`$NCURSES_CONFIG --libs`
285            NCURSES_CFLAGS=`$NCURSES_CONFIG --cflags`
286            AC_SUBST(NCURSES_CFLAGS)
287            AC_SUBST(NCURSES_LIBS)
288           fi
289   fi
290   if test x"$curses_available" = x"yes" ; then
291           AC_DEFINE([LIBNCURSES_USABLE], 1,
292               [Define to 1 if the libncurses is both present and usable.])
293   fi
294   AC_CHECK_HEADERS([termcap.h])
295 fi
296
297 PSPP_READLINE
298
299 dnl Checks for header files.
300 AC_CHECK_HEADERS([sys/wait.h fpu_control.h ieeefp.h fenv.h pwd.h])
301
302 dnl Some systems dont have SIGWINCH
303 AC_CHECK_DECLS([SIGWINCH], [], [],
304           [#include <signal.h>
305           /* NetBSD declares sys_siglist in unistd.h.  */
306           #ifdef HAVE_UNISTD_H
307           # include <unistd.h>
308           #endif
309           ])
310
311
312 # For gnulib.
313 gl_INIT
314
315 AC_C_INLINE
316
317 AC_CHECK_SIZEOF([size_t])
318 SIZEOF_SIZE_T=$ac_cv_sizeof_size_t
319 AC_SUBST([SIZEOF_SIZE_T])
320
321 AC_C_BIGENDIAN
322
323 AC_CHECK_FUNCS([__setfpucw fork execl execlp isinf isnan finite getpid feholdexcept fpsetmask popen round])
324
325 AC_PROG_LN_S
326
327 AC_ARG_ENABLE(
328   debug, 
329   [AS_HELP_STRING([--enable-debug], 
330                   [Turn on diagnostic features in the program])])
331 if test x"$enable_debug" = x"yes"  ; then
332   AC_DEFINE(DEBUGGING, 1, [Define to 1 if debugging is enabled.])
333 fi
334
335 # iconv is required
336 AM_ICONV
337 if test "$am_cv_func_iconv" != "yes"; then
338    PSPP_REQUIRED_PREREQ([iconv (see http://www.gnu.org/software/libiconv/)])
339 fi
340 LIBS="$LIBICONV $LIBS"
341
342 dnl Required by the gnulib 'relocatable-prog' module.
343 dnl See doc/relocatable-maint.texi in the gnulib tree for details.
344 RELOCATABLE_LIBRARY_PATH='$(libdir)'
345 RELOCATABLE_STRIP=:
346
347 PSPP_CHECK_PREREQS
348
349 AC_CONFIG_FILES(
350   [Makefile gl/Makefile po/Makefile tests/atlocal perl-module/lib/PSPP.pm])
351
352 AC_OUTPUT
353 echo "PSPP configured successfully."
354
355 dnl configure.ac ends here