Skip to content
Snippets Groups Projects
Select Git revision
  • benchmark-tools
  • postgres-lambda
  • master default
  • REL9_4_25
  • REL9_5_20
  • REL9_6_16
  • REL_10_11
  • REL_11_6
  • REL_12_1
  • REL_12_0
  • REL_12_RC1
  • REL_12_BETA4
  • REL9_4_24
  • REL9_5_19
  • REL9_6_15
  • REL_10_10
  • REL_11_5
  • REL_12_BETA3
  • REL9_4_23
  • REL9_5_18
  • REL9_6_14
  • REL_10_9
  • REL_11_4
23 results

configure.in

Blame
  • configure.in 33.77 KiB
    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.2devel'
    AC_SUBST(VERSION)
    AC_DEFINE_UNQUOTED(PG_VERSION, "$VERSION")
    
    unset CDPATH
    
    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 ;;
        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 ;;
     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 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_LINK_FILES([src/backend/port/tas/${tas_file}], [src/backend/port/tas.s])
    
    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])
    
    
    #
    # 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)
    
    #
    # Unicode conversion (--enable-unicode-conversion)
    #
    AC_MSG_CHECKING([whether to build with Unicode conversion support])
    PGAC_ARG_BOOL(enable, unicode-conversion, no,
                  [  --enable-unicode-conversion  enable unicode conversion support],
    [if test -z "$MULTIBYTE"; then
      AC_MSG_ERROR([--enable-unicode-conversion only works with --enable-multibyte])
    fi
    AC_DEFINE([UNICODE_CONVERSION], 1,
              [Set to 1 if you want Unicode conversion support (--enable-unicode-conversion)])])
    AC_MSG_RESULT([$enable_unicode_conversion])
    
    #
    # Default port number (--with-pgport), default 5432
    #
    AC_MSG_CHECKING([for default port number])
    PGAC_ARG_REQ(with, pgport, [  --with-pgport=PORTNUM   change default port number [5432]],
                 [default_port=$withval],
                 [default_port=5432])
    AC_MSG_RESULT([$default_port])
    # Need both of these because some places want an integer and some a string
    AC_DEFINE_UNQUOTED(DEF_PGPORT, ${default_port})
    AC_DEFINE_UNQUOTED(DEF_PGPORT_STR, "${default_port}")
    AC_SUBST(default_port)
    
    #
    # Maximum number of allowed connections (--with-maxbackends), default 32
    #
    AC_MSG_CHECKING([for default soft limit on number of connections])
    PGAC_ARG_REQ(with, maxbackends, [  --with-maxbackends=N    set default maximum number of connections [32]],
                 [],
                 [with_maxbackends=32])
    AC_MSG_RESULT([$with_maxbackends])
    AC_DEFINE_UNQUOTED([DEF_MAXBACKENDS], [$with_maxbackends],
                       [The default soft limit on the number of concurrent connections, i.e., the default for the postmaster -N switch (--with-maxbackends)])
    
    
    #
    # Option to disable shared libraries
    #
    PGAC_ARG_BOOL(enable, shared, yes,
                  [  --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)])
    
    
    #
    # 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
    
    # Save CFLAGS from the environment
    has_environ_CFLAGS="${CFLAGS+yes}"
    save_CFLAGS=$CFLAGS
    
    AC_PROG_CC
    # Read the template
    . "$srcdir/src/template/$template" || exit
    
    if test "$has_environ_CFLAGS" = yes; then
      CFLAGS=$save_CFLAGS
    fi
    if test "$enable_debug" = yes && test "$ac_cv_prog_cc_g" = yes; then
      CFLAGS="$CFLAGS -g"
    fi
    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)
    
    # 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 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])
    
    
    #
    # If Tcl is enabled (above) then check for pltcl_unknown_support
    #
    AC_MSG_CHECKING([whether to build with PL/Tcl unknown support])
    if test "$with_tcl" = yes; then
      PGAC_ARG_BOOL(enable, pltcl-unknown, no,
                    [  --enable-pltcl-unknown  build PL/Tcl unknown support (if Tcl is enabled)],
                    [AC_DEFINE([ENABLE_PLTCL_UNKNOWN])])
    else
      enable_pltcl_unknown=no
    fi
    AC_MSG_RESULT([$enable_pltcl_unknown])
    AC_SUBST([enable_pltcl_unknown])
    
    
    #
    # 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
    #
    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/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_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/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_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])
    
    
    
    #
    # 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)
    
    
    
    #
    # 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)
    
      # If the user has specified CXXFLAGS in the environment, leave it
      # alone, else use a default.
    
      has_environ_CXXFLAGS="${CXXFLAGS+yes}"
      AC_PROG_CXX
      if test "$has_environ_CXXFLAGS" != yes; then
        if test "$GXX" = yes; then
          CXXFLAGS=-O2
        else
          case $template in
    	osf)		CXXFLAGS='-O4 -Olimit 2000' ;;
            unixware)	CXXFLAGS='-O' ;;
    	*)		CXXFLAGS= ;;
          esac
        fi
      fi
      if test "$enable_debug" = yes && test "$ac_cv_prog_cxx_g" = yes; then
        CXXFLAGS="$CXXFLAGS -g"
      fi
      echo "using CXXFLAGS=$CXXFLAGS"
    
      AC_PROG_CXXCPP
      AC_SUBST(GXX)
      PGAC_CLASS_STRING
      PGAC_CXX_NAMESPACE_STD
    ],
    [AC_MSG_RESULT(no)])
    AC_SUBST(with_CXX)
    
    CPPFLAGS="$CPPFLAGS $INCLUDES"
    LDFLAGS="$LDFLAGS $LIBDIRS"
    
    echo "using CPPFLAGS=$CPPFLAGS"
    echo "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 sysv5uw*)
      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)
    AC_CHECK_PROGS(PERL, perl)
    
    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
    
    if test "$with_python" = yes; then
      PGAC_PATH_PYTHON
      PGAC_CHECK_PYTHON_MODULE_SETUP
      PGAC_CHECK_PYTHON_EMBED_SETUP
    fi
    
    
    ##
    ## Libraries
    ##
    
    PGAC_CHECK_READLINE
    AC_SEARCH_LIBS(using_history, history, [AC_DEFINE(HAVE_HISTORY_FUNCTIONS)])
    
    if test "$PORTNAME" != "aix" -a "$PORTNAME" != "alpha"
    then
    	AC_CHECK_LIB(bsd,      main)
    fi
    AC_CHECK_LIB(util,     setproctitle)
    AC_CHECK_LIB(m,        main)
    AC_CHECK_LIB(dl,       main)
    AC_CHECK_LIB(socket,   main)
    AC_CHECK_LIB(nsl,      main)
    AC_CHECK_LIB(ipc,      main)
    AC_CHECK_LIB(IPC,      main)
    AC_CHECK_LIB(lc,       main)
    AC_CHECK_LIB(dld,      main)
    AC_CHECK_LIB(ld,       main)
    AC_CHECK_LIB(compat,   main)
    AC_CHECK_LIB(BSD,      main)
    AC_CHECK_LIB(gen,      main)
    AC_CHECK_LIB(PW,       main)
    AC_CHECK_LIB(resolv,   main)
    AC_CHECK_LIB([[unix]], main)
    AC_SEARCH_LIBS(crypt,  crypt)
    AC_CHECK_LIB(bind,     __inet_ntoa)
    dnl Only consider libz to be present if we find <zlib.h> as well;
    dnl furthermore, check that <zlib.h> defines z_streamp (versions before
    dnl about 1.0.4 did not).  While we could work around the lack of z_streamp,
    dnl it seems unwise to encourage people to use such old zlib versions...
    AC_EGREP_HEADER(z_streamp, zlib.h, [
    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, [com_err], [], [AC_MSG_ERROR([library 'com_err' is required for Kerberos 5])])
      AC_CHECK_LIB(crypto,  [krb5_encrypt], [],
        [AC_CHECK_LIB(k5crypto, [krb5_encrypt], [], [AC_MSG_ERROR([library 'crypto' or 'k5crypto' is required for Kerberos 5])])])
      AC_CHECK_LIB(krb5,    [krb5_sendauth], [], [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 'crypto' 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/ipc.h sys/pstat.h sys/select.h sys/sem.h sys/socket.h sys/shm.h sys/types.h sys/un.h termios.h kernel/OS.h kernel/image.h SupportDefs.h])
    
    dnl At least on IRIX, cpp test for netinet/tcp.h will fail unless netinet/in.h
    dnl is included first.  So can't just use AC_CHECK_HEADERS; do it this way:
    AC_CHECK_HEADERS([netinet/in.h])
    AC_MSG_CHECKING([for netinet/tcp.h])
    AC_TRY_CPP([
    #ifdef HAVE_NETINET_IN_H
    #include <netinet/in.h>
    #endif
    #include <netinet/tcp.h>
    ], [AC_DEFINE(HAVE_NETINET_TCP_H) AC_MSG_RESULT(yes)],
    [AC_MSG_RESULT(no)])
    
    PGAC_HEADER_STRING
    
    AC_CHECK_HEADERS([readline/readline.h readline.h], [break])
    AC_CHECK_HEADERS([readline/history.h history.h], [break])
    
    if test "$with_krb4" = yes ; then
      AC_CHECK_HEADER(krb.h, [], [AC_MSG_ERROR([header file <krb.h> is required for Kerberos 4])])
    fi
    
    if test "$with_krb5" = yes ; then
      AC_CHECK_HEADER(krb5.h, [], [AC_MSG_ERROR([header file <krb5.h> is required for Kerberos 5])])
      AC_CHECK_HEADER(com_err.h, [], [AC_MSG_ERROR([header file <com_err.h> is required for Kerberos 5])])
    fi
    
    if test "$with_openssl" = yes ; then
      AC_CHECK_HEADER([openssl/ssl.h], [], [AC_MSG_ERROR([header file <openssl/ssl.h> is required for OpenSSL])])
      AC_CHECK_HEADER([openssl/err.h], [], [AC_MSG_ERROR([header file <openssl/err.h> is required for OpenSSL])])
    fi
    
    
    ##
    ## 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_CHECK_FUNCS([fcvt getopt_long memmove pstat setproctitle setsid sigprocmask sysconf waitpid dlopen fdatasync])
    
    dnl Check whether <unistd.h> declares fdatasync().
    AC_EGREP_HEADER(fdatasync, unistd.h, AC_DEFINE(HAVE_FDATASYNC_DECL))
    
    AC_CACHE_CHECK([for PS_STRINGS], [pgac_cv_var_PS_STRINGS],
    [AC_TRY_LINK(
    [#include <machine/vmparam.h>
    #include <sys/exec.h>
    ],
    [PS_STRINGS->ps_nargvstr = 1;
    PS_STRINGS->ps_argvstr = "foo";],
    [pgac_cv_var_PS_STRINGS=yes],
    [pgac_cv_var_PS_STRINGS=no])])
    if test "$pgac_cv_var_PS_STRINGS" = yes ; then
      AC_DEFINE([HAVE_PS_STRINGS], [], [Define if the PS_STRINGS thing exists.])
    fi
    
    dnl We use our snprintf.c emulation if either snprintf() or vsnprintf()
    dnl is missing.  Yes, there are machines that have only one.
    dnl We may also decide to use snprintf.c if snprintf() is present but does
    dnl not have working "long long int" support -- see below.
    SNPRINTF=''
    AC_CHECK_FUNC(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')
    AC_SUBST(STRERROR)
    AC_CHECK_FUNC(strdup,
    	      AC_DEFINE(HAVE_STRDUP),
    	      STRDUP='../../utils/strdup.o')
    AC_SUBST(STRDUP)
    AC_CHECK_FUNC(strtol,
    	      AC_DEFINE(HAVE_STRTOL),
    	      STRTOL='strtol.o')
    AC_SUBST(STRTOL)
    AC_CHECK_FUNC(strtoul,
    	      AC_DEFINE(HAVE_STRTOUL),
    	      STRTOUL='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))
    
    
    # Readline versions < 2.1 don't have rl_completion_append_character
    AC_MSG_CHECKING([for rl_completion_append_character])
    AC_TRY_LINK([#include <stdio.h>
    #ifdef HAVE_READLINE_READLINE_H
    # include <readline/readline.h>
    #elif defined(HAVE_READLINE_H)
    # include <readline.h>
    #endif
    ],
    [rl_completion_append_character = 'x';],
    [AC_MSG_RESULT(yes)
    AC_DEFINE(HAVE_RL_COMPLETION_APPEND_CHARACTER)],
    [AC_MSG_RESULT(no)])
    
    AC_CHECK_FUNCS([rl_completion_matches])
    
    
    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])])])
    
    
    AC_CACHE_CHECK([for optreset], pgac_cv_var_int_optreset,
    [AC_TRY_LINK([#include <unistd.h>],
      [extern int optreset; optreset = 1;],
      [pgac_cv_var_int_optreset=yes],
      [pgac_cv_var_int_optreset=no])])
    if test x"$pgac_cv_var_int_optreset" = x"yes"; then
      AC_DEFINE(HAVE_INT_OPTRESET, 1)
    fi
    
    
    # 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)],
    	[])
    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)
    
    
    AC_CHECK_FUNCS([strtoll strtoq], [break])
    AC_CHECK_FUNCS([strtoull strtouq], [break])
    
    dnl psql needs atexit() or on_exit()
    AC_CHECK_FUNC(atexit,
    	[AC_DEFINE(HAVE_ATEXIT)],
    	[AC_CHECK_FUNCS(on_exit,
    		[AC_DEFINE(HAVE_ON_EXIT)],
    		[AC_MSG_ERROR([atexi() nor on_exit() found])])])
    
    dnl Need a #define for the size of Datum (unsigned long)
    
    AC_CHECK_SIZEOF(unsigned long, 4)
    AC_DEFINE_UNQUOTED(SIZEOF_DATUM, $ac_cv_sizeof_unsigned_long)
    
    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
    
    
    #
    # Check for DocBook and tools
    #
    PGAC_PROG_NSGMLS
    # If you don't have nsgmls you won't get very far, so save the cycles.
    if test -n "$NSGMLS"; then
      PGAC_PROG_JADE
      PGAC_CHECK_DOCBOOK([3.1])
      PGAC_PATH_DOCBOOK_STYLESHEETS
      AC_CHECK_PROGS(SGMLSPL, sgmlspl)
    fi
    
    # check whether 'test -ef' works
    if (test "$srcdir" -ef "$srcdir") >/dev/null 2>&1 ; then
      test_ef_works=yes
    else
      test_ef_works=no
    fi
    
    abs_top_srcdir=
    AC_SUBST(abs_top_srcdir)
    
    if test "$test_ef_works" = yes ; then
    # prepare build tree if outside source tree
      if test "$srcdir" -ef . ; then : ; else
        abs_top_srcdir=`cd $srcdir && pwd`
        echo $ac_n "preparing build tree... $ac_c" 1>&6
        /bin/sh "$srcdir/config/prep_buildtree" "$abs_top_srcdir" "." \
          || AC_MSG_ERROR(failed)
        AC_MSG_RESULT(done)
      fi
    fi
    
    AC_OUTPUT(
    [
      GNUmakefile
      src/GNUmakefile
      src/Makefile.global
      src/backend/port/Makefile
    ],
    [
    # Update timestamp for config.h (see Makefile.global)
    test x"$CONFIG_HEADERS" != x"" && echo >src/include/stamp-h
    ])