1 dnl Process this file with autoconf to produce a configure script.
5 AC_INIT([GNU PSPP], [0.7.9], [bug-gnu-pspp@gnu.org], [pspp])
6 AC_CONFIG_AUX_DIR([build-aux])
7 AC_CONFIG_HEADERS([config.h])
8 AC_CONFIG_TESTDIR([tests])
11 dnl Checks for programs.
20 m4_pattern_forbid([PKG_CHECK_MODULES])
21 PSPP_CHECK_CLICKSEQUENCE
24 anachronistic-dependencies,
25 [AS_HELP_STRING([--enable-anachronistic-dependencies],
26 [Attempt to allow building against older versions of dependent libraries])])
28 PSPP_ENABLE_OPTION(-Wdeclaration-after-statement)
31 AM_CONDITIONAL(cc_is_gcc, test x"$GCC" = x"yes" )
36 dnl Disable automatic po/ support, because PSPP provides its own po/ support.
37 AC_PROVIDE([AM_PO_SUBDIRS])
38 AM_GNU_GETTEXT([external], [need-ngettext])
41 dnl Checks for libraries.
43 AC_SEARCH_LIBS([sin], [m])
47 AC_ARG_VAR([PSPP_LDFLAGS], [linker flags to be used for linking the pspp binary only])
48 AC_ARG_VAR([PSPPIRE_LDFLAGS], [linker flags to be used for linking the psppire binary only])
50 # Support for Cairo and Pango.
54 [Don't build support for charts (using Cairo and Pango);
55 implies --without-gui])],
57 AM_CONDITIONAL([HAVE_CAIRO], [test "$with_cairo" != no])
58 if test "$with_cairo" != no; then
59 PKG_CHECK_MODULES([CAIRO], [cairo >= 1.5 pango >= 1.20 pangocairo],
60 [CPPFLAGS="$CPPFLAGS $CAIRO_CFLAGS"
61 AC_DEFINE([HAVE_CAIRO], 1,
62 [Define to 1 if Cairo and Pango are available.])],
63 [PSPP_REQUIRED_PREREQ([cairo 1.5 or later and pango 1.20 or later (or use --without-cairo)])])
64 AC_PATH_PROG([XMLLINT], [xmllint], [echo], [$PATH])
70 [AS_HELP_STRING([--without-gui],
71 [Don't build the PSPPIRE GUI (using GTK+)])],
73 AM_CONDITIONAL([HAVE_GUI],
74 [test "$with_cairo" != no && test "$with_gui" != "no"])
75 if test "$with_cairo" != no && test "$with_gui" != "no"; then
76 PKG_CHECK_MODULES([GTHREAD], [gthread-2.0], [],
77 [PSPP_REQUIRED_PREREQ([gthread 2.0 (or use --without-gui)])])
79 PKG_CHECK_MODULES([GTK], [gtk+-2.0 >= 2.16], [],
80 [PSPP_REQUIRED_PREREQ([gtk+ 2.0 version 2.16 or later (or use --without-gui)])])
82 PKG_CHECK_MODULES([GTKSOURCEVIEW], [gtksourceview-2.0 >= 2.2], [],
83 [PSPP_REQUIRED_PREREQ([gtksourceview 2.0 version 2.2 or later (or use --without-gui)])])
85 AC_ARG_VAR([GLIB_GENMARSHAL])
86 AC_CHECK_PROGS([GLIB_GENMARSHAL], [glib-genmarshal])
87 if test "x$GLIB_GENMARSHAL" = x; then
88 PSPP_REQUIRED_PREREQ([glib-genmarshal (or use --without-gui)])
93 gl_NEXT_HEADERS([gtk/gtk.h])
95 dnl Checks needed for psql reader
97 dnl The 8.x series postgres tarballs installs with a default prefix of
98 dnl /usr/local/pgsql whereas, OSes (such as debian) install into /usr .
100 dnl If the libpq.so file is in a non standard path, (one which the linker
101 dnl doesn't search) then we must set the PG_LDFLAGS to -R/usr/wherever/
102 dnl However, if the system happens to have more than one version of other
103 dnl dependent libraries (eg. libgtk) in different standard paths. (eg:
104 dnl /usr and /usr/local) then the wrong one may get linked.
106 dnl To overcome this, we first check for libpq in the standard places, and
107 dnl only set PG_LDFLAGS if it's not found.
112 [AS_HELP_STRING([--without-libpq], [don't compile in Postgres capability])])
113 AC_ARG_VAR([PG_CONFIG],
114 [Full pathname of the pg_config program shipped with Postgresql])
115 AC_PATH_PROG([PG_CONFIG], [pg_config], [],
116 [$PATH:/usr/local/pgsql/bin:/usr/pgsql/bin])
118 if test x"$with_libpq" != x"no" && test -n "$PG_CONFIG" ; then
120 PG_CFLAGS=-I`$PG_CONFIG --includedir`
123 AC_CHECK_LIB([pq], [PQexec],
125 [PG_LDFLAGS="-L`$PG_CONFIG --libdir` -R`$PG_CONFIG --libdir`"])
131 PKG_CHECK_EXISTS(libssl,
132 AC_DEFINE([USE_SSL],1,
133 [Define to 1 if the openssl library is present.])
136 # Now verify that we can actually link against libpq. If we are
137 # cross-compiling and picked up a host libpq, or if libpq is just
138 # badly installed, this will fail.
140 [whether -lpq links successfully],
141 [pspp_cv_have_libpq],
142 [save_CPPFLAGS=$CPPFLAGS
144 save_LDFLAGS=$LDFLAGS
145 CPPFLAGS="$PG_CFLAGS $CPPFLAGS"
146 LIBS="$PG_LIBS $LIBS"
147 LDFLAGS="$PG_LDFLAGS $LDFLAGS"
150 [#include <libpq-fe.h>
151 ], [PQfinish (0);])],
152 [pspp_cv_have_libpq=yes],
153 [pspp_cv_have_libpq=no])
154 CPPFLAGS=$save_CPPFLAGS
156 LDFLAGS=$save_LDFLAGS])
158 if test $pspp_cv_have_libpq = yes; then
160 AC_DEFINE([PSQL_SUPPORT], [1],
161 [Define to 1 if building in support for reading from postgres
172 pspp_cv_have_libpq=no
174 AC_SUBST([PSQL_SUPPORT])
176 dnl Check for libxml2
178 [LIBXML2], [libxml-2.0],
181 PSPP_OPTIONAL_PREREQ([libxml2])])
188 PSPP_OPTIONAL_PREREQ([zlib])])
193 PSPP_OPTIONAL_PREREQ([zlib])])
195 dnl Avoid interference between zlib's crc32() function and gnulib's
196 dnl crc32() function, which have different signatures. PSPP calls
197 dnl only gnulib's crc32() directly, but it calls zlib's crc32()
198 dnl indirectly through other zlib calls. If we don't rename gnulib's
199 dnl crc32(), then zlib will call gnulib's version instead of its own,
200 dnl causing failures. (This can happen even if zlib isn't detected
201 dnl directly, because other libraries that PSPP uses, e.g. libpng,
202 dnl sometimes use zlib themselves.)
205 [Avoid making zlib call gnulib's crc32() instead of its own.])
207 dnl Gnumeric and OpenDocument (read) support requires libxml2 and zlib.
208 if test $HAVE_LIBXML2 = yes && test $HAVE_ZLIB = yes; then
213 [Define to 1 if building in support for reading Gnumeric files.])
215 [ODF_READ_SUPPORT], [1],
216 [Define to 1 if building in support for reading OpenDocument files.])
221 AC_SUBST([GNM_SUPPORT])
222 AC_SUBST([ODF_READ_SUPPORT])
224 dnl ODF support requires libxml2 (zlib is optional).
225 if test $HAVE_LIBXML2 = yes; then
227 [ODF_WRITE_SUPPORT], [1],
228 [Define to 1 if building in support for writing OpenDocument files.])
230 AM_CONDITIONAL([ODF_WRITE_SUPPORT], [test $HAVE_LIBXML2 = yes])
234 [AS_HELP_STRING([--with-gui-tools], [build the gui developer tools. For DEVELOPERS only! There is no reason why users will need this flag.])])
235 if test x"$with_gui_tools" = x"yes" ; then
236 PKG_CHECK_MODULES(GLADE_UI, gladeui-1.0)
238 AM_CONDITIONAL(WITH_GUI_TOOLS, test x"$with_gui_tools" = x"yes")
242 [AS_HELP_STRING([--without-perl-module], [do not build the Perl module])],
243 [case $with_perl_module in # (
245 *) AC_MSG_FAILURE([--with-perl-module argument must be 'yes' or 'no']) ;;
247 WITH_PERL_MODULE=$with_perl_module],
248 [if test x"$cross_compiling" != x"yes"; then
253 AC_SUBST([WITH_PERL_MODULE])
254 AM_CONDITIONAL(WITH_PERL_MODULE, test $WITH_PERL_MODULE = yes)
256 AC_SEARCH_LIBS([cblas_dsdot], [gslcblas],,[PSPP_REQUIRED_PREREQ([libgslcblas])])
257 PKG_CHECK_MODULES([GSL], [gsl >= 1.12], [],
258 AC_SEARCH_LIBS([gsl_linalg_cholesky_invert], [gsl],,[PSPP_REQUIRED_PREREQ([gsl 2.0 version 1.12 or later])]))
261 PSPP_GSL_NEEDS_FGNU89_INLINE
263 dnl Recent versions of GNU ncurses install the curses header files into
264 dnl /usr/include/ncurses, and provide a 'ncurses5-config' program which
265 dnl enables us to discover where they are. Earlier versions don't have
266 dnl this, so we can't rely on it. So if ncurses5-config is present,
267 dnl we'll trust it to find the right information. Otherwise, we'll
268 dnl try to discover it ourselves.
269 dnl To confound things further, Cygwin has decided to rename ncurses5-config
270 dnl to ncurses8-config !!!
273 [AS_HELP_STRING([--without-libncurses], [don't compile in ncurses functions])])
275 if test x"$with_libncurses" != x"no" ; then
276 if test x"$cross_compiling" != x"yes" ; then
277 AC_CHECK_PROGS([NCURSES_CONFIG], [ncurses5-config ncurses8-config])
279 if test x"$NCURSES_CONFIG" = x ; then
280 AC_SEARCH_LIBS([tgetent], [ncurses],
281 [curses_available=yes; AC_CHECK_HEADERS([term.h curses.h],,[curses_available=no])])
284 CFLAGS="$CFLAGS `$NCURSES_CONFIG --cflags`"
285 AC_CHECK_HEADERS([term.h curses.h],[curses_available=yes])
287 if test x"$curses_available" = x"yes" ; then
288 NCURSES_LIBS=`$NCURSES_CONFIG --libs`
289 NCURSES_CFLAGS=`$NCURSES_CONFIG --cflags`
290 AC_SUBST(NCURSES_CFLAGS)
291 AC_SUBST(NCURSES_LIBS)
294 if test x"$curses_available" = x"yes" ; then
295 AC_DEFINE([LIBNCURSES_USABLE], 1,
296 [Define to 1 if the libncurses is both present and usable.])
298 AC_CHECK_HEADERS([termcap.h])
303 dnl Checks for header files.
304 AC_CHECK_HEADERS([sys/wait.h fpu_control.h ieeefp.h fenv.h pwd.h])
306 dnl Some systems dont have SIGWINCH
307 AC_CHECK_DECLS([SIGWINCH], [], [],
309 /* NetBSD declares sys_siglist in unistd.h. */
321 AC_CHECK_SIZEOF([size_t])
322 SIZEOF_SIZE_T=$ac_cv_sizeof_size_t
323 AC_SUBST([SIZEOF_SIZE_T])
327 AC_CHECK_FUNCS([__setfpucw fork execl execlp isinf isnan finite getpid feholdexcept fpsetmask popen round])
333 [AS_HELP_STRING([--enable-debug],
334 [Turn on diagnostic features in the program])])
335 if test x"$enable_debug" = x"yes" ; then
336 AC_DEFINE(DEBUGGING, 1, [Define to 1 if debugging is enabled.])
341 if test "$am_cv_func_iconv" != "yes"; then
342 PSPP_REQUIRED_PREREQ([iconv (see http://www.gnu.org/software/libiconv/)])
344 LIBS="$LIBICONV $LIBS"
346 dnl Required by the gnulib 'relocatable-prog' module.
347 dnl See doc/relocatable-maint.texi in the gnulib tree for details.
348 RELOCATABLE_LIBRARY_PATH='$(pkglibdir)'
354 [Makefile gl/Makefile po/Makefile tests/atlocal perl-module/lib/PSPP.pm])
357 echo "PSPP configured successfully."
359 dnl configure.ac ends here