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