postgres/configure.in
Bruce Momjian 7a7e0240ea Here is the first batch of files and diffs for the BeOS port. I've run into
problems with some bits of it, but when all the patches are in it'll build
and we can fix it from there :)  I've got a version that builds and runs and
that is the basis for these patches.

The first file has the new additional files that are required,
    template/beos
    backend/port/dynloader/beos.c
    backend/port/dynloader/beos.h
    include/port/beos.h
    makefiles/Makefile.beos

The second is a tarball of diffs against a few files.  I've added sys/ipc.h
to configure and config.h via configure.in and config.h.in and then started
adding the check as this file isn't needed on BeOS and having loads of
#ifdef BEOS isn't as obvious as #ifdef HAVE_SYS_IPC_H and isn't as
autconf'ish :)
Files touched are
    include/c.h
    configure.in
    include/config.h.in
    include/storage/ipc.h
    include/utils/int8.h

Let me know how these go.  I'll await a response before submitting any more.

Any problems just get in touch.

David Reid
2000-10-02 17:16:01 +00:00

1044 lines
30 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
AC_SUBST(host)
AC_SUBST(host_cpu)
AC_SUBST(host_os)
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 ;;
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
])
AC_MSG_RESULT([$template])
PORTNAME=$template
AC_SUBST(PORTNAME)
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
#
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])
#
# 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|UNICODE|MULE_INTERNAL|LATIN1|LATIN2|LATIN3|LATIN4|LATIN5|KOI8|WIN|ALT)
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
],
[
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)
#
# 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])
# 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])
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)])
#
# 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])
# 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_EXEEXT
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
#
PGAC_ARG_BOOL(enable, depend, no, [ --enable-depend turn on automatic dependency tracking],
[autodepend=yes])
AC_SUBST(autodepend)
#
# --enable-debug adds -g to compiler flags
#
PGAC_ARG_BOOL(enable, debug, no, [ --enable-debug build with debugging symbols (-g)],
[CFLAGS="$CFLAGS -g"])
#
# 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=':'
# 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
#
# 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(yes)
PGAC_PROG_PYTHON
PGAC_PATH_PYTHONDIR],
[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
#
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.])
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
# Test for these libraries is below
KRB_LIBS="$krb_libdir -lkrb -ldes"
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.])
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
# Test for these libraries is below
KRB_LIBS="$krb_libdir -lkrb5 -lcrypto -lcom_err"
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)
dnl Necessary for special libpq link
AC_SUBST(KRB_LIBS)
#
# Kerberos configuration parameters
#
PGAC_ARG_REQ(with, krb-srvnam,
[ --with-krb-srvnam=NAME name of the PostgreSQL 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])
#
# 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
openssl_libdir="${openssl_prefix}/lib"
LIBS="$LIBS -L${openssl_prefix}/lib"
else
openssl_libdir="${openssl_prefix}"
LIBS="$LIBS -L${openssl_prefix}"
fi
])
AC_SUBST(with_openssl)
# 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
#
# 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])
AC_MSG_RESULT([$enable_odbc])
AC_SUBST([enable_odbc])
# 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=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)
AC_PROG_CXX
AC_PROG_CXXCPP
PGAC_CLASS_STRING
PGAC_CXX_NAMESPACE_STD
],
[AC_MSG_RESULT(no)])
AC_SUBST(with_CXX)
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
PGAC_PATH_FLEX
AC_PROG_LN_S
AC_PROG_RANLIB
AC_PATH_PROG(tar, tar)
AC_CHECK_PROGS(PERL, perl,)
AC_PROG_YACC
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
##
## 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 netinet/tcp.h pwd.h sys/ipc.h sys/pstat.h sys/select.h sys/socket.h sys/types.h sys/un.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
PGAC_STRUCT_SOCKADDR_UN
##
## 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 dlopen])
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))
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])])])
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
# Check for Tcl configuration script tclConfig.sh
if test "$with_tcl" = yes; then
PGAC_PATH_TCLCONFIGSH([$with_tclconfig])
fi
# Check for Tk configuration script tkConfig.sh
if test "$with_tk" = yes; then
PGAC_PATH_TKCONFIGSH([$with_tkconfig $with_tclconfig])
fi
# Finally ready to produce output files ...
AC_OUTPUT(
[
GNUmakefile
src/GNUmakefile
src/Makefile.global
src/backend/port/Makefile
],
[echo "timestamp file" > src/include/stamp-h]
)