mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-11-27 07:21:09 +08:00
996832caee
(rather than compile time). For libpq, even when Kerberos support is compiled in, the default user name should still fall back to geteuid() if it can't be determined via the Kerberos system. A couple of fixes for string type configuration parameters, now that there is one.
1283 lines
35 KiB
Plaintext
1283 lines
35 KiB
Plaintext
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)
|
|
AC_CONFIG_HEADER(src/include/config.h)
|
|
|
|
AC_PREREQ(2.13)
|
|
AC_CONFIG_AUX_DIR(config)
|
|
|
|
VERSION='7.1devel'
|
|
AC_SUBST(VERSION)
|
|
AC_DEFINE_UNQUOTED(PG_VERSION, "$VERSION")
|
|
|
|
AC_CANONICAL_HOST
|
|
|
|
template=
|
|
AC_MSG_CHECKING([which template to use])
|
|
|
|
# check if --with-template was given
|
|
if test x"${with_template+set}" = xset ; then
|
|
case $with_template in
|
|
yes|no) AC_MSG_ERROR([You must supply an argument to the --with-template option.]);;
|
|
list) echo; ls "$srcdir/src/template"; exit;;
|
|
*) if test -f "$srcdir/src/template/$with_template" ; then
|
|
template=$with_template
|
|
else
|
|
AC_MSG_ERROR([\`$with_template' is not a valid template name. Use \`list' for a list.])
|
|
fi;;
|
|
esac
|
|
|
|
else # --with-template not given
|
|
|
|
case $host_os in
|
|
aix*) template=aix ;;
|
|
bsdi*) template=bsdi ;;
|
|
cygwin*) template=win ;;
|
|
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*)
|
|
case $host_cpu in
|
|
sparc) template=solaris_sparc ;;
|
|
i?86) template=solaris_i386 ;;
|
|
esac ;;
|
|
sunos*) template=sunos4 ;;
|
|
sysv4.2*)
|
|
case $host_vendor in
|
|
univel) template=univel ;;
|
|
esac ;;
|
|
sysv4*) template=svr4 ;;
|
|
sysv5uw*) 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
|
|
|
|
fi # --with-template not given
|
|
|
|
AC_MSG_RESULT([$template])
|
|
|
|
PORTNAME=$template
|
|
CPU=$host_cpu
|
|
AC_SUBST(PORTNAME)
|
|
AC_SUBST(CPU)
|
|
|
|
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])
|
|
AC_LINK_FILES([src/include/port/${template}.h], [src/include/os.h])
|
|
AC_LINK_FILES([src/makefiles/Makefile.${template}], [src/Makefile.port])
|
|
|
|
# Pick right test-and-set (TAS) code. Most platforms have inline
|
|
# assembler code in their port include file, so we just use a dummy
|
|
# file here.
|
|
tas_file=dummy.s
|
|
need_tas=no
|
|
case $template in
|
|
hpux) need_tas=yes; tas_file=hpux.s ;;
|
|
solaris_sparc) need_tas=yes; tas_file=solaris_sparc.s ;;
|
|
solaris_i386) need_tas=yes; tas_file=solaris_i386.s ;;
|
|
esac
|
|
|
|
if test "$need_tas" = yes ; then
|
|
AC_LINK_FILES([src/backend/port/tas/${tas_file}], [src/backend/port/tas.s])
|
|
TAS=tas.o
|
|
fi
|
|
AC_SUBST(TAS)
|
|
|
|
|
|
|
|
##
|
|
## Command line options
|
|
##
|
|
|
|
|
|
#
|
|
# Add non-standard directories to the include path
|
|
#
|
|
AC_ARG_WITH(includes, [ --with-includes=DIRS look for additional header files in DIRS],
|
|
[
|
|
case $withval in
|
|
yes | no) AC_MSG_ERROR([You must supply an argument to the --with-includes option.]);;
|
|
esac
|
|
])
|
|
|
|
|
|
#
|
|
# Add non-standard directories to the library search path
|
|
#
|
|
AC_ARG_WITH(libraries, [ --with-libraries=DIRS look for additional libraries in DIRS],
|
|
[
|
|
case $withval in
|
|
yes | no) AC_MSG_ERROR([You must supply an argument to the --with-libraries option.]);;
|
|
esac
|
|
LIBRARY_DIRS=$withval
|
|
])
|
|
|
|
AC_ARG_WITH(libs, [ --with-libs=DIRS alternative spelling of --with-libraries],
|
|
[
|
|
case $withval in
|
|
yes | no) AC_MSG_ERROR([You must supply an argument to the --with-libs option.]);;
|
|
esac
|
|
LIBRARY_DIRS=$withval
|
|
])
|
|
|
|
|
|
#
|
|
# Locale (--enable-locale)
|
|
#
|
|
AC_MSG_CHECKING([whether to build with locale support])
|
|
AC_ARG_ENABLE(locale, [ --enable-locale enable locale support],
|
|
[if test x"$enable_locale" != x"no" ; then
|
|
enable_locale=yes
|
|
AC_DEFINE(USE_LOCALE, 1, [Set to 1 if you want LOCALE support (--enable-locale)])
|
|
fi],
|
|
[enable_locale=no])
|
|
AC_MSG_RESULT([$enable_locale])
|
|
|
|
|
|
#
|
|
# Cyrillic recode (--enable-recode)
|
|
#
|
|
AC_MSG_CHECKING([whether to build with Cyrillic recode support])
|
|
AC_ARG_ENABLE(recode, [ --enable-recode enable cyrillic recode support],
|
|
[if test x"$enable_recode" != x"no" ; then
|
|
enable_recode=yes
|
|
AC_DEFINE(CYR_RECODE, 1, [Set to 1 if you want cyrillic recode support (--enable-recode)])
|
|
fi],
|
|
[enable_recode=no])
|
|
AC_MSG_RESULT([$enable_recode])
|
|
|
|
|
|
#
|
|
# Multibyte support
|
|
#
|
|
MULTIBYTE=
|
|
AC_MSG_CHECKING([whether to build with multibyte character support])
|
|
AC_ARG_ENABLE(multibyte, [ --enable-multibyte enable multibyte character support],
|
|
[
|
|
case $enableval in
|
|
no) enable_multibyte=no;;
|
|
yes) enable_multibyte=yes; MULTIBYTE=SQL_ASCII;;
|
|
SQL_ASCII|EUC_JP|EUC_CN|EUC_KR|EUC_TW|UNICODE|MULE_INTERNAL|LATIN1|LATIN2|LATIN3|LATIN4|LATIN5|KOI8|WIN|ALT)
|
|
enable_multibyte=yes; MULTIBYTE=$enableval;;
|
|
*) AC_MSG_ERROR(
|
|
[argument to --enable-multibyte must be one of:
|
|
SQL_ASCII, EUC_JP, EUC_CN, EUC_KR, EUC_TW,
|
|
UNICODE, MULE_INTERNAL,
|
|
LATIN1, LATIN2, LATIN3, LATIN4, LATIN5,
|
|
KOI8, WIN, ALT
|
|
Or do not specify an argument to the option to use the default.]) ;;
|
|
esac
|
|
],
|
|
[enable_multibyte=no])
|
|
|
|
AC_SUBST(MULTIBYTE)
|
|
|
|
if test "$enable_multibyte" = yes ; then
|
|
AC_DEFINE(MULTIBYTE, 1, [Set to 1 if you want to use multibyte characters (--enable-multibyte)])
|
|
AC_MSG_RESULT([yes, default $MULTIBYTE])
|
|
else
|
|
AC_MSG_RESULT(no)
|
|
fi
|
|
|
|
|
|
#
|
|
# Default port number (--with-pgport), default 5432
|
|
#
|
|
AC_MSG_CHECKING([for default port number])
|
|
AC_ARG_WITH(pgport, [ --with-pgport=PORTNUM change default port number [5432]],
|
|
[case $withval in
|
|
yes|no) AC_MSG_ERROR([You must supply an argument to the --with-pgport option]);;
|
|
*) default_port=$withval;;
|
|
esac
|
|
],
|
|
[default_port=5432])
|
|
# Need both of these because backend wants an integer and frontend a string
|
|
AC_DEFINE_UNQUOTED(DEF_PGPORT, ${default_port})
|
|
AC_DEFINE_UNQUOTED(DEF_PGPORT_STR, "${default_port}")
|
|
AC_MSG_RESULT([$default_port])
|
|
|
|
|
|
#
|
|
# Maximum number of allowed connections (--with-maxbackends), default 32
|
|
#
|
|
AC_MSG_CHECKING([for default soft limit on number of connections])
|
|
AC_ARG_WITH(maxbackends, [ --with-maxbackends=N set default maximum number of connections [32]],
|
|
[case $withval in
|
|
yes|no) AC_MSG_ERROR([You must supply an argument to the --with-maxbackends option]);;
|
|
esac],
|
|
[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)])
|
|
|
|
|
|
#
|
|
# 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.
|
|
if test "${with_CC+set}" = set; then
|
|
case $with_CC in
|
|
yes | no) AC_MSG_ERROR([You must supply an argument to the --with-CC option.]);;
|
|
*) CC=$with_CC;;
|
|
esac
|
|
fi
|
|
|
|
# On AIX, default compiler to xlc.
|
|
if test "$template" = aix && test -z "$CC" ; then CC=xlc; fi
|
|
|
|
AC_PROG_CC
|
|
# Read the template
|
|
. "$srcdir/src/template/$template" || exit
|
|
echo "using CFLAGS=$CFLAGS"
|
|
# Check if the compiler still works with the template settings
|
|
AC_PROG_CC_WORKS
|
|
AC_PROG_CPP
|
|
AC_PROG_GCC_TRADITIONAL
|
|
|
|
AC_SUBST(GCC)
|
|
AC_SUBST(AROPT)
|
|
AC_SUBST(SHARED_LIB)
|
|
AC_SUBST(DLSUFFIX)
|
|
AC_SUBST(DL_LIB)
|
|
|
|
# Create compiler version string
|
|
if test x"$GCC" = x"yes" ; then
|
|
cc_string="GCC `${CC} --version`"
|
|
else
|
|
cc_string=$CC
|
|
fi
|
|
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
|
|
#
|
|
AC_ARG_ENABLE(depend, [ --enable-depend turn on automatic dependency tracking],
|
|
[
|
|
if test x"$enableval" = x"yes" ; then
|
|
autodepend=yes
|
|
fi
|
|
])
|
|
AC_SUBST(autodepend)
|
|
|
|
|
|
# --enable-debug adds -g to compiler flags
|
|
# --disable-debug will forcefully remove it
|
|
AC_MSG_CHECKING(setting debug compiler flag)
|
|
AC_ARG_ENABLE(debug, [ --enable-debug build with debugging symbols (-g)],
|
|
[
|
|
case $enableval in
|
|
yes) CFLAGS="$CFLAGS -g"
|
|
AC_MSG_RESULT(yes)
|
|
;;
|
|
*) CFLAGS=`echo "$CFLAGS" | sed -e 's/ -g/ /g' -e 's/^-g//'`
|
|
AC_MSG_RESULT(no)
|
|
;;
|
|
esac
|
|
],
|
|
[AC_MSG_RESULT(using default)])
|
|
|
|
|
|
#
|
|
# Include directories
|
|
#
|
|
ac_save_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=':'
|
|
# LIBRARY_DIRS comes from command line, SRCH_LIB from template file.
|
|
for dir in $LIBRARY_DIRS $SRCH_LIB; do
|
|
if test -d "$dir"; then
|
|
PGSQL_LDFLAGS="$PGSQL_LDFLAGS -L$dir"
|
|
else
|
|
AC_MSG_WARN([*** Library directory $dir does not exist.])
|
|
fi
|
|
done
|
|
IFS=$ac_save_IFS
|
|
|
|
|
|
|
|
dnl We exclude tcl support unless user says --with-tcl
|
|
AC_MSG_CHECKING(setting USE_TCL)
|
|
AC_ARG_WITH(
|
|
tcl,
|
|
[ --with-tcl build Tcl interfaces and pgtclsh ],
|
|
[
|
|
case "$withval" in
|
|
y | ye | yes) USE_TCL=true; USE_TK=true; AC_MSG_RESULT(enabled) ;;
|
|
*) USE_TCL=; USE_TK=; AC_MSG_RESULT(disabled) ;;
|
|
esac
|
|
],
|
|
[ USE_TCL=; USE_TK=; AC_MSG_RESULT(disabled) ]
|
|
)
|
|
AC_SUBST(USE_TCL)
|
|
AC_SUBST(USE_TK)
|
|
|
|
|
|
dnl We see if the path to the TCL/TK configuration scripts is specified.
|
|
dnl This will override the use of tclsh to find the paths to search.
|
|
|
|
AC_ARG_WITH(tclconfig,
|
|
[ --with-tclconfig=DIR tclConfig.sh and tkConfig.sh are in DIR],
|
|
[
|
|
case "$withval" in
|
|
"" | y | ye | yes | n | no)
|
|
AC_MSG_ERROR([*** You must supply an argument to the --with-tclconfig option.])
|
|
;;
|
|
esac
|
|
TCL_DIRS="$withval"
|
|
]
|
|
)
|
|
|
|
dnl We see if the path to the TK configuration scripts is specified.
|
|
dnl This will override the use of tclsh to find the paths to search.
|
|
|
|
AC_ARG_WITH(tkconfig,
|
|
[ --with-tkconfig=DIR tkConfig.sh is in DIR],
|
|
[
|
|
case "$withval" in
|
|
"" | y | ye | yes | n | no)
|
|
AC_MSG_ERROR([*** You must supply an argument to the --with-tkconfig option.])
|
|
;;
|
|
esac
|
|
TK_DIRS="$withval"
|
|
]
|
|
)
|
|
|
|
|
|
dnl
|
|
dnl Optionally build Perl modules (Pg.pm and PL/Perl)
|
|
dnl
|
|
AC_MSG_CHECKING(whether to build Perl modules)
|
|
AC_ARG_WITH(perl, [ --with-perl build Perl interface and plperl],
|
|
[if test x"${withval}" = x"yes" ; then
|
|
AC_MSG_RESULT(yes)
|
|
else
|
|
AC_MSG_RESULT(no)
|
|
fi],
|
|
[AC_MSG_RESULT(no)])
|
|
AC_SUBST(with_perl)
|
|
|
|
|
|
dnl
|
|
dnl Optionally build Python interface module
|
|
dnl
|
|
AC_MSG_CHECKING(whether to build Python modules)
|
|
AC_ARG_WITH(python, [ --with-python build Python interface module],
|
|
[if test x"${withval}" = x"yes" ; then
|
|
AC_MSG_RESULT(yes)
|
|
PGAC_PROG_PYTHON
|
|
PGAC_PATH_PYTHONDIR
|
|
else
|
|
AC_MSG_RESULT(no)
|
|
fi],
|
|
[AC_MSG_RESULT(no)])
|
|
AC_SUBST(with_python)
|
|
|
|
|
|
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_ARG_WITH(krb4, [ --with-krb4[=DIR] use Kerberos 4 [/usr/athena]],
|
|
[if test x"$withval" != x"no"; then
|
|
if test x"$withval" != x"yes"; then
|
|
krb4_prefix=$withval
|
|
else
|
|
krb4_prefix=/usr/athena
|
|
fi
|
|
with_krb4=yes
|
|
else
|
|
with_krb4=no
|
|
fi],
|
|
[with_krb4=no])
|
|
|
|
AC_SUBST(with_krb4)
|
|
if test "$with_krb4" = yes ; then
|
|
AC_MSG_RESULT([building with Kerberos 4 support])
|
|
AC_DEFINE(KRB4, [], [Define if you are building with Kerberos 4 support.])
|
|
|
|
if test -d "$krb4_prefix"; then
|
|
if test -d "$krb4_prefix/include"; then
|
|
INCLUDES="$INCLUDES -I$krb4_prefix/include"
|
|
fi
|
|
if test -d "$krb4_prefix/lib"; then
|
|
krb_libdir="-L$krb4_prefix/lib"
|
|
LIBS="$krb_libdir $LIBS"
|
|
fi
|
|
fi
|
|
dnl Test for these libraries is below
|
|
KRB_LIBS="$krb_libdir -lkrb -ldes"
|
|
|
|
krb_srvtab='/etc/srvtab'
|
|
fi
|
|
|
|
|
|
#
|
|
# Kerberos 5
|
|
#
|
|
AC_ARG_WITH(krb5, [ --with-krb5[=DIR] use Kerberos 5 [/usr/athena]],
|
|
[if test x"$withval" != x"no"; then
|
|
if test x"$withval" != x"yes"; then
|
|
krb5_prefix=$withval
|
|
else
|
|
krb5_prefix=/usr/athena
|
|
fi
|
|
with_krb5=yes
|
|
else
|
|
with_krb5=no
|
|
fi],
|
|
[with_krb5=no])
|
|
|
|
AC_SUBST(with_krb5)
|
|
if test "$with_krb5" = yes ; then
|
|
AC_MSG_RESULT([building with Kerberos 5 support])
|
|
AC_DEFINE(KRB5,, [Define if you are building with Kerberos 5 support.])
|
|
|
|
if test -d $krb5_prefix; then
|
|
if test -d "$krb5_prefix/include"; then
|
|
INCLUDES="$INCLUDES -I$krb5_prefix/include"
|
|
fi
|
|
if test -d "$krb5_prefix/lib"; then
|
|
krb_libdir="-L$krb5_prefix/lib"
|
|
LIBS="$krb_libdir $LIBS"
|
|
fi
|
|
fi
|
|
|
|
dnl Test for these libraries is below
|
|
KRB_LIBS="$krb_libdir -lkrb5 -lcrypto -lcom_err"
|
|
|
|
krb_srvtab='FILE:$(sysconfdir)/krb5.keytab'
|
|
fi
|
|
|
|
|
|
# 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)
|
|
dnl Necessary for special libpq link
|
|
AC_SUBST(KRB_LIBS)
|
|
|
|
|
|
#
|
|
# Kerberos configuration parameters
|
|
#
|
|
AC_ARG_WITH(krb-srvnam, [ --with-krb-srvnam=NAME name of the Postgres service principal in Kerberos],
|
|
[if test x"$withval" = x"yes"; then
|
|
AC_MSG_ERROR([argument required for --with-krb-srvnam])
|
|
else
|
|
krb_srvnam=$withval
|
|
fi],
|
|
[krb_srvnam="postgres"])
|
|
AC_DEFINE_UNQUOTED(PG_KRB_SRVNAM, ["$krb_srvnam"], [The name of the Postgres service principal])
|
|
|
|
|
|
|
|
#
|
|
# OpenSSL
|
|
#
|
|
AC_ARG_WITH(openssl, [ --with-openssl[=DIR] build with OpenSSL support [/usr/local/ssl]],
|
|
[if test x"$withval" != x"no" ; then
|
|
if test x"$withval" != x"yes" ; then
|
|
openssl_prefix=$withval
|
|
else
|
|
openssl_prefix=/usr/local/ssl
|
|
fi
|
|
with_openssl=yes
|
|
else
|
|
with_openssl=no
|
|
fi],
|
|
[with_openssl=no])
|
|
|
|
AC_SUBST(with_openssl)
|
|
if test "$with_openssl" = yes ; then
|
|
AC_MSG_RESULT([building with OpenSSL support])
|
|
AC_DEFINE([USE_SSL], [], [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
|
|
openssl_libdir="${openssl_prefix}/lib"
|
|
LIBS="$LIBS -L${openssl_prefix}/lib"
|
|
fi
|
|
fi
|
|
|
|
|
|
# OpenSSL and Kerberos 5 both have a `crypto' library, so if you want to
|
|
# use both of them you'll have to figure it out yourself.
|
|
if test "$with_openssl" = yes && test "$with_krb5" = yes ; then
|
|
AC_MSG_ERROR([OpenSSL and Kerberos 5 support cannot be combined])
|
|
fi
|
|
|
|
|
|
dnl
|
|
dnl Optionally enable the building of the ODBC driver
|
|
dnl
|
|
|
|
dnl Old option name
|
|
if test "x${with_odbc+set}" = xset && test "x${enable_odbc+set}" != xset; then
|
|
enable_odbc=$with_odbc
|
|
fi
|
|
|
|
AC_MSG_CHECKING(whether to build the ODBC driver)
|
|
AC_ARG_ENABLE(odbc, [ --enable-odbc build the ODBC driver package],
|
|
[if test x"$enableval" = x"yes" ; then
|
|
AC_MSG_RESULT(yes)
|
|
else
|
|
AC_MSG_RESULT(no)
|
|
fi],
|
|
[AC_MSG_RESULT(no)])
|
|
AC_SUBST(enable_odbc)
|
|
|
|
|
|
dnl Allow for overriding the default location of the odbcinst.ini
|
|
dnl file which is normally ${datadir} (i.e., ${prefix}/share).
|
|
if test x"$enable_odbc" = x"yes" ; then
|
|
AC_ARG_WITH(odbcinst, [ --with-odbcinst=DIR default directory for odbcinst.ini [sysconfdir]],
|
|
[if test x"$with_odbcinst" = x"yes" || test x"$with_odbcinst" = x"no" ; then
|
|
AC_MSG_ERROR([You must supply an argument to the --with-odbcinst option.])
|
|
fi
|
|
odbcinst_ini_dir=$withval],
|
|
[odbcinst_ini_dir='${sysconfdir}'])
|
|
else
|
|
odbcinst_ini_dir='${sysconfdir}'
|
|
fi
|
|
AC_SUBST(odbcinst_ini_dir)
|
|
|
|
|
|
|
|
dnl Unless we specify the command line options
|
|
dnl --enable cassert to explicitly enable it
|
|
dnl If you do not explicitly do it, it defaults to disabled
|
|
AC_MSG_CHECKING(setting ASSERT CHECKING)
|
|
AC_ARG_ENABLE(
|
|
cassert,
|
|
[ --enable-cassert enable assertion checks (for debugging) ],
|
|
AC_DEFINE(USE_ASSERT_CHECKING) AC_MSG_RESULT(enabled),
|
|
AC_MSG_RESULT(disabled)
|
|
)
|
|
|
|
|
|
# Assume system is ELF if it predefines __ELF__ as 1,
|
|
# otherwise believe host_os based default.
|
|
case $host_os in
|
|
freebsd1*|freebsd2*) 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)
|
|
|
|
|
|
|
|
dnl
|
|
dnl Optionally build C++ code (i.e., libpq++)
|
|
dnl
|
|
AC_MSG_CHECKING([whether to build C++ modules])
|
|
AC_ARG_WITH(CXX, [ --with-CXX build C++ modules (libpq++)],
|
|
[if test x"$withval" != x"no"; then
|
|
if test x"$withval" != x"yes" ; then
|
|
CXX=$withval
|
|
fi
|
|
with_CXX=yes
|
|
fi],
|
|
[with_CXX=no])
|
|
|
|
AC_MSG_RESULT([$with_CXX])
|
|
AC_SUBST(with_CXX)
|
|
|
|
if test $with_CXX = yes; then
|
|
AC_PROG_CXX
|
|
AC_PROG_CXXCPP
|
|
PGAC_CLASS_STRING
|
|
PGAC_CXX_NAMESPACE_STD
|
|
fi
|
|
|
|
|
|
CPPFLAGS="$CPPFLAGS $INCLUDES"
|
|
LDFLAGS="$LDFLAGS $PGSQL_LDFLAGS"
|
|
|
|
echo "using CPPFLAGS=$CPPFLAGS"
|
|
echo "using LDFLAGS=$LDFLAGS"
|
|
|
|
|
|
# Figure out how to invoke "install" and what install options to use.
|
|
|
|
AC_PROG_INSTALL
|
|
# When Autoconf chooses install-sh as install program it tries to generate
|
|
# a relative path to it in each makefile where it subsitutes it. This clashes
|
|
# with our Makefile.global concept. This workaround helps.
|
|
case $INSTALL in
|
|
*install-sh*) INSTALL='\${SHELL} \${top_srcdir}/config/install-sh -c';;
|
|
esac
|
|
|
|
# Fix Autoconf's brain-dead defaults for script installs.
|
|
INSTALL_SCRIPT="\${INSTALL} -m 755"
|
|
|
|
# HPUX wants shared libs to be mode 555. Add your platform's special
|
|
# needs here if necessary.
|
|
case $host_os in
|
|
hpux*) INSTL_SHLIB_OPTS="-m 555" ;;
|
|
*) INSTL_SHLIB_OPTS="-m 644" ;;
|
|
esac
|
|
|
|
INSTALL_SHLIB="\${INSTALL} $INSTL_SHLIB_OPTS"
|
|
AC_SUBST(INSTALL_SHLIB)
|
|
|
|
|
|
mkinstalldirs="\$(SHELL) \$(top_srcdir)/config/mkinstalldirs"
|
|
AC_SUBST(mkinstalldirs)
|
|
|
|
|
|
AC_PROG_AWK
|
|
|
|
AC_PROG_LEX
|
|
if test "$LEX" = "flex"; then
|
|
$LEX --version 2> /dev/null | grep -s '2\.5\.3' > /dev/null 2>&1
|
|
if test $? -eq 0 ; then
|
|
AC_MSG_WARN([
|
|
***
|
|
You have flex version 2.5.3, which is broken. Get version 2.5.4 or
|
|
a different lex.
|
|
(If you are using the official distribution of PostgreSQL then you
|
|
do not need to worry about this because the lexer files are
|
|
pre-generated. However, other software using flex is likely to be
|
|
broken as well.)
|
|
***])
|
|
fi
|
|
fi
|
|
AC_PROG_LN_S
|
|
AC_PROG_RANLIB
|
|
AC_PATH_PROG(tar, tar)
|
|
AC_CHECK_PROGS(PERL, perl,)
|
|
AC_PROG_YACC
|
|
AC_SUBST(YFLAGS)
|
|
|
|
|
|
##
|
|
## Libraries
|
|
##
|
|
|
|
AC_CHECK_LIB(sfio, main)
|
|
AC_CHECK_LIB(ncurses, main, [], [AC_CHECK_LIB(curses, main)])
|
|
AC_CHECK_LIB(termcap, main)
|
|
AC_CHECK_LIB(readline, main)
|
|
AC_CHECK_LIB(readline, using_history, AC_DEFINE(HAVE_HISTORY_IN_READLINE),
|
|
AC_CHECK_LIB(history, main) )
|
|
|
|
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(ln, 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_SEARCH_LIBS(crypt, crypt)
|
|
AC_CHECK_LIB(z, inflate)
|
|
|
|
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_CHECK_LIB(com_err, main, [], [AC_MSG_ERROR([library \`com_err' is required for Kerberos 5])])
|
|
AC_CHECK_LIB(crypto, main, [], [AC_MSG_ERROR([library \`crypto' is required for Kerberos 5])])
|
|
AC_CHECK_LIB(krb5, main, [], [AC_MSG_ERROR([library \`krb5' is 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 \`ssl' is required for OpenSSL])])
|
|
AC_CHECK_LIB(ssl, [SSL_library_init], [], [AC_MSG_ERROR([library \`ssl' is required for OpenSSL])])
|
|
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/pstat.h sys/select.h sys/socket.h sys/types.h termios.h])
|
|
|
|
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
|
|
|
|
|
|
##
|
|
## Types, structures, compiler characteristics
|
|
##
|
|
AC_C_CONST
|
|
AC_C_INLINE
|
|
AC_C_STRINGIZE
|
|
PGAC_C_SIGNED
|
|
PGAC_C_VOLATILE
|
|
AC_STRUCT_TIMEZONE
|
|
PGAC_UNION_SEMUN
|
|
|
|
|
|
##
|
|
## Functions, global variables
|
|
##
|
|
PGAC_VAR_INT_TIMEZONE
|
|
AC_FUNC_ACCEPT_ARGTYPES
|
|
PGAC_FUNC_GETTIMEOFDAY_1ARG
|
|
|
|
AC_MSG_CHECKING([for fcntl(F_SETLK)])
|
|
case $host_os in
|
|
linux*) AC_MSG_RESULT([broken on Linux]) ;;
|
|
*)
|
|
AC_TRY_LINK(
|
|
[#include <stdio.h>
|
|
#include <fcntl.h>
|
|
],
|
|
[struct flock lck;
|
|
lck.l_whence = SEEK_SET; lck.l_start = lck.l_len = 0;
|
|
lck.l_type = F_WRLCK;
|
|
fcntl(0, F_SETLK, &lck);],
|
|
[AC_DEFINE(HAVE_FCNTL_SETLK) AC_MSG_RESULT(yes)],
|
|
[AC_MSG_RESULT(no)])
|
|
;;
|
|
esac
|
|
|
|
AC_CHECK_FUNCS([fcvt getopt_long memmove pstat setproctitle setsid sigprocmask sysconf waitpid])
|
|
|
|
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(snprintf,
|
|
AC_DEFINE(HAVE_SNPRINTF),
|
|
SNPRINTF='snprintf.o')
|
|
AC_CHECK_FUNC(vsnprintf,
|
|
AC_DEFINE(HAVE_VSNPRINTF),
|
|
SNPRINTF='snprintf.o')
|
|
AC_SUBST(SNPRINTF)
|
|
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,
|
|
[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)
|
|
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_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),
|
|
[STRERROR='strerror.o' STRERROR2='../../backend/port/strerror.o'])
|
|
AC_SUBST(STRERROR)
|
|
AC_SUBST(STRERROR2)
|
|
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_SUBST(STRTOL)
|
|
AC_CHECK_FUNC(strtoul,
|
|
AC_DEFINE(HAVE_STRTOUL),
|
|
STRTOL='strtoul.o')
|
|
AC_SUBST(STRTOUL)
|
|
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=""
|
|
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_FUNC(rint,
|
|
AC_DEFINE(HAVE_RINT),
|
|
AC_CHECK_LIB(m, rint, AC_DEFINE(HAVE_RINT), , $HPUXMATHLIB))
|
|
|
|
dnl Some old versions of libreadline don't have rl_completion_append_character
|
|
AC_EGREP_HEADER(rl_completion_append_character, readline.h,
|
|
AC_DEFINE(HAVE_RL_COMPLETION_APPEND_CHARACTER),
|
|
[AC_EGREP_HEADER(rl_completion_append_character, readline/readline.h,
|
|
AC_DEFINE(HAVE_RL_COMPLETION_APPEND_CHARACTER))])
|
|
AC_SUBST(HAVE_RL_COMPLETION_APPEND_CHARACTER)
|
|
|
|
dnl Check for readline's filename_completion_function.
|
|
dnl Some versions have it but it's not in the headers, so we have to take
|
|
dnl care of that, too.
|
|
AC_CHECK_FUNCS(filename_completion_function,
|
|
AC_EGREP_HEADER(filename_completion_function, readline.h,
|
|
AC_DEFINE(HAVE_FILENAME_COMPLETION_FUNCTION_DECL),
|
|
[AC_EGREP_HEADER(filename_completion_function, readline/readline.h,
|
|
AC_DEFINE(HAVE_FILENAME_COMPLETION_FUNCTION_DECL))])
|
|
)
|
|
AC_SUBST(HAVE_FILENAME_COMPLETION_FUNCTION)
|
|
AC_SUBST(HAVE_FILENAME_COMPLETION_FUNCTION_DECL)
|
|
|
|
|
|
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)
|
|
dnl See also comments in 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))
|
|
|
|
AC_ARG_ENABLE(syslog, [ --enable-syslog enable logging to syslog],
|
|
[case $enableval in y|ye|yes)
|
|
AC_CHECK_FUNC(syslog, [AC_DEFINE(ENABLE_SYSLOG)], [AC_MSG_ERROR([no syslog interface found])])
|
|
;;
|
|
esac]
|
|
)
|
|
|
|
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 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)
|
|
|
|
|
|
dnl Determine memory alignment requirements for the basic C datatypes.
|
|
|
|
PGAC_CHECK_ALIGNOF(short)
|
|
PGAC_CHECK_ALIGNOF(int)
|
|
PGAC_CHECK_ALIGNOF(long)
|
|
if [[ x"$HAVE_LONG_LONG_INT_64" = xyes ]] ; then
|
|
PGAC_CHECK_ALIGNOF(long long int)
|
|
fi
|
|
PGAC_CHECK_ALIGNOF(double)
|
|
|
|
dnl Compute maximum alignment of any basic type.
|
|
dnl We assume long's alignment is at least as strong as char, short, or int;
|
|
dnl but we must check long long (if it exists) and double.
|
|
|
|
if test $pgac_cv_alignof_double != 'sizeof(double)' ; then
|
|
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
|
|
else
|
|
dnl cross-compiling: assume that double's alignment is worst case
|
|
MAX_ALIGNOF="$pgac_cv_alignof_double"
|
|
fi
|
|
AC_DEFINE_UNQUOTED(MAXIMUM_ALIGNOF, $MAX_ALIGNOF, [Define as the maximum alignment requirement of any type])
|
|
|
|
PGAC_FUNC_POSIX_SIGNALS
|
|
|
|
|
|
dnl Check for Tcl configuration script tclConfig.sh
|
|
|
|
dnl If --with-tclconfig was given, don't check for tclsh, tcl
|
|
if test -z "$TCL_DIRS"
|
|
then
|
|
AC_PATH_PROG(TCLSH, tclsh)
|
|
if test -z "$TCLSH"
|
|
then
|
|
AC_PATH_PROG(TCLSH, tcl)
|
|
if test -z "$TCLSH"
|
|
then
|
|
AC_MSG_WARN(TCL/TK support disabled; tcl shell is not in your path)
|
|
USE_TCL=
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
if test "$USE_TCL" = true
|
|
then
|
|
AC_MSG_CHECKING(for tclConfig.sh)
|
|
TCL_CONFIG_SH=
|
|
library_dirs=
|
|
if test -z "$TCL_DIRS"
|
|
then
|
|
library_dirs=`echo 'puts $auto_path' | $TCLSH`
|
|
fi
|
|
library_dirs="$TCL_DIRS $TK_DIRS $library_dirs"
|
|
for dir in $library_dirs; do
|
|
if test -d "$dir" -a -r "$dir/tclConfig.sh"; then
|
|
TCL_CONFIG_SH=$dir/tclConfig.sh
|
|
break
|
|
fi
|
|
done
|
|
if test -z "$TCL_CONFIG_SH"; then
|
|
AC_MSG_RESULT(no)
|
|
AC_MSG_WARN(TCL/TK support disabled; Tcl configuration script missing)
|
|
USE_TCL=
|
|
else
|
|
AC_MSG_RESULT($TCL_CONFIG_SH)
|
|
AC_SUBST(TCL_CONFIG_SH)
|
|
fi
|
|
fi
|
|
|
|
USE_TK=$USE_TCL # If TCL is disabled, disable TK
|
|
|
|
dnl Check for Tk configuration script tkConfig.sh
|
|
if test "$USE_TK" = true
|
|
then
|
|
AC_MSG_CHECKING(for tkConfig.sh)
|
|
TK_CONFIG_SH=
|
|
# library_dirs are set in the check for TCL
|
|
for dir in $library_dirs
|
|
do
|
|
if test -d "$dir" -a -r "$dir/tkConfig.sh"
|
|
then
|
|
TK_CONFIG_SH=$dir/tkConfig.sh
|
|
break
|
|
fi
|
|
done
|
|
if test -z "$TK_CONFIG_SH"
|
|
then
|
|
AC_MSG_RESULT(no)
|
|
AC_MSG_WARN(TK support disabled; Tk configuration script missing)
|
|
USE_TK=
|
|
else
|
|
AC_MSG_RESULT($TK_CONFIG_SH)
|
|
AC_SUBST(TK_CONFIG_SH)
|
|
AC_PATH_PROG(WISH, wish)
|
|
fi
|
|
fi
|
|
AC_SUBST(WISH)
|
|
|
|
USE_X=$USE_TK
|
|
|
|
dnl Check for X libraries
|
|
|
|
if test "$USE_X" = true; then
|
|
|
|
ice_save_LIBS="$LIBS"
|
|
ice_save_CFLAGS="$CFLAGS"
|
|
ice_save_CPPFLAGS="$CPPFLAGS"
|
|
ice_save_LDFLAGS="$LDFLAGS"
|
|
|
|
AC_PATH_XTRA
|
|
|
|
LIBS="$LIBS $X_EXTRA_LIBS"
|
|
CFLAGS="$CFLAGS $X_CFLAGS"
|
|
CPPFLAGS="$CPPFLAGS $X_CFLAGS"
|
|
LDFLAGS="$LDFLAGS $X_LIBS"
|
|
|
|
dnl Check for X library
|
|
|
|
X11_LIBS=""
|
|
AC_CHECK_LIB(X11, XOpenDisplay, X11_LIBS="-lX11",,${X_PRE_LIBS})
|
|
if test "$X11_LIBS" = ""; then
|
|
dnl Not having X is bad news for pgtksh. Let the user fix this.
|
|
AC_MSG_WARN([The X11 library '-lX11' could not be found,
|
|
so TK support will be disabled. To enable TK support,
|
|
please use the configure options '--x-includes=DIR'
|
|
and '--x-libraries=DIR' to specify the X location.
|
|
See the file 'config.log' for further diagnostics.])
|
|
USE_TK=
|
|
fi
|
|
AC_SUBST(X_LIBS)
|
|
AC_SUBST(X11_LIBS)
|
|
AC_SUBST(X_PRE_LIBS)
|
|
|
|
LIBS="$ice_save_LIBS"
|
|
CFLAGS="$ice_save_CFLAGS"
|
|
CPPFLAGS="$ice_save_CPPFLAGS"
|
|
LDFLAGS="$ice_save_LDFLAGS"
|
|
fi
|
|
|
|
|
|
# Wait with these until we're done so no tests fail because of too
|
|
# many warnings.
|
|
if test x"$GCC" = x"yes" ; then
|
|
CFLAGS="$CFLAGS -Wall -Wmissing-prototypes -Wmissing-declarations"
|
|
fi
|
|
|
|
dnl Finally ready to produce output files ...
|
|
|
|
AC_OUTPUT(
|
|
[
|
|
GNUmakefile
|
|
src/GNUmakefile
|
|
src/Makefile.global
|
|
src/backend/port/Makefile
|
|
],
|
|
[echo timestamp > src/include/stamp-h]
|
|
)
|