Newer
Older
dnl Process this file with autoconf to produce a configure script.
dnl Developers, please strive to achieve this order:
dnl
dnl 0. Initialization and options processing
dnl 1. Programs
dnl 2. Libraries
dnl 3. Header files
dnl 4. Types
dnl 5. Structures
dnl 6. Compiler characteristics
dnl 7. Functions, global variables
dnl 8. System services
dnl
dnl Read the Autoconf manual for details.
dnl The GNU folks apparently haven't heard that some people don't use
dnl Texinfo. Use this sorcery to use "docdir" instead of "infodir".
define([info], [doc])
define([infodir], [docdir])
AC_INIT(src/backend/access/common/heaptuple.c)
undefine([infodir])
undefine([info])
AC_PREFIX_DEFAULT(/usr/local/pgsql)
Peter Eisentraut
committed
AC_CONFIG_HEADER(src/include/pg_config.h)
AC_PREREQ(2.13)
AC_CONFIG_AUX_DIR(config)
AC_SUBST(VERSION)
AC_DEFINE_UNQUOTED(PG_VERSION, "$VERSION")
Peter Eisentraut
committed
unset CDPATH
Peter Eisentraut
committed
AC_SUBST(host)
AC_SUBST(host_cpu)
AC_SUBST(host_os)
Peter Eisentraut
committed
template=
AC_MSG_CHECKING([which template to use])
PGAC_ARG_REQ(with, template, [],
[
case $withval in
Peter Eisentraut
committed
list) echo; ls "$srcdir/src/template"; exit;;
*) if test -f "$srcdir/src/template/$with_template" ; then
template=$withval
Peter Eisentraut
committed
else
Peter Eisentraut
committed
AC_MSG_ERROR(['$withval' is not a valid template name. Use 'list' for a list.])
Peter Eisentraut
committed
fi;;
esac
],
[
# --with-template not given
Peter Eisentraut
committed
case $host_os in
aix*) template=aix ;;
Peter Eisentraut
committed
bsdi*) template=bsdi ;;
cygwin*) template=win ;;
darwin*) template=darwin ;;
Peter Eisentraut
committed
dgux*) template=dgux ;;
freebsd*) template=freebsd ;;
hpux*) template=hpux ;;
irix*) template=irix5 ;;
linux*) template=linux ;;
netbsd*) template=netbsd ;;
nextstep*) template=nextstep ;;
openbsd*) template=openbsd ;;
osf*) template=osf ;;
qnx*) template=qnx4 ;;
sco*) template=sco ;;
Peter Eisentraut
committed
solaris*) template=solaris ;;
Peter Eisentraut
committed
sunos*) template=sunos4 ;;
Peter Eisentraut
committed
case $host_vendor in
univel) template=univel ;;
esac ;;
sysv4*) template=svr4 ;;
Peter Eisentraut
committed
sysv5*) template=unixware ;;
Peter Eisentraut
committed
ultrix*) template=ultrix4 ;;
Peter Eisentraut
committed
if test x"$template" = x"" ; then
Peter Eisentraut
committed
AC_MSG_ERROR([[
Peter Eisentraut
committed
*******************************************************************
PostgreSQL has apparently not been ported to your platform yet.
To try a manual configuration, look into the src/template directory
Peter Eisentraut
committed
for a similar platform and use the '--with-template=' option.
Peter Eisentraut
committed
Please also contact <pgsql-ports@postgresql.org> to see about
Peter Eisentraut
committed
rectifying this. Include the above 'checking host system type...'
Peter Eisentraut
committed
line.
*******************************************************************
Peter Eisentraut
committed
]])
Peter Eisentraut
committed
fi
])
Peter Eisentraut
committed
AC_MSG_RESULT([$template])
Peter Eisentraut
committed
PORTNAME=$template
AC_SUBST(PORTNAME)
Peter Eisentraut
committed
AC_LINK_FILES([src/backend/port/dynloader/${template}.c], [src/backend/port/dynloader.c])
AC_LINK_FILES([src/backend/port/dynloader/${template}.h], [src/include/dynloader.h])
Peter Eisentraut
committed
AC_LINK_FILES([src/include/port/${template}.h], [src/include/pg_config_os.h])
Peter Eisentraut
committed
AC_LINK_FILES([src/makefiles/Makefile.${template}], [src/Makefile.port])
Peter Eisentraut
committed
# Pick right test-and-set (TAS) code. Most platforms have inline
# assembler code in src/include/storage/s_lock.h, so we just use
# a dummy file here.
case $host in
*-*-hpux*) need_tas=yes; tas_file=hpux.s ;;
sparc-*-solaris*) need_tas=yes; tas_file=solaris_sparc.s ;;
i?86-*-solaris*) need_tas=yes; tas_file=solaris_i386.s ;;
*) need_tas=no; tas_file=dummy.s ;;
Peter Eisentraut
committed
esac
AC_LINK_FILES([src/backend/port/tas/${tas_file}], [src/backend/port/tas.s])
Peter Eisentraut
committed
if test "$need_tas" = yes ; then
TAS=tas.o
fi
Peter Eisentraut
committed
AC_SUBST(TAS)
Peter Eisentraut
committed
##
## Command line options
##
Peter Eisentraut
committed
#
# Add non-standard directories to the include path
#
PGAC_ARG_REQ(with, includes, [ --with-includes=DIRS look for additional header files in DIRS])
Peter Eisentraut
committed
#
# Add non-standard directories to the library search path
#
PGAC_ARG_REQ(with, libraries, [ --with-libraries=DIRS look for additional libraries in DIRS],
[LIBRARY_DIRS=$withval])
PGAC_ARG_REQ(with, libs, [ --with-libs=DIRS alternative spelling of --with-libraries],
[LIBRARY_DIRS=$withval])
Peter Eisentraut
committed
#
# Locale (--enable-locale)
#
AC_MSG_CHECKING([whether to build with locale support])
PGAC_ARG_BOOL(enable, locale, no, [ --enable-locale enable locale support],
[AC_DEFINE([USE_LOCALE], 1,
[Set to 1 if you want LOCALE support (--enable-locale)])])
AC_MSG_RESULT([$enable_locale])
#
# Character set recode (--enable-recode)
#
AC_MSG_CHECKING([whether to build with recode support])
PGAC_ARG_BOOL(enable, recode, no, [ --enable-recode enable character set recode support],
[AC_DEFINE([CYR_RECODE], 1,
[Set to 1 if you want cyrillic recode support (--enable-recode)])])
AC_MSG_RESULT([$enable_recode])
#
# Multibyte support
#
MULTIBYTE=
AC_MSG_CHECKING([whether to build with multibyte character support])
PGAC_ARG_OPTARG(enable, multibyte, [ --enable-multibyte enable multibyte character support],
[MULTIBYTE=SQL_ASCII],
[
case $enableval in
SQL_ASCII|EUC_JP|EUC_CN|EUC_KR|EUC_TW|JOHAB|UNICODE|MULE_INTERNAL|LATIN1|LATIN2|LATIN3|LATIN4|LATIN5|LATIN6|LATIN7|LATIN8|LATIN9|LATIN10|WIN1256|TCVN|WIN874|KOI8|WIN|ALT|ISO_8859_5|ISO_8859_6|ISO_8859_7|ISO_8859_8)
MULTIBYTE=$enableval;;
*)
AC_MSG_ERROR(
[argument to --enable-multibyte must be one of:
UNICODE, MULE_INTERNAL,
LATIN1, LATIN2, LATIN3, LATIN4, LATIN5,
LATIN6, LATIN7, LATIN8, LATIN9, LATIN10,
ISO_8859_5, ISO_8859_6, ISO_8859_7, ISO_8859_8
Or do not specify an argument to the option to use the default.]);;
esac
],
[
Peter Eisentraut
committed
AC_DEFINE(MULTIBYTE, 1, [Set to 1 if you want to use multibyte characters (--enable-multibyte)])
AC_MSG_RESULT([yes, default $MULTIBYTE])
],
[AC_MSG_RESULT(no)])
AC_SUBST(MULTIBYTE)
#
# NLS
#
AC_MSG_CHECKING([whether NLS is wanted])
PGAC_ARG_OPTARG(enable, nls,
Peter Eisentraut
committed
[ --enable-nls[=LANGUAGES] enable Native Language Support],
[],
[WANTED_LANGUAGES=$enableval],
[AC_DEFINE(ENABLE_NLS)])
AC_MSG_RESULT([$enable_nls])
AC_SUBST(enable_nls)
AC_SUBST(WANTED_LANGUAGES)
#
# Default port number (--with-pgport), default 5432
#
AC_MSG_CHECKING([for default port number])
PGAC_ARG_REQ(with, pgport, [ --with-pgport=PORTNUM change default port number [5432]],
[default_port=$withval],
[default_port=5432])
AC_MSG_RESULT([$default_port])
# Need both of these because some places want an integer and some a string
AC_DEFINE_UNQUOTED(DEF_PGPORT, ${default_port})
AC_DEFINE_UNQUOTED(DEF_PGPORT_STR, "${default_port}")
AC_SUBST(default_port)
#
# Maximum number of allowed connections (--with-maxbackends), default 32
#
AC_MSG_CHECKING([for default soft limit on number of connections])
PGAC_ARG_REQ(with, maxbackends, [ --with-maxbackends=N set default maximum number of connections [32]],
[],
[with_maxbackends=32])
AC_MSG_RESULT([$with_maxbackends])
AC_DEFINE_UNQUOTED([DEF_MAXBACKENDS], [$with_maxbackends],
[The default soft limit on the number of concurrent connections, i.e., the default for the postmaster -N switch (--with-maxbackends)])
#
# Option to disable shared libraries
#
PGAC_ARG_BOOL(enable, shared, yes,
Peter Eisentraut
committed
[ --disable-shared do not build shared libraries])
AC_SUBST(enable_shared)
#
# '-rpath'-like feature can be disabled
#
PGAC_ARG_BOOL(enable, rpath, yes,
[ --disable-rpath do not embed shared library search path in executables])
AC_SUBST(enable_rpath)
Peter Eisentraut
committed
#
# --enable-debug adds -g to compiler flags
#
PGAC_ARG_BOOL(enable, debug, no,
[ --enable-debug build with debugging symbols (-g)])
AC_SUBST(enable_debug)
Peter Eisentraut
committed
#
Peter Eisentraut
committed
# C compiler
#
# For historical reasons you can also use --with-CC to specify the C compiler
# to use, although the standard way to do this is to set the CC environment
# variable.
PGAC_ARG_REQ(with, CC, [], [CC=$with_CC])
Peter Eisentraut
committed
# On AIX, default compiler to xlc.
if test "$template" = aix && test -z "$CC" ; then CC=xlc; fi
Peter Eisentraut
committed
# Save CFLAGS from the environment
has_environ_CFLAGS="${CFLAGS+yes}"
save_CFLAGS=$CFLAGS
AC_PROG_CC
Peter Eisentraut
committed
# Read the template
. "$srcdir/src/template/$template" || exit
Peter Eisentraut
committed
if test "$has_environ_CFLAGS" = yes; then
CFLAGS=$save_CFLAGS
fi
if test "$enable_debug" = yes && test "$ac_cv_prog_cc_g" = yes; then
CFLAGS="$CFLAGS -g"
fi
Peter Eisentraut
committed
echo "using CFLAGS=$CFLAGS"
# Check if the compiler still works with the template settings
AC_PROG_CC_WORKS
Peter Eisentraut
committed
AC_EXEEXT
AC_PROG_CPP
AC_PROG_GCC_TRADITIONAL
# Create compiler version string
if test x"$GCC" = x"yes" ; then
cc_string="GCC `${CC} --version | head -1`"
cc_string=$CC
AC_DEFINE_UNQUOTED(PG_VERSION_STR, ["PostgreSQL $VERSION on $host, compiled by $cc_string"], [A canonical string containing the version number, platform, and C compiler])
#
# Automatic dependency tracking
#
PGAC_ARG_BOOL(enable, depend, no, [ --enable-depend turn on automatic dependency tracking],
[autodepend=yes])
#
# Enable assert checks
#
PGAC_ARG_BOOL(enable, cassert, no, [ --enable-cassert enable assertion checks (for debugging)],
[AC_DEFINE([USE_ASSERT_CHECKING], 1,
[Define to 1 to build with assertion checks])])
Peter Eisentraut
committed
#
# Include directories
#
ac_save_IFS=$IFS
Peter Eisentraut
committed
IFS="${IFS}:"
Peter Eisentraut
committed
# SRCH_INC comes from the template file
for dir in $with_includes $SRCH_INC; do
if test -d "$dir"; then
INCLUDES="$INCLUDES -I$dir"
else
AC_MSG_WARN([*** Include directory $dir does not exist.])
fi
done
IFS=$ac_save_IFS
AC_SUBST(INCLUDES)
#
# Library directories
#
ac_save_IFS=$IFS
Peter Eisentraut
committed
IFS="${IFS}:"
Peter Eisentraut
committed
# LIBRARY_DIRS comes from command line, SRCH_LIB from template file.
for dir in $LIBRARY_DIRS $SRCH_LIB; do
if test -d "$dir"; then
Peter Eisentraut
committed
LIBDIRS="$LIBDIRS -L$dir"
Peter Eisentraut
committed
else
AC_MSG_WARN([*** Library directory $dir does not exist.])
fi
done
IFS=$ac_save_IFS
#
# Tcl/Tk
#
AC_MSG_CHECKING([whether to build with Tcl])
PGAC_ARG_BOOL(with, tcl, no, [ --with-tcl build Tcl and Tk interfaces])
AC_MSG_RESULT([$with_tcl])
AC_SUBST([with_tcl])
# If Tcl is enabled (above) then Tk is also, unless the user disables it using --without-tk
AC_MSG_CHECKING([whether to build with Tk])
if test "$with_tcl" = yes; then
PGAC_ARG_BOOL(with, tk, yes, [ --without-tk do not build Tk interfaces if Tcl is enabled])
else
with_tk=no
fi
AC_MSG_RESULT([$with_tk])
AC_SUBST([with_tk])
# We see if the path to the TCL/TK configuration scripts is specified.
# This will override the use of tclsh to find the paths to search.
PGAC_ARG_REQ(with, tclconfig, [ --with-tclconfig=DIR tclConfig.sh and tkConfig.sh are in DIR])
# We see if the path to the TK configuration scripts is specified.
# This will override the use of tclsh to find the paths to search.
PGAC_ARG_REQ(with, tkconfig, [ --with-tkconfig=DIR tkConfig.sh is in DIR])
#
# Optionally build Perl modules (Pg.pm and PL/Perl)
#
AC_MSG_CHECKING([whether to build Perl modules])
PGAC_ARG_BOOL(with, perl, no, [ --with-perl build Perl interface and PL/Perl])
AC_MSG_RESULT([$with_perl])
AC_SUBST(with_perl)
#
# Optionally build Python interface module
#
AC_MSG_CHECKING([whether to build Python modules])
PGAC_ARG_BOOL(with, python, no, [ --with-python build Python interface module])
AC_MSG_RESULT([$with_python])
AC_SUBST(with_python)
#
# Optionally build the Java/JDBC tools
#
AC_MSG_CHECKING([whether to build Java/JDBC tools])
PGAC_ARG_BOOL(with, java, no, [ --with-java build JDBC interface and Java tools],
PGAC_PATH_ANT
if test -z "$ANT"; then
AC_MSG_ERROR([Ant is required to build Java components])
fi],
dnl A note on the Kerberos and OpenSSL options:
dnl The user can give an argument to the option in order the specify
dnl the base path of the respective installation (what he specified
dnl perhaps as --prefix). If no argument is given ($withval is "yes")
dnl then we take the path where the package installs by default. This
dnl way the user doesn't have to use redundant --with-includes and
dnl --with-libraries options, but he can still use them if the layout
dnl is non-standard.
#
# Kerberos 4
#
PGAC_ARG_OPTARG(with, krb4, [ --with-krb4[=DIR] build with Kerberos 4 support [/usr/athena]],
[krb4_prefix=/usr/athena],
[krb4_prefix=$withval],
[
AC_MSG_RESULT([building with Kerberos 4 support])
AC_DEFINE(KRB4, 1, [Define if you are building with Kerberos 4 support.])
Peter Eisentraut
committed
if test -d "$krb4_prefix/include"; then
INCLUDES="$INCLUDES -I$krb4_prefix/include"
fi
if test -d "$krb4_prefix/lib"; then
LIBDIRS="$LIBDIRS -L$krb4_prefix/lib"
krb_srvtab="/etc/srvtab"
])
AC_SUBST(with_krb4)
#
# Kerberos 5
#
PGAC_ARG_OPTARG(with, krb5, [ --with-krb5[=DIR] build with Kerberos 5 support [/usr/athena]],
[krb5_prefix=/usr/athena],
[krb5_prefix=$withval],
[
AC_MSG_RESULT([building with Kerberos 5 support])
AC_DEFINE(KRB5, 1, [Define if you are building with Kerberos 5 support.])
Peter Eisentraut
committed
if test -d "$krb5_prefix/include"; then
INCLUDES="$INCLUDES -I$krb5_prefix/include"
fi
if test -d "$krb5_prefix/lib"; then
LIBDIRS="$LIBDIRS -L$krb5_prefix/lib"
krb_srvtab="FILE:\$(sysconfdir)/krb5.keytab"
])
AC_SUBST(with_krb5)
# Using both Kerberos 4 and Kerberos 5 at the same time isn't going to work.
if test "$with_krb4" = yes && test "$with_krb5" = yes ; then
AC_MSG_ERROR([Kerberos 4 and Kerberos 5 support cannot be combined])
fi
AC_SUBST(krb_srvtab)
#
# Kerberos configuration parameters
#
PGAC_ARG_REQ(with, krb-srvnam,
Peter Eisentraut
committed
[ --with-krb-srvnam=NAME name of the service principal in Kerberos [postgres]],
[],
[with_krb_srvnam="postgres"])
AC_DEFINE_UNQUOTED([PG_KRB_SRVNAM], ["$with_krb_srvnam"],
[The name of the PostgreSQL service principal in Kerberos])
#
# PAM
#
AC_MSG_CHECKING([whether to build with PAM support])
Peter Eisentraut
committed
PGAC_ARG_BOOL(with, pam, no,
[ --with-pam build with PAM support],
[AC_DEFINE([USE_PAM], 1, [Define to build with PAM support])])
AC_MSG_RESULT([$with_pam])
#
# OpenSSL
#
PGAC_ARG_OPTARG(with, openssl,
[ --with-openssl[=DIR] build with OpenSSL support [/usr/local/ssl]],
[openssl_prefix=/usr/local/ssl],
[openssl_prefix=$withval],
[
AC_MSG_RESULT([building with OpenSSL support])
AC_DEFINE([USE_SSL], 1, [Define to build with (Open)SSL support])
if test -d "${openssl_prefix}/include" ; then
INCLUDES="$INCLUDES -I${openssl_prefix}/include"
fi
if test -d "${openssl_prefix}/lib" ; then
Peter Eisentraut
committed
LIBDIRS="$LIBDIRS -L${openssl_prefix}/lib"
])
AC_SUBST(with_openssl)
#
# Optionally enable the building of the ODBC driver
#
# Old option name
if test "${with_odbc+set}" = set && test "${enable_odbc+set}" != set; then
enable_odbc=$with_odbc
fi
AC_MSG_CHECKING([whether to build the ODBC driver])
PGAC_ARG_BOOL(enable, odbc, no, [ --enable-odbc build the ODBC driver package])
PGAC_ARG_BOOL(with, unixodbc, no, [ --with-unixodbc build ODBC driver for unixODBC])
PGAC_ARG_BOOL(with, iodbc, no, [ --with-iodbc build ODBC driver for iODBC])
if test "$with_unixodbc" = yes && test "$with_iodbc" = yes; then
AC_MSG_ERROR([ODBC driver cannot be built for both unixODBC and iODBC])
fi
if test "$with_unixodbc" = yes || test "$with_iodbc" = yes; then
enable_odbc=yes
fi
case $enable_odbc:$with_unixodbc:$with_iodbc in
yes:no:no) AC_MSG_RESULT([yes (stand-alone)]);;
yes:yes:no) AC_MSG_RESULT([yes (unixODBC)]); AC_DEFINE(WITH_UNIXODBC);;
yes:no:yes) AC_MSG_RESULT([yes (iODBC)]); AC_DEFINE(WITH_IODBC);;
no:*) AC_MSG_RESULT(no);;
esac
AC_SUBST([enable_odbc])
AC_SUBST([with_unixodbc])
AC_SUBST([with_iodbc])
# Allow for overriding the default location of the odbcinst.ini
# file which is normally ${sysconfdir} (i.e., ${prefix}/etc).
PGAC_ARG_REQ(with, odbcinst,
[ --with-odbcinst=DIR default directory for odbcinst.ini [sysconfdir]],
[odbcinst_ini_dir=$withval],
[odbcinst_ini_dir="\${sysconfdir}"])
AC_SUBST([odbcinst_ini_dir])
# Assume system is ELF if it predefines __ELF__ as 1,
Peter Eisentraut
committed
# otherwise believe host_os based default.
case $host_os in
freebsd1*|freebsd2*) elf=no;;
freebsd3*|freebsd4*) elf=yes;;
Peter Eisentraut
committed
esac
AC_EGREP_CPP(yes,
[#if __ELF__
yes
#endif
],
Peter Eisentraut
committed
[ELF_SYS=true],
[if test "X$elf" = "Xyes" ; then
ELF_SYS=true
Peter Eisentraut
committed
ELF_SYS=
fi])
Peter Eisentraut
committed
#
# Optionally build C++ code (i.e., libpq++)
#
Peter Eisentraut
committed
AC_MSG_CHECKING([whether to build C++ modules])
PGAC_ARG_OPTARG(with, CXX, [ --with-CXX build C++ modules (libpq++)],
[],
[CXX=$withval],
[
AC_MSG_RESULT(yes)
# If the user has specified CXXFLAGS in the environment, leave it
# alone, else use a default.
Peter Eisentraut
committed
has_environ_CXXFLAGS="${CXXFLAGS+yes}"
Peter Eisentraut
committed
if test "$has_environ_CXXFLAGS" != yes; then
if test "$GXX" = yes; then
CXXFLAGS=-O2
else
case $template in
osf) CXXFLAGS='-O4 -Olimit 2000' ;;
unixware) CXXFLAGS='-O' ;;
*) CXXFLAGS= ;;
esac
fi
fi
if test "$enable_debug" = yes && test "$ac_cv_prog_cxx_g" = yes; then
CXXFLAGS="$CXXFLAGS -g"
fi
echo "using CXXFLAGS=$CXXFLAGS"
Peter Eisentraut
committed
AC_SUBST(GXX)
PGAC_CLASS_STRING
PGAC_CXX_NAMESPACE_STD
],
[AC_MSG_RESULT(no)])
AC_SUBST(with_CXX)
Peter Eisentraut
committed
CPPFLAGS="$CPPFLAGS $INCLUDES"
Peter Eisentraut
committed
LDFLAGS="$LDFLAGS $LIBDIRS"
Peter Eisentraut
committed
echo "using CPPFLAGS=$CPPFLAGS"
echo "using LDFLAGS=$LDFLAGS"
Peter Eisentraut
committed
AC_PROG_AWK
Peter Eisentraut
committed
PGAC_PATH_FLEX
AC_PROG_LD
Peter Eisentraut
committed
AC_SUBST(LD)
AC_SUBST(with_gnu_ld)
case $host_os in sysv5*)
AC_CACHE_CHECK([whether ld -R works], [pgac_cv_prog_ld_R],
[
pgac_save_LDFLAGS=$LDFLAGS; LDFLAGS="$LDFLAGS -Wl,-R/usr/lib"
AC_TRY_LINK([], [], [pgac_cv_prog_ld_R=yes], [pgac_cv_prog_ld_R=no])
LDFLAGS=$pgac_save_LDFLAGS
])
ld_R_works=$pgac_cv_prog_ld_R
AC_SUBST(ld_R_works)
esac
Peter Eisentraut
committed
AC_CHECK_PROGS(LORDER, lorder)
AC_PATH_PROG(TAR, tar)
AC_CHECK_PROGS(YACC, ['bison -y'])
if test -z "$YACC"; then
AC_MSG_WARN([
*** Without Bison you will not be able to build PostgreSQL from CVS or
*** change any of the parser definition files. You can obtain Bison from
*** a GNU mirror site. (If you are using the official distribution of
*** PostgreSQL then you do not need to worry about this because the Bison
*** output is pre-generated.) To use a different yacc program (possible,
*** but not recommended), set the environment variable YACC before running
*** 'configure'.])
fi
AC_SUBST(YFLAGS)
if test "$with_tk" = yes; then
AC_PATH_PROG(WISH, wish)
Peter Eisentraut
committed
test -z "$WISH" && AC_MSG_ERROR(['wish' is required for Tk support])
fi
Peter Eisentraut
committed
PGAC_PATH_PERL
if test "$with_perl" = yes; then
PGAC_CHECK_PERL_DIRS
fi
if test "$with_python" = yes; then
PGAC_PATH_PYTHON
PGAC_CHECK_PYTHON_MODULE_SETUP
PGAC_CHECK_PYTHON_EMBED_SETUP
fi
Peter Eisentraut
committed
##
## Libraries
##
Peter Eisentraut
committed
PGAC_CHECK_READLINE
AC_SEARCH_LIBS(using_history, history, [AC_DEFINE(HAVE_HISTORY_FUNCTIONS)])
if test "$PORTNAME" != "aix" -a "$PORTNAME" != "alpha"
then
AC_CHECK_LIB(bsd, main)
fi
AC_CHECK_LIB(util, setproctitle)
AC_CHECK_LIB(m, main)
AC_CHECK_LIB(dl, main)
AC_CHECK_LIB(socket, main)
AC_CHECK_LIB(nsl, main)
AC_CHECK_LIB(ipc, main)
AC_CHECK_LIB(IPC, main)
AC_CHECK_LIB(lc, main)
AC_CHECK_LIB(dld, main)
AC_CHECK_LIB(ld, main)
AC_CHECK_LIB(compat, main)
AC_CHECK_LIB(BSD, main)
Marc G. Fournier
committed
AC_CHECK_LIB(gen, main)
AC_CHECK_LIB([[unix]], main)
AC_SEARCH_LIBS(crypt, crypt)
Peter Eisentraut
committed
AC_CHECK_LIB(bind, __inet_ntoa)
# Only consider libz to be present if we find <zlib.h> as well;
# furthermore, check that <zlib.h> defines z_streamp (versions before
# about 1.0.4 did not). While we could work around the lack of z_streamp,
# it seems unwise to encourage people to use such old zlib versions...
AC_EGREP_HEADER(z_streamp, zlib.h, [
AC_CHECK_LIB(z, inflate)
])
Peter Eisentraut
committed
AC_SEARCH_LIBS(fdatasync, [rt posix4])
if test "$with_krb4" = yes ; then
Peter Eisentraut
committed
AC_CHECK_LIB(des, [des_encrypt], [], [AC_MSG_ERROR([library 'des' is required for Kerberos 4])])
AC_CHECK_LIB(krb, [krb_sendauth], [], [AC_MSG_ERROR([library 'krb' is required for Kerberos 4])])
fi
if test "$with_krb5" = yes ; then
AC_SEARCH_LIBS(com_err, [krb5 'krb5 -ldes -lasn1 -lroken' com_err], [],
[AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
AC_SEARCH_LIBS(krb5_encrypt, [krb5 'krb5 -ldes -lasn1 -lroken' crypto k5crypto], [],
[AC_MSG_ERROR([could not find function 'krb5_encrypt' required for Kerberos 5])])
AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -ldes -lasn1 -lroken'], [],
[AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
fi
if test "$with_openssl" = yes ; then
dnl Order matters!
Peter Eisentraut
committed
AC_CHECK_LIB(crypto, [CRYPTO_new_ex_data], [], [AC_MSG_ERROR([library 'crypto' is required for OpenSSL])])
AC_CHECK_LIB(ssl, [SSL_library_init], [], [AC_MSG_ERROR([library 'ssl' is required for OpenSSL])])
if test "$with_pam" = yes ; then
AC_CHECK_LIB(pam, [pam_start], [], [AC_MSG_ERROR([library 'pam' is required for PAM])])
fi
if test "$enable_nls" = yes ; then
PGAC_CHECK_GETTEXT
fi
##
## Header files
##
dnl sys/socket.h and sys/types.h are required by AC_FUNC_ACCEPT_ARGTYPES
AC_CHECK_HEADERS([crypt.h dld.h endian.h fp_class.h getopt.h ieeefp.h pwd.h sys/ipc.h sys/pstat.h sys/select.h sys/sem.h sys/socket.h sys/shm.h sys/types.h sys/un.h termios.h kernel/OS.h kernel/image.h SupportDefs.h])
dnl At least on IRIX, cpp test for netinet/tcp.h will fail unless netinet/in.h
dnl is included first. So can't just use AC_CHECK_HEADERS; do it this way:
AC_CHECK_HEADERS([netinet/in.h])
AC_MSG_CHECKING([for netinet/tcp.h])
AC_TRY_CPP([
#ifdef HAVE_NETINET_IN_H
#include <netinet/in.h>
#endif
#include <netinet/tcp.h>
], [AC_DEFINE(HAVE_NETINET_TCP_H) AC_MSG_RESULT(yes)],
[AC_MSG_RESULT(no)])
Peter Eisentraut
committed
PGAC_HEADER_STRING
AC_CHECK_HEADERS([readline/readline.h readline.h], [break])
AC_CHECK_HEADERS([readline/history.h history.h], [break])
if test "$with_krb4" = yes ; then
AC_CHECK_HEADER(krb.h, [], [AC_MSG_ERROR([header file <krb.h> is required for Kerberos 4])])
fi
if test "$with_krb5" = yes ; then
AC_CHECK_HEADER(krb5.h, [], [AC_MSG_ERROR([header file <krb5.h> is required for Kerberos 5])])
AC_CHECK_HEADER(com_err.h, [], [AC_MSG_ERROR([header file <com_err.h> is required for Kerberos 5])])
fi
if test "$with_openssl" = yes ; then
AC_CHECK_HEADER([openssl/ssl.h], [], [AC_MSG_ERROR([header file <openssl/ssl.h> is required for OpenSSL])])
AC_CHECK_HEADER([openssl/err.h], [], [AC_MSG_ERROR([header file <openssl/err.h> is required for OpenSSL])])
fi
if test "$with_pam" = yes ; then
AC_CHECK_HEADER([security/pam_appl.h], [], [AC_MSG_ERROR([header file <security/pam_appl.h> is required for PAM])])
fi
##
## Types, structures, compiler characteristics
##
AC_C_CONST
AC_C_INLINE
PGAC_C_SIGNED
PGAC_C_VOLATILE
AC_STRUCT_TIMEZONE
PGAC_UNION_SEMUN
PGAC_STRUCT_CMSGCRED
PGAC_STRUCT_FCRED
PGAC_STRUCT_SOCKCRED
Peter Eisentraut
committed
PGAC_STRUCT_SOCKADDR_UN
if test "$with_krb5" = yes; then
# Check for differences between MIT and Heimdal (KTH) releases
PGAC_CHECK_MEMBER([krb5_ticket.enc_part2], [],
[PGAC_CHECK_MEMBER([krb5_ticket.client], [],
[AC_MSG_ERROR([could not determine how to get client name from Kerberos 5 ticket])],
[#include <krb5.h>])],
[#include <krb5.h>])
PGAC_CHECK_MEMBER([krb5_error.text.data], [],
[PGAC_CHECK_MEMBER([krb5_error.e_data], [],
[AC_MSG_ERROR([could not determine how to extract Kerberos 5 error messages])],
[#include <krb5.h>])],
[#include <krb5.h>])
fi
##
## Functions, global variables
##
PGAC_VAR_INT_TIMEZONE
AC_FUNC_ACCEPT_ARGTYPES
PGAC_FUNC_GETTIMEOFDAY_1ARG
# SunOS doesn't handle negative byte comparisons properly with +/- return
PGAC_FUNC_MEMCMP
AC_CHECK_FUNCS([fcvt getopt_long memmove pstat setproctitle setsid sigprocmask sysconf waitpid dlopen fdatasync])
dnl Check whether <unistd.h> declares fdatasync().
AC_EGREP_HEADER(fdatasync, unistd.h, AC_DEFINE(HAVE_FDATASYNC_DECL))
AC_CACHE_CHECK([for PS_STRINGS], [pgac_cv_var_PS_STRINGS],
[AC_TRY_LINK(
[#include <machine/vmparam.h>
#include <sys/exec.h>
],
[PS_STRINGS->ps_nargvstr = 1;
PS_STRINGS->ps_argvstr = "foo";],
[pgac_cv_var_PS_STRINGS=yes],
[pgac_cv_var_PS_STRINGS=no])])
if test "$pgac_cv_var_PS_STRINGS" = yes ; then
AC_DEFINE([HAVE_PS_STRINGS], [], [Define if the PS_STRINGS thing exists.])
fi
dnl We use our snprintf.c emulation if either snprintf() or vsnprintf()
dnl is missing. Yes, there are machines that have only one.
dnl We may also decide to use snprintf.c if snprintf() is present but does
dnl not have working "long long int" support -- see below.
SNPRINTF=''
AC_CHECK_FUNC(vsnprintf,
AC_DEFINE(HAVE_VSNPRINTF),
SNPRINTF='snprintf.o')
dnl Check whether <stdio.h> declares snprintf() and vsnprintf(); if not,
dnl include/c.h will provide declarations. Note this is a separate test
dnl from whether the functions exist in the C library --- there are systems
dnl that have the functions but don't bother to declare them :-(
dnl Note: simple-minded pattern here will do wrong thing if stdio.h
dnl declares vsnprintf() but not snprintf(). Hopefully there are no
dnl systems that are *that* brain-damaged...
AC_EGREP_HEADER(snprintf, stdio.h, AC_DEFINE(HAVE_SNPRINTF_DECL))
AC_EGREP_HEADER(vsnprintf, stdio.h, AC_DEFINE(HAVE_VSNPRINTF_DECL))
# do this one the hard way in case isinf() is a macro
AC_CACHE_CHECK([for isinf], ac_cv_func_isinf,
[#include <math.h>
],
[double x = 0.0; int res = isinf(x);],
[ac_cv_func_isinf=yes],
[ac_cv_func_isinf=no])])
if test $ac_cv_func_isinf = yes ; then
AC_DEFINE(HAVE_ISINF)
ISINF=
else
ISINF='isinf.o'
# Look for a way to implement a substitute for isinf()
AC_CHECK_FUNCS([fpclass fp_class fp_class_d class], [break])
AC_SUBST(ISINF)
AC_CHECK_FUNC(getrusage,
AC_DEFINE(HAVE_GETRUSAGE),
GETRUSAGE='getrusage.o')
AC_SUBST(GETRUSAGE)
AC_CHECK_FUNC(srandom,
AC_DEFINE(HAVE_SRANDOM),
SRANDOM='srandom.o')
AC_SUBST(SRANDOM)
AC_CHECK_FUNC(gethostname,
AC_DEFINE(HAVE_GETHOSTNAME),
GETHOSTNAME='gethostname.o')
AC_SUBST(GETHOSTNAME)
AC_CHECK_FUNC(random,
AC_DEFINE(HAVE_RANDOM),
MISSING_RANDOM='random.o')
AC_SUBST(MISSING_RANDOM)
AC_CHECK_FUNC(inet_aton,
AC_DEFINE(HAVE_INET_ATON),
INET_ATON='inet_aton.o')
AC_SUBST(INET_ATON)
AC_CHECK_FUNC(strerror,
AC_DEFINE(HAVE_STRERROR),
AC_CHECK_FUNC(strdup,
AC_DEFINE(HAVE_STRDUP),
STRDUP='../../utils/strdup.o')
AC_SUBST(STRDUP)
AC_CHECK_FUNC(strtol,
AC_DEFINE(HAVE_STRTOL),
STRTOL='strtol.o')
AC_CHECK_FUNC(strcasecmp,
AC_DEFINE(HAVE_STRCASECMP),
STRCASECMP='strcasecmp.o')
AC_SUBST(STRCASECMP)
AC_CHECK_FUNC(cbrt,
AC_DEFINE(HAVE_CBRT),
AC_CHECK_LIB(m, cbrt, AC_DEFINE(HAVE_CBRT)))
# On HPUX 9, rint() is not in regular libm.a but in /lib/pa1.1/libm.a;
# this hackery with HPUXMATHLIB allows us to cope.
HPUXMATHLIB=""
Peter Eisentraut
committed
case $host_cpu in
hppa1.1)
if [[ -r /lib/pa1.1/libm.a ]] ; then
HPUXMATHLIB="-L /lib/pa1.1 -lm"
fi ;;
esac
AC_SUBST(HPUXMATHLIB)
AC_CHECK_LIB(m, rint, AC_DEFINE(HAVE_RINT), , $HPUXMATHLIB))
# Readline versions < 2.1 don't have rl_completion_append_character
AC_MSG_CHECKING([for rl_completion_append_character])
AC_TRY_LINK([#include <stdio.h>
#ifdef HAVE_READLINE_READLINE_H
# include <readline/readline.h>
#elif defined(HAVE_READLINE_H)
# include <readline.h>
#endif
],
[rl_completion_append_character = 'x';],
[AC_MSG_RESULT(yes)
AC_DEFINE(HAVE_RL_COMPLETION_APPEND_CHARACTER)],
[AC_MSG_RESULT(no)])
AC_CHECK_FUNCS([rl_completion_matches rl_filename_completion_function])
dnl Cannot use AC_CHECK_FUNC because finite may be a macro
AC_MSG_CHECKING(for finite)
AC_TRY_LINK([#include <math.h>],
[int dummy=finite(1.0);],
[AC_DEFINE(HAVE_FINITE) AC_MSG_RESULT(yes)],
AC_MSG_RESULT(no))
dnl Cannot use AC_CHECK_FUNC because sigsetjmp may be a macro
dnl (especially on GNU libc)
Peter Eisentraut
committed
dnl See also comments in pg_config.h.
AC_MSG_CHECKING(for sigsetjmp)
AC_TRY_LINK([#include <setjmp.h>],
[sigjmp_buf x; sigsetjmp(x, 1);],
[AC_DEFINE(HAVE_SIGSETJMP) AC_MSG_RESULT(yes)],
AC_MSG_RESULT(no))
PGAC_ARG_BOOL(enable, syslog, no, [ --enable-syslog enable logging to syslog],
[AC_CHECK_FUNC(syslog,
[AC_DEFINE([ENABLE_SYSLOG], 1,
[Define to 1 if to enable the syslogging code])],
[AC_MSG_ERROR([no syslog interface found])])])
AC_CACHE_CHECK([for optreset], pgac_cv_var_int_optreset,
[AC_TRY_LINK([#include <unistd.h>],
[extern int optreset; optreset = 1;],
[pgac_cv_var_int_optreset=yes],
[pgac_cv_var_int_optreset=no])])
if test x"$pgac_cv_var_int_optreset" = x"yes"; then
AC_DEFINE(HAVE_INT_OPTRESET, 1)
fi