X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=configure.ac;h=c1c7e0e6945d0833e62470cb07f4a330ddbedbc4;hb=0ee0a3f7c62a2176db6f603fa01ebceb4ee7e526;hp=16a6fbd884ae81a7125c7f24e80bb42851e72a0e;hpb=85eeaccf1a92aef8a6b4766c2160e02b14d8ec57;p=pspp-builds.git diff --git a/configure.ac b/configure.ac index 16a6fbd8..c1c7e0e6 100644 --- a/configure.ac +++ b/configure.ac @@ -1,9 +1,10 @@ dnl Process this file with autoconf to produce a configure script. dnl Initialize. -AX_PREREQ(2.60) -AC_INIT([pspp],[0.4.3],[bug-gnu-pspp@gnu.org]) +AC_PREREQ(2.63) +AC_INIT([GNU PSPP], [0.7.5], [bug-gnu-pspp@gnu.org], [pspp]) AC_CONFIG_HEADERS([config.h]) +AC_CONFIG_TESTDIR([tests]) AM_INIT_AUTOMAKE dnl Checks for programs. @@ -11,9 +12,17 @@ AC_GNU_SOURCE AC_PROG_CC gl_EARLY AM_PROG_CC_C_O +AC_LIBTOOL_WIN32_DLL AC_LIBTOOL_DLOPEN AC_PROG_LIBTOOL PKG_PROG_PKG_CONFIG +m4_pattern_forbid([PKG_CHECK_MODULES]) +PSPP_CHECK_CLICKSEQUENCE + +AC_ARG_ENABLE( + anachronistic-dependencies, + [AS_HELP_STRING([--enable-anachronistic-dependencies], + [Attempt to allow building against older versions of dependent libraries])]) PSPP_ENABLE_OPTION(-Wdeclaration-after-statement) @@ -23,29 +32,59 @@ PSPP_CC_FOR_BUILD PSPP_PERL dnl Internationalization macros. +AC_PROVIDE([AM_PO_SUBDIRS]) # PSPP provides its own po/ support. AM_GNU_GETTEXT([external], [need-ngettext]) -AM_GNU_GETTEXT_VERSION([0.16.1]) +AM_GNU_GETTEXT_VERSION([0.17]) +if test -n "$LIBINTL"; then + AC_DEFINE([DEPENDS_ON_LIBINTL], [1], + [Define to 1 if libintl is a separate library, not integrated into libc]) +fi dnl Checks for libraries. AC_SYS_LARGEFILE AC_SEARCH_LIBS([sin], [m]) -PSPP_LIBPLOT +AC_SEARCH_LIBS([dcgettext], [intl]) PSPP_LC_PAPER -AM_CONDITIONAL(WITHCHARTS, test x"$with_libplot" != x"no") -AC_ARG_WITH( - gui, - [AS_HELP_STRING([--without-gui], [don't build the PSPPIRE gui])]) - -if test x"$with_gui" != x"no" ; then - PKG_CHECK_MODULES(GTK, gtk+-2.0 >= 2.12.0,, - [PSPP_REQUIRED_PREREQ([gtk+ 2.0 v2.12.0 or later (or use --without-gui)])]) - PKG_CHECK_MODULES(GLADE, libglade-2.0 >= 2.6.0,, - [PSPP_REQUIRED_PREREQ([libglade 2.0 v2.6.0 or later (or use --without-gui)])]) +AC_ARG_VAR([PSPP_LDFLAGS], [linker flags to be used for linking the pspp binary only]) +AC_ARG_VAR([PSPPIRE_LDFLAGS], [linker flags to be used for linking the psppire binary only]) + +# Support for Cairo and Pango. +AC_ARG_WITH([cairo], + [AS_HELP_STRING( + [--without-cairo], + [Don't build support for charts (using Cairo and Pango); + implies --without-gui])], + [], [with_cairo=yes]) +AM_CONDITIONAL([HAVE_CAIRO], [test "$with_cairo" != no]) +if test "$with_cairo" != no; then + PKG_CHECK_MODULES([CAIRO], [cairo >= 1.5 pango >= 1.20 pangocairo], + [CPPFLAGS="$CPPFLAGS $CAIRO_CFLAGS" + AC_DEFINE([HAVE_CAIRO], 1, + [Define to 1 if Cairo and Pango are available.])], + [PSPP_REQUIRED_PREREQ([cairo 1.5 or later and pango 1.20 or later (or use --without-cairo)])]) + AC_PATH_PROG([XMLLINT], [xmllint], [echo], [$PATH]) + AC_SUBST(XMLLINT) fi -AM_CONDITIONAL(WITHGUI, test x"$with_gui" != x"no") +# Support for GUI. +AC_ARG_WITH([gui], + [AS_HELP_STRING([--without-gui], + [Don't build the PSPPIRE GUI (using GTK+)])], + [], [with_gui=yes]) +AM_CONDITIONAL([HAVE_GUI], + [test "$with_cairo" != no && test "$with_gui" != "no"]) +if test "$with_cairo" != no && test "$with_gui" != "no"; then + PKG_CHECK_MODULES([GTK], [gtk+-2.0 >= 2.12], [], + [PSPP_REQUIRED_PREREQ([gtk+ 2.0 version 2.12 or later (or use --without-gui)])]) + + AC_ARG_VAR([GLIB_GENMARSHAL]) + AC_CHECK_PROGS([GLIB_GENMARSHAL], [glib-genmarshal]) + if test "x$GLIB_GENMARSHAL" = x; then + PSPP_REQUIRED_PREREQ([glib-genmarshal (or use --without-gui)]) + fi +fi dnl Checks needed for psql reader @@ -62,54 +101,146 @@ dnl To overcome this, we first check for libpq in the standard places, and dnl only set PG_LDFLAGS if it's not found. -AC_SEARCH_LIBS([PQexec], [pq], [libpq_in_std_lib_path=yes]) - -AC_ARG_VAR([PG_CONFIG], [Full pathname of the pg_config program shipped with Postgresql]) -AC_PATH_PROG([PG_CONFIG], [pg_config], [], [$PATH:/usr/local/pgsql/bin:/usr/pgsql/bin]) -if test -n "$PG_CONFIG" ; then - AC_SUBST(PG_CONFIG) - AC_DEFINE([PSQL_SUPPORT], 1, - [Define to 1 if building in support for reading from postgres databases.]) - PG_CFLAGS=-I`$PG_CONFIG --includedir` - AC_SUBST(PG_CFLAGS) - - if test "x$libpq_in_std_lib_path" != x"yes" ; then - PG_LDFLAGS="-L`$PG_CONFIG --libdir` -R`$PG_CONFIG --libdir`" - fi - AC_SUBST(PG_LDFLAGS) - - PG_LIBS=-lpq - AC_SUBST(PG_LIBS) - PKG_CHECK_EXISTS(libssl, - AC_DEFINE([USE_SSL],1, - [Define to 1 if the openssl library is present.]) - ,) +AC_ARG_WITH( + libpq, + [AS_HELP_STRING([--without-libpq], [don't compile in Postgres capability])]) +AC_ARG_VAR([PG_CONFIG], + [Full pathname of the pg_config program shipped with Postgresql]) +AC_PATH_PROG([PG_CONFIG], [pg_config], [], + [$PATH:/usr/local/pgsql/bin:/usr/pgsql/bin]) + +if test x"$with_libpq" != x"no" && test -n "$PG_CONFIG" ; then + AC_SUBST(PG_CONFIG) + PG_CFLAGS=-I`$PG_CONFIG --includedir` + AC_SUBST(PG_CFLAGS) + + AC_CHECK_LIB([pq], [PQexec], + [:], + [PG_LDFLAGS="-L`$PG_CONFIG --libdir` -R`$PG_CONFIG --libdir`"]) + AC_SUBST(PG_LDFLAGS) + + PG_LIBS=-lpq + AC_SUBST(PG_LIBS) + + PKG_CHECK_EXISTS(libssl, + AC_DEFINE([USE_SSL],1, + [Define to 1 if the openssl library is present.]) + ,) + + # Now verify that we can actually link against libpq. If we are + # cross-compiling and picked up a host libpq, or if libpq is just + # badly installed, this will fail. + AC_CACHE_CHECK( + [whether -lpq links successfully], + [pspp_cv_have_libpq], + [save_CPPFLAGS=$CPPFLAGS + save_LIBS=$LIBS + save_LDFLAGS=$LDFLAGS + CPPFLAGS="$PG_CFLAGS $CPPFLAGS" + LIBS="$PG_LIBS $LIBS" + LDFLAGS="$PG_LDFLAGS $LDFLAGS" + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [#include + ], [PQfinish (0);])], + [pspp_cv_have_libpq=yes], + [pspp_cv_have_libpq=no]) + CPPFLAGS=$save_CPPFLAGS + LIBS=$save_LIBS + LDFLAGS=$save_LDFLAGS]) + + if test $pspp_cv_have_libpq = yes; then + AC_DEFINE([PSQL_SUPPORT], [1], + [Define to 1 if building in support for reading from postgres + databases.]) + else + PG_CONFIG= + PG_CFLAGS= + PG_LDFLAGS= + PG_LIBS= + fi +else + pspp_cv_have_libpq=no +fi +AM_CONDITIONAL(PSQL_SUPPORT, test $pspp_cv_have_libpq = yes) + +dnl Check for libxml2 +PKG_CHECK_MODULES( + [LIBXML2], [libxml-2.0], + [HAVE_LIBXML2=yes], + [HAVE_LIBXML2=no + PSPP_OPTIONAL_PREREQ([libxml2])]) + +dnl Check for zlib. +AC_SEARCH_LIBS( + [gzopen], [z], + [HAVE_ZLIB=yes], + [HAVE_ZLIB=no + PSPP_OPTIONAL_PREREQ([zlib])]) +AC_CHECK_HEADERS( + [zlib.h], + [], + [HAVE_ZLIB=no + PSPP_OPTIONAL_PREREQ([zlib])]) + +dnl Avoid interference between zlib's crc32() function and gnulib's +dnl crc32() function, which have different signatures. PSPP calls +dnl only gnulib's crc32() directly, but it calls zlib's crc32() +dnl indirectly through other zlib calls. If we don't rename gnulib's +dnl crc32(), then zlib will call gnulib's version instead of its own, +dnl causing failures. (This can happen even if zlib isn't detected +dnl directly, because other libraries that PSPP uses, e.g. libpng, +dnl sometimes use zlib themselves.) +AC_DEFINE( + [crc32], [gl_crc32], + [Avoid making zlib call gnulib's crc32() instead of its own.]) + +dnl Gnumeric support requires libxml2 and zlib. +if test $HAVE_LIBXML2 = yes && test $HAVE_ZLIB = yes; then + GNM_SUPPORT=yes + AC_DEFINE( + [GNM_SUPPORT], [1], + [Define to 1 if building in support for reading Gnumeric files.]) +else + GNM_SUPPORT=no fi -AM_CONDITIONAL(PSQL_SUPPORT, test -n "$PG_CONFIG") - -dnl Checks needed for gnumeric reader -gnm_support=yes; -PKG_CHECK_MODULES(LIBXML2, libxml-2.0,, - [PSPP_OPTIONAL_PREREQ([libxml2]); gnm_support=no;]); -AC_SEARCH_LIBS(gzopen,z,,[PSPP_OPTIONAL_PREREQ([zlib]); gnm_support=no;]) -AC_CHECK_HEADERS(zlib.h,,[PSPP_OPTIONAL_PREREQ([zlib]); gnm_support=no;]) - -if test x"$gnm_support" = x"yes" ; then - AC_DEFINE([GNM_SUPPORT], 1, - [Define to 1 if building in support for reading Gnumeric files.]) +AM_CONDITIONAL([GNM_SUPPORT], [test $GNM_SUPPORT = yes]) + +dnl ODT support requires libxml2. +if test $HAVE_LIBXML2 = yes; then + AC_DEFINE( + [ODT_SUPPORT], [1], + [Define to 1 if building in support for writing ODT files.]) fi -AM_CONDITIONAL(GNM_SUPPORT, test x"$gnm_support" = x"yes") +AM_CONDITIONAL([ODT_SUPPORT], [test $HAVE_LIBXML2 = yes]) AC_ARG_WITH( gui_tools, - [AS_HELP_STRING([--with-gui-tools], [build the gui developer tools])]) + [AS_HELP_STRING([--with-gui-tools], [build the gui developer tools. For DEVELOPERS only! There is no reason why users will need this flag.])]) if test x"$with_gui_tools" = x"yes" ; then PKG_CHECK_MODULES(GLADE_UI, gladeui-1.0) fi AM_CONDITIONAL(WITH_GUI_TOOLS, test x"$with_gui_tools" = x"yes") +AC_ARG_WITH( + [perl-module], + [AS_HELP_STRING([--without-perl-module], [do not build the Perl module])], + [case $with_perl_module in # ( + yes|no) ;; # ( + *) AC_MSG_FAILURE([--with-perl-module argument must be 'yes' or 'no']) ;; + esac + WITH_PERL_MODULE=$with_perl_module], + [if test x"$cross_compiling" != x"yes"; then + WITH_PERL_MODULE=yes + else + WITH_PERL_MODULE=no + fi]) +AC_SUBST([WITH_PERL_MODULE]) +AM_CONDITIONAL(WITH_PERL_MODULE, test $WITH_PERL_MODULE = yes) + AC_SEARCH_LIBS([cblas_dsdot], [gslcblas],,[PSPP_REQUIRED_PREREQ([libgslcblas])]) -AC_SEARCH_LIBS([gsl_cdf_chisq_Q], [gsl],,[PSPP_REQUIRED_PREREQ([libgsl (version 1.4 or later)])]) +AC_SEARCH_LIBS([gsl_cdf_binomial_P], [gsl],,[PSPP_REQUIRED_PREREQ([libgsl (version 1.8 or later)])]) +PSPP_GSL_NEEDS_FGNU89_INLINE dnl Recent versions of GNU ncurses install the curses header files into dnl /usr/include/ncurses, and provide a 'ncurses5-config' program which @@ -119,27 +250,40 @@ dnl we'll trust it to find the right information. Otherwise, we'll dnl try to discover it ourselves. dnl To confound things further, Cygwin has decided to rename ncurses5-config dnl to ncurses8-config !!! -AC_CHECK_PROGS([NCURSES_CONFIG], [ncurses5-config ncurses8-config]) -if test x"$NCURSES_CONFIG" = x ; then - AC_SEARCH_LIBS([tgetent], [ncurses], - [curses_available=yes; AC_CHECK_HEADERS([term.h curses.h],,[curses_available=no])]) -else - curses_available=yes - NCURSES_CFLAGS=`$NCURSES_CONFIG --cflags` - NCURSES_LIBS=`$NCURSES_CONFIG --libs` - AC_SUBST(NCURSES_CFLAGS) - AC_SUBST(NCURSES_LIBS) -fi -if test x"$curses_available" = x"yes" ; then - AC_DEFINE([LIBNCURSES_USABLE], 1, - [Define to 1 if the libncurses is both present and usable.]) +AC_ARG_WITH( + libncurses, + [AS_HELP_STRING([--without-libncurses], [don't compile in ncurses functions])]) + +if test x"$with_libncurses" != x"no" ; then + if test x"$cross_compiling" != x"yes" ; then + AC_CHECK_PROGS([NCURSES_CONFIG], [ncurses5-config ncurses8-config]) + fi + if test x"$NCURSES_CONFIG" = x ; then + AC_SEARCH_LIBS([tgetent], [ncurses], + [curses_available=yes; AC_CHECK_HEADERS([term.h curses.h],,[curses_available=no])]) + else + old_cflags=$CFLAGS + CFLAGS="$CFLAGS `$NCURSES_CONFIG --cflags`" + AC_CHECK_HEADERS([term.h curses.h],[curses_available=yes]) + CFLAGS=$old_cflags + if test x"$curses_available" = x"yes" ; then + NCURSES_LIBS=`$NCURSES_CONFIG --libs` + NCURSES_CFLAGS=`$NCURSES_CONFIG --cflags` + AC_SUBST(NCURSES_CFLAGS) + AC_SUBST(NCURSES_LIBS) + fi + fi + if test x"$curses_available" = x"yes" ; then + AC_DEFINE([LIBNCURSES_USABLE], 1, + [Define to 1 if the libncurses is both present and usable.]) + fi + AC_CHECK_HEADERS([termcap.h]) fi -AC_CHECK_HEADERS([termcap.h]) PSPP_READLINE dnl Checks for header files. -AC_CHECK_HEADERS([sys/wait.h fpu_control.h ieeefp.h fenv.h]) +AC_CHECK_HEADERS([sys/wait.h fpu_control.h ieeefp.h fenv.h pwd.h]) # For gnulib. gl_INIT @@ -167,9 +311,15 @@ if test "$am_cv_func_iconv" != "yes"; then PSPP_REQUIRED_PREREQ([iconv (see http://www.gnu.org/software/libiconv/)]) fi +dnl Required by the gnulib 'relocatable-prog' module. +dnl See doc/relocatable-maint.texi in the gnulib tree for details. +RELOCATABLE_LIBRARY_PATH='$(libdir)' +RELOCATABLE_STRIP=: + PSPP_CHECK_PREREQS -AC_CONFIG_FILES([Makefile gl/Makefile po/Makefile.in]) +AC_CONFIG_FILES( + [Makefile gl/Makefile po/Makefile tests/atlocal perl-module/lib/PSPP.pm]) AC_OUTPUT echo "PSPP configured successfully."