*** pgsql/configure.in 2002/11/18 04:41:14 1.217.2.4 --- pgsql/configure.in 2007/07/14 11:13:28 1.521 *************** *** 1,5 **** dnl Process this file with autoconf to produce a configure script. ! dnl $Header: /projects/cvsroot/pgsql/configure.in,v 1.217.2.4 2002/11/18 04:41:14 momjian Exp $ dnl dnl Developers, please strive to achieve this order: dnl --- 1,5 ---- dnl Process this file with autoconf to produce a configure script. ! dnl $PostgreSQL: pgsql/configure.in,v 1.520 2007/07/12 14:36:52 mha Exp $ dnl dnl Developers, please strive to achieve this order: dnl *************** dnl *** 16,39 **** dnl Read the Autoconf manual for details. dnl m4_pattern_forbid(^PGAC_)dnl to catch undefined macros - dnl - dnl The GNU folks apparently haven't heard that some people don't use - dnl Texinfo. Use this sorcery to use "docdir" instead of "infodir". - m4_define([info], [doc]) - m4_define([infodir], [docdir]) - AC_INIT([PostgreSQL], [7.3rc2], [pgsql-bugs@postgresql.org]) - m4_undefine([infodir]) - m4_undefine([info]) - AC_SUBST(docdir) ! AC_PREREQ(2.53) ! AC_COPYRIGHT([Copyright 2002 PostgreSQL Global Development Group]) AC_CONFIG_SRCDIR([src/backend/access/common/heaptuple.c]) AC_CONFIG_AUX_DIR(config) AC_PREFIX_DEFAULT(/usr/local/pgsql) AC_SUBST(configure_args, [$ac_configure_args]) ! AC_DEFINE_UNQUOTED(PG_VERSION, "$PACKAGE_VERSION", [PostgreSQL version]) AC_CANONICAL_HOST --- 16,32 ---- dnl Read the Autoconf manual for details. dnl m4_pattern_forbid(^PGAC_)dnl to catch undefined macros ! AC_INIT([PostgreSQL], [8.3devel], [pgsql-bugs@postgresql.org]) ! ! AC_PREREQ(2.59) ! AC_COPYRIGHT([Copyright (c) 1996-2007, PostgreSQL Global Development Group]) AC_CONFIG_SRCDIR([src/backend/access/common/heaptuple.c]) AC_CONFIG_AUX_DIR(config) AC_PREFIX_DEFAULT(/usr/local/pgsql) AC_SUBST(configure_args, [$ac_configure_args]) ! AC_DEFINE_UNQUOTED(PG_VERSION, "$PACKAGE_VERSION", [PostgreSQL version as a string]) AC_CANONICAL_HOST *************** PGAC_ARG_REQ(with, template, [], *** 52,75 **** 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 ;; --- 45,68 ---- esac ], [ ! # --with-template not given case $host_os in aix*) template=aix ;; bsdi*) template=bsdi ;; ! cygwin*) template=cygwin ;; darwin*) template=darwin ;; dgux*) template=dgux ;; freebsd*) template=freebsd ;; hpux*) template=hpux ;; ! irix*) template=irix ;; ! linux*|gnu*|k*bsd*-gnu) ! template=linux ;; ! mingw*) template=win32 ;; netbsd*) template=netbsd ;; nextstep*) template=nextstep ;; openbsd*) template=openbsd ;; osf*) template=osf ;; sco*) template=sco ;; solaris*) template=solaris ;; sunos*) template=sunos4 ;; *************** AC_MSG_RESULT([$template]) *** 103,123 **** PORTNAME=$template AC_SUBST(PORTNAME) ! # Pick right test-and-set (TAS) code. Most platforms have inline ! # assembler code in src/include/storage/s_lock.h, so we just use ! # a dummy file here. ! case $host in ! *-*-hpux*) need_tas=yes; tas_file=hpux.s ;; ! sparc-*-solaris*) need_tas=yes; tas_file=solaris_sparc.s ;; ! i?86-*-solaris*) need_tas=yes; tas_file=solaris_i386.s ;; ! *) need_tas=no; tas_file=dummy.s ;; ! esac ! AC_CONFIG_LINKS([src/backend/port/tas.s:src/backend/port/tas/${tas_file}]) ! ! if test "$need_tas" = yes ; then ! TAS=tas.o ! fi ! AC_SUBST(TAS) --- 96,106 ---- PORTNAME=$template AC_SUBST(PORTNAME) ! # Initialize default assumption that we do not need separate assembly code ! # for TAS (test-and-set). This can be overridden by the template file ! # when it's executed. ! need_tas=no ! tas_file=dummy.s *************** AC_SUBST(TAS) *** 125,130 **** --- 108,124 ---- ## Command line options ## + # + # Installation directory for documentation + # + PGAC_ARG(with, docdir, [ --with-docdir=DIR install the documentation in DIR [[PREFIX/doc]] + --without-docdir do not install the documentation], + [AC_MSG_ERROR([option --with-docdir requires an argument])], + [docdir=], + [docdir=$withval], + [docdir='${prefix}/doc']) + AC_SUBST(docdir) + # # Add non-standard directories to the include path *************** PGAC_ARG_REQ(with, libs, [ --with- *** 148,166 **** AC_MSG_CHECKING([whether to build with 64-bit integer date/time support]) PGAC_ARG_BOOL(enable, integer-datetimes, no, [ --enable-integer-datetimes enable 64-bit integer date/time support], [AC_DEFINE([USE_INTEGER_DATETIMES], 1, ! [Set to 1 if you want integer date/time support (--enable-integer-datetimes)])]) AC_MSG_RESULT([$enable_integer_datetimes]) - # Character set recode (--enable-recode) - # - AC_MSG_CHECKING([whether to build with recode support]) - PGAC_ARG_BOOL(enable, recode, no, [ --enable-recode enable single-byte recode support], - [AC_DEFINE([CYR_RECODE], 1, - [Set to 1 if you want single-byte recode support (--enable-recode)])]) - AC_MSG_RESULT([$enable_recode]) - - # # NLS # --- 142,151 ---- AC_MSG_CHECKING([whether to build with 64-bit integer date/time support]) PGAC_ARG_BOOL(enable, integer-datetimes, no, [ --enable-integer-datetimes enable 64-bit integer date/time support], [AC_DEFINE([USE_INTEGER_DATETIMES], 1, ! [Define to 1 if you want 64-bit integer timestamp and interval support. (--enable-integer-datetimes)])]) AC_MSG_RESULT([$enable_integer_datetimes]) # # NLS # *************** PGAC_ARG_OPTARG(enable, nls, *** 170,176 **** [], [WANTED_LANGUAGES=$enableval], [AC_DEFINE(ENABLE_NLS, 1, ! [Define to 1 if you want National Language Support (--enable-nls)])]) AC_MSG_RESULT([$enable_nls]) AC_SUBST(enable_nls) AC_SUBST(WANTED_LANGUAGES) --- 155,161 ---- [], [WANTED_LANGUAGES=$enableval], [AC_DEFINE(ENABLE_NLS, 1, ! [Define to 1 if you want National Language Support. (--enable-nls)])]) AC_MSG_RESULT([$enable_nls]) AC_SUBST(enable_nls) AC_SUBST(WANTED_LANGUAGES) *************** AC_SUBST(WANTED_LANGUAGES) *** 179,211 **** # Default port number (--with-pgport), default 5432 # AC_MSG_CHECKING([for default port number]) ! PGAC_ARG_REQ(with, pgport, [ --with-pgport=PORTNUM change default port number [5432]], [default_port=$withval], [default_port=5432]) AC_MSG_RESULT([$default_port]) # Need both of these because some places want an integer and some a string AC_DEFINE_UNQUOTED(DEF_PGPORT, ${default_port}, ! [The default TCP port number on which the server listens and to which ! clients will try to connect to. This can be overridden at run-time, but it's convenient if your clients have the right default compiled in. (--with-pgport=PORTNUM)]) AC_DEFINE_UNQUOTED(DEF_PGPORT_STR, "${default_port}", ! [Default TCP port number as string constant]) AC_SUBST(default_port) # - # Maximum number of allowed connections (--with-maxbackends), default 32 - # - AC_MSG_CHECKING([for default soft limit on number of connections]) - PGAC_ARG_REQ(with, maxbackends, [ --with-maxbackends=N set default maximum number of connections [32]], - [], - [with_maxbackends=32]) - AC_MSG_RESULT([$with_maxbackends]) - AC_DEFINE_UNQUOTED([DEF_MAXBACKENDS], [$with_maxbackends], - [The default soft limit on the number of concurrent connections, i.e., the default for the postmaster -N switch (--with-maxbackends)]) - - - # # Option to disable shared libraries # PGAC_ARG_BOOL(enable, shared, yes, --- 164,184 ---- # 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}, ! [Define to the default TCP port number on which the server listens and ! to which clients will try to connect. This can be overridden at run-time, but it's convenient if your clients have the right default compiled in. (--with-pgport=PORTNUM)]) AC_DEFINE_UNQUOTED(DEF_PGPORT_STR, "${default_port}", ! [Define to the default TCP port number as a string constant.]) AC_SUBST(default_port) # # Option to disable shared libraries # PGAC_ARG_BOOL(enable, shared, yes, *************** PGAC_ARG_BOOL(enable, rpath, yes, *** 219,224 **** --- 192,202 ---- [ --disable-rpath do not embed shared library search path in executables]) AC_SUBST(enable_rpath) + # + # Spinlocks + # + PGAC_ARG_BOOL(enable, spinlocks, yes, + [ --disable-spinlocks do not use spinlocks]) # # --enable-debug adds -g to compiler flags *************** PGAC_ARG_BOOL(enable, debug, no, *** 228,233 **** --- 206,232 ---- AC_SUBST(enable_debug) # + # --enable-profiling enables gcc profiling + # + PGAC_ARG_BOOL(enable, profiling, no, + [ --enable-profiling build with profiling enabled ]) + AC_SUBST(enable_profiling) + + # + # DTrace + # + PGAC_ARG_BOOL(enable, dtrace, no, + [ --enable-dtrace build with DTrace support], + [AC_DEFINE([ENABLE_DTRACE], 1, + [Define to 1 to enable DTrace support. (--enable-dtrace)]) + AC_CHECK_PROGS(DTRACE, dtrace) + if test -z "$DTRACE"; then + AC_MSG_ERROR([dtrace not found]) + fi + AC_SUBST(DTRACEFLAGS)]) + AC_SUBST(enable_dtrace) + + # # C compiler # *************** case $template in *** 243,259 **** --- 242,327 ---- esac AC_PROG_CC([$pgac_cc_list]) + + unset CFLAGS + + # # Read the template + # . "$srcdir/src/template/$template" || exit + # CFLAGS are selected so: + # If the user specifies something in the environment, that is used. + # else: If the template file set something, that is used. + # else: If the compiler is GCC, then we use -O2. + # else: If the compiler is something else, then we use -0. + if test "$ac_env_CFLAGS_set" = set; then CFLAGS=$ac_env_CFLAGS_value + elif test "${CFLAGS+set}" = set; then + : # (keep what template set) + elif test "$GCC" = yes; then + CFLAGS="-O2" + else + # if the user selected debug mode, don't use -O + if test "$enable_debug" != yes; then + CFLAGS="-O" + fi fi + + # Some versions of GCC support some additional useful warning flags. + # Check whether they are supported, and add them to CFLAGS if so. + + if test "$GCC" = yes; then + + # ICC pretends to be GCC but it's lying; it doesn't support these options. + # So we have to check if "GCC" is really ICC. + AC_TRY_COMPILE([], [@%:@ifndef __INTEL_COMPILER + choke me + @%:@endif], [ICC=[yes]], [ICC=[no]]) + + if test "$ICC" = no; then + CFLAGS="$CFLAGS -Wall -Wmissing-prototypes -Wpointer-arith -Winline" + + PGAC_PROG_CC_CFLAGS_OPT([-Wdeclaration-after-statement]) + PGAC_PROG_CC_CFLAGS_OPT([-Wendif-labels]) + else + # Intel compiler has a bug/misoptimization in checking for + # division by NAN (NaN == 0), -mp1 fixes it, so add it to the + # CFLAGS. + PGAC_PROG_CC_CFLAGS_OPT([-mp1]) + fi + + # Disable strict-aliasing rules; needed for gcc 3.3+ + PGAC_PROG_CC_CFLAGS_OPT([-fno-strict-aliasing]) + elif test x"${CC}" = x"xlc"; then + # AIX xlc has to have strict aliasing turned off too + PGAC_PROG_CC_CFLAGS_OPT([-qnoansialias]) + fi + + # supply -g if --enable-debug if test "$enable_debug" = yes && test "$ac_cv_prog_cc_g" = yes; then CFLAGS="$CFLAGS -g" fi + + # enable profiling if --enable-profiling + if test "$enable_profiling" = yes && test "$ac_cv_prog_cc_g" = yes; then + if test "$GCC" = yes; then + AC_DEFINE([PROFILE_PID_DIR], 1, + [Define to 1 to enable profiling. (--enable-profiling)]) + CFLAGS="$CFLAGS -pg" + else + AC_MSG_ERROR([--enable-profiling is supported only when using GCC]) + fi + fi + AC_MSG_NOTICE([using CFLAGS=$CFLAGS]) + # We already have this in Makefile.win32, but configure needs it too + if test "$PORTNAME" = "win32"; then + CPPFLAGS="$CPPFLAGS -I$srcdir/src/include/port/win32 -DEXEC_BACKEND" + fi + # Check if the compiler still works with the template settings AC_MSG_CHECKING([whether the C compiler still works]) AC_TRY_LINK([], [return 0;], *************** AC_TRY_LINK([], [return 0;], *** 261,267 **** [AC_MSG_RESULT(no) AC_MSG_ERROR([cannot proceed])]) ! # Defend against gcc -ffastmath if test "$GCC" = yes; then AC_TRY_COMPILE([], [@%:@ifdef __FAST_MATH__ choke me --- 329,335 ---- [AC_MSG_RESULT(no) AC_MSG_ERROR([cannot proceed])]) ! # Defend against gcc -ffast-math if test "$GCC" = yes; then AC_TRY_COMPILE([], [@%:@ifdef __FAST_MATH__ choke me *************** if test x"$GCC" = x"yes" ; then *** 277,283 **** else cc_string=$CC fi ! AC_DEFINE_UNQUOTED(PG_VERSION_STR, ["PostgreSQL $PACKAGE_VERSION on $host, compiled by $cc_string"], [A canonical string containing the version number, platform, and C compiler]) # --- 345,367 ---- else cc_string=$CC fi ! AC_DEFINE_UNQUOTED(PG_VERSION_STR, ! ["PostgreSQL $PACKAGE_VERSION on $host, compiled by $cc_string"], ! [A string containing the version number, platform, and C compiler]) ! ! ! # ! # Set up TAS assembly code if needed; the template file has now had its ! # chance to request this. ! # ! AC_CONFIG_LINKS([src/backend/port/tas.s:src/backend/port/tas/${tas_file}]) ! ! if test "$need_tas" = yes ; then ! TAS=tas.o ! else ! TAS="" ! fi ! AC_SUBST(TAS) # *************** AC_SUBST(autodepend) *** 293,306 **** # 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 --- 377,390 ---- # 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. (--enable-cassert)])]) # # Include directories # ac_save_IFS=$IFS ! IFS="${IFS}${PATH_SEPARATOR}" # SRCH_INC comes from the template file for dir in $with_includes $SRCH_INC; do if test -d "$dir"; then *************** AC_SUBST(INCLUDES) *** 317,323 **** # 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 --- 401,407 ---- # Library directories # ac_save_IFS=$IFS ! IFS="${IFS}${PATH_SEPARATOR}" # LIBRARY_DIRS comes from command line, SRCH_LIB from template file. for dir in $LIBRARY_DIRS $SRCH_LIB; do if test -d "$dir"; then *************** for dir in $LIBRARY_DIRS $SRCH_LIB; do *** 328,362 **** 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 (PL/Perl) --- 412,450 ---- done IFS=$ac_save_IFS + # + # Enable thread-safe client libraries + # + AC_MSG_CHECKING([allow thread-safe client libraries]) + if test "$PORTNAME" != "win32"; then + PGAC_ARG_BOOL(enable, thread-safety, no, [ --enable-thread-safety make client libraries thread-safe]) + else + # Win32 should always use threads + PGAC_ARG_BOOL(enable, thread-safety, yes, [ --enable-thread-safety make client libraries thread-safe]) + fi + + PGAC_ARG_BOOL(enable, thread-safety-force, no, [ --enable-thread-safety-force force thread-safety despite thread test failure]) + if test "$enable_thread_safety" = yes -o \ + "$enable_thread_safety_force" = yes; then + enable_thread_safety="yes" # for 'force' + AC_DEFINE([ENABLE_THREAD_SAFETY], 1, + [Define to 1 to build client libraries as thread-safe code. (--enable-thread-safety)]) + fi + AC_MSG_RESULT([$enable_thread_safety]) + AC_SUBST(enable_thread_safety) # ! # Optionally build Tcl modules (PL/Tcl) # AC_MSG_CHECKING([whether to build with Tcl]) ! PGAC_ARG_BOOL(with, tcl, no, [ --with-tcl build Tcl modules (PL/Tcl)]) AC_MSG_RESULT([$with_tcl]) AC_SUBST([with_tcl]) # 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 is in DIR]) # # Optionally build Perl modules (PL/Perl) *************** AC_MSG_RESULT([$with_perl]) *** 367,461 **** 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 ! If you have Ant already installed, see config.log for details on the failure.]) ! fi ! if "$ANT" -version | sed q | egrep -v ' 1\.[[5-9]]| [[2-9]]\.' >/dev/null ; then ! AC_MSG_ERROR([Ant version >= 1.5 is required to build Java components]) ! fi], ! [AC_MSG_RESULT(no)]) ! AC_SUBST(with_java) ! ! dnl A note on the Kerberos and OpenSSL options: ! dnl ! dnl The user can give an argument to the option in order the specify ! dnl the base path of the respective installation (what he specified ! dnl perhaps as --prefix). If no argument is given ($withval is "yes") ! dnl then we take the path where the package installs by default. This ! dnl way the user doesn't have to use redundant --with-includes and ! dnl --with-libraries options, but he can still use them if the layout ! dnl is non-standard. ! ! # ! # Kerberos 4 ! # ! AC_MSG_CHECKING([whether to build with Kerberos 4 support]) ! PGAC_ARG_OPTARG(with, krb4, [[ --with-krb4[=DIR] build with Kerberos 4 support [/usr/athena]]], ! [krb4_prefix=/usr/athena], ! [krb4_prefix=$withval], [ ! AC_MSG_RESULT(yes) ! AC_DEFINE(KRB4, 1, [Define if you are building with Kerberos 4 support.]) ! ! if test -d "$krb4_prefix/include"; then ! INCLUDES="$INCLUDES -I$krb4_prefix/include" ! fi ! if test -d "$krb4_prefix/lib"; then ! LIBDIRS="$LIBDIRS -L$krb4_prefix/lib" ! fi ! ! krb_srvtab="/etc/srvtab" ! ], ! [AC_MSG_RESULT(no)]) ! ! AC_SUBST(with_krb4) ! # # Kerberos 5 # AC_MSG_CHECKING([whether to build with Kerberos 5 support]) ! PGAC_ARG_OPTARG(with, krb5, [[ --with-krb5[=DIR] build with Kerberos 5 support [/usr/athena]]], ! [krb5_prefix=/usr/athena], ! [krb5_prefix=$withval], [ ! AC_MSG_RESULT([yes]) ! AC_DEFINE(KRB5, 1, [Define if you are building with Kerberos 5 support.]) ! ! if test -d "$krb5_prefix/include"; then ! INCLUDES="$INCLUDES -I$krb5_prefix/include" ! fi ! if test -d "$krb5_prefix/lib"; then ! LIBDIRS="$LIBDIRS -L$krb5_prefix/lib" ! fi ! krb_srvtab="FILE:\$(sysconfdir)/krb5.keytab" ! ], ! [AC_MSG_RESULT(no)]) ! AC_SUBST(with_krb5) - # Using both Kerberos 4 and Kerberos 5 at the same time isn't going to work. - if test "$with_krb4" = yes && test "$with_krb5" = yes ; then - AC_MSG_ERROR([Kerberos 4 and Kerberos 5 support cannot be combined]) - fi - AC_SUBST(krb_srvtab) --- 455,492 ---- AC_SUBST(with_perl) # ! # Optionally build Python modules (PL/Python) # AC_MSG_CHECKING([whether to build Python modules]) ! PGAC_ARG_BOOL(with, python, no, [ --with-python build Python modules (PL/Python)]) AC_MSG_RESULT([$with_python]) AC_SUBST(with_python) # ! # GSSAPI # ! AC_MSG_CHECKING([whether to build with GSSAPI support]) ! PGAC_ARG_BOOL(with, gssapi, no, [ --with-gssapi build with GSSAPI support], [ ! AC_DEFINE(ENABLE_GSS, 1, [Define to build with GSSAPI support. (--with-gssapi)]) ! krb_srvtab="FILE:\$(sysconfdir)/krb5.keytab" ! ]) ! AC_MSG_RESULT([$with_gssapi]) ! AC_SUBST(with_gssapi) # # Kerberos 5 # AC_MSG_CHECKING([whether to build with Kerberos 5 support]) ! PGAC_ARG_BOOL(with, krb5, no, [ --with-krb5 build with Kerberos 5 support], [ ! AC_DEFINE(KRB5, 1, [Define to build with Kerberos 5 support. (--with-krb5)]) krb_srvtab="FILE:\$(sysconfdir)/krb5.keytab" ! ]) ! AC_MSG_RESULT([$with_krb5]) AC_SUBST(with_krb5) AC_SUBST(krb_srvtab) *************** AC_SUBST(krb_srvtab) *** 463,473 **** # 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]) # --- 494,504 ---- # Kerberos configuration parameters # PGAC_ARG_REQ(with, krb-srvnam, ! [ --with-krb-srvnam=NAME default service principal name in Kerberos [[postgres]]], [], [with_krb_srvnam="postgres"]) AC_DEFINE_UNQUOTED([PG_KRB_SRVNAM], ["$with_krb_srvnam"], ! [Define to the name of the default PostgreSQL service principal in Kerberos. (--with-krb-srvnam=NAME)]) # *************** AC_DEFINE_UNQUOTED([PG_KRB_SRVNAM], ["$w *** 476,505 **** AC_MSG_CHECKING([whether to build with PAM support]) PGAC_ARG_BOOL(with, pam, no, [ --with-pam build with PAM support], ! [AC_DEFINE([USE_PAM], 1, [Define to build with PAM support])]) AC_MSG_RESULT([$with_pam]) AC_SUBST(with_pam) # ! # OpenSSL # ! PGAC_ARG_OPTARG(with, openssl, ! [[ --with-openssl[=DIR] build with OpenSSL support [/usr/local/ssl]]], ! [openssl_prefix=/usr/local/ssl], ! [openssl_prefix=$withval], ! [ ! AC_MSG_RESULT([building with OpenSSL support]) ! AC_DEFINE([USE_SSL], 1, [Define to build with (Open)SSL support]) - if test -d "${openssl_prefix}/include" ; then - INCLUDES="$INCLUDES -I${openssl_prefix}/include" - fi - if test -d "${openssl_prefix}/lib" ; then - LIBDIRS="$LIBDIRS -L${openssl_prefix}/lib" - fi - ]) AC_SUBST(with_openssl) --- 507,546 ---- AC_MSG_CHECKING([whether to build with PAM support]) PGAC_ARG_BOOL(with, pam, no, [ --with-pam build with PAM support], ! [AC_DEFINE([USE_PAM], 1, [Define to 1 to build with PAM support. (--with-pam)])]) AC_MSG_RESULT([$with_pam]) AC_SUBST(with_pam) # ! # LDAP # ! AC_MSG_CHECKING([whether to build with LDAP support]) ! PGAC_ARG_BOOL(with, ldap, no, ! [ --with-ldap build with LDAP support], ! [AC_DEFINE([USE_LDAP], 1, [Define to 1 to build with LDAP support. (--with-ldap)])]) ! AC_MSG_RESULT([$with_ldap]) ! AC_SUBST(with_ldap) ! ! ! # ! # Bonjour ! # ! AC_MSG_CHECKING([whether to build with Bonjour support]) ! PGAC_ARG_BOOL(with, bonjour, no, ! [ --with-bonjour build with Bonjour support], ! [AC_DEFINE([USE_BONJOUR], 1, [Define to 1 to build with Bonjour support. (--with-bonjour)])]) ! AC_MSG_RESULT([$with_bonjour]) ! AC_SUBST(with_bonjour) + # + # OpenSSL + # + AC_MSG_CHECKING([whether to build with OpenSSL support]) + PGAC_ARG_BOOL(with, openssl, no, [ --with-openssl build with OpenSSL support], + [AC_DEFINE([USE_SSL], 1, [Define to build with (Open)SSL support. (--with-openssl)])]) + AC_MSG_RESULT([$with_openssl]) AC_SUBST(with_openssl) *************** AC_SUBST(with_openssl) *** 507,521 **** # Readline # PGAC_ARG_BOOL(with, readline, yes, ! [ --without-readline do not use Readline]) # # Zlib # PGAC_ARG_BOOL(with, zlib, yes, [ --without-zlib do not use Zlib]) ! # Assume system is ELF if it predefines __ELF__ as 1, # otherwise believe host_os based default. --- 548,622 ---- # Readline # PGAC_ARG_BOOL(with, readline, yes, ! [ --without-readline do not use GNU Readline nor BSD Libedit for editing]) ! # readline on MinGW has problems with backslashes in psql and other bugs. ! # This is particularly a problem with non-US code pages. ! # Therefore disable its use until we understand the cause. 2004-07-20 ! if test "$PORTNAME" = "win32"; then ! if test "$with_readline" = yes; then ! AC_MSG_WARN([*** Readline does not work on MinGW --- disabling]) ! with_readline=no ! fi ! fi ! ! ! # ! # Prefer libedit ! # ! PGAC_ARG_BOOL(with, libedit-preferred, no, ! [ --with-libedit-preferred prefer BSD Libedit over GNU Readline]) ! ! ! # ! # OSSP UUID library ! # ! PGAC_ARG_BOOL(with, ossp-uuid, no, [ --with-ossp-uuid build with OSSP UUID library for UUID generation]) ! AC_SUBST(with_ossp_uuid) ! ! ! # ! # XML ! # ! PGAC_ARG_BOOL(with, libxml, no, [ --with-libxml build with XML support], ! [AC_DEFINE([USE_LIBXML], 1, [Define to 1 to build with XML support. (--with-libxml)])]) ! ! if test "$with_libxml" = yes ; then ! AC_CHECK_PROGS(XML2_CONFIG, xml2-config) ! if test -n "$XML2_CONFIG"; then ! for pgac_option in `$XML2_CONFIG --cflags`; do ! case $pgac_option in ! -I*|-D*) CPPFLAGS="$CPPFLAGS $pgac_option";; ! esac ! done ! for pgac_option in `$XML2_CONFIG --libs`; do ! case $pgac_option in ! -L*) LDFLAGS="$LDFLAGS $pgac_option";; ! esac ! done ! fi ! fi ! ! AC_SUBST(with_libxml) ! ! # ! # XSLT ! # ! PGAC_ARG_BOOL(with, libxslt, no, [ --with-libxslt build with XSLT support], ! [AC_DEFINE([USE_LIBXSLT], 1, [Define to 1 to build with XSLT support. (--with-libxslt)])]) ! ! ! AC_SUBST(with_libxslt) # # Zlib # PGAC_ARG_BOOL(with, zlib, yes, [ --without-zlib do not use Zlib]) + AC_SUBST(with_zlib) ! # ! # Elf ! # # Assume system is ELF if it predefines __ELF__ as 1, # otherwise believe host_os based default. *************** else *** 537,543 **** fi]) AC_SUBST(ELF_SYS) ! CPPFLAGS="$CPPFLAGS $INCLUDES" LDFLAGS="$LDFLAGS $LIBDIRS" --- 638,646 ---- fi]) AC_SUBST(ELF_SYS) ! # ! # Assignments ! # CPPFLAGS="$CPPFLAGS $INCLUDES" LDFLAGS="$LDFLAGS $LIBDIRS" *************** LDFLAGS="$LDFLAGS $LIBDIRS" *** 545,555 **** AC_MSG_NOTICE([using CPPFLAGS=$CPPFLAGS]) AC_MSG_NOTICE([using LDFLAGS=$LDFLAGS]) AC_PROG_AWK PGAC_PATH_FLEX AC_PROG_LN_S ! AC_PROG_LD AC_SUBST(LD) AC_SUBST(with_gnu_ld) case $host_os in sysv5*) --- 648,659 ---- AC_MSG_NOTICE([using CPPFLAGS=$CPPFLAGS]) AC_MSG_NOTICE([using LDFLAGS=$LDFLAGS]) + AC_ARG_VAR(LDFLAGS_SL) AC_PROG_AWK PGAC_PATH_FLEX AC_PROG_LN_S ! PGAC_PROG_LD AC_SUBST(LD) AC_SUBST(with_gnu_ld) case $host_os in sysv5*) *************** case $host_os in sysv5*) *** 563,582 **** AC_SUBST(ld_R_works) esac AC_PROG_RANLIB - AC_CHECK_PROGS(LORDER, lorder) AC_PATH_PROG(TAR, tar) PGAC_CHECK_STRIP - AC_CHECK_PROGS(YACC, ['bison -y']) if test -z "$YACC"; then ! AC_MSG_WARN([ ! *** Without Bison you will not be able to build PostgreSQL from CVS or *** change any of the parser definition files. You can obtain Bison from *** a GNU mirror site. (If you are using the official distribution of ! *** PostgreSQL then you do not need to worry about this because the Bison *** output is pre-generated.) To use a different yacc program (possible, *** but not recommended), set the environment variable YACC before running *** 'configure'.]) fi AC_SUBST(YFLAGS) --- 667,697 ---- AC_SUBST(ld_R_works) esac AC_PROG_RANLIB AC_PATH_PROG(TAR, tar) PGAC_CHECK_STRIP if test -z "$YACC"; then ! AC_CHECK_PROGS(YACC, ['bison -y']) ! ! if test "$YACC"; then ! if $YACC --version | sed q | $AWK '{ if ($4 < 1.875) exit 0; else exit 1;}'; then ! AC_MSG_WARN([ ! *** The installed version of Bison is too old to use with PostgreSQL. ! *** Bison version 1.875 or later is required.]) ! YACC="" ! fi ! fi ! ! if test -z "$YACC"; then ! AC_MSG_WARN([ ! *** Without Bison you will not be able to build PostgreSQL from CVS nor *** 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 fi AC_SUBST(YFLAGS) *************** fi *** 588,631 **** if test "$with_python" = yes; then PGAC_PATH_PYTHON - PGAC_CHECK_PYTHON_MODULE_SETUP PGAC_CHECK_PYTHON_EMBED_SETUP fi ## ## Libraries ## ! if test "$PORTNAME" != "aix" -a "$PORTNAME" != "alpha" ! then ! AC_CHECK_LIB(bsd, main) ! fi ! AC_CHECK_LIB(util, setproctitle) ! AC_CHECK_LIB(m, main) ! AC_CHECK_LIB(dl, main) ! AC_CHECK_LIB(nsl, main) ! AC_CHECK_LIB(socket, main) ! AC_CHECK_LIB(ipc, main) ! AC_CHECK_LIB(IPC, main) ! AC_CHECK_LIB(lc, main) ! AC_CHECK_LIB(dld, main) ! AC_CHECK_LIB(ld, main) ! AC_CHECK_LIB(compat, main) ! AC_CHECK_LIB(BSD, main) ! AC_CHECK_LIB(gen, main) ! AC_CHECK_LIB(PW, main) ! AC_CHECK_LIB(resolv, main) AC_SEARCH_LIBS(getopt_long, [getopt gnugetopt]) ! # QNX: ! AC_CHECK_LIB([[unix]], main) ! AC_SEARCH_LIBS(crypt, crypt) ! # BeOS: ! AC_CHECK_LIB(bind, __inet_ntoa) # Solaris: AC_SEARCH_LIBS(fdatasync, [rt posix4]) # Cygwin: ! AC_CHECK_LIB(cygipc, shmget) if test "$with_readline" = yes; then PGAC_CHECK_READLINE --- 703,744 ---- if test "$with_python" = yes; then PGAC_PATH_PYTHON PGAC_CHECK_PYTHON_EMBED_SETUP fi + # Supply a numeric version string for use by 3rd party add-ons + # awk -F is a regex on some platforms, and not on others, so make "." a tab + [PG_VERSION_NUM="`echo "$PACKAGE_VERSION" | sed 's/[A-Za-z].*$//' | + tr '.' ' ' | + $AWK '{printf "%d%02d%02d", $1, $2, (NF >= 3) ? $3 : 0}'`"] + AC_DEFINE_UNQUOTED(PG_VERSION_NUM, $PG_VERSION_NUM, [PostgreSQL version as a number]) ## ## Libraries ## + ## Most libraries are included only if they demonstrably provide a function + ## we need, but libm is an exception: always include it, because there are + ## too many compilers that play cute optimization games that will break + ## probes for standard functions such as pow(). + ## ! AC_CHECK_LIB(m, main) ! AC_SEARCH_LIBS(setproctitle, util) ! AC_SEARCH_LIBS(dlopen, dl) ! AC_SEARCH_LIBS(socket, [socket wsock32]) ! AC_SEARCH_LIBS(shl_load, dld) ! # We only use libld in port/dynloader/aix.c ! case $host_os in ! aix*) ! AC_SEARCH_LIBS(ldopen, ld) ! ;; ! esac AC_SEARCH_LIBS(getopt_long, [getopt gnugetopt]) ! AC_SEARCH_LIBS(crypt, crypt) # Solaris: AC_SEARCH_LIBS(fdatasync, [rt posix4]) # Cygwin: ! AC_SEARCH_LIBS(shmget, cygipc) if test "$with_readline" = yes; then PGAC_CHECK_READLINE *************** failure. It is possible the compiler is *** 645,672 **** Use --without-zlib to disable zlib support.])]) fi ! if test "$with_krb4" = yes ; then ! AC_CHECK_LIB(des, [des_encrypt], [], [AC_MSG_ERROR([library 'des' is required for Kerberos 4])]) ! AC_CHECK_LIB(krb, [krb_sendauth], [], [AC_MSG_ERROR([library 'krb' is required for Kerberos 4])]) fi if test "$with_krb5" = yes ; then ! AC_SEARCH_LIBS(com_err, [krb5 'krb5 -ldes -lasn1 -lroken' com_err], [], ! [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])]) ! AC_SEARCH_LIBS(krb5_encrypt, [krb5 'krb5 -ldes -lasn1 -lroken' crypto k5crypto], [], ! [AC_MSG_ERROR([could not find function 'krb5_encrypt' required for Kerberos 5])]) ! AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -ldes -lasn1 -lroken'], [], ! [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])]) fi if test "$with_openssl" = yes ; then dnl Order matters! ! AC_CHECK_LIB(crypto, [CRYPTO_new_ex_data], [], [AC_MSG_ERROR([library 'crypto' is required for OpenSSL])]) ! AC_CHECK_LIB(ssl, [SSL_library_init], [], [AC_MSG_ERROR([library 'ssl' is required for OpenSSL])]) fi if test "$with_pam" = yes ; then ! AC_CHECK_LIB(pam, [pam_start], [], [AC_MSG_ERROR([library 'pam' is required for PAM])]) fi --- 758,812 ---- Use --without-zlib to disable zlib support.])]) fi ! if test "$enable_spinlocks" = yes; then ! AC_DEFINE(HAVE_SPINLOCKS, 1, [Define to 1 if you have spinlocks.]) ! else ! AC_MSG_WARN([ ! *** Not using spinlocks will cause poor performance.]) ! fi ! ! if test "$with_gssapi" = yes ; then ! if test "$PORTNAME" != "win32"; then ! AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [], ! [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])]) ! else ! LIBS="$LIBS -lgssapi32" ! fi fi if test "$with_krb5" = yes ; then ! if test "$PORTNAME" != "win32"; then ! AC_SEARCH_LIBS(com_err, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken' com_err], [], ! [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])]) ! AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [], ! [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])]) ! else ! AC_SEARCH_LIBS(com_err, 'comerr32 -lkrb5_32', [], ! [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])]) ! fi fi if test "$with_openssl" = yes ; then dnl Order matters! ! if test "$PORTNAME" != "win32"; then ! 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])]) ! else ! AC_CHECK_LIB(eay32, CRYPTO_new_ex_data, [], [AC_MSG_ERROR([library 'eay32' is required for OpenSSL])]) ! AC_CHECK_LIB(ssleay32, SSL_library_init, [], [AC_MSG_ERROR([library 'ssleay32' is required for OpenSSL])]) ! fi fi if test "$with_pam" = yes ; then ! AC_CHECK_LIB(pam, pam_start, [], [AC_MSG_ERROR([library 'pam' is required for PAM])]) ! fi ! ! if test "$with_libxml" = yes ; then ! AC_CHECK_LIB(xml2, xmlSaveToBuffer, [], [AC_MSG_ERROR([library 'xml2' (version >= 2.6.23) is required for XML support])]) ! fi ! ! if test "$with_libxslt" = yes ; then ! AC_CHECK_LIB(xslt, xsltLibxmlVersion, [], [AC_MSG_ERROR([library 'xslt' is required for XSLT support])]) fi *************** fi *** 675,730 **** ## dnl sys/socket.h is required by AC_FUNC_ACCEPT_ARGTYPES ! AC_CHECK_HEADERS([crypt.h dld.h endian.h fp_class.h getopt.h ieeefp.h pwd.h sys/ipc.h sys/pstat.h sys/select.h sys/sem.h sys/socket.h sys/shm.h sys/un.h termios.h kernel/OS.h kernel/image.h SupportDefs.h]) # At least on IRIX, cpp test for netinet/tcp.h will fail unless # netinet/in.h is included first. ! AC_CHECK_HEADERS([netinet/in.h]) ! AC_CHECK_HEADERS([netinet/tcp.h], [], [], [AC_INCLUDES_DEFAULT #ifdef HAVE_NETINET_IN_H #include #endif ]) ! if test "$with_readline" = yes; then ! AC_CHECK_HEADERS([readline/readline.h], [], ! [AC_CHECK_HEADERS([readline.h], [], ! [AC_MSG_ERROR([readline header not found If you have readline already installed, see config.log for details on the failure. It is possible the compiler isn't looking in the proper directory. Use --without-readline to disable readline support.])])]) ! AC_CHECK_HEADERS([readline/history.h], [], ! [AC_CHECK_HEADERS([history.h], [], ! [AC_MSG_ERROR([history header not found If you have readline already installed, see config.log for details on the failure. It is possible the compiler isn't looking in the proper directory. Use --without-readline to disable readline support.])])]) fi if test "$with_zlib" = yes; then AC_CHECK_HEADER(zlib.h, [], [AC_MSG_ERROR([zlib header not found ! If you have readline already installed, see config.log for details on the failure. It is possible the compiler isn't looking in the proper directory. Use --without-zlib to disable zlib support.])]) fi ! if test "$with_krb4" = yes ; then ! AC_CHECK_HEADER(krb.h, [], [AC_MSG_ERROR([header file is required for Kerberos 4])]) fi if test "$with_krb5" = yes ; then AC_CHECK_HEADER(krb5.h, [], [AC_MSG_ERROR([header file is required for Kerberos 5])]) - AC_CHECK_HEADER(com_err.h, [], [AC_MSG_ERROR([header file is required for Kerberos 5])]) fi if test "$with_openssl" = yes ; then ! AC_CHECK_HEADER([openssl/ssl.h], [], [AC_MSG_ERROR([header file is required for OpenSSL])]) ! AC_CHECK_HEADER([openssl/err.h], [], [AC_MSG_ERROR([header file is required for OpenSSL])]) fi if test "$with_pam" = yes ; then ! AC_CHECK_HEADER([security/pam_appl.h], [], [AC_MSG_ERROR([header file is required for PAM])]) fi --- 815,917 ---- ## dnl sys/socket.h is required by AC_FUNC_ACCEPT_ARGTYPES ! AC_CHECK_HEADERS([crypt.h dld.h fp_class.h getopt.h ieeefp.h langinfo.h poll.h pwd.h sys/ipc.h sys/poll.h sys/pstat.h sys/resource.h sys/select.h sys/sem.h sys/socket.h sys/shm.h sys/tas.h sys/time.h sys/un.h termios.h utime.h wchar.h wctype.h kernel/OS.h kernel/image.h SupportDefs.h]) # At least on IRIX, cpp test for netinet/tcp.h will fail unless # netinet/in.h is included first. ! AC_CHECK_HEADERS(netinet/in.h) ! AC_CHECK_HEADERS(netinet/tcp.h, [], [], [AC_INCLUDES_DEFAULT #ifdef HAVE_NETINET_IN_H #include #endif ]) ! if expr x"$pgac_cv_check_readline" : 'x-lreadline' >/dev/null ; then ! AC_CHECK_HEADERS(readline/readline.h, [], ! [AC_CHECK_HEADERS(readline.h, [], ! [AC_MSG_ERROR([readline header not found If you have readline already installed, see config.log for details on the failure. It is possible the compiler isn't looking in the proper directory. Use --without-readline to disable readline support.])])]) ! AC_CHECK_HEADERS(readline/history.h, [], ! [AC_CHECK_HEADERS(history.h, [], ! [AC_MSG_ERROR([history header not found If you have readline already installed, see config.log for details on the failure. It is possible the compiler isn't looking in the proper directory. Use --without-readline to disable readline support.])])]) fi + if expr x"$pgac_cv_check_readline" : 'x-ledit' >/dev/null ; then + # Some installations of libedit usurp /usr/include/readline/, which seems + # bad practice, since in combined installations readline will have its headers + # there. We might have to resort to AC_EGREP checks to make sure we found + # the proper header... + AC_CHECK_HEADERS(editline/readline.h, [], + [AC_CHECK_HEADERS(readline.h, [], + [AC_CHECK_HEADERS(readline/readline.h, [], + [AC_MSG_ERROR([readline header not found + If you have libedit already installed, see config.log for details on the + failure. It is possible the compiler isn't looking in the proper directory. + Use --without-readline to disable libedit support.])])])]) + # Note: in a libedit installation, history.h is sometimes a dummy, and may + # not be there at all. Hence, don't complain if not found. We must check + # though, since in yet other versions it is an independent header. + AC_CHECK_HEADERS(editline/history.h, [], + [AC_CHECK_HEADERS(history.h, [], + [AC_CHECK_HEADERS(readline/history.h)])]) + fi + if test "$with_zlib" = yes; then AC_CHECK_HEADER(zlib.h, [], [AC_MSG_ERROR([zlib header not found ! If you have zlib already installed, see config.log for details on the failure. It is possible the compiler isn't looking in the proper directory. Use --without-zlib to disable zlib support.])]) fi ! if test "$with_gssapi" = yes ; then ! AC_CHECK_HEADERS(gssapi/gssapi.h, [], ! [AC_CHECK_HEADERS(gssapi.h, [], [AC_MSG_ERROR([gssapi.h header file is required for GSSAPI])])]) fi if test "$with_krb5" = yes ; then AC_CHECK_HEADER(krb5.h, [], [AC_MSG_ERROR([header file is required for Kerberos 5])]) fi if test "$with_openssl" = yes ; then ! AC_CHECK_HEADER(openssl/ssl.h, [], [AC_MSG_ERROR([header file is required for OpenSSL])]) ! AC_CHECK_HEADER(openssl/err.h, [], [AC_MSG_ERROR([header file is required for OpenSSL])]) fi if test "$with_pam" = yes ; then ! AC_CHECK_HEADERS(security/pam_appl.h, [], ! [AC_CHECK_HEADERS(pam/pam_appl.h, [], ! [AC_MSG_ERROR([header file or is required for PAM.])])]) ! fi ! ! if test "$with_libxml" = yes ; then ! AC_CHECK_HEADER(libxml/parser.h, [], [AC_MSG_ERROR([header file is required for XML support])]) ! fi ! ! if test "$with_libxslt" = yes ; then ! AC_CHECK_HEADER(libxslt/xslt.h, [], [AC_MSG_ERROR([header file is required for XSLT support])]) ! fi ! ! if test "$with_ldap" = yes ; then ! if test "$PORTNAME" != "win32"; then ! AC_CHECK_HEADERS(ldap.h, [], ! [AC_MSG_ERROR([header file is required for LDAP])]) ! else ! AC_CHECK_HEADERS(winldap.h, [], ! [AC_MSG_ERROR([header file is required for LDAP])], ! [AC_INCLUDES_DEFAULT ! #include ! ]) ! fi ! fi ! ! if test "$with_bonjour" = yes ; then ! AC_CHECK_HEADER(DNSServiceDiscovery/DNSServiceDiscovery.h, [], [AC_MSG_ERROR([header file is required for Bonjour])]) fi *************** fi *** 733,752 **** ## m4_defun([AC_PROG_CC_STDC], []) dnl We don't want that. AC_C_CONST AC_C_INLINE AC_C_STRINGIZE PGAC_C_SIGNED AC_C_VOLATILE ! AC_STRUCT_TIMEZONE PGAC_UNION_SEMUN PGAC_STRUCT_SOCKADDR_UN AC_CHECK_TYPES([struct cmsgcred, struct fcred, struct sockcred], [], [], [#include #include #include ]) if test "$with_zlib" = yes; then # Check that defines z_streamp (versions before about 1.0.4 # did not). While we could work around the lack of z_streamp, it --- 920,950 ---- ## m4_defun([AC_PROG_CC_STDC], []) dnl We don't want that. + AC_C_BIGENDIAN AC_C_CONST AC_C_INLINE AC_C_STRINGIZE PGAC_C_SIGNED AC_C_VOLATILE ! PGAC_C_FUNCNAME_SUPPORT ! PGAC_STRUCT_TIMEZONE PGAC_UNION_SEMUN PGAC_STRUCT_SOCKADDR_UN + PGAC_STRUCT_SOCKADDR_STORAGE + PGAC_STRUCT_SOCKADDR_STORAGE_MEMBERS + PGAC_STRUCT_ADDRINFO AC_CHECK_TYPES([struct cmsgcred, struct fcred, struct sockcred], [], [], [#include + #include #include #include ]) + AC_CHECK_TYPES([struct option], [], [], + [#ifdef HAVE_GETOPT_H + #include + #endif]) + if test "$with_zlib" = yes; then # Check that defines z_streamp (versions before about 1.0.4 # did not). While we could work around the lack of z_streamp, it *************** fi *** 758,773 **** if test "$with_krb5" = yes; then # Check for differences between MIT and Heimdal (KTH) releases ! AC_CHECK_MEMBERS([krb5_ticket.enc_part2], [], ! [AC_CHECK_MEMBERS([krb5_ticket.client], [], [AC_MSG_ERROR([could not determine how to get client name from Kerberos 5 ticket])], [#include ])], [#include ]) ! AC_CHECK_MEMBERS([krb5_error.text.data], [], ! [AC_CHECK_MEMBERS([krb5_error.e_data], [], [AC_MSG_ERROR([could not determine how to extract Kerberos 5 error messages])], [#include ])], [#include ]) fi --- 956,980 ---- if test "$with_krb5" = yes; then # Check for differences between MIT and Heimdal (KTH) releases ! AC_CHECK_MEMBERS(krb5_ticket.enc_part2, [], ! [AC_CHECK_MEMBERS(krb5_ticket.client, [], [AC_MSG_ERROR([could not determine how to get client name from Kerberos 5 ticket])], [#include ])], [#include ]) ! AC_CHECK_MEMBERS(krb5_error.text.data, [], ! [AC_CHECK_MEMBERS(krb5_error.e_data, [], [AC_MSG_ERROR([could not determine how to extract Kerberos 5 error messages])], [#include ])], [#include ]) + + # Win32 requires headers to be loaded for __stdcall, so can't use + # AC_CHECK_FUNCS here. + AC_MSG_CHECKING(for krb5_free_unparsed_name) + AC_TRY_LINK([#include ], + [krb5_free_unparsed_name(NULL,NULL);], + [AC_DEFINE(HAVE_KRB5_FREE_UNPARSED_NAME, 1, [Define to 1 if you have krb5_free_unparsed_name]) + AC_MSG_RESULT(yes)], + [AC_MSG_RESULT(no)]) fi *************** PGAC_VAR_INT_TIMEZONE *** 779,790 **** AC_FUNC_ACCEPT_ARGTYPES PGAC_FUNC_GETTIMEOFDAY_1ARG ! # SunOS doesn't handle negative byte comparisons properly with +/- return ! AC_FUNC_MEMCMP ! ! AC_CHECK_FUNCS([cbrt fcvt getopt_long memmove pstat setproctitle setsid sigprocmask sysconf waitpid dlopen fdatasync]) AC_CHECK_DECLS(fdatasync, [], [], [#include ]) AC_CACHE_CHECK([for PS_STRINGS], [pgac_cv_var_PS_STRINGS], [AC_TRY_LINK( --- 986,1007 ---- AC_FUNC_ACCEPT_ARGTYPES PGAC_FUNC_GETTIMEOFDAY_1ARG ! AC_CHECK_FUNCS([cbrt dlopen fcvt fdatasync getpeereid getrlimit memmove poll pstat readlink setproctitle setsid sigprocmask symlink sysconf towlower utime utimes waitpid wcstombs]) AC_CHECK_DECLS(fdatasync, [], [], [#include ]) + AC_CHECK_DECLS(posix_fadvise, [], [], [#include ]) + AC_CHECK_DECLS([strlcat, strlcpy]) + # This is probably only present on Darwin, but may as well check always + AC_CHECK_DECLS(F_FULLFSYNC, [], [], [#include ]) + + HAVE_IPV6=no + AC_CHECK_TYPE([struct sockaddr_in6], + [AC_DEFINE(HAVE_IPV6, 1, [Define to 1 if you have support for IPv6.]) + HAVE_IPV6=yes], + [], + [$ac_includes_default + #include ]) + AC_SUBST(HAVE_IPV6) AC_CACHE_CHECK([for PS_STRINGS], [pgac_cv_var_PS_STRINGS], [AC_TRY_LINK( *************** PS_STRINGS->ps_argvstr = "foo";], *** 796,813 **** [pgac_cv_var_PS_STRINGS=yes], [pgac_cv_var_PS_STRINGS=no])]) if test "$pgac_cv_var_PS_STRINGS" = yes ; then ! AC_DEFINE([HAVE_PS_STRINGS], [], [Define if the PS_STRINGS thing exists.]) fi # We use our snprintf.c emulation if either snprintf() or vsnprintf() # is missing. Yes, there are machines that have only one. We may # also decide to use snprintf.c if snprintf() is present but does not ! # have working "long long int" support -- see below. ! pgac_need_repl_snprintf=no ! AC_CHECK_FUNCS(snprintf, [], pgac_need_repl_snprintf=yes) ! AC_CHECK_FUNCS(vsnprintf, [], pgac_need_repl_snprintf=yes) # Check whether declares snprintf() and vsnprintf(); if not, --- 1013,1059 ---- [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 to 1 if the PS_STRINGS thing exists.]) fi # We use our snprintf.c emulation if either snprintf() or vsnprintf() # is missing. Yes, there are machines that have only one. We may # also decide to use snprintf.c if snprintf() is present but does not ! # have all the features we need --- see below. ! if test "$PORTNAME" = "win32"; then ! # Win32 gets snprintf.c built unconditionally. ! # ! # To properly translate all NLS languages strings, we must support the ! # *printf() %$ format, which allows *printf() arguments to be selected ! # by position in the translated string. ! # ! # libintl versions < 0.13 use the native *printf() functions, and Win32 ! # *printf() doesn't understand %$, so we must use our /port versions, ! # which do understand %$. libintl versions >= 0.13 include their own ! # *printf versions on Win32. The libintl 0.13 release note text is: ! # ! # C format strings with positions, as they arise when a translator ! # needs to reorder a sentence, are now supported on all platforms. ! # On those few platforms (NetBSD and Woe32) for which the native ! # printf()/fprintf()/... functions don't support such format ! # strings, replacements are provided through . ! # ! # We could use libintl >= 0.13's *printf() if we were sure that we had ! # a litint >= 0.13 at runtime, but seeing that there is no clean way ! # to guarantee that, it is best to just use our own, so we are sure to ! # get %$ support. In include/port.h we disable the *printf() macros ! # that might have been defined by libintl. ! # ! # We do this unconditionally whether NLS is used or not so we are sure ! # that all Win32 libraries and binaries behave the same. ! pgac_need_repl_snprintf=yes ! else ! pgac_need_repl_snprintf=no ! AC_CHECK_FUNCS(snprintf, [], pgac_need_repl_snprintf=yes) ! AC_CHECK_FUNCS(vsnprintf, [], pgac_need_repl_snprintf=yes) ! fi # Check whether declares snprintf() and vsnprintf(); if not, *************** AC_CHECK_FUNCS(vsnprintf, [], pgac_need_ *** 818,841 **** AC_CHECK_DECLS([snprintf, vsnprintf]) ! # do this one the hard way in case isinf() is a macro AC_CACHE_CHECK([for isinf], ac_cv_func_isinf, ! [AC_TRY_LINK( ! [#include ], ! [double x = 0.0; int res = isinf(x);], [ac_cv_func_isinf=yes], [ac_cv_func_isinf=no])]) if test $ac_cv_func_isinf = yes ; then ! AC_DEFINE(HAVE_ISINF, 1, [Define to 1 if you have isinf()]) else AC_LIBOBJ(isinf) # Look for a way to implement a substitute for isinf() AC_CHECK_FUNCS([fpclass fp_class fp_class_d class], [break]) fi ! AC_REPLACE_FUNCS([fseeko gethostname getrusage inet_aton random srandom strcasecmp strdup strerror strtol strtoul]) # BSD/OS & NetBSD use a custom fseeko/ftello built on fsetpos/fgetpos # We override the previous test that said fseeko/ftello didn't exist --- 1064,1113 ---- AC_CHECK_DECLS([snprintf, vsnprintf]) ! dnl Cannot use AC_CHECK_FUNC because isinf may be a macro AC_CACHE_CHECK([for isinf], ac_cv_func_isinf, ! [AC_TRY_LINK([ ! #include ! double glob_double; ], ! [return isinf(glob_double) ? 0 : 1;], [ac_cv_func_isinf=yes], [ac_cv_func_isinf=no])]) if test $ac_cv_func_isinf = yes ; then ! AC_DEFINE(HAVE_ISINF, 1, [Define to 1 if you have isinf().]) else AC_LIBOBJ(isinf) # Look for a way to implement a substitute for isinf() AC_CHECK_FUNCS([fpclass fp_class fp_class_d class], [break]) fi ! # Some versions of libedit contain strlcpy(); so disregard that library while ! # checking for these standard libc functions. ! pgac_save_LIBS="$LIBS" ! LIBS=`echo "$LIBS" | sed -e 's/-ledit//g' -e 's/-lreadline//g'` ! ! AC_REPLACE_FUNCS([crypt fseeko getopt getrusage inet_aton random rint srandom strdup strerror strlcat strlcpy strtol strtoul unsetenv]) ! ! LIBS="$pgac_save_LIBS" ! ! # System's version of getaddrinfo(), if any, may be used only if we found ! # a definition for struct addrinfo; see notes in src/include/getaddrinfo.h. ! # (Note: the AC_REPLACE_FUNCS probe fails on Windows, where the available ! # versions of getaddrinfo don't follow normal C call protocol. This is OK ! # because we want to use our own getaddrinfo.c on Windows anyway.) ! if test x"$ac_cv_type_struct_addrinfo" = xyes ; then ! AC_REPLACE_FUNCS([getaddrinfo]) ! else ! AC_LIBOBJ(getaddrinfo) ! fi ! ! # similarly, use system's getopt_long() only if system provides struct option. ! if test x"$ac_cv_type_struct_option" = xyes ; then ! AC_REPLACE_FUNCS([getopt_long]) ! else ! AC_LIBOBJ(getopt_long) ! fi # BSD/OS & NetBSD use a custom fseeko/ftello built on fsetpos/fgetpos # We override the previous test that said fseeko/ftello didn't exist *************** case $host_os in bsdi*|netbsd*) *** 844,897 **** ac_cv_func_fseeko=yes esac ! # Solaris has a very slow qsort in certain cases. ! case $host_os in ! solaris*) AC_LIBOBJ(qsort) ;; ! esac ! ! # 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 test -r /lib/pa1.1/libm.a ; then ! HPUXMATHLIB="-L /lib/pa1.1 -lm" ! fi ;; ! esac ! AC_SUBST(HPUXMATHLIB) ! ! AC_CHECK_FUNCS(rint, [], ! [AC_CHECK_LIB(m, rint, AC_DEFINE(HAVE_RINT), , $HPUXMATHLIB)]) ! if test "$with_readline" = yes; then PGAC_VAR_RL_COMPLETION_APPEND_CHARACTER AC_CHECK_FUNCS([rl_completion_matches rl_filename_completion_function]) fi - dnl Cannot use AC_CHECK_FUNC because finite may be a macro - AC_MSG_CHECKING(for finite) - AC_TRY_LINK([#include ], - [int dummy=finite(1.0);], - [AC_DEFINE(HAVE_FINITE, 1, [Set to 1 if you have finite()]) - AC_MSG_RESULT(yes)], - [AC_MSG_RESULT(no)]) - dnl Cannot use AC_CHECK_FUNC because sigsetjmp may be a macro dnl (especially on GNU libc) ! dnl See also comments in pg_config.h. AC_MSG_CHECKING(for sigsetjmp) AC_TRY_LINK([#include ], [sigjmp_buf x; sigsetjmp(x, 1);], ! [AC_DEFINE(HAVE_SIGSETJMP, 1, [Set to 1 if you have sigsetjmp()]) AC_MSG_RESULT(yes)], [AC_MSG_RESULT(no)]) ! AC_CHECK_FUNC(syslog, ! [AC_CHECK_HEADER(syslog.h, ! [AC_DEFINE(HAVE_SYSLOG, 1, [])], ! [])]) AC_CACHE_CHECK([for optreset], pgac_cv_var_int_optreset, [AC_TRY_LINK([#include ], --- 1116,1154 ---- ac_cv_func_fseeko=yes esac ! # Win32 support ! if test "$PORTNAME" = "win32"; then ! AC_LIBOBJ(gettimeofday) ! AC_LIBOBJ(kill) ! AC_LIBOBJ(open) ! AC_LIBOBJ(rand) ! AC_LIBOBJ(win32error) ! AC_DEFINE([HAVE_SYMLINK], 1, ! [Define to 1 if you have the `symlink' function.]) ! fi if test "$with_readline" = yes; then PGAC_VAR_RL_COMPLETION_APPEND_CHARACTER AC_CHECK_FUNCS([rl_completion_matches rl_filename_completion_function]) + AC_CHECK_FUNCS([replace_history_entry]) fi dnl Cannot use AC_CHECK_FUNC because sigsetjmp may be a macro dnl (especially on GNU libc) ! dnl See also comments in c.h. AC_MSG_CHECKING(for sigsetjmp) AC_TRY_LINK([#include ], [sigjmp_buf x; sigsetjmp(x, 1);], ! [AC_DEFINE(HAVE_SIGSETJMP, 1, [Define to 1 if you have sigsetjmp().]) AC_MSG_RESULT(yes)], [AC_MSG_RESULT(no)]) ! AC_DECL_SYS_SIGLIST ! ! AC_CHECK_FUNC(syslog, ! [AC_CHECK_HEADER(syslog.h, ! [AC_DEFINE(HAVE_SYSLOG, 1, [Define to 1 if you have the syslog interface.])])]) AC_CACHE_CHECK([for optreset], pgac_cv_var_int_optreset, [AC_TRY_LINK([#include ], *************** AC_CACHE_CHECK([for optreset], pgac_cv_v *** 899,905 **** [pgac_cv_var_int_optreset=yes], [pgac_cv_var_int_optreset=no])]) if test x"$pgac_cv_var_int_optreset" = x"yes"; then ! AC_DEFINE(HAVE_INT_OPTRESET, 1, [Define to 1 if you have the global variable 'int optreset']) fi AC_CHECK_FUNCS([strtoll strtoq], [break]) --- 1156,1162 ---- [pgac_cv_var_int_optreset=yes], [pgac_cv_var_int_optreset=no])]) if test x"$pgac_cv_var_int_optreset" = x"yes"; then ! AC_DEFINE(HAVE_INT_OPTRESET, 1, [Define to 1 if you have the global variable 'int optreset'.]) fi AC_CHECK_FUNCS([strtoll strtoq], [break]) *************** AC_CHECK_FUNCS([strtoull strtouq], [brea *** 908,917 **** # Check for one of atexit() or on_exit() AC_CHECK_FUNCS(atexit, [], [AC_CHECK_FUNCS(on_exit, [], ! [AC_MSG_ERROR([neither atexit() nor on_exit() found])])]) AC_FUNC_FSEEKO # 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. --- 1165,1259 ---- # Check for one of atexit() or on_exit() AC_CHECK_FUNCS(atexit, [], [AC_CHECK_FUNCS(on_exit, [], ! [AC_MSG_ERROR([neither atexit() nor on_exit() found])])]) AC_FUNC_FSEEKO + # + # Pthreads + # + # For each platform, we need to know about any special compile and link + # libraries, and whether the normal C function names are thread-safe. + # See the comment at the top of src/port/thread.c for more information. + # WIN32 doesn't need the pthread tests; it always uses threads + if test "$enable_thread_safety" = yes -a "$PORTNAME" != "win32"; then + ACX_PTHREAD # set thread flags + + # Some platforms use these, so just defineed them. They can't hurt if they + # are not supported. + PTHREAD_CFLAGS="$PTHREAD_CFLAGS -D_REENTRANT -D_THREAD_SAFE -D_POSIX_PTHREAD_SEMANTICS" + + + # At this point, we don't want to muck with the compiler name for threading. + # Let's see who fails, perhaps AIX. 2004-04-23 + if test "$PTHREAD_CC" != "$CC"; then + AC_MSG_ERROR([ + PostgreSQL does not support platforms that require a special compiler + for thread safety.]) + fi + + if test "$THREAD_SUPPORT" = no; then + AC_MSG_ERROR([cannot enable threads on this platform + This platform is known to not support thread-safe programs. For details, + compile and run src/bin/pg_thread_test.]) + fi + + # Check for *_r functions + _CFLAGS="$CFLAGS" + _LIBS="$LIBS" + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + LIBS="$LIBS $PTHREAD_LIBS" + + if test "$PORTNAME" != "win32"; then + AC_CHECK_HEADER(pthread.h, [], [AC_MSG_ERROR([pthread.h not found, required for --enable-thread-safety])]) + fi + + AC_CHECK_FUNCS([strerror_r getpwuid_r gethostbyname_r]) + + # Do test here with the proper thread flags + PGAC_FUNC_GETPWUID_R_5ARG + PGAC_FUNC_STRERROR_R_INT + + CFLAGS="$_CFLAGS" + LIBS="$_LIBS" + + else + # do not use values from template file + PTHREAD_CFLAGS= + PTHREAD_LIBS= + fi + + AC_SUBST(PTHREAD_CFLAGS) + AC_SUBST(PTHREAD_LIBS) + + + # We can test for libldap_r only after we know PTHREAD_LIBS + if test "$with_ldap" = yes ; then + _LIBS="$LIBS" + if test "$PORTNAME" != "win32"; then + AC_CHECK_LIB(ldap, ldap_bind, [], + [AC_MSG_ERROR([library 'ldap' is required for LDAP])], + [$EXTRA_LDAP_LIBS]) + LDAP_LIBS_BE="-lldap $EXTRA_LDAP_LIBS" + if test "$enable_thread_safety" = yes; then + # on some platforms ldap_r fails to link without PTHREAD_LIBS + AC_CHECK_LIB(ldap_r, ldap_simple_bind, [], + [AC_MSG_ERROR([library 'ldap_r' is required for LDAP])], + [$PTHREAD_CFLAGS $PTHREAD_LIBS $EXTRA_LDAP_LIBS]) + LDAP_LIBS_FE="-lldap_r $EXTRA_LDAP_LIBS" + else + LDAP_LIBS_FE="-lldap $EXTRA_LDAP_LIBS" + fi + else + AC_CHECK_LIB(wldap32, ldap_bind, [], [AC_MSG_ERROR([library 'wldap32' is required for LDAP])]) + LDAP_LIBS_FE="-lwldap32" + LDAP_LIBS_BE="-lwldap32" + fi + LIBS="$_LIBS" + fi + AC_SUBST(LDAP_LIBS_FE) + AC_SUBST(LDAP_LIBS_BE) + # 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. *************** AC_TRY_RUN([int main() { return 0; }], *** 922,932 **** [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: --- 1264,1287 ---- [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])]) + # -------------------- + # Run tests below here + # -------------------- + + # Force use of our snprintf if system's doesn't do arg control + # See comment above at snprintf test for details. + if test "$enable_nls" = yes -a "$pgac_need_repl_snprintf" = no; then + PGAC_FUNC_PRINTF_ARG_CONTROL + if test $pgac_cv_printf_arg_control != yes ; then + pgac_need_repl_snprintf=yes + fi + fi + dnl Check to see if we have a working 64-bit integer type. dnl This breaks down into two steps: *************** if test x"$HAVE_LONG_LONG_INT_64" = xyes *** 956,1066 **** long long int foo = INT64CONST(0x1234567890123456); ], [], ! [AC_DEFINE(HAVE_LL_CONSTANTS, 1, [Define if you have LL constants])], []) fi ! dnl If we found "long int" is 64 bits, assume snprintf handles it. ! dnl If we found we need to use "long long int", better check. ! dnl We cope with snprintfs that use either %lld or %qd as the format. ! dnl If neither works, fall back to our own snprintf emulation (which we ! dnl know uses %lld). ! if test x"$HAVE_LONG_LONG_INT_64" = xyes ; then if test $pgac_need_repl_snprintf = no; then ! AC_MSG_CHECKING(whether snprintf handles 'long long int' as %lld) ! AC_TRY_RUN([#include ! 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 ! 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 ! pgac_need_repl_snprintf=yes ! INT64_FORMAT='"%lld"' ! ], ! [ AC_MSG_RESULT([cannot test (not on host machine)]) ! # Force usage of our own snprintf, since we cannot test foreign snprintf ! pgac_need_repl_snprintf=yes ! INT64_FORMAT='"%lld"' ! ]) ], ! [ AC_MSG_RESULT([cannot test (not on host machine)]) ! # Force usage of our own snprintf, since we cannot test foreign snprintf ! pgac_need_repl_snprintf=yes ! INT64_FORMAT='"%lld"' ! ]) else ! # here if we previously decided we needed to use our own snprintf ! INT64_FORMAT='"%lld"' fi else # Here if we are not using 'long long int' at all INT64_FORMAT='"%ld"' fi AC_DEFINE_UNQUOTED(INT64_FORMAT, $INT64_FORMAT, ! [Define this as the appropriate snprintf format for 64-bit ints, if any]) if test $pgac_need_repl_snprintf = yes; then AC_LIBOBJ(snprintf) fi ! dnl Need a #define for the size of Datum (unsigned long) ! AC_CHECK_SIZEOF([unsigned long]) ! AC_DEFINE_UNQUOTED(SIZEOF_DATUM, $ac_cv_sizeof_unsigned_long, [sizeof(Datum) -- don't change]) # Determine memory alignment requirements for the basic C data types. --- 1311,1364 ---- long long int foo = INT64CONST(0x1234567890123456); ], [], ! [AC_DEFINE(HAVE_LL_CONSTANTS, 1, [Define to 1 if constants of type 'long long int' should have the suffix LL.])], []) fi ! # If we found "long int" is 64 bits, assume snprintf handles it. If ! # we found we need to use "long long int", better check. We cope with ! # snprintfs that use %lld, %qd, or %I64d as the format. If none of these ! # work, fall back to our own snprintf emulation (which we know uses %lld). ! if test "$HAVE_LONG_LONG_INT_64" = yes ; then if test $pgac_need_repl_snprintf = no; then ! PGAC_FUNC_SNPRINTF_LONG_LONG_INT_FORMAT ! if test "$LONG_LONG_INT_FORMAT" = ""; then ! # Force usage of our own snprintf, since system snprintf is broken ! pgac_need_repl_snprintf=yes ! LONG_LONG_INT_FORMAT='%lld' ! fi else ! # Here if we previously decided we needed to use our own snprintf ! LONG_LONG_INT_FORMAT='%lld' fi + LONG_LONG_UINT_FORMAT=`echo "$LONG_LONG_INT_FORMAT" | sed 's/d$/u/'` + INT64_FORMAT="\"$LONG_LONG_INT_FORMAT\"" + UINT64_FORMAT="\"$LONG_LONG_UINT_FORMAT\"" else # Here if we are not using 'long long int' at all INT64_FORMAT='"%ld"' + UINT64_FORMAT='"%lu"' fi AC_DEFINE_UNQUOTED(INT64_FORMAT, $INT64_FORMAT, ! [Define to the appropriate snprintf format for 64-bit ints, if any.]) ! ! AC_DEFINE_UNQUOTED(UINT64_FORMAT, $UINT64_FORMAT, ! [Define to the appropriate snprintf format for unsigned 64-bit ints, if any.]) + # Now we have checked all the reasons to replace snprintf if test $pgac_need_repl_snprintf = yes; then + AC_DEFINE(USE_REPL_SNPRINTF, 1, [Use replacement snprintf() functions.]) AC_LIBOBJ(snprintf) fi ! # Need a #define for the size of Datum (unsigned long) AC_CHECK_SIZEOF([unsigned long]) ! ! # And one for the size of size_t (enables tweaks for > 32bit address space) ! AC_CHECK_SIZEOF([size_t]) # Determine memory alignment requirements for the basic C data types. *************** fi *** 1083,1089 **** if test x"$HAVE_LONG_LONG_INT_64" = xyes && test $MAX_ALIGNOF -lt $pgac_cv_alignof_long_long_int ; then MAX_ALIGNOF="$pgac_cv_alignof_long_long_int" fi ! AC_DEFINE_UNQUOTED(MAXIMUM_ALIGNOF, $MAX_ALIGNOF, [Define as the maximum alignment requirement of any type]) # Some platforms predefine the types int8, int16, etc. Only check --- 1381,1387 ---- if test x"$HAVE_LONG_LONG_INT_64" = xyes && test $MAX_ALIGNOF -lt $pgac_cv_alignof_long_long_int ; then MAX_ALIGNOF="$pgac_cv_alignof_long_long_int" fi ! AC_DEFINE_UNQUOTED(MAXIMUM_ALIGNOF, $MAX_ALIGNOF, [Define as the maximum alignment requirement of any C data type.]) # Some platforms predefine the types int8, int16, etc. Only check *************** AC_CHECK_TYPES([int8, uint8, int64, uint *** 1096,1128 **** # We also check for sig_atomic_t, which *should* be defined per ANSI # C, but is missing on some old platforms. ! AC_CHECK_TYPES([sig_atomic_t], [], [], [#include ]) PGAC_FUNC_POSIX_SIGNALS if test $ac_cv_func_fseeko = yes; then AC_SYS_LARGEFILE fi # Select semaphore implementation type. ! if test x"$USE_NAMED_POSIX_SEMAPHORES" = x"1" ; then ! AC_DEFINE(USE_NAMED_POSIX_SEMAPHORES, 1, [Define to select named POSIX semaphores]) ! SEMA_IMPLEMENTATION="src/backend/port/posix_sema.c" ! else ! if test x"$USE_UNNAMED_POSIX_SEMAPHORES" = x"1" ; then ! AC_DEFINE(USE_UNNAMED_POSIX_SEMAPHORES, 1, [Define to select unnamed POSIX semaphores]) SEMA_IMPLEMENTATION="src/backend/port/posix_sema.c" else ! AC_DEFINE(USE_SYSV_SEMAPHORES, 1, [Define to select SysV-style semaphores]) ! SEMA_IMPLEMENTATION="src/backend/port/sysv_sema.c" fi fi # Select shared-memory implementation type. ! AC_DEFINE(USE_SYSV_SHARED_MEMORY, 1, [Define to select SysV-style shared memory]) ! SHMEM_IMPLEMENTATION="src/backend/port/sysv_shmem.c" if test "$enable_nls" = yes ; then --- 1394,1454 ---- # We also check for sig_atomic_t, which *should* be defined per ANSI # C, but is missing on some old platforms. ! AC_CHECK_TYPES(sig_atomic_t, [], [], [#include ]) + if test "$PORTNAME" != "win32" + then PGAC_FUNC_POSIX_SIGNALS + if test "$pgac_cv_func_posix_signals" != yes -a "$enable_thread_safety" = yes; then + AC_MSG_ERROR([ + Thread-safety requires POSIX signals, which are not supported by this + operating system.]) + fi + fi + if test $ac_cv_func_fseeko = yes; then AC_SYS_LARGEFILE fi + # SunOS doesn't handle negative byte comparisons properly with +/- return + AC_FUNC_MEMCMP + # Select semaphore implementation type. ! if test "$PORTNAME" != "win32"; then ! if test x"$USE_NAMED_POSIX_SEMAPHORES" = x"1" ; then ! AC_DEFINE(USE_NAMED_POSIX_SEMAPHORES, 1, [Define to select named POSIX semaphores.]) SEMA_IMPLEMENTATION="src/backend/port/posix_sema.c" else ! if test x"$USE_UNNAMED_POSIX_SEMAPHORES" = x"1" ; then ! AC_DEFINE(USE_UNNAMED_POSIX_SEMAPHORES, 1, [Define to select unnamed POSIX semaphores.]) ! SEMA_IMPLEMENTATION="src/backend/port/posix_sema.c" ! else ! AC_DEFINE(USE_SYSV_SEMAPHORES, 1, [Define to select SysV-style semaphores.]) ! SEMA_IMPLEMENTATION="src/backend/port/sysv_sema.c" ! fi fi + else + AC_DEFINE(USE_WIN32_SEMAPHORES, 1, [Define to select Win32-style semaphores.]) + SEMA_IMPLEMENTATION="src/backend/port/win32_sema.c" fi # Select shared-memory implementation type. ! if test "$PORTNAME" != "win32"; then ! AC_DEFINE(USE_SYSV_SHARED_MEMORY, 1, [Define to select SysV-style shared memory.]) ! SHMEM_IMPLEMENTATION="src/backend/port/sysv_shmem.c" ! else ! AC_DEFINE(USE_WIN32_SHARED_MEMORY, 1, [Define to select Win32-style shared memory.]) ! SHMEM_IMPLEMENTATION="src/backend/port/win32_shmem.c" ! fi ! ! # If not set in template file, set bytes to use libc memset() ! if test x"$MEMSET_LOOP_LIMIT" = x"" ; then ! MEMSET_LOOP_LIMIT=1024 ! fi ! AC_DEFINE_UNQUOTED(MEMSET_LOOP_LIMIT, ${MEMSET_LOOP_LIMIT}, [Define bytes to use libc memset().]) if test "$enable_nls" = yes ; then *************** fi *** 1133,1169 **** if test "$with_tcl" = yes; then PGAC_PATH_TCLCONFIGSH([$with_tclconfig]) PGAC_EVAL_TCLCONFIGSH([$TCL_CONFIG_SH], ! [TCL_LIB_FILE,TCL_LIBS,TCL_LIB_SPEC,TCL_SHARED_BUILD]) AC_SUBST(TCL_SHLIB_LD_LIBS)dnl don't want to double-evaluate that one fi - # Check for Tk configuration script tkConfig.sh - if test "$with_tk" = yes; then - PGAC_PATH_TKCONFIGSH([$with_tkconfig $with_tclconfig]) - PGAC_EVAL_TCLCONFIGSH([$TK_CONFIG_SH], [TK_LIBS,TK_LIB_SPEC,TK_XINCLUDES]) - fi - - # # Check for DocBook and tools # PGAC_PROG_NSGMLS PGAC_PROG_JADE ! PGAC_CHECK_DOCBOOK([3.1]) PGAC_PATH_DOCBOOK_STYLESHEETS PGAC_PATH_COLLATEINDEX AC_CHECK_PROGS(SGMLSPL, sgmlspl) # prepare build tree if outside source tree # Note 1: test -ef might not exist, but it's more reliable than `pwd`. # Note 2: /bin/pwd might be better than shell's built-in at getting # a symlink-free name. ! if test "$no_create" != yes; then ! if ( test "$srcdir" -ef . ) >/dev/null 2>&1 || test "`cd $srcdir && /bin/pwd`" = "`/bin/pwd`"; then ! : ! else ! AC_SUBST(vpath_build, yes) _AS_ECHO_N([preparing build tree... ]) pgac_abs_top_srcdir=`cd "$srcdir" && pwd` $SHELL "$ac_aux_dir/prep_buildtree" "$pgac_abs_top_srcdir" "." \ --- 1459,1540 ---- if test "$with_tcl" = yes; then PGAC_PATH_TCLCONFIGSH([$with_tclconfig]) PGAC_EVAL_TCLCONFIGSH([$TCL_CONFIG_SH], ! [TCL_INCLUDE_SPEC,TCL_LIB_FILE,TCL_LIBS,TCL_LIB_SPEC,TCL_SHARED_BUILD]) AC_SUBST(TCL_SHLIB_LD_LIBS)dnl don't want to double-evaluate that one + # now that we have TCL_INCLUDE_SPEC, we can check for + ac_save_CPPFLAGS=$CPPFLAGS + CPPFLAGS="$TCL_INCLUDE_SPEC $CPPFLAGS" + AC_CHECK_HEADER(tcl.h, [], [AC_MSG_ERROR([header file is required for Tcl])]) + CPPFLAGS=$ac_save_CPPFLAGS fi # # Check for DocBook and tools # PGAC_PROG_NSGMLS PGAC_PROG_JADE ! PGAC_CHECK_DOCBOOK(4.2) PGAC_PATH_DOCBOOK_STYLESHEETS PGAC_PATH_COLLATEINDEX AC_CHECK_PROGS(SGMLSPL, sgmlspl) + # Thread testing + + # We have to run the thread test near the end so we have all our symbols + # defined. Cross compiling throws a warning. + # + if test "$enable_thread_safety_force" = yes; then + if test "$PORTNAME" != "win32" + then + AC_MSG_WARN([ + *** Skipping thread test program. --enable-thread-safety-force was used. + *** Run the program in src/test/thread on the your machine and add proper + *** locking function calls to your applications to guarantee thread safety. + ]) + else + AC_MSG_WARN([*** skipping thread test on Win32]) + fi + elif test "$enable_thread_safety" = yes; then + if test "$PORTNAME" != "win32" + then + AC_MSG_CHECKING([thread safety of required library functions]) + + _CFLAGS="$CFLAGS" + _LIBS="$LIBS" + CFLAGS="$CFLAGS $PTHREAD_CFLAGS -DIN_CONFIGURE" + LIBS="$LIBS $PTHREAD_LIBS" + AC_TRY_RUN([#include "$srcdir/src/test/thread/thread_test.c"], + [AC_MSG_RESULT(yes)], + [AC_MSG_RESULT(no) + AC_MSG_ERROR([thread test program failed + This platform is not thread-safe. Check the file 'config.log'for the + exact reason. + + You can use the configure option --enable-thread-safety-force to force + threads to be enabled. But you must then run the program in + src/test/thread and add locking function calls to your applications to + guarantee thread safety.])], + [AC_MSG_RESULT(maybe) + AC_MSG_WARN([ + *** Skipping thread test program because of cross-compile build. + *** Run the program in src/test/thread on the target machine. + ])]) + CFLAGS="$_CFLAGS" + LIBS="$_LIBS" + else + AC_MSG_WARN([*** skipping thread test on Win32]) + fi + fi # prepare build tree if outside source tree # Note 1: test -ef might not exist, but it's more reliable than `pwd`. # Note 2: /bin/pwd might be better than shell's built-in at getting # a symlink-free name. ! if ( test "$srcdir" -ef . ) >/dev/null 2>&1 || test "`cd $srcdir && /bin/pwd`" = "`/bin/pwd`"; then ! vpath_build=no ! else ! vpath_build=yes ! if test "$no_create" != yes; then _AS_ECHO_N([preparing build tree... ]) pgac_abs_top_srcdir=`cd "$srcdir" && pwd` $SHELL "$ac_aux_dir/prep_buildtree" "$pgac_abs_top_srcdir" "." \ *************** if test "$no_create" != yes; then *** 1171,1176 **** --- 1542,1548 ---- AC_MSG_RESULT(done) fi fi + AC_SUBST(vpath_build) AC_CONFIG_FILES([GNUmakefile src/Makefile.global]) *************** AC_CONFIG_LINKS([ *** 1184,1193 **** --- 1556,1582 ---- src/Makefile.port:src/makefiles/Makefile.${template} ]) + if test "$PORTNAME" = "win32"; then + AC_CONFIG_COMMANDS([check_win32_symlinks],[ + # Links sometimes fail undetected on Mingw - + # so here we detect it and warn the user + for FILE in $CONFIG_LINKS + do + # test -e works for symlinks in the MinGW console + test -e `expr "$FILE" : '\([[^:]]*\)'` || AC_MSG_WARN([*** link for $FILE -- please fix by hand]) + done + ]) + fi + AC_CONFIG_HEADERS([src/include/pg_config.h], [ # Update timestamp for pg_config.h (see Makefile.global) echo >src/include/stamp-h ]) + AC_CONFIG_HEADERS([src/interfaces/ecpg/include/ecpg_config.h]) + AC_OUTPUT + + # Warn about unknown options + PGAC_ARG_CHECK