1 dnl PSPP - a program for statistical analysis.
2 dnl Copyright (C) 2017 Free Software Foundation, Inc.
4 dnl This program is free software: you can redistribute it and/or modify
5 dnl it under the terms of the GNU General Public License as published by
6 dnl the Free Software Foundation, either version 3 of the License, or
7 dnl (at your option) any later version.
9 dnl This program is distributed in the hope that it will be useful,
10 dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
11 dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 dnl GNU General Public License for more details.
14 dnl You should have received a copy of the GNU General Public License
15 dnl along with this program. If not, see <http://www.gnu.org/licenses/>.
17 dnl Process this file with autoconf to produce a configure script.
21 AC_INIT([GNU PSPP], [1.5.0], [bug-gnu-pspp@gnu.org], [pspp])
22 AC_CONFIG_AUX_DIR([build-aux])
23 AC_CONFIG_HEADERS([config.h])
24 AC_CONFIG_TESTDIR([tests])
25 AM_INIT_AUTOMAKE([tar-ustar])
27 dnl Checks for programs.
37 m4_pattern_forbid([PKG_CHECK_MODULES])
38 PSPP_CHECK_CLICKSEQUENCE
39 PSPP_CHECK_MAKEINFO_DOCBOOK_XML
44 AM_CONDITIONAL(cc_is_gcc, test x"$GCC" = x"yes" )
50 # This suppresses an error in gl/careadlinkat.c that otherwise can't be
51 # avoided in GCC 10.x:
52 # ../../gl/careadlinkat.c: In function ‘careadlinkat’:
53 # cc1: error: function may return address of local variable
54 CFLAGS="$CFLAGS -DGCC_LINT"
56 dnl Disable automatic po/ support, because PSPP provides its own po/ support.
57 AC_PROVIDE([AM_PO_SUBDIRS])
58 AM_GNU_GETTEXT([external], [need-ngettext])
60 AC_CHECK_PROGS([MSGFMT], [msgfmt])
61 if test "x$MSGFMT" = x; then
62 PSPP_REQUIRED_PREREQ([msgfmt (is usually provided with gettext)])
66 dnl Checks for libraries.
68 AC_SEARCH_LIBS([sin], [m])
72 AC_ARG_VAR([PSPP_LDFLAGS], [linker flags to be used for linking the pspp binary only])
73 AC_ARG_VAR([PSPPIRE_LDFLAGS], [linker flags to be used for linking the psppire binary only])
75 # Support for Cairo and Pango.
79 [Don't build support for charts (using Cairo and Pango);
80 implies --without-gui])],
82 AM_CONDITIONAL([HAVE_CAIRO], [test "$with_cairo" != no])
83 if test "$with_cairo" != no; then
84 PKG_CHECK_MODULES([CAIRO], [cairo >= 1.5 pango >= 1.22 pangocairo],
85 [CPPFLAGS="$CPPFLAGS $CAIRO_CFLAGS"
86 AC_DEFINE([HAVE_CAIRO], 1,
87 [Define to 1 if Cairo and Pango are available.])],
88 [PSPP_REQUIRED_PREREQ([cairo 1.5 or later and pango 1.22 or later (or use --without-cairo)])])
91 dnl One of the tests uses xmllint.
92 AC_CACHE_CHECK([for an xmllint program which fits our needs],[ac_cv_path_XMLLINT],
93 [AC_PATH_PROGS_FEATURE_CHECK([XMLLINT], [xmllint],
94 [[$ac_path_XMLLINT --version 2>&1 | $GREP XPath > /dev/null &&
95 test `$ac_path_XMLLINT --version 2>&1 | $SED 's/^.* \([0-9]*\).*/\1/'` -gt 20900 &&
96 ac_cv_path_XMLLINT=$ac_path_XMLLINT]],
97 [AC_MSG_WARN([no appropriate xmllint program found. Using a dummy (echo)]); ac_cv_path_XMLLINT=$ECHO])])
99 AC_SUBST([XMLLINT],[$ac_cv_path_XMLLINT])
103 [AS_HELP_STRING([--without-gui],
104 [Don't build the PSPPIRE GUI (using GTK+)])],
106 AM_CONDITIONAL([HAVE_GUI],
107 [test "$with_cairo" != no && test "$with_gui" != "no"])
108 if test "$with_cairo" != no && test "$with_gui" != "no"; then
109 PKG_CHECK_MODULES([GTHREAD], [gthread-2.0], [],
110 [PSPP_REQUIRED_PREREQ([gthread 2.0 (or use --without-gui)])])
112 PKG_CHECK_MODULES([GTK], [gtk+-3.0 >= 3.22.0], [],
113 [PSPP_REQUIRED_PREREQ([gtk+ 3.0 version 3.22.0 or later (or use --without-gui)])])
115 PKG_CHECK_MODULES([GTKSOURCEVIEW], [gtksourceview-3.0 >= 3.4.2], [],
116 [PSPP_REQUIRED_PREREQ([gtksourceview 3.0 version 3.4.2 or later (or use --without-gui)])])
118 PKG_CHECK_MODULES([GLIB], [glib-2.0 >= 2.44], [],
119 [PSPP_REQUIRED_PREREQ([glib 2.0 version 2.44 or later (or use --without-gui)])])
121 PKG_CHECK_MODULES([SPREAD_SHEET_WIDGET], [spread-sheet-widget >= 0.6], [],
122 [PSPP_REQUIRED_PREREQ([spread-sheet-widget 0.6 (or use --without-gui)])])
124 AC_ARG_VAR([GLIB_GENMARSHAL])
125 AC_CHECK_PROGS([GLIB_GENMARSHAL], [glib-genmarshal])
126 if test "x$GLIB_GENMARSHAL" = x; then
127 PSPP_REQUIRED_PREREQ([glib-genmarshal (or use --without-gui)])
130 AC_CHECK_PROGS([GLIB_COMPILE_RESOURCES], [glib-compile-resources])
131 if test "x$GLIB_COMPILE_RESOURCES" = x; then
132 PSPP_REQUIRED_PREREQ([glib-compile-resources (or use --without-gui)])
137 gl_NEXT_HEADERS([gtk/gtk.h])
139 dnl Checks needed for psql reader
141 dnl The 8.x series postgres tarballs installs with a default prefix of
142 dnl /usr/local/pgsql whereas, OSes (such as debian) install into /usr .
144 dnl If the libpq.so file is in a non standard path, (one which the linker
145 dnl doesn't search) then we must set the PG_LDFLAGS to -R/usr/wherever/
146 dnl However, if the system happens to have more than one version of other
147 dnl dependent libraries (eg. libgtk) in different standard paths. (eg:
148 dnl /usr and /usr/local) then the wrong one may get linked.
150 dnl To overcome this, we first check for libpq in the standard places, and
151 dnl only set PG_LDFLAGS if it's not found.
156 [AS_HELP_STRING([--without-libpq], [don't compile in Postgres capability])])
157 AC_ARG_VAR([PG_CONFIG],
158 [Full pathname of the pg_config program shipped with Postgresql])
159 AC_PATH_PROG([PG_CONFIG], [pg_config], [],
160 [$PATH:/usr/local/pgsql/bin:/usr/pgsql/bin])
162 if test x"$with_libpq" != x"no" && test -n "$PG_CONFIG" ; then
164 PG_CFLAGS=-I`$PG_CONFIG --includedir`
167 AC_CHECK_LIB([pq], [PQexec],
169 [PG_LDFLAGS="-L`$PG_CONFIG --libdir` -R`$PG_CONFIG --libdir`"])
175 PKG_CHECK_EXISTS(libssl,
176 AC_DEFINE([USE_SSL],1,
177 [Define to 1 if the openssl library is present.])
180 # Now verify that we can actually link against libpq. If we are
181 # cross-compiling and picked up a host libpq, or if libpq is just
182 # badly installed, this will fail.
184 [whether -lpq links successfully],
185 [pspp_cv_have_libpq],
186 [save_CPPFLAGS=$CPPFLAGS
188 save_LDFLAGS=$LDFLAGS
189 CPPFLAGS="$PG_CFLAGS $CPPFLAGS"
190 LIBS="$PG_LIBS $LIBS"
191 LDFLAGS="$PG_LDFLAGS $LDFLAGS"
194 [#include <libpq-fe.h>
195 ], [PQfinish (0);])],
196 [pspp_cv_have_libpq=yes],
197 [pspp_cv_have_libpq=no])
198 CPPFLAGS=$save_CPPFLAGS
200 LDFLAGS=$save_LDFLAGS])
202 if test $pspp_cv_have_libpq = yes; then
204 AC_DEFINE([PSQL_SUPPORT], [1],
205 [Define to 1 if building in support for reading from postgres
216 pspp_cv_have_libpq=no
218 AC_SUBST([PSQL_SUPPORT])
220 dnl Check for libxml2
222 [LIBXML2], [libxml-2.0], [], [PSPP_REQUIRED_PREREQ([libxml2])])
225 AC_SEARCH_LIBS([gzopen], [z], [], [PSPP_REQUIRED_PREREQ([zlib])])
226 AC_CHECK_HEADERS([zlib.h], [], [PSPP_REQUIRED_PREREQ([zlib])])
228 dnl Avoid interference between zlib's crc32() function and gnulib's
229 dnl crc32() function, which have different signatures. PSPP calls
230 dnl only gnulib's crc32() directly, but it calls zlib's crc32()
231 dnl indirectly through other zlib calls. If we don't rename gnulib's
232 dnl crc32(), then zlib will call gnulib's version instead of its own,
233 dnl causing failures. (This can happen even if zlib isn't detected
234 dnl directly, because other libraries that PSPP uses, e.g. libpng,
235 dnl sometimes use zlib themselves.)
238 [Avoid making zlib call gnulib's crc32() instead of its own.])
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.13], [],
258 AC_SEARCH_LIBS([gsl_poly_eval_derivs], [gsl],,[PSPP_REQUIRED_PREREQ([gsl version 1.13 or later])]))
261 PSPP_GSL_NEEDS_FGNU89_INLINE
265 dnl Checks for header files.
266 AC_CHECK_HEADERS([sys/wait.h fpu_control.h ieeefp.h fenv.h pwd.h])
268 dnl Some systems don't have SIGWINCH
269 AC_CHECK_DECLS([SIGWINCH], [], [],
271 /* NetBSD declares sys_siglist in unistd.h. */
285 AC_CHECK_FUNCS([__setfpucw fork execl isinf isnan finite getpid feholdexcept fpsetmask popen round])
291 [AS_HELP_STRING([--enable-debug],
292 [Turn on diagnostic features in the program])])
293 if test x"$enable_debug" = x"yes" ; then
294 AC_DEFINE(DEBUGGING, 1, [Define to 1 if debugging is enabled.])
299 if test "$am_cv_func_iconv" != "yes"; then
300 PSPP_REQUIRED_PREREQ([iconv (see http://www.gnu.org/software/libiconv/)])
302 LIBS="$LIBICONV $LIBS"
304 dnl Required by the gnulib 'relocatable-prog' module.
305 dnl See doc/relocatable-maint.texi in the gnulib tree for details.
306 RELOCATABLE_LIBRARY_PATH='$(pkglibdir)'
312 [Makefile gl/Makefile po/Makefile tests/atlocal perl-module/lib/PSPP.pm])
314 AC_CONFIG_COMMANDS([doc/dummy], [:])
316 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES])
319 echo "PSPP configured successfully."
321 dnl configure.ac ends here