Enable the show value labels feature
[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.10.5pre1], [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 AC_HEADER_TIOCGWINSZ
20 PKG_PROG_PKG_CONFIG
21 m4_pattern_forbid([PKG_CHECK_MODULES])
22 PSPP_CHECK_CLICKSEQUENCE
23 PSPP_CHECK_DOT
24
25 PSPP_ENABLE_WERROR
26
27 AM_CONDITIONAL(cc_is_gcc, test x"$GCC" = x"yes" )
28
29 PSPP_CC_FOR_BUILD
30 PSPP_PERL
31
32 dnl Disable automatic po/ support, because PSPP provides its own po/ support.
33 AC_PROVIDE([AM_PO_SUBDIRS])
34 AM_GNU_GETTEXT([external], [need-ngettext])
35 LIBS="$LIBINTL $LIBS"
36 AC_CHECK_PROGS([MSGFMT], [msgfmt])
37 if test "x$MSGFMT" = x; then
38   PSPP_REQUIRED_PREREQ([msgfmt (is usually provided with gettext)])
39 fi
40
41
42 dnl Checks for libraries.
43 AC_SYS_LARGEFILE
44 AC_SEARCH_LIBS([sin], [m])
45 PSPP_LC_PAPER
46
47
48 AC_ARG_VAR([PSPP_LDFLAGS], [linker flags to be used for linking the pspp binary only])
49 AC_ARG_VAR([PSPPIRE_LDFLAGS], [linker flags to be used for linking the psppire binary only])
50
51 # Support for Cairo and Pango.
52 AC_ARG_WITH([cairo],
53   [AS_HELP_STRING(
54     [--without-cairo], 
55     [Don't build support for charts (using Cairo and Pango);
56      implies --without-gui])],
57   [], [with_cairo=yes])
58 AM_CONDITIONAL([HAVE_CAIRO], [test "$with_cairo" != no])
59 if test "$with_cairo" != no; then
60   PKG_CHECK_MODULES([CAIRO], [cairo >= 1.5 pango >= 1.22 pangocairo],
61     [CPPFLAGS="$CPPFLAGS $CAIRO_CFLAGS"
62      AC_DEFINE([HAVE_CAIRO], 1, 
63        [Define to 1 if Cairo and Pango are available.])],
64     [PSPP_REQUIRED_PREREQ([cairo 1.5 or later and pango 1.22 or later (or use --without-cairo)])])
65 fi
66
67 dnl Xmllint is used in the rules to build the documentation.  It is not actually necessary,
68 dnl but is used for post-build consistency checks.  Thus, non-developers can live without it.
69 dnl However for it to be useful, it needs to be a certain version and have certain features.
70 dnl The macros below check that it the xmllint available is up to scratch.  If it isn't
71 dnl then a dummy /bin/echo is subsituted instead.
72
73 AC_CACHE_CHECK([for an xmllint program which fits our needs],[ac_cv_path_XMLLINT],
74 [AC_PATH_PROGS_FEATURE_CHECK([XMLLINT], [xmllint], 
75   [[$ac_path_XMLLINT --version 2>&1 | $GREP XPath > /dev/null && 
76     test `$ac_path_XMLLINT --version 2>&1 | $SED 's/^.* \([0-9]*\).*/\1/'` -gt 20900 &&
77     ac_cv_path_XMLLINT=$ac_path_XMLLINT]],
78    [AC_MSG_WARN([no appropriate xmllint program found. Using a dummy (echo)]); ac_cv_path_XMLLINT=$ECHO])])
79
80 AC_SUBST([XMLLINT],[$ac_cv_path_XMLLINT])
81
82 # Support for GUI.
83 AC_ARG_WITH([gui], 
84   [AS_HELP_STRING([--without-gui], 
85                   [Don't build the PSPPIRE GUI (using GTK+)])],
86   [], [with_gui=yes])
87 AM_CONDITIONAL([HAVE_GUI], 
88                [test "$with_cairo" != no && test "$with_gui" != "no"])
89 if test "$with_cairo" != no && test "$with_gui" != "no"; then
90   PKG_CHECK_MODULES([GTHREAD], [gthread-2.0], [],
91     [PSPP_REQUIRED_PREREQ([gthread 2.0 (or use --without-gui)])])
92
93   PKG_CHECK_MODULES([GTK], [gtk+-3.0 >= 3.14.5], [],
94     [PSPP_REQUIRED_PREREQ([gtk+ 3.0 version 3.14.5 or later (or use --without-gui)])])
95
96   PKG_CHECK_MODULES([GTKSOURCEVIEW], [gtksourceview-3.0 >= 3.4.2], [],
97     [PSPP_REQUIRED_PREREQ([gtksourceview 3.0 version 3.4.2 or later (or use --without-gui)])])
98
99   PKG_CHECK_MODULES([GLIB], [glib-2.0 >= 2.44], [],
100     [PSPP_REQUIRED_PREREQ([glib 2.0 version 2.44 or later (or use --without-gui)])])
101
102   PKG_CHECK_MODULES([SPREAD_SHEET_WIDGET], [spread-sheet-widget >= 0.0], [],
103     [PSPP_REQUIRED_PREREQ([spread-sheet-widget 0.0 (or use --without-gui)])])
104
105   AC_ARG_VAR([GLIB_GENMARSHAL])
106   AC_CHECK_PROGS([GLIB_GENMARSHAL], [glib-genmarshal])
107   if test "x$GLIB_GENMARSHAL" = x; then
108     PSPP_REQUIRED_PREREQ([glib-genmarshal (or use --without-gui)])
109   fi
110
111   AC_CHECK_PROGS([GLIB_COMPILE_RESOURCES], [glib-compile-resources])
112   if test "x$GLIB_COMPILE_RESOURCES" = x; then
113     PSPP_REQUIRED_PREREQ([glib-compile-resources (or use --without-gui)])
114   fi
115
116 fi
117
118 gl_NEXT_HEADERS([gtk/gtk.h])
119
120 dnl Checks needed for psql reader
121
122 dnl The 8.x series postgres tarballs installs with a default prefix of
123 dnl /usr/local/pgsql whereas, OSes (such as debian)  install into /usr .
124
125 dnl If the libpq.so file is in a non standard path, (one which the linker
126 dnl doesn't search) then we must set the PG_LDFLAGS to -R/usr/wherever/
127 dnl However, if the system happens to have more than one version of other
128 dnl dependent libraries (eg. libgtk) in different standard paths. (eg:
129 dnl /usr and /usr/local) then the wrong one may get linked. 
130
131 dnl To overcome this, we first check for libpq in the standard places, and
132 dnl only set PG_LDFLAGS if it's not found.
133
134
135 AC_ARG_WITH(
136   libpq, 
137   [AS_HELP_STRING([--without-libpq], [don't compile in Postgres capability])])
138 AC_ARG_VAR([PG_CONFIG], 
139            [Full pathname of the pg_config program shipped with Postgresql])
140 AC_PATH_PROG([PG_CONFIG], [pg_config], [], 
141              [$PATH:/usr/local/pgsql/bin:/usr/pgsql/bin])
142
143 if test x"$with_libpq" != x"no" && test -n "$PG_CONFIG" ; then 
144   AC_SUBST(PG_CONFIG)
145   PG_CFLAGS=-I`$PG_CONFIG --includedir` 
146   AC_SUBST(PG_CFLAGS)
147
148   AC_CHECK_LIB([pq], [PQexec],
149      [:], 
150      [PG_LDFLAGS="-L`$PG_CONFIG --libdir` -R`$PG_CONFIG --libdir`"])
151   AC_SUBST(PG_LDFLAGS)
152
153   PG_LIBS=-lpq
154   AC_SUBST(PG_LIBS)
155
156   PKG_CHECK_EXISTS(libssl,
157         AC_DEFINE([USE_SSL],1,
158                    [Define to 1 if the openssl library is present.])
159            ,)
160
161   # Now verify that we can actually link against libpq.  If we are
162   # cross-compiling and picked up a host libpq, or if libpq is just
163   # badly installed, this will fail.
164   AC_CACHE_CHECK(
165     [whether -lpq links successfully],
166     [pspp_cv_have_libpq],
167     [save_CPPFLAGS=$CPPFLAGS
168      save_LIBS=$LIBS
169      save_LDFLAGS=$LDFLAGS
170      CPPFLAGS="$PG_CFLAGS $CPPFLAGS"
171      LIBS="$PG_LIBS $LIBS"
172      LDFLAGS="$PG_LDFLAGS $LDFLAGS"
173      AC_LINK_IFELSE(
174        [AC_LANG_PROGRAM(
175          [#include <libpq-fe.h>
176          ], [PQfinish (0);])],
177        [pspp_cv_have_libpq=yes],
178        [pspp_cv_have_libpq=no])
179      CPPFLAGS=$save_CPPFLAGS
180      LIBS=$save_LIBS
181      LDFLAGS=$save_LDFLAGS])
182
183   if test $pspp_cv_have_libpq = yes; then
184     PSQL_SUPPORT=yes
185     AC_DEFINE([PSQL_SUPPORT], [1],
186       [Define to 1 if building in support for reading from postgres
187        databases.])
188   else
189     PSQL_SUPPORT=no
190     PG_CONFIG=
191     PG_CFLAGS=
192     PG_LDFLAGS=
193     PG_LIBS=
194   fi
195 else
196   PSQL_SUPPORT=no
197   pspp_cv_have_libpq=no
198 fi
199 AC_SUBST([PSQL_SUPPORT])
200
201 dnl Check for libxml2
202 PKG_CHECK_MODULES(
203   [LIBXML2], [libxml-2.0], 
204   [HAVE_LIBXML2=yes],
205   [HAVE_LIBXML2=no
206    PSPP_OPTIONAL_PREREQ([libxml2])])
207
208 dnl Check for zlib.
209 AC_SEARCH_LIBS([gzopen], [z], [], [PSPP_REQUIRED_PREREQ([zlib])])
210 AC_CHECK_HEADERS([zlib.h], [], [PSPP_REQUIRED_PREREQ([zlib])])
211
212 dnl Avoid interference between zlib's crc32() function and gnulib's
213 dnl crc32() function, which have different signatures.  PSPP calls
214 dnl only gnulib's crc32() directly, but it calls zlib's crc32()
215 dnl indirectly through other zlib calls.  If we don't rename gnulib's
216 dnl crc32(), then zlib will call gnulib's version instead of its own,
217 dnl causing failures.  (This can happen even if zlib isn't detected
218 dnl directly, because other libraries that PSPP uses, e.g. libpng,
219 dnl sometimes use zlib themselves.)
220 AC_DEFINE(
221   [crc32], [gl_crc32],
222   [Avoid making zlib call gnulib's crc32() instead of its own.])
223
224 dnl Gnumeric and OpenDocument (read) support requires libxml2 and zlib.
225 if test $HAVE_LIBXML2 = yes; then
226   GNM_READ_SUPPORT=yes
227   ODF_READ_SUPPORT=yes
228   AC_DEFINE(
229     [GNM_READ_SUPPORT], [1],
230     [Define to 1 if building in support for reading Gnumeric files.])
231   AC_DEFINE(
232     [ODF_READ_SUPPORT], [1],
233     [Define to 1 if building in support for reading OpenDocument files.])
234 else
235   GNM_READ_SUPPORT=no
236   ODF_READ_SUPPORT=no
237 fi
238 AC_SUBST([GNM_READ_SUPPORT])
239 AC_SUBST([ODF_READ_SUPPORT])
240
241 dnl ODF support requires libxml2 (zlib is optional).
242 if test $HAVE_LIBXML2 = yes; then
243   AC_DEFINE(
244     [ODF_WRITE_SUPPORT], [1],
245     [Define to 1 if building in support for writing OpenDocument files.])
246 fi
247 AM_CONDITIONAL([ODF_WRITE_SUPPORT], [test $HAVE_LIBXML2 = yes])
248
249 AC_ARG_WITH(
250   gui_tools,
251   [AS_HELP_STRING([--with-gui-tools], [build the gui developer tools.  For DEVELOPERS only! There is no reason why users will need this flag.])])
252 if test x"$with_gui_tools" = x"yes" ; then 
253         PKG_CHECK_MODULES(GLADE_UI, gladeui-2.0)
254 fi
255 AM_CONDITIONAL(WITH_GUI_TOOLS, test x"$with_gui_tools" = x"yes")
256
257 AC_ARG_WITH(
258   [perl-module],
259   [AS_HELP_STRING([--without-perl-module], [do not build the Perl module])],
260   [case $with_perl_module in # (
261      yes|no) ;; # (
262      *) AC_MSG_FAILURE([--with-perl-module argument must be 'yes' or 'no']) ;;
263    esac
264    WITH_PERL_MODULE=$with_perl_module],
265   [if test x"$cross_compiling" != x"yes"; then
266      WITH_PERL_MODULE=yes
267    else
268      WITH_PERL_MODULE=no
269    fi])
270 AC_SUBST([WITH_PERL_MODULE])
271 AM_CONDITIONAL(WITH_PERL_MODULE, test $WITH_PERL_MODULE = yes)
272
273 AC_SEARCH_LIBS([cblas_dsdot], [gslcblas],,[PSPP_REQUIRED_PREREQ([libgslcblas])])
274 PKG_CHECK_MODULES([GSL], [gsl >= 1.13], [],
275                          AC_SEARCH_LIBS([gsl_poly_eval_derivs], [gsl],,[PSPP_REQUIRED_PREREQ([gsl version 1.13 or later])]))
276
277
278 PSPP_GSL_NEEDS_FGNU89_INLINE
279
280 PSPP_READLINE
281
282 dnl Checks for header files.
283 AC_CHECK_HEADERS([sys/wait.h fpu_control.h ieeefp.h fenv.h pwd.h])
284
285 dnl Some systems don't have SIGWINCH
286 AC_CHECK_DECLS([SIGWINCH], [], [],
287           [#include <signal.h>
288           /* NetBSD declares sys_siglist in unistd.h.  */
289           #ifdef HAVE_UNISTD_H
290           # include <unistd.h>
291           #endif
292           ])
293
294
295 # For gnulib.
296 gl_INIT
297
298 AC_C_INLINE
299
300 AC_C_BIGENDIAN
301
302 AC_CHECK_FUNCS([__setfpucw fork execl isinf isnan finite getpid feholdexcept fpsetmask popen round])
303
304 AC_PROG_LN_S
305
306 AC_ARG_ENABLE(
307   debug, 
308   [AS_HELP_STRING([--enable-debug], 
309                   [Turn on diagnostic features in the program])])
310 if test x"$enable_debug" = x"yes"  ; then
311   AC_DEFINE(DEBUGGING, 1, [Define to 1 if debugging is enabled.])
312 fi
313
314 # iconv is required
315 AM_ICONV
316 if test "$am_cv_func_iconv" != "yes"; then
317    PSPP_REQUIRED_PREREQ([iconv (see http://www.gnu.org/software/libiconv/)])
318 fi
319 LIBS="$LIBICONV $LIBS"
320
321 dnl Required by the gnulib 'relocatable-prog' module.
322 dnl See doc/relocatable-maint.texi in the gnulib tree for details.
323 RELOCATABLE_LIBRARY_PATH='$(pkglibdir)'
324 RELOCATABLE_STRIP=:
325
326 PSPP_CHECK_PREREQS
327
328 AC_CONFIG_FILES(
329   [Makefile gl/Makefile po/Makefile tests/atlocal perl-module/lib/PSPP.pm])
330
331 AC_CONFIG_COMMANDS([doc/dummy], [:])
332
333 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES])
334
335 AC_OUTPUT
336 echo "PSPP configured successfully."
337
338 dnl configure.ac ends here