mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-12-15 08:20:16 +08:00
2f2d05763d
system, not Tcl-provided one. Make sure export file, if any, is cleaned. Tcl configuration is now read directly in configure and recorded in Makefile.global. This eliminates some duplicate efforts and allows for easier hand-editing of the results, if necessary.
1265 lines
38 KiB
Plaintext
1265 lines
38 KiB
Plaintext
dnl Process this file with autoconf to produce a configure script.
|
|
dnl $Header: /cvsroot/pgsql/configure.in,v 1.185 2002/05/24 18:10:17 petere Exp $
|
|
dnl
|
|
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
|
|
m4_pattern_forbid(^PGAC_)dnl to catch undefined macros
|
|
dnl
|
|
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".
|
|
m4_define([info], [doc])
|
|
m4_define([infodir], [docdir])
|
|
AC_INIT([PostgreSQL], [7.3devel], [pgsql-bugs@postgresql.org])
|
|
m4_undefine([infodir])
|
|
m4_undefine([info])
|
|
AC_SUBST(docdir)
|
|
|
|
AC_PREREQ(2.53)
|
|
AC_COPYRIGHT([Copyright 2002 PostgreSQL Global Development Group])
|
|
AC_CONFIG_SRCDIR([src/backend/access/common/heaptuple.c])
|
|
AC_CONFIG_AUX_DIR(config)
|
|
AC_PREFIX_DEFAULT(/usr/local/pgsql)
|
|
AC_SUBST(configure_args, [$ac_configure_args])
|
|
|
|
AC_DEFINE_UNQUOTED(PG_VERSION, "$PACKAGE_VERSION", [PostgreSQL version])
|
|
|
|
AC_CANONICAL_HOST
|
|
|
|
template=
|
|
AC_MSG_CHECKING([which template to use])
|
|
|
|
PGAC_ARG_REQ(with, template, [],
|
|
[
|
|
case $withval in
|
|
list) echo; ls "$srcdir/src/template"; exit;;
|
|
*) if test -f "$srcdir/src/template/$with_template" ; then
|
|
template=$withval
|
|
else
|
|
AC_MSG_ERROR(['$withval' is not a valid template name. Use 'list' for a list.])
|
|
fi;;
|
|
esac
|
|
],
|
|
[
|
|
# --with-template not given
|
|
|
|
case $host_os in
|
|
aix*) template=aix ;;
|
|
beos*) template=beos ;;
|
|
bsdi*) template=bsdi ;;
|
|
cygwin*) template=win ;;
|
|
darwin*) template=darwin ;;
|
|
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 ;;
|
|
solaris*) template=solaris ;;
|
|
sunos*) template=sunos4 ;;
|
|
sysv4.2*)
|
|
case $host_vendor in
|
|
univel) template=univel ;;
|
|
esac ;;
|
|
sysv4*) template=svr4 ;;
|
|
sysv5*) template=unixware ;;
|
|
ultrix*) template=ultrix4 ;;
|
|
esac
|
|
|
|
if test x"$template" = x"" ; then
|
|
AC_MSG_ERROR([[
|
|
*******************************************************************
|
|
PostgreSQL has apparently not been ported to your platform yet.
|
|
To try a manual configuration, look into the src/template directory
|
|
for a similar platform and use the '--with-template=' option.
|
|
|
|
Please also contact <pgsql-ports@postgresql.org> to see about
|
|
rectifying this. Include the above 'checking host system type...'
|
|
line.
|
|
*******************************************************************
|
|
]])
|
|
fi
|
|
|
|
])
|
|
|
|
AC_MSG_RESULT([$template])
|
|
|
|
PORTNAME=$template
|
|
AC_SUBST(PORTNAME)
|
|
|
|
# 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 ;;
|
|
esac
|
|
AC_CONFIG_LINKS([src/backend/port/tas.s:src/backend/port/tas/${tas_file}])
|
|
|
|
if test "$need_tas" = yes ; then
|
|
TAS=tas.o
|
|
fi
|
|
AC_SUBST(TAS)
|
|
|
|
|
|
|
|
##
|
|
## Command line options
|
|
##
|
|
|
|
|
|
#
|
|
# Add non-standard directories to the include path
|
|
#
|
|
PGAC_ARG_REQ(with, includes, [ --with-includes=DIRS look for additional header files in DIRS])
|
|
|
|
|
|
#
|
|
# 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])
|
|
|
|
|
|
#
|
|
# 64-bit integer date/time storage (--enable-integer-datetimes)
|
|
#
|
|
AC_MSG_CHECKING([whether to build with 64-bit integer date/time support])
|
|
PGAC_ARG_BOOL(enable, integer-datetimes, no, [ --enable-integer-datetimes enable 64-bit integer date/time support],
|
|
[AC_DEFINE([USE_INTEGER_DATETIMES], 1,
|
|
[Set to 1 if you want integer date/time support (--enable-integer-datetimes)])])
|
|
AC_MSG_RESULT([$enable_integer_datetimes])
|
|
|
|
|
|
# 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=SQL_ASCII
|
|
AC_DEFINE(MULTIBYTE, 1, [Set to 1 if you want to use multibyte characters (--enable-multibyte)])
|
|
AC_SUBST(MULTIBYTE)
|
|
|
|
#
|
|
# NLS
|
|
#
|
|
AC_MSG_CHECKING([whether NLS is wanted])
|
|
PGAC_ARG_OPTARG(enable, nls,
|
|
[[ --enable-nls[=LANGUAGES] enable Native Language Support]],
|
|
[],
|
|
[WANTED_LANGUAGES=$enableval],
|
|
[AC_DEFINE(ENABLE_NLS, 1,
|
|
[Define to 1 if you want National Language Support (--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},
|
|
[The default TCP port number on which the server listens and to which
|
|
clients will try to connect to. This can be overridden at run-time,
|
|
but it's convenient if your clients have the right default compiled in.
|
|
(--with-pgport=PORTNUM)])
|
|
AC_DEFINE_UNQUOTED(DEF_PGPORT_STR, "${default_port}",
|
|
[Default TCP port number as string constant])
|
|
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,
|
|
[ --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)
|
|
|
|
|
|
#
|
|
# --enable-debug adds -g to compiler flags
|
|
#
|
|
PGAC_ARG_BOOL(enable, debug, no,
|
|
[ --enable-debug build with debugging symbols (-g)])
|
|
AC_SUBST(enable_debug)
|
|
|
|
#
|
|
# 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])
|
|
|
|
case $template in
|
|
aix) pgac_cc_list="gcc xlc";;
|
|
irix) pgac_cc_list="cc";; # no gcc
|
|
*) pgac_cc_list="gcc cc";;
|
|
esac
|
|
|
|
AC_PROG_CC([$pgac_cc_list])
|
|
# Read the template
|
|
. "$srcdir/src/template/$template" || exit
|
|
|
|
if test "$ac_env_CFLAGS_set" = set; then
|
|
CFLAGS=$ac_env_CFLAGS_value
|
|
fi
|
|
if test "$enable_debug" = yes && test "$ac_cv_prog_cc_g" = yes; then
|
|
CFLAGS="$CFLAGS -g"
|
|
fi
|
|
AC_MSG_NOTICE([using CFLAGS=$CFLAGS])
|
|
# Check if the compiler still works with the template settings
|
|
AC_MSG_CHECKING([whether the C compiler still works])
|
|
AC_TRY_LINK([], [return 0;],
|
|
[AC_MSG_RESULT(yes)],
|
|
[AC_MSG_RESULT(no)
|
|
AC_MSG_ERROR([cannot proceed])])
|
|
AC_PROG_CPP
|
|
AC_SUBST(GCC)
|
|
|
|
# Create compiler version string
|
|
if test x"$GCC" = x"yes" ; then
|
|
cc_string="GCC `${CC} --version | sed q`"
|
|
else
|
|
cc_string=$CC
|
|
fi
|
|
AC_DEFINE_UNQUOTED(PG_VERSION_STR, ["PostgreSQL $PACKAGE_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])
|
|
AC_SUBST(autodepend)
|
|
|
|
|
|
#
|
|
# 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])])
|
|
|
|
|
|
#
|
|
# Include directories
|
|
#
|
|
ac_save_IFS=$IFS
|
|
IFS="${IFS}:"
|
|
# 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
|
|
IFS="${IFS}:"
|
|
# LIBRARY_DIRS comes from command line, SRCH_LIB from template file.
|
|
for dir in $LIBRARY_DIRS $SRCH_LIB; do
|
|
if test -d "$dir"; then
|
|
LIBDIRS="$LIBDIRS -L$dir"
|
|
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],
|
|
[AC_MSG_RESULT(yes)
|
|
PGAC_PATH_ANT
|
|
if test -z "$ANT"; then
|
|
AC_MSG_ERROR([Ant is required to build Java components])
|
|
fi],
|
|
[AC_MSG_RESULT(no)])
|
|
AC_SUBST(with_java)
|
|
|
|
dnl A note on the Kerberos and OpenSSL options:
|
|
dnl
|
|
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
|
|
#
|
|
AC_MSG_CHECKING([whether to build with Kerberos 4 support])
|
|
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(yes)
|
|
AC_DEFINE(KRB4, 1, [Define if you are building with Kerberos 4 support.])
|
|
|
|
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"
|
|
fi
|
|
|
|
krb_srvtab="/etc/srvtab"
|
|
],
|
|
[AC_MSG_RESULT(no)])
|
|
|
|
AC_SUBST(with_krb4)
|
|
|
|
|
|
#
|
|
# Kerberos 5
|
|
#
|
|
AC_MSG_CHECKING([whether to build with Kerberos 5 support])
|
|
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([yes])
|
|
AC_DEFINE(KRB5, 1, [Define if you are building with Kerberos 5 support.])
|
|
|
|
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"
|
|
fi
|
|
|
|
krb_srvtab="FILE:\$(sysconfdir)/krb5.keytab"
|
|
],
|
|
[AC_MSG_RESULT(no)])
|
|
|
|
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,
|
|
[ --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])
|
|
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])
|
|
AC_SUBST(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
|
|
LIBDIRS="$LIBDIRS -L${openssl_prefix}/lib"
|
|
fi
|
|
])
|
|
|
|
AC_SUBST(with_openssl)
|
|
|
|
|
|
#
|
|
# Readline
|
|
#
|
|
PGAC_ARG_BOOL(with, readline, yes,
|
|
[ --without-readline do not use Readline])
|
|
|
|
#
|
|
# Zlib
|
|
#
|
|
PGAC_ARG_BOOL(with, zlib, yes,
|
|
[ --without-zlib do not use Zlib])
|
|
|
|
|
|
|
|
#
|
|
# 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, 1, [Define to 1 to build with unixODBC support (--with-unixodbc)])
|
|
;;
|
|
yes:no:yes) AC_MSG_RESULT([yes (iODBC)])
|
|
AC_DEFINE(WITH_IODBC, 1, [Define to 1 to build with iODBC support (--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,
|
|
# otherwise believe host_os based default.
|
|
case $host_os in
|
|
freebsd1*|freebsd2*) elf=no;;
|
|
freebsd3*|freebsd4*) elf=yes;;
|
|
esac
|
|
|
|
AC_EGREP_CPP(yes,
|
|
[#if __ELF__
|
|
yes
|
|
#endif
|
|
],
|
|
[ELF_SYS=true],
|
|
[if test "X$elf" = "Xyes" ; then
|
|
ELF_SYS=true
|
|
else
|
|
ELF_SYS=
|
|
fi])
|
|
AC_SUBST(ELF_SYS)
|
|
|
|
|
|
|
|
#
|
|
# Optionally build C++ code (i.e., libpq++)
|
|
#
|
|
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.
|
|
|
|
AC_PROG_CXX
|
|
if test "$ac_env_CXXFLAGS" != set; 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
|
|
AC_MSG_NOTICE([using CXXFLAGS=$CXXFLAGS])
|
|
|
|
AC_PROG_CXXCPP
|
|
],
|
|
[AC_MSG_RESULT(no)])
|
|
AC_SUBST(with_CXX)
|
|
AC_SUBST(GXX)
|
|
|
|
CPPFLAGS="$CPPFLAGS $INCLUDES"
|
|
LDFLAGS="$LDFLAGS $LIBDIRS"
|
|
|
|
AC_MSG_NOTICE([using CPPFLAGS=$CPPFLAGS])
|
|
AC_MSG_NOTICE([using LDFLAGS=$LDFLAGS])
|
|
|
|
|
|
AC_PROG_AWK
|
|
PGAC_PATH_FLEX
|
|
AC_PROG_LN_S
|
|
AC_PROG_LD
|
|
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
|
|
AC_PROG_RANLIB
|
|
AC_CHECK_PROGS(LORDER, lorder)
|
|
AC_PATH_PROG(TAR, tar)
|
|
PGAC_CHECK_STRIP
|
|
|
|
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)
|
|
test -z "$WISH" && AC_MSG_ERROR(['wish' is required for Tk support])
|
|
fi
|
|
|
|
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
|
|
|
|
|
|
##
|
|
## Libraries
|
|
##
|
|
|
|
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(nsl, main)
|
|
AC_CHECK_LIB(socket, 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)
|
|
AC_CHECK_LIB(gen, main)
|
|
AC_CHECK_LIB(PW, main)
|
|
AC_CHECK_LIB(resolv, main)
|
|
# QNX:
|
|
AC_CHECK_LIB([[unix]], main)
|
|
AC_SEARCH_LIBS(crypt, crypt)
|
|
# BeOS:
|
|
AC_CHECK_LIB(bind, __inet_ntoa)
|
|
# Solaris:
|
|
AC_SEARCH_LIBS(fdatasync, [rt posix4])
|
|
|
|
if test "$with_readline" = yes; then
|
|
PGAC_CHECK_READLINE
|
|
if test x"$pgac_cv_check_readline" = x"no"; then
|
|
AC_MSG_ERROR([readline library not found
|
|
Use --without-readline to disable readline support.])
|
|
fi
|
|
fi
|
|
|
|
if test "$with_zlib" = yes; then
|
|
AC_CHECK_LIB(z, inflate, [],
|
|
[AC_MSG_ERROR([zlib library not found
|
|
Use --without-zlib to disable zlib support.])])
|
|
fi
|
|
|
|
if test "$with_krb4" = yes ; then
|
|
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!
|
|
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])])
|
|
fi
|
|
|
|
if test "$with_pam" = yes ; then
|
|
AC_CHECK_LIB(pam, [pam_start], [], [AC_MSG_ERROR([library 'pam' is required for PAM])])
|
|
fi
|
|
|
|
|
|
##
|
|
## Header files
|
|
##
|
|
dnl sys/socket.h is 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/un.h termios.h kernel/OS.h kernel/image.h SupportDefs.h])
|
|
|
|
# At least on IRIX, cpp test for netinet/tcp.h will fail unless
|
|
# netinet/in.h is included first.
|
|
AC_CHECK_HEADERS([netinet/in.h])
|
|
AC_CHECK_HEADERS([netinet/tcp.h], [], [],
|
|
[AC_INCLUDES_DEFAULT
|
|
#ifdef HAVE_NETINET_IN_H
|
|
#include <netinet/in.h>
|
|
#endif
|
|
])
|
|
|
|
if test "$with_readline" = yes; then
|
|
AC_CHECK_HEADERS([readline/readline.h], [],
|
|
[AC_CHECK_HEADERS([readline.h], [],
|
|
[AC_MSG_ERROR([readline header not found
|
|
Use --without-readline to disable readline support.])])])
|
|
AC_CHECK_HEADERS([readline/history.h], [],
|
|
[AC_CHECK_HEADERS([history.h], [],
|
|
[AC_MSG_ERROR([history header not found
|
|
Use --without-readline to disable readline support.])])])
|
|
fi
|
|
|
|
if test "$with_zlib" = yes; then
|
|
AC_CHECK_HEADER(zlib.h, [], [AC_MSG_ERROR([zlib header not found
|
|
Use --without-zlib to disable zlib support.])])
|
|
fi
|
|
|
|
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
|
|
##
|
|
m4_defun([AC_PROG_CC_STDC], []) dnl We don't want that.
|
|
AC_C_CONST
|
|
AC_C_INLINE
|
|
AC_C_STRINGIZE
|
|
PGAC_C_SIGNED
|
|
AC_C_VOLATILE
|
|
AC_STRUCT_TIMEZONE
|
|
PGAC_UNION_SEMUN
|
|
PGAC_STRUCT_SOCKADDR_UN
|
|
|
|
AC_CHECK_TYPES([struct cmsgcred, struct fcred, struct sockcred], [], [],
|
|
[#include <sys/param.h>
|
|
#include <sys/socket.h>
|
|
#include <sys/ucred.h>])
|
|
|
|
if test "$with_zlib" = yes; then
|
|
# 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_CHECK_TYPE(z_streamp, [], [AC_MSG_ERROR([zlib version is too old
|
|
Use --without-zlib to disable zlib support.])],
|
|
[#include <zlib.h>])
|
|
fi
|
|
|
|
if test "$with_krb5" = yes; then
|
|
# Check for differences between MIT and Heimdal (KTH) releases
|
|
AC_CHECK_MEMBERS([krb5_ticket.enc_part2], [],
|
|
[AC_CHECK_MEMBERS([krb5_ticket.client], [],
|
|
[AC_MSG_ERROR([could not determine how to get client name from Kerberos 5 ticket])],
|
|
[#include <krb5.h>])],
|
|
[#include <krb5.h>])
|
|
AC_CHECK_MEMBERS([krb5_error.text.data], [],
|
|
[AC_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([cbrt fcvt getopt_long memmove pstat setproctitle setsid sigprocmask sysconf waitpid dlopen fdatasync])
|
|
|
|
AC_CHECK_DECLS(fdatasync, [], [], [#include <unistd.h>])
|
|
|
|
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
|
|
|
|
|
|
# We use our snprintf.c emulation if either snprintf() or vsnprintf()
|
|
# is missing. Yes, there are machines that have only one. We may
|
|
# also decide to use snprintf.c if snprintf() is present but does not
|
|
# have working "long long int" support -- see below.
|
|
|
|
SNPRINTF=''
|
|
AC_CHECK_FUNCS(snprintf, [], SNPRINTF='snprintf.o')
|
|
AC_CHECK_FUNCS(vsnprintf, [], SNPRINTF='snprintf.o')
|
|
AC_SUBST(SNPRINTF)
|
|
|
|
|
|
# Check whether <stdio.h> declares snprintf() and vsnprintf(); if not,
|
|
# include/c.h will provide declarations. Note this is a separate test
|
|
# from whether the functions exist in the C library --- there are
|
|
# systems that have the functions but don't bother to declare them :-(
|
|
|
|
AC_CHECK_DECLS([snprintf, vsnprintf])
|
|
|
|
|
|
# do this one the hard way in case isinf() is a macro
|
|
AC_CACHE_CHECK([for isinf], ac_cv_func_isinf,
|
|
[AC_TRY_LINK(
|
|
[#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, 1, [Define to 1 if you 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])
|
|
fi
|
|
AC_SUBST(ISINF)
|
|
|
|
|
|
AC_CHECK_FUNCS(getrusage, [], GETRUSAGE='getrusage.o')
|
|
AC_SUBST(GETRUSAGE)
|
|
AC_CHECK_FUNCS(srandom, [], SRANDOM='srandom.o')
|
|
AC_SUBST(SRANDOM)
|
|
AC_CHECK_FUNCS(gethostname, [], GETHOSTNAME='gethostname.o')
|
|
AC_SUBST(GETHOSTNAME)
|
|
AC_CHECK_FUNCS(random, [], MISSING_RANDOM='random.o')
|
|
AC_SUBST(MISSING_RANDOM)
|
|
AC_CHECK_FUNCS(inet_aton, [], INET_ATON='inet_aton.o')
|
|
AC_SUBST(INET_ATON)
|
|
AC_CHECK_FUNCS(strerror, [], STRERROR='strerror.o')
|
|
AC_SUBST(STRERROR)
|
|
AC_CHECK_FUNCS(strdup, [], STRDUP='../../utils/strdup.o')
|
|
AC_SUBST(STRDUP)
|
|
AC_CHECK_FUNCS(strtol, [], STRTOL='strtol.o')
|
|
AC_SUBST(STRTOL)
|
|
AC_CHECK_FUNCS(strtoul, [], STRTOUL='strtoul.o')
|
|
AC_SUBST(STRTOUL)
|
|
AC_CHECK_FUNCS(strcasecmp, [], STRCASECMP='strcasecmp.o')
|
|
AC_SUBST(STRCASECMP)
|
|
|
|
# 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=""
|
|
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_FUNCS(rint, [],
|
|
[AC_CHECK_LIB(m, rint, AC_DEFINE(HAVE_RINT), , $HPUXMATHLIB)])
|
|
|
|
|
|
if test "$with_readline" = yes; then
|
|
PGAC_VAR_RL_COMPLETION_APPEND_CHARACTER
|
|
AC_CHECK_FUNCS([rl_completion_matches rl_filename_completion_function])
|
|
fi
|
|
|
|
|
|
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, 1, [Set to 1 if you 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)
|
|
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, 1, [Set to 1 if you have sigsetjmp()])
|
|
AC_MSG_RESULT(yes)],
|
|
[AC_MSG_RESULT(no)])
|
|
|
|
AC_CHECK_FUNC(syslog,
|
|
[AC_CHECK_HEADER(syslog.h,
|
|
[AC_DEFINE(HAVE_SYSLOG, 1, [])],
|
|
[])])
|
|
|
|
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, [Define to 1 if you have the global variable 'int optreset'])
|
|
fi
|
|
|
|
|
|
# This test makes sure that run tests work at all. Sometimes a shared
|
|
# library is found by the linker, but the runtime linker can't find it.
|
|
# This check should come after all modifications of compiler or linker
|
|
# variables, and before any other run tests.
|
|
AC_MSG_CHECKING([test program])
|
|
AC_TRY_RUN([int main() { return 0; }],
|
|
[AC_MSG_RESULT(ok)],
|
|
[AC_MSG_RESULT(failed)
|
|
AC_MSG_ERROR([[
|
|
*** Could not execute a simple test program. This may be a problem
|
|
*** related to locating shared libraries. Check the file 'config.log'
|
|
*** for the exact reason.]])],
|
|
[AC_MSG_RESULT([cross-compiling])])
|
|
|
|
|
|
dnl Check to see if we have a working 64-bit integer type.
|
|
dnl This breaks down into two steps:
|
|
dnl (1) figure out if the compiler has a 64-bit int type with working
|
|
dnl arithmetic, and if so
|
|
dnl (2) see whether snprintf() can format the type correctly. (Currently,
|
|
dnl snprintf is the only library routine we really need for int8 support.)
|
|
dnl It's entirely possible to have a compiler that handles a 64-bit type
|
|
dnl when the C library doesn't; this is fairly likely when using gcc on
|
|
dnl an older platform, for example.
|
|
dnl If there is no native snprintf() or it does not handle the 64-bit type,
|
|
dnl we force our own version of snprintf() to be used instead.
|
|
dnl Note this test must be run after our initial check for snprintf/vsnprintf.
|
|
|
|
PGAC_TYPE_64BIT_INT([long int])
|
|
|
|
if test x"$HAVE_LONG_INT_64" = x"no" ; then
|
|
PGAC_TYPE_64BIT_INT([long long int])
|
|
fi
|
|
|
|
|
|
dnl If we need to use "long long int", figure out whether nnnLL notation works.
|
|
|
|
if [[ x"$HAVE_LONG_LONG_INT_64" = xyes ]] ; then
|
|
AC_TRY_COMPILE([
|
|
#define INT64CONST(x) x##LL
|
|
long long int foo = INT64CONST(0x1234567890123456);
|
|
],
|
|
[],
|
|
[AC_DEFINE(HAVE_LL_CONSTANTS, 1, [Define if you have LL constants])],
|
|
[])
|
|
fi
|
|
|
|
|
|
dnl If we found "long int" is 64 bits, assume snprintf handles it.
|
|
dnl If we found we need to use "long long int", better check.
|
|
dnl We cope with snprintfs that use either %lld or %qd as the format.
|
|
dnl If neither works, fall back to our own snprintf emulation (which we
|
|
dnl know uses %lld).
|
|
|
|
if [[ x"$HAVE_LONG_LONG_INT_64" = xyes ]] ; then
|
|
if [[ x$SNPRINTF = x ]] ; then
|
|
AC_MSG_CHECKING(whether snprintf handles 'long long int' as %lld)
|
|
AC_TRY_RUN([#include <stdio.h>
|
|
typedef long long int int64;
|
|
#define INT64_FORMAT "%lld"
|
|
|
|
int64 a = 20000001;
|
|
int64 b = 40000005;
|
|
|
|
int does_int64_snprintf_work()
|
|
{
|
|
int64 c;
|
|
char buf[100];
|
|
|
|
if (sizeof(int64) != 8)
|
|
return 0; /* doesn't look like the right size */
|
|
|
|
c = a * b;
|
|
snprintf(buf, 100, INT64_FORMAT, c);
|
|
if (strcmp(buf, "800000140000005") != 0)
|
|
return 0; /* either multiply or snprintf is busted */
|
|
return 1;
|
|
}
|
|
main() {
|
|
exit(! does_int64_snprintf_work());
|
|
}],
|
|
[ AC_MSG_RESULT(yes)
|
|
INT64_FORMAT='"%lld"'
|
|
],
|
|
[ AC_MSG_RESULT(no)
|
|
AC_MSG_CHECKING(whether snprintf handles 'long long int' as %qd)
|
|
AC_TRY_RUN([#include <stdio.h>
|
|
typedef long long int int64;
|
|
#define INT64_FORMAT "%qd"
|
|
|
|
int64 a = 20000001;
|
|
int64 b = 40000005;
|
|
|
|
int does_int64_snprintf_work()
|
|
{
|
|
int64 c;
|
|
char buf[100];
|
|
|
|
if (sizeof(int64) != 8)
|
|
return 0; /* doesn't look like the right size */
|
|
|
|
c = a * b;
|
|
snprintf(buf, 100, INT64_FORMAT, c);
|
|
if (strcmp(buf, "800000140000005") != 0)
|
|
return 0; /* either multiply or snprintf is busted */
|
|
return 1;
|
|
}
|
|
main() {
|
|
exit(! does_int64_snprintf_work());
|
|
}],
|
|
[ AC_MSG_RESULT(yes)
|
|
INT64_FORMAT='"%qd"'
|
|
],
|
|
[ AC_MSG_RESULT(no)
|
|
# Force usage of our own snprintf, since system snprintf is broken
|
|
SNPRINTF='snprintf.o'
|
|
INT64_FORMAT='"%lld"'
|
|
],
|
|
[ AC_MSG_RESULT(assuming not on target machine)
|
|
# Force usage of our own snprintf, since we cannot test foreign snprintf
|
|
SNPRINTF='snprintf.o'
|
|
INT64_FORMAT='"%lld"'
|
|
]) ],
|
|
[ AC_MSG_RESULT(assuming not on target machine)
|
|
# Force usage of our own snprintf, since we cannot test foreign snprintf
|
|
SNPRINTF='snprintf.o'
|
|
INT64_FORMAT='"%lld"'
|
|
])
|
|
else
|
|
# here if we previously decided we needed to use our own snprintf
|
|
INT64_FORMAT='"%lld"'
|
|
fi
|
|
else
|
|
# Here if we are not using 'long long int' at all
|
|
INT64_FORMAT='"%ld"'
|
|
fi
|
|
|
|
AC_DEFINE_UNQUOTED(INT64_FORMAT, $INT64_FORMAT,
|
|
[Define this as the appropriate snprintf format for 64-bit ints, if any])
|
|
|
|
|
|
AC_CHECK_FUNCS([strtoll strtoq], [break])
|
|
AC_CHECK_FUNCS([strtoull strtouq], [break])
|
|
|
|
# Check for one of atexit() or on_exit()
|
|
AC_CHECK_FUNCS(atexit, [],
|
|
[AC_CHECK_FUNCS(on_exit, [],
|
|
[AC_MSG_ERROR([neither atexit() nor on_exit() found])])])
|
|
|
|
dnl Need a #define for the size of Datum (unsigned long)
|
|
|
|
AC_CHECK_SIZEOF([unsigned long])
|
|
AC_DEFINE_UNQUOTED(SIZEOF_DATUM, $ac_cv_sizeof_unsigned_long, [sizeof(Datum) -- don't change])
|
|
|
|
# Determine memory alignment requirements for the basic C data types.
|
|
|
|
PGAC_CHECK_ALIGNOF(short)
|
|
PGAC_CHECK_ALIGNOF(int)
|
|
PGAC_CHECK_ALIGNOF(long)
|
|
if test x"$HAVE_LONG_LONG_INT_64" = x"yes" ; then
|
|
PGAC_CHECK_ALIGNOF(long long int)
|
|
fi
|
|
PGAC_CHECK_ALIGNOF(double)
|
|
|
|
# Compute maximum alignment of any basic type.
|
|
# We assume long's alignment is at least as strong as char, short, or int;
|
|
# but we must check long long (if it exists) and double.
|
|
|
|
MAX_ALIGNOF=$pgac_cv_alignof_long
|
|
if test $MAX_ALIGNOF -lt $pgac_cv_alignof_double ; then
|
|
MAX_ALIGNOF=$pgac_cv_alignof_double
|
|
fi
|
|
if test x"$HAVE_LONG_LONG_INT_64" = xyes && test $MAX_ALIGNOF -lt $pgac_cv_alignof_long_long_int ; then
|
|
MAX_ALIGNOF="$pgac_cv_alignof_long_long_int"
|
|
fi
|
|
AC_DEFINE_UNQUOTED(MAXIMUM_ALIGNOF, $MAX_ALIGNOF, [Define as the maximum alignment requirement of any type])
|
|
|
|
|
|
# Some platforms predefine the types int8, int16, etc. Only check
|
|
# a (hopefully) representative subset.
|
|
AC_CHECK_TYPES([int8, uint8, int64, uint64], [], [],
|
|
[#include <stdio.h>
|
|
#ifdef HAVE_SUPPORTDEFS_H
|
|
#include <SupportDefs.h>
|
|
#endif])
|
|
|
|
# We also check for sig_atomic_t, which *should* be defined per ANSI
|
|
# C, but is missing on some old platforms.
|
|
AC_CHECK_TYPES([sig_atomic_t], [], [], [#include <signal.h>])
|
|
|
|
|
|
PGAC_FUNC_POSIX_SIGNALS
|
|
|
|
|
|
# Select semaphore implementation type.
|
|
if test x"$USE_NAMED_POSIX_SEMAPHORES" = x"1" ; then
|
|
AC_DEFINE(USE_NAMED_POSIX_SEMAPHORES, 1, [Define to select named POSIX semaphores])
|
|
SEMA_IMPLEMENTATION="src/backend/port/posix_sema.c"
|
|
else
|
|
if test x"$USE_UNNAMED_POSIX_SEMAPHORES" = x"1" ; then
|
|
AC_DEFINE(USE_UNNAMED_POSIX_SEMAPHORES, 1, [Define to select unnamed POSIX semaphores])
|
|
SEMA_IMPLEMENTATION="src/backend/port/posix_sema.c"
|
|
else
|
|
AC_DEFINE(USE_SYSV_SEMAPHORES, 1, [Define to select SysV-style semaphores])
|
|
SEMA_IMPLEMENTATION="src/backend/port/sysv_sema.c"
|
|
fi
|
|
fi
|
|
|
|
|
|
# Select shared-memory implementation type.
|
|
AC_DEFINE(USE_SYSV_SHARED_MEMORY, 1, [Define to select SysV-style shared memory])
|
|
SHMEM_IMPLEMENTATION="src/backend/port/sysv_shmem.c"
|
|
|
|
|
|
if test "$enable_nls" = yes ; then
|
|
PGAC_CHECK_GETTEXT
|
|
fi
|
|
|
|
if test "$with_CXX" = yes; then
|
|
PGAC_CLASS_STRING
|
|
PGAC_CXX_NAMESPACE_STD
|
|
fi
|
|
|
|
|
|
# Check for Tcl configuration script tclConfig.sh
|
|
if test "$with_tcl" = yes; then
|
|
PGAC_PATH_TCLCONFIGSH([$with_tclconfig])
|
|
PGAC_EVAL_TCLCONFIGSH([$TCL_CONFIG_SH],
|
|
[TCL_LIB_FILE,TCL_LIBS,TCL_LIB_SPEC,TCL_SHARED_BUILD])
|
|
AC_SUBST(TCL_SHLIB_LD_LIBS)dnl don't want to double-evaluate that one
|
|
fi
|
|
|
|
# Check for Tk configuration script tkConfig.sh
|
|
if test "$with_tk" = yes; then
|
|
PGAC_PATH_TKCONFIGSH([$with_tkconfig $with_tclconfig])
|
|
PGAC_EVAL_TCLCONFIGSH([$TK_CONFIG_SH], [TK_LIBS,TK_LIB_SPEC,TK_XINCLUDES])
|
|
fi
|
|
|
|
|
|
#
|
|
# Check for DocBook and tools
|
|
#
|
|
PGAC_PROG_NSGMLS
|
|
PGAC_PROG_JADE
|
|
PGAC_CHECK_DOCBOOK([3.1])
|
|
PGAC_PATH_DOCBOOK_STYLESHEETS
|
|
PGAC_PATH_COLLATEINDEX
|
|
AC_CHECK_PROGS(SGMLSPL, sgmlspl)
|
|
|
|
|
|
# prepare build tree if outside source tree
|
|
# Note 1: test -ef might not exist, but it's more reliable than `pwd`.
|
|
# Note 2: /bin/pwd might be better than shell's built-in at getting
|
|
# a symlink-free name.
|
|
if test "$no_create" != yes; then
|
|
if ( test "$srcdir" -ef . ) >/dev/null 2>&1 || test "`cd $srcdir && /bin/pwd`" = "`/bin/pwd`"; then
|
|
:
|
|
else
|
|
AC_SUBST(vpath_build, yes)
|
|
_AS_ECHO_N([preparing build tree... ])
|
|
pgac_abs_top_srcdir=`cd "$srcdir" && pwd`
|
|
$SHELL "$ac_aux_dir/prep_buildtree" "$pgac_abs_top_srcdir" "." \
|
|
|| AC_MSG_ERROR(failed)
|
|
AC_MSG_RESULT(done)
|
|
fi
|
|
fi
|
|
|
|
|
|
AC_CONFIG_FILES([GNUmakefile src/Makefile.global])
|
|
|
|
AC_CONFIG_LINKS([
|
|
src/backend/port/dynloader.c:src/backend/port/dynloader/${template}.c
|
|
src/backend/port/pg_sema.c:${SEMA_IMPLEMENTATION}
|
|
src/backend/port/pg_shmem.c:${SHMEM_IMPLEMENTATION}
|
|
src/include/dynloader.h:src/backend/port/dynloader/${template}.h
|
|
src/include/pg_config_os.h:src/include/port/${template}.h
|
|
src/Makefile.port:src/makefiles/Makefile.${template}
|
|
])
|
|
|
|
AC_CONFIG_HEADERS([src/include/pg_config.h],
|
|
[
|
|
# Update timestamp for pg_config.h (see Makefile.global)
|
|
echo >src/include/stamp-h
|
|
])
|
|
|
|
AC_OUTPUT
|