configure.ac: Restore use of AM_GNU_GETTEXT.
[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.4], [bug-gnu-pspp@gnu.org], [pspp])
6 AC_CONFIG_HEADERS([config.h])
7 AC_CONFIG_TESTDIR([tests])
8 AM_INIT_AUTOMAKE
9
10 dnl Checks for programs.
11 AC_GNU_SOURCE
12 AC_PROG_CC
13 gl_EARLY
14 AM_PROG_CC_C_O
15 AC_LIBTOOL_WIN32_DLL
16 AC_LIBTOOL_DLOPEN
17 AC_PROG_LIBTOOL
18 PKG_PROG_PKG_CONFIG
19 m4_pattern_forbid([PKG_CHECK_MODULES])
20 PSPP_CHECK_CLICKSEQUENCE
21
22 AC_ARG_ENABLE(
23   anachronistic-dependencies, 
24   [AS_HELP_STRING([--enable-anachronistic-dependencies], 
25                   [Attempt to allow building against older versions of dependent libraries])])
26
27 PSPP_ENABLE_OPTION(-Wdeclaration-after-statement)
28
29 AM_CONDITIONAL(cc_is_gcc, test x"$GCC" = x"yes" )
30
31 PSPP_CC_FOR_BUILD
32 PSPP_PERL
33
34 dnl Internationalization macros.
35 AC_PROVIDE([AM_PO_SUBDIRS])     # PSPP provides its own po/ support.
36 AM_GNU_GETTEXT([external], [need-ngettext])
37 AM_GNU_GETTEXT_VERSION([0.17])
38 fi
39
40 dnl Checks for libraries.
41 AC_SYS_LARGEFILE
42 AC_SEARCH_LIBS([sin], [m])
43 AC_SEARCH_LIBS([dcgettext], [intl])
44 PSPP_LC_PAPER
45
46
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])
49
50 # Support for Cairo and Pango.
51 AC_ARG_WITH([cairo],
52   [AS_HELP_STRING(
53     [--without-cairo], 
54     [Don't build support for charts (using Cairo and Pango);
55      implies --without-gui])],
56   [], [with_cairo=yes])
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])
65   AC_SUBST(XMLLINT)
66 fi
67
68 # Support for GUI.
69 AC_ARG_WITH([gui], 
70   [AS_HELP_STRING([--without-gui], 
71                   [Don't build the PSPPIRE GUI (using GTK+)])],
72   [], [with_gui=yes])
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([GTK], [gtk+-2.0 >= 2.12], [],
77     [PSPP_REQUIRED_PREREQ([gtk+ 2.0 version 2.12 or later (or use --without-gui)])])
78
79   AC_ARG_VAR([GLIB_GENMARSHAL])
80   AC_CHECK_PROGS([GLIB_GENMARSHAL], [glib-genmarshal])
81   if test "x$GLIB_GENMARSHAL" = x; then
82     PSPP_REQUIRED_PREREQ([glib-genmarshal (or use --without-gui)])
83   fi
84 fi
85
86 dnl Checks needed for psql reader
87
88 dnl The 8.x series postgres tarballs installs with a default prefix of
89 dnl /usr/local/pgsql whereas, OSes (such as debian)  install into /usr .
90
91 dnl If the libpq.so file is in a non standard path, (one which the linker
92 dnl doesn't search) then we must set the PG_LDFLAGS to -R/usr/wherever/
93 dnl However, if the system happens to have more than one version of other
94 dnl dependent libraries (eg. libgtk) in different standard paths. (eg:
95 dnl /usr and /usr/local) then the wrong one may get linked. 
96
97 dnl To overcome this, we first check for libpq in the standard places, and
98 dnl only set PG_LDFLAGS if it's not found.
99
100
101 AC_ARG_WITH(
102   libpq, 
103   [AS_HELP_STRING([--without-libpq], [don't compile in Postgres capability])])
104
105 if test x"$with_libpq" != x"no" ; then
106  AC_SEARCH_LIBS([PQexec], [pq], [libpq_in_std_lib_path=yes])
107
108  AC_ARG_VAR([PG_CONFIG], [Full pathname of the pg_config program shipped with Postgresql])
109  if test x"$cross_compiling" != x"yes" ; then
110    AC_PATH_PROG([PG_CONFIG], [pg_config], [], [$PATH:/usr/local/pgsql/bin:/usr/pgsql/bin])
111  fi 
112  if test -n "$PG_CONFIG" ; then 
113    AC_SUBST(PG_CONFIG)
114    AC_DEFINE([PSQL_SUPPORT], 1,
115    [Define to 1 if building in support for reading from postgres databases.])
116    PG_CFLAGS=-I`$PG_CONFIG --includedir` 
117    AC_SUBST(PG_CFLAGS)
118    
119    if test "x$libpq_in_std_lib_path" != x"yes" ; then
120       PG_LDFLAGS="-L`$PG_CONFIG --libdir` -R`$PG_CONFIG --libdir`"
121    fi
122    AC_SUBST(PG_LDFLAGS)
123
124    PG_LIBS=-lpq
125    AC_SUBST(PG_LIBS)
126    PKG_CHECK_EXISTS(libssl,
127          AC_DEFINE([USE_SSL],1,
128                     [Define to 1 if the openssl library is present.])
129             ,)
130  fi
131 fi
132 AM_CONDITIONAL(PSQL_SUPPORT, test -n "$PG_CONFIG")
133
134 dnl Check for libxml2
135 PKG_CHECK_MODULES(
136   [LIBXML2], [libxml-2.0], 
137   [HAVE_LIBXML2=yes],
138   [HAVE_LIBXML2=no
139    PSPP_OPTIONAL_PREREQ([libxml2])])
140
141 dnl Check for zlib.
142 AC_SEARCH_LIBS(
143   [gzopen], [z],
144   [HAVE_ZLIB=yes],
145   [HAVE_ZLIB=no
146    PSPP_OPTIONAL_PREREQ([zlib])])
147 AC_CHECK_HEADERS(
148   [zlib.h], 
149   [],
150   [HAVE_ZLIB=no
151    PSPP_OPTIONAL_PREREQ([zlib])])
152
153 dnl Avoid interference between zlib's crc32() function and gnulib's
154 dnl crc32() function, which have different signatures.  PSPP calls
155 dnl only gnulib's crc32() directly, but it calls zlib's crc32()
156 dnl indirectly through other zlib calls.  If we don't rename gnulib's
157 dnl crc32(), then zlib will call gnulib's version instead of its own,
158 dnl causing failures.  (This can happen even if zlib isn't detected
159 dnl directly, because other libraries that PSPP uses, e.g. libpng,
160 dnl sometimes use zlib themselves.)
161 AC_DEFINE(
162   [crc32], [gl_crc32],
163   [Avoid making zlib call gnulib's crc32() instead of its own.])
164
165 dnl Gnumeric support requires libxml2 and zlib.
166 if test $HAVE_LIBXML2 = yes && test $HAVE_ZLIB = yes; then
167   GNM_SUPPORT=yes
168   AC_DEFINE(
169     [GNM_SUPPORT], [1],
170     [Define to 1 if building in support for reading Gnumeric files.])
171 else
172   GNM_SUPPORT=no
173 fi
174 AM_CONDITIONAL([GNM_SUPPORT], [test $GNM_SUPPORT = yes])
175
176 dnl ODT support requires libxml2.
177 if test $HAVE_LIBXML2 = yes; then
178   AC_DEFINE(
179     [ODT_SUPPORT], [1],
180     [Define to 1 if building in support for writing ODT files.])
181 fi
182 AM_CONDITIONAL([ODT_SUPPORT], [test $HAVE_LIBXML2 = yes])
183
184 AC_ARG_WITH(
185   gui_tools,
186   [AS_HELP_STRING([--with-gui-tools], [build the gui developer tools.  For DEVELOPERS only! There is no reason why users will need this flag.])])
187 if test x"$with_gui_tools" = x"yes" ; then 
188         PKG_CHECK_MODULES(GLADE_UI, gladeui-1.0)
189 fi
190 AM_CONDITIONAL(WITH_GUI_TOOLS, test x"$with_gui_tools" = x"yes")
191
192 if test x"$cross_compiling" != x"yes"; then
193    WITH_PERL_MODULE=yes
194 else
195    WITH_PERL_MODULE=no
196 fi      
197 AC_SUBST([WITH_PERL_MODULE])
198 AM_CONDITIONAL(WITH_PERL_MODULE, test $WITH_PERL_MODULE = yes)
199
200 AC_SEARCH_LIBS([cblas_dsdot], [gslcblas],,[PSPP_REQUIRED_PREREQ([libgslcblas])])
201 AC_SEARCH_LIBS([gsl_cdf_binomial_P], [gsl],,[PSPP_REQUIRED_PREREQ([libgsl (version 1.8 or later)])])
202 PSPP_GSL_NEEDS_FGNU89_INLINE
203
204 dnl Recent versions of GNU ncurses install the curses header files into
205 dnl /usr/include/ncurses, and provide a 'ncurses5-config' program which
206 dnl enables us to discover where they are. Earlier versions don't have
207 dnl this, so we can't rely on it.  So if ncurses5-config is present,
208 dnl we'll trust it to find the right information.  Otherwise, we'll
209 dnl try to discover it ourselves.
210 dnl To confound things further, Cygwin has decided to rename ncurses5-config
211 dnl to ncurses8-config !!!
212 AC_ARG_WITH(
213   libncurses, 
214   [AS_HELP_STRING([--without-libncurses], [don't compile in ncurses functions])])
215
216 if test x"$with_libncurses" != x"no" ; then
217   if test x"$cross_compiling" != x"yes" ; then
218           AC_CHECK_PROGS([NCURSES_CONFIG], [ncurses5-config ncurses8-config])
219   fi
220   if test x"$NCURSES_CONFIG" = x ; then
221           AC_SEARCH_LIBS([tgetent], [ncurses],
222               [curses_available=yes; AC_CHECK_HEADERS([term.h curses.h],,[curses_available=no])])
223   else
224           old_cflags=$CFLAGS
225           CFLAGS="$CFLAGS `$NCURSES_CONFIG --cflags`"
226           AC_CHECK_HEADERS([term.h curses.h],[curses_available=yes])
227           CFLAGS=$old_cflags
228           if test x"$curses_available" = x"yes" ; then
229            NCURSES_LIBS=`$NCURSES_CONFIG --libs`
230            NCURSES_CFLAGS=`$NCURSES_CONFIG --cflags`
231            AC_SUBST(NCURSES_CFLAGS)
232            AC_SUBST(NCURSES_LIBS)
233           fi
234   fi
235   if test x"$curses_available" = x"yes" ; then
236           AC_DEFINE([LIBNCURSES_USABLE], 1,
237               [Define to 1 if the libncurses is both present and usable.])
238   fi
239   AC_CHECK_HEADERS([termcap.h])
240 fi
241
242 PSPP_READLINE
243
244 dnl Checks for header files.
245 AC_CHECK_HEADERS([sys/wait.h fpu_control.h ieeefp.h fenv.h pwd.h])
246
247 # For gnulib.
248 gl_INIT
249
250 AC_C_INLINE
251
252 AC_CHECK_SIZEOF(double)
253
254 AC_C_BIGENDIAN
255
256 AC_CHECK_FUNCS([__setfpucw fork execl execlp isinf isnan finite getpid feholdexcept fpsetmask popen round])
257
258 AC_PROG_LN_S
259
260 AC_ARG_ENABLE(
261   debug, 
262   [AS_HELP_STRING([--enable-debug], 
263                   [Turn on diagnostic features in the program])])
264 if test x"$enable_debug" = x"yes"  ; then
265   AC_DEFINE(DEBUGGING, 1, [Define to 1 if debugging is enabled.])
266 fi
267
268 # iconv is required
269 if test "$am_cv_func_iconv" != "yes"; then
270    PSPP_REQUIRED_PREREQ([iconv (see http://www.gnu.org/software/libiconv/)])
271 fi
272
273 dnl Required by the gnulib 'relocatable-prog' module.
274 dnl See doc/relocatable-maint.texi in the gnulib tree for details.
275 RELOCATABLE_LIBRARY_PATH='$(libdir)'
276 RELOCATABLE_STRIP=:
277
278 PSPP_CHECK_PREREQS
279
280 AC_CONFIG_FILES(
281   [Makefile gl/Makefile po/Makefile tests/atlocal perl-module/lib/PSPP.pm])
282
283 AC_OUTPUT
284 echo "PSPP configured successfully."
285
286 dnl configure.ac ends here