X-Git-Url: https://granicus.if.org/sourcecode?a=blobdiff_plain;f=configure.in;h=cb01da4bcb371bc7d70608586d5dd1b98b2deb9b;hb=b8fab2411dbb08d918d5998ee78325d2a0549c7f;hp=10a87348b4d23f7ab37a5728fd99defc24a117d2;hpb=e435bddb9c571717c5e87416095871b3a52fb6fc;p=postgresql diff --git a/configure.in b/configure.in index 10a87348b4..cb01da4bcb 100644 --- a/configure.in +++ b/configure.in @@ -1,5 +1,5 @@ dnl Process this file with autoconf to produce a configure script. -dnl $PostgreSQL: pgsql/configure.in,v 1.526 2007/09/12 14:28:55 tgl Exp $ +dnl $PostgreSQL: pgsql/configure.in,v 1.571 2008/10/30 12:28:51 petere Exp $ dnl dnl Developers, please strive to achieve this order: dnl @@ -17,10 +17,13 @@ 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_INIT([PostgreSQL], [8.4devel], [pgsql-bugs@postgresql.org]) -AC_PREREQ(2.59) -AC_COPYRIGHT([Copyright (c) 1996-2007, PostgreSQL Global Development Group]) +m4_if(m4_defn([m4_PACKAGE_VERSION]), [2.61], [], [m4_fatal([Autoconf version 2.61 is required. +Untested combinations of 'autoconf' and PostgreSQL versions are not +recommended. You can remove the check from 'configure.in' but it is then +your responsibility whether the result works or not.])]) +AC_COPYRIGHT([Copyright (c) 1996-2008, PostgreSQL Global Development Group]) AC_CONFIG_SRCDIR([src/backend/access/common/heaptuple.c]) AC_CONFIG_AUX_DIR(config) AC_PREFIX_DEFAULT(/usr/local/pgsql) @@ -33,7 +36,7 @@ AC_CANONICAL_HOST template= AC_MSG_CHECKING([which template to use]) -PGAC_ARG_REQ(with, template, [], +PGAC_ARG_REQ(with, template, [NAME], [override operating system template], [ case $withval in list) echo; ls "$srcdir/src/template"; exit;; @@ -108,39 +111,27 @@ tas_file=dummy.s ## 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, includes, [ --with-includes=DIRS look for additional header files in DIRS]) +PGAC_ARG_REQ(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], +PGAC_ARG_REQ(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], +PGAC_ARG_REQ(with, libs, [DIRS], [alternative spelling of --with-libraries], [LIBRARY_DIRS=$withval]) # -# 64-bit integer date/time storage (--enable-integer-datetimes) +# 64-bit integer date/time storage: enabled by default. # 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], +PGAC_ARG_BOOL(enable, integer-datetimes, yes, [disable 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]) @@ -151,7 +142,7 @@ AC_MSG_RESULT([$enable_integer_datetimes]) # AC_MSG_CHECKING([whether NLS is wanted]) PGAC_ARG_OPTARG(enable, nls, - [[ --enable-nls[=LANGUAGES] enable Native Language Support]], + [LANGUAGES], [enable Native Language Support], [], [WANTED_LANGUAGES=$enableval], [AC_DEFINE(ENABLE_NLS, 1, @@ -164,7 +155,7 @@ AC_SUBST(WANTED_LANGUAGES) # Default port number (--with-pgport), default 5432 # AC_MSG_CHECKING([for default port number]) -PGAC_ARG_REQ(with, pgport, [ --with-pgport=PORTNUM change default port number [[5432]]], +PGAC_ARG_REQ(with, pgport, [PORTNUM], [set default port number [5432]], [default_port=$withval], [default_port=5432]) AC_MSG_RESULT([$default_port]) @@ -182,41 +173,60 @@ AC_SUBST(default_port) # Option to disable shared libraries # PGAC_ARG_BOOL(enable, shared, yes, - [ --disable-shared do not build shared libraries]) + [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]) + [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]) + [do not use spinlocks]) # # --enable-debug adds -g to compiler flags # PGAC_ARG_BOOL(enable, debug, no, - [ --enable-debug build with debugging symbols (-g)]) + [build with debugging symbols (-g)]) AC_SUBST(enable_debug) # # --enable-profiling enables gcc profiling # PGAC_ARG_BOOL(enable, profiling, no, - [ --enable-profiling build with profiling enabled ]) + [build with profiling enabled ]) AC_SUBST(enable_profiling) +# +# --enable-coverage enables generation of code coverage metrics with gcov +# +PGAC_ARG_BOOL(enable, coverage, no, + [build with coverage testing instrumentation], +[AC_CHECK_PROGS(GCOV, gcov) +if test -z "$GCOV"; then + AC_MSG_ERROR([gcov not found]) +fi +AC_CHECK_PROGS(LCOV, lcov) +if test -z "$LCOV"; then + AC_MSG_ERROR([lcov not found]) +fi +AC_CHECK_PROGS(GENHTML, genhtml) +if test -z "$GENHTML"; then + AC_MSG_ERROR([genhtml not found]) +fi]) +AC_SUBST(enable_coverage) + # # DTrace # PGAC_ARG_BOOL(enable, dtrace, no, - [ --enable-dtrace build with DTrace support], + [build with DTrace support], [AC_DEFINE([ENABLE_DTRACE], 1, [Define to 1 to enable DTrace support. (--enable-dtrace)]) AC_CHECK_PROGS(DTRACE, dtrace) @@ -226,6 +236,125 @@ fi AC_SUBST(DTRACEFLAGS)]) AC_SUBST(enable_dtrace) +# +# Block size +# +AC_MSG_CHECKING([for block size]) +PGAC_ARG_REQ(with, blocksize, [BLOCKSIZE], [set table block size in kB [8]], + [blocksize=$withval], + [blocksize=8]) +case ${blocksize} in + 1) BLCKSZ=1024;; + 2) BLCKSZ=2048;; + 4) BLCKSZ=4096;; + 8) BLCKSZ=8192;; + 16) BLCKSZ=16384;; + 32) BLCKSZ=32768;; + *) AC_MSG_ERROR([Invalid block size. Allowed values are 1,2,4,8,16,32.]) +esac +AC_MSG_RESULT([${blocksize}kB]) + +AC_DEFINE_UNQUOTED([BLCKSZ], ${BLCKSZ}, [ + Size of a disk block --- this also limits the size of a tuple. You + can set it bigger if you need bigger tuples (although TOAST should + reduce the need to have large tuples, since fields can be spread + across multiple tuples). + + BLCKSZ must be a power of 2. The maximum possible value of BLCKSZ + is currently 2^15 (32768). This is determined by the 15-bit widths + of the lp_off and lp_len fields in ItemIdData (see + include/storage/itemid.h). + + Changing BLCKSZ requires an initdb. +]) + +# +# Relation segment size +# +AC_MSG_CHECKING([for segment size]) +PGAC_ARG_REQ(with, segsize, [SEGSIZE], [set table segment size in GB [1]], + [segsize=$withval], + [segsize=1]) +# this expression is set up to avoid unnecessary integer overflow +# blocksize is already guaranteed to be a factor of 1024 +RELSEG_SIZE=`expr '(' 1024 / ${blocksize} ')' '*' ${segsize} '*' 1024` +test $? -eq 0 || exit 1 +AC_MSG_RESULT([${segsize}GB]) + +AC_DEFINE_UNQUOTED([RELSEG_SIZE], ${RELSEG_SIZE}, [ + RELSEG_SIZE is the maximum number of blocks allowed in one disk file. + Thus, the maximum size of a single file is RELSEG_SIZE * BLCKSZ; + relations bigger than that are divided into multiple files. + + RELSEG_SIZE * BLCKSZ must be less than your OS' limit on file size. + This is often 2 GB or 4GB in a 32-bit operating system, unless you + have large file support enabled. By default, we make the limit 1 GB + to avoid any possible integer-overflow problems within the OS. + A limit smaller than necessary only means we divide a large + relation into more chunks than necessary, so it seems best to err + in the direction of a small limit. + + A power-of-2 value is recommended to save a few cycles in md.c, + but is not absolutely required. + + Changing RELSEG_SIZE requires an initdb. +]) + +# +# WAL block size +# +AC_MSG_CHECKING([for WAL block size]) +PGAC_ARG_REQ(with, wal-blocksize, [BLOCKSIZE], [set WAL block size in kB [8]], + [wal_blocksize=$withval], + [wal_blocksize=8]) +case ${wal_blocksize} in + 1) XLOG_BLCKSZ=1024;; + 2) XLOG_BLCKSZ=2048;; + 4) XLOG_BLCKSZ=4096;; + 8) XLOG_BLCKSZ=8192;; + 16) XLOG_BLCKSZ=16384;; + 32) XLOG_BLCKSZ=32768;; + 64) XLOG_BLCKSZ=65536;; + *) AC_MSG_ERROR([Invalid WAL block size. Allowed values are 1,2,4,8,16,32,64.]) +esac +AC_MSG_RESULT([${wal_blocksize}kB]) + +AC_DEFINE_UNQUOTED([XLOG_BLCKSZ], ${XLOG_BLCKSZ}, [ + Size of a WAL file block. This need have no particular relation to BLCKSZ. + XLOG_BLCKSZ must be a power of 2, and if your system supports O_DIRECT I/O, + XLOG_BLCKSZ must be a multiple of the alignment requirement for direct-I/O + buffers, else direct I/O may fail. + + Changing XLOG_BLCKSZ requires an initdb. +]) + +# +# WAL segment size +# +AC_MSG_CHECKING([for WAL segment size]) +PGAC_ARG_REQ(with, wal-segsize, [SEGSIZE], [set WAL segment size in MB [16]], + [wal_segsize=$withval], + [wal_segsize=16]) +case ${wal_segsize} in + 1) ;; + 2) ;; + 4) ;; + 8) ;; + 16) ;; + 32) ;; + 64) ;; + *) AC_MSG_ERROR([Invalid WAL segment size. Allowed values are 1,2,4,8,16,32,64.]) +esac +AC_MSG_RESULT([${wal_segsize}MB]) + +AC_DEFINE_UNQUOTED([XLOG_SEG_SIZE], [(${wal_segsize} * 1024 * 1024)], [ + XLOG_SEG_SIZE is the size of a single WAL file. This must be a power of 2 + and larger than XLOG_BLCKSZ (preferably, a great deal larger than + XLOG_BLCKSZ). + + Changing XLOG_SEG_SIZE requires an initdb. +]) + # # C compiler # @@ -233,7 +362,7 @@ AC_SUBST(enable_dtrace) # 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]) +PGAC_ARG_REQ(with, CC, [CMD], [set compiler (deprecated)], [CC=$with_CC]) case $template in aix) pgac_cc_list="gcc xlc";; @@ -250,6 +379,14 @@ AC_TRY_COMPILE([], [@%:@ifndef __INTEL_COMPILER choke me @%:@endif], [ICC=[yes]], [ICC=[no]]) +# Check if it's Sun Studio compiler. We assume that +# __SUNPRO_C will be defined for Sun Studio compilers +AC_TRY_COMPILE([], [@%:@ifndef __SUNPRO_C +choke me +@%:@endif], [SUN_STUDIO_CC=yes], [SUN_STUDIO_CC=no]) + +AC_SUBST(SUN_STUDIO_CC) + unset CFLAGS # @@ -260,13 +397,16 @@ unset CFLAGS # 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 coverage was enabled, don't set anything. # else: If the compiler is GCC, then we use -O2. -# else: If the compiler is something else, then we use -0. +# else: If the compiler is something else, then we use -O. 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 "$enable_coverage" = yes; then + : # no optimization by default elif test "$GCC" = yes; then CFLAGS="-O2" else @@ -281,12 +421,14 @@ fi # ICC pretends to be GCC but it's lying; it doesn't support these options. if test "$GCC" = yes -a "$ICC" = no; then - CFLAGS="$CFLAGS -Wall -Wmissing-prototypes -Wpointer-arith -Winline" + CFLAGS="$CFLAGS -Wall -Wmissing-prototypes -Wpointer-arith" # These work in some but not all gcc versions PGAC_PROG_CC_CFLAGS_OPT([-Wdeclaration-after-statement]) PGAC_PROG_CC_CFLAGS_OPT([-Wendif-labels]) # Disable strict-aliasing rules; needed for gcc 3.3+ PGAC_PROG_CC_CFLAGS_OPT([-fno-strict-aliasing]) + # Disable optimizations that assume no overflow; needed for gcc 4.3+ + PGAC_PROG_CC_CFLAGS_OPT([-fwrapv]) elif test "$ICC" = yes; then # Intel's compiler has a bug/misoptimization in checking for # division by NAN (NaN == 0), -mp1 fixes it, so add it to the CFLAGS. @@ -303,19 +445,26 @@ if test "$enable_debug" = yes && test "$ac_cv_prog_cc_g" = yes; then CFLAGS="$CFLAGS -g" fi +# enable code coverage if --enable-coverage +if test "$enable_coverage" = yes; then + if test "$GCC" = yes; then + CFLAGS="$CFLAGS -fprofile-arcs -ftest-coverage" + else + AC_MSG_ERROR([--enable-coverage is supported only when using GCC]) + fi +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" + [Define to 1 to allow profiling output to be saved separately for each process.]) + CFLAGS="$CFLAGS -pg $PLATFORM_PROFILE_FLAGS" 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" @@ -366,7 +515,7 @@ AC_SUBST(TAS) # # Automatic dependency tracking # -PGAC_ARG_BOOL(enable, depend, no, [ --enable-depend turn on automatic dependency tracking], +PGAC_ARG_BOOL(enable, depend, no, [turn on automatic dependency tracking], [autodepend=yes]) AC_SUBST(autodepend) @@ -374,7 +523,7 @@ AC_SUBST(autodepend) # # Enable assert checks # -PGAC_ARG_BOOL(enable, cassert, no, [ --enable-cassert enable assertion checks (for debugging)], +PGAC_ARG_BOOL(enable, cassert, no, [enable assertion checks (for debugging)], [AC_DEFINE([USE_ASSERT_CHECKING], 1, [Define to 1 to build with assertion checks. (--enable-cassert)])]) @@ -416,13 +565,13 @@ IFS=$ac_save_IFS # 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]) +PGAC_ARG_BOOL(enable, thread-safety, no, [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]) +PGAC_ARG_BOOL(enable, thread-safety, yes, [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]) +PGAC_ARG_BOOL(enable, thread-safety-force, no, [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' @@ -436,20 +585,20 @@ 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)]) +PGAC_ARG_BOOL(with, tcl, no, [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]) +PGAC_ARG_REQ(with, tclconfig, [DIR], [tclConfig.sh is in DIR]) # # Optionally build Perl modules (PL/Perl) # AC_MSG_CHECKING([whether to build Perl modules]) -PGAC_ARG_BOOL(with, perl, no, [ --with-perl build Perl modules (PL/Perl)]) +PGAC_ARG_BOOL(with, perl, no, [build Perl modules (PL/Perl)]) AC_MSG_RESULT([$with_perl]) AC_SUBST(with_perl) @@ -457,7 +606,7 @@ 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)]) +PGAC_ARG_BOOL(with, python, no, [build Python modules (PL/Python)]) AC_MSG_RESULT([$with_python]) AC_SUBST(with_python) @@ -465,7 +614,7 @@ 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], +PGAC_ARG_BOOL(with, gssapi, no, [build with GSSAPI support], [ AC_DEFINE(ENABLE_GSS, 1, [Define to build with GSSAPI support. (--with-gssapi)]) krb_srvtab="FILE:\$(sysconfdir)/krb5.keytab" @@ -477,7 +626,7 @@ 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], +PGAC_ARG_BOOL(with, krb5, no, [build with Kerberos 5 support], [ AC_DEFINE(KRB5, 1, [Define to build with Kerberos 5 support. (--with-krb5)]) krb_srvtab="FILE:\$(sysconfdir)/krb5.keytab" @@ -493,7 +642,7 @@ AC_SUBST(krb_srvtab) # Kerberos configuration parameters # PGAC_ARG_REQ(with, krb-srvnam, - [ --with-krb-srvnam=NAME default service principal name in Kerberos [[postgres]]], + [NAME], [default service principal name in Kerberos [postgres]], [], [with_krb_srvnam="postgres"]) AC_DEFINE_UNQUOTED([PG_KRB_SRVNAM], ["$with_krb_srvnam"], @@ -505,7 +654,7 @@ AC_DEFINE_UNQUOTED([PG_KRB_SRVNAM], ["$with_krb_srvnam"], # AC_MSG_CHECKING([whether to build with PAM support]) PGAC_ARG_BOOL(with, pam, no, - [ --with-pam build with PAM support], + [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) @@ -516,7 +665,7 @@ AC_SUBST(with_pam) # AC_MSG_CHECKING([whether to build with LDAP support]) PGAC_ARG_BOOL(with, ldap, no, - [ --with-ldap build with LDAP support], + [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) @@ -527,7 +676,7 @@ AC_SUBST(with_ldap) # AC_MSG_CHECKING([whether to build with Bonjour support]) PGAC_ARG_BOOL(with, bonjour, no, - [ --with-bonjour build with Bonjour support], + [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) @@ -537,7 +686,7 @@ 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], +PGAC_ARG_BOOL(with, openssl, no, [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) @@ -547,7 +696,7 @@ AC_SUBST(with_openssl) # Readline # PGAC_ARG_BOOL(with, readline, yes, - [ --without-readline do not use GNU Readline nor BSD Libedit for editing]) + [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 @@ -563,20 +712,20 @@ fi # Prefer libedit # PGAC_ARG_BOOL(with, libedit-preferred, no, - [ --with-libedit-preferred prefer BSD Libedit over GNU Readline]) + [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]) +PGAC_ARG_BOOL(with, ossp-uuid, no, [use OSSP UUID library when building contrib/uuid-ossp]) AC_SUBST(with_ossp_uuid) # # XML # -PGAC_ARG_BOOL(with, libxml, no, [ --with-libxml build with XML support], +PGAC_ARG_BOOL(with, libxml, no, [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 @@ -600,8 +749,8 @@ 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)])]) +PGAC_ARG_BOOL(with, libxslt, no, [use XSLT support when building contrib/xml2], + [AC_DEFINE([USE_LIBXSLT], 1, [Define to 1 to use XSLT support when building contrib/xml2. (--with-libxslt)])]) AC_SUBST(with_libxslt) @@ -610,14 +759,14 @@ AC_SUBST(with_libxslt) # tzdata # PGAC_ARG_REQ(with, system-tzdata, - [ --with-system-tzdata=DIR use system time zone data in DIR]) + [DIR], [use system time zone data in DIR]) AC_SUBST(with_system_tzdata) # # Zlib # PGAC_ARG_BOOL(with, zlib, yes, - [ --without-zlib do not use Zlib]) + [do not use Zlib]) AC_SUBST(with_zlib) # @@ -651,9 +800,6 @@ AC_SUBST(ELF_SYS) CPPFLAGS="$CPPFLAGS $INCLUDES" LDFLAGS="$LDFLAGS $LIBDIRS" -AC_MSG_NOTICE([using CPPFLAGS=$CPPFLAGS]) -AC_MSG_NOTICE([using LDFLAGS=$LDFLAGS]) - AC_ARG_VAR(LDFLAGS_SL) PGAC_PROG_LD @@ -676,7 +822,7 @@ AC_PATH_PROG(TAR, tar) AC_PROG_LN_S AC_PROG_AWK -PGAC_PATH_YACC +PGAC_PATH_BISON PGAC_PATH_FLEX PGAC_PATH_PERL @@ -790,9 +936,19 @@ if test "$with_libxml" = yes ; then fi if test "$with_libxslt" = yes ; then - AC_CHECK_LIB(xslt, xsltLibxmlVersion, [], [AC_MSG_ERROR([library 'xslt' is required for XSLT support])]) + AC_CHECK_LIB(xslt, xsltCleanupGlobals, [], [AC_MSG_ERROR([library 'xslt' is required for XSLT support])]) fi +# for contrib/uuid-ossp +if test "$with_ossp_uuid" = yes ; then + AC_CHECK_LIB(ossp-uuid, uuid_export, + [OSSP_UUID_LIBS="-lossp-uuid"], + [AC_CHECK_LIB(uuid, uuid_export, + [OSSP_UUID_LIBS="-luuid"], + [AC_MSG_ERROR([library 'ossp-uuid' or 'uuid' is required for OSSP-UUID])])]) +fi +AC_SUBST(OSSP_UUID_LIBS) + ## ## Header files @@ -865,6 +1021,7 @@ 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])]) + AC_CHECK_FUNCS([ERR_set_mark]) fi if test "$with_pam" = yes ; then @@ -898,6 +1055,13 @@ if test "$with_bonjour" = yes ; then AC_CHECK_HEADER(DNSServiceDiscovery/DNSServiceDiscovery.h, [], [AC_MSG_ERROR([header file is required for Bonjour])]) fi +# for contrib/uuid-ossp +if test "$with_ossp_uuid" = yes ; then + AC_CHECK_HEADERS(ossp/uuid.h, [], [ + AC_CHECK_HEADERS(uuid.h, [], + [AC_MSG_ERROR([header file or is required for OSSP-UUID])])]) +fi + ## ## Types, structures, compiler characteristics @@ -1071,7 +1235,7 @@ fi 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]) +AC_REPLACE_FUNCS([crypt getopt getrusage inet_aton random rint srandom strdup strerror strlcat strlcpy strtol strtoul unsetenv]) LIBS="$pgac_save_LIBS" @@ -1086,23 +1250,21 @@ 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 +# Similarly, use system's getopt_long() only if system provides struct option. +# Solaris' getopt() doesn't do what we want for long options, so always use +# our versions on that platform. +if test "$PORTNAME" = "solaris"; then + AC_LIBOBJ(getopt) + AC_LIBOBJ(getopt_long) +elif 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 -# OS tests are also done in include/c.h and port/fseeko.c -case $host_os in bsdi*|netbsd*) -ac_cv_func_fseeko=yes -esac - # Win32 support if test "$PORTNAME" = "win32"; then -AC_LIBOBJ(gettimeofday) +AC_REPLACE_FUNCS(gettimeofday) AC_LIBOBJ(kill) AC_LIBOBJ(open) AC_LIBOBJ(rand) @@ -1151,7 +1313,16 @@ AC_CHECK_FUNCS(atexit, [], [AC_CHECK_FUNCS(on_exit, [], [AC_MSG_ERROR([neither atexit() nor on_exit() found])])]) -AC_FUNC_FSEEKO +AC_REPLACE_FUNCS(fseeko) +case $host_os in + # BSD/OS & NetBSD use a custom fseeko/ftello built on fsetpos/fgetpos + bsdi*|netbsd*) + AC_DEFINE(HAVE_FSEEKO, 1, [Define to 1 because replacement version used.]) + ac_cv_func_fseeko=yes;; + *) + AC_FUNC_FSEEKO;; +esac + # # Pthreads @@ -1163,8 +1334,9 @@ AC_FUNC_FSEEKO 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. +# Some platforms use these, so just define them. They can't hurt if they +# are not supported. For example, on Solaris -D_POSIX_PTHREAD_SEMANTICS +# enables 5-arg getpwuid_r, among other things. PTHREAD_CFLAGS="$PTHREAD_CFLAGS -D_REENTRANT -D_THREAD_SAFE -D_POSIX_PTHREAD_SEMANTICS" @@ -1344,26 +1516,59 @@ AC_CHECK_SIZEOF([unsigned long]) # And one for the size of size_t (enables tweaks for > 32bit address space) AC_CHECK_SIZEOF([size_t]) +# Decide whether float4 is passed by value: user-selectable, enabled by default +AC_MSG_CHECKING([whether to build with float4 passed by value]) +PGAC_ARG_BOOL(enable, float4-byval, yes, [disable float4 passed by value], + [AC_DEFINE([USE_FLOAT4_BYVAL], 1, + [Define to 1 if you want float4 values to be passed by value. (--enable-float4-byval)]) + float4passbyval=true], + [float4passbyval=false]) +AC_MSG_RESULT([$enable_float4_byval]) +AC_DEFINE_UNQUOTED([FLOAT4PASSBYVAL], [$float4passbyval], [float4 values are passed by value if 'true', by reference if 'false']) + +# Decide whether float8 is passed by value. +# Note: this setting also controls int8 and related types such as timestamp. +# If sizeof(Datum) >= 8, this is user-selectable, enabled by default. +# If not, trying to select it is an error. +AC_MSG_CHECKING([whether to build with float8 passed by value]) +if test $ac_cv_sizeof_unsigned_long -ge 8 ; then + PGAC_ARG_BOOL(enable, float8-byval, yes, [disable float8 passed by value]) +else + PGAC_ARG_BOOL(enable, float8-byval, no, [disable float8 passed by value]) + if test "$enable_float8_byval" = yes ; then + AC_MSG_ERROR([--enable-float8-byval is not supported on 32-bit platforms.]) + fi +fi +if test "$enable_float8_byval" = yes ; then + AC_DEFINE([USE_FLOAT8_BYVAL], 1, + [Define to 1 if you want float8, int8, etc values to be passed by value. (--enable-float8-byval)]) + float8passbyval=true +else + float8passbyval=false +fi +AC_MSG_RESULT([$enable_float8_byval]) +AC_DEFINE_UNQUOTED([FLOAT8PASSBYVAL], [$float8passbyval], [float8, int8, and related values are passed by value if 'true', by reference if 'false']) + # Determine memory alignment requirements for the basic C data types. -PGAC_CHECK_ALIGNOF(short) -PGAC_CHECK_ALIGNOF(int) -PGAC_CHECK_ALIGNOF(long) +AC_CHECK_ALIGNOF(short) +AC_CHECK_ALIGNOF(int) +AC_CHECK_ALIGNOF(long) if test x"$HAVE_LONG_LONG_INT_64" = x"yes" ; then - PGAC_CHECK_ALIGNOF(long long int) + AC_CHECK_ALIGNOF(long long int) fi -PGAC_CHECK_ALIGNOF(double) +AC_CHECK_ALIGNOF(double) # Compute maximum alignment of any basic type. # We assume long's alignment is at least as strong as char, short, or int; # but we must check long long (if it exists) and double. -MAX_ALIGNOF=$pgac_cv_alignof_long -if test $MAX_ALIGNOF -lt $pgac_cv_alignof_double ; then - MAX_ALIGNOF=$pgac_cv_alignof_double +MAX_ALIGNOF=$ac_cv_alignof_long +if test $MAX_ALIGNOF -lt $ac_cv_alignof_double ; then + MAX_ALIGNOF=$ac_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" +if test x"$HAVE_LONG_LONG_INT_64" = xyes && test $MAX_ALIGNOF -lt $ac_cv_alignof_long_long_int ; then + MAX_ALIGNOF="$ac_cv_alignof_long_long_int" fi AC_DEFINE_UNQUOTED(MAXIMUM_ALIGNOF, $MAX_ALIGNOF, [Define as the maximum alignment requirement of any C data type.]) @@ -1381,6 +1586,20 @@ AC_CHECK_TYPES([int8, uint8, int64, uint64], [], [], AC_CHECK_TYPES(sig_atomic_t, [], [], [#include ]) +# If the user did not disable integer datetimes, check that +# there is a working 64-bit integral type to use. +if test x"$USE_INTEGER_DATETIMES" = x"yes" && + test x"$HAVE_LONG_INT_64" = x"no" && + test x"$HAVE_LONG_LONG_INT_64" = x"no" && + test x"$HAVE_INT64" = x"no" ; then + AC_MSG_ERROR([ +Integer-based datetime support requires a 64-bit integer type, +but no such type could be found. The --disable-integer-datetimes +configure option can be used to disable integer-based storage +of datetime values.]) +fi + + if test "$PORTNAME" != "win32" then PGAC_FUNC_POSIX_SIGNALS @@ -1395,6 +1614,14 @@ if test $ac_cv_func_fseeko = yes; then AC_SYS_LARGEFILE fi +# Check for largefile support (must be after AC_SYS_LARGEFILE) +AC_CHECK_SIZEOF([off_t]) + +# If we don't have largefile support, can't handle segsize >= 2GB. +if test "$ac_cv_sizeof_off_t" -lt 8 -a "$segsize" != "1"; then + AC_MSG_ERROR([Large file support is not enabled. Segment size cannot be larger than 1GB.]) +fi + # SunOS doesn't handle negative byte comparisons properly with +/- return AC_FUNC_MEMCMP @@ -1491,7 +1718,7 @@ 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 +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 @@ -1510,6 +1737,31 @@ AC_MSG_WARN([*** skipping thread test on Win32]) fi fi +# If compiler will take -Wl,--as-needed then add that to LDFLAGS. +# This is much easier than trying to filter LIBS to the minimum for each +# executable. (Note that shared library links won't use this switch, though.) +# On (at least) some Red-Hat-derived systems, this switch breaks linking to +# libreadline; therefore we postpone testing it until we know what library +# dependencies readline has. The test code will try to link with $LIBS. +if test "$with_readline" = yes; then + link_test_func=readline +else + link_test_func=exit +fi +if test "$PORTNAME" != "darwin"; then + PGAC_PROG_CC_LDFLAGS_OPT([-Wl,--as-needed], $link_test_func) +else + # On Darwin it's spelled -Wl,-dead_strip_dylibs, but don't try that elsewhere + PGAC_PROG_CC_LDFLAGS_OPT([-Wl,-dead_strip_dylibs], $link_test_func) +fi + + +# Begin output steps + +AC_MSG_NOTICE([using CFLAGS=$CFLAGS]) +AC_MSG_NOTICE([using CPPFLAGS=$CPPFLAGS]) +AC_MSG_NOTICE([using LDFLAGS=$LDFLAGS]) + # 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