|
|
| version 1.267, 2003/06/23 23:51:59 | version 1.562, 2008/05/20 03:30:22 |
|---|---|
| Line 1 | Line 1 |
| dnl Process this file with autoconf to produce a configure script. | dnl Process this file with autoconf to produce a configure script. |
| dnl $Header$ | dnl $PostgreSQL: pgsql/configure.in,v 1.561 2008/05/18 20:13:12 tgl Exp $ |
| dnl | dnl |
| dnl Developers, please strive to achieve this order: | dnl Developers, please strive to achieve this order: |
| dnl | dnl |
| Line 16 dnl | Line 16 dnl |
| dnl Read the Autoconf manual for details. | dnl Read the Autoconf manual for details. |
| dnl | dnl |
| m4_pattern_forbid(^PGAC_)dnl to catch undefined macros | 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.4devel], [[email protected]]) | |
| m4_undefine([infodir]) | |
| m4_undefine([info]) | |
| AC_SUBST(docdir) | |
| AC_PREREQ(2.53) | AC_INIT([PostgreSQL], [8.4devel], [[email protected]]) |
| AC_COPYRIGHT([Copyright 2002 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_SRCDIR([src/backend/access/common/heaptuple.c]) |
| AC_CONFIG_AUX_DIR(config) | AC_CONFIG_AUX_DIR(config) |
| AC_PREFIX_DEFAULT(/usr/local/pgsql) | AC_PREFIX_DEFAULT(/usr/local/pgsql) |
| AC_SUBST(configure_args, [$ac_configure_args]) | AC_SUBST(configure_args, [$ac_configure_args]) |
| AC_DEFINE_UNQUOTED(PG_VERSION, "$PACKAGE_VERSION", [PostgreSQL version]) | AC_DEFINE_UNQUOTED(PG_VERSION, "$PACKAGE_VERSION", [PostgreSQL version as a string]) |
| AC_CANONICAL_HOST | AC_CANONICAL_HOST |
| Line 52 PGAC_ARG_REQ(with, template, [], | Line 48 PGAC_ARG_REQ(with, template, [], |
| esac | esac |
| ], | ], |
| [ | [ |
| # --with-template not given | # --with-template not given |
| case $host_os in | case $host_os in |
| aix*) template=aix ;; | aix*) template=aix ;; |
| beos*) template=beos ;; | |
| bsdi*) template=bsdi ;; | bsdi*) template=bsdi ;; |
| cygwin*) template=cygwin ;; | cygwin*) template=cygwin ;; |
| darwin*) template=darwin ;; | darwin*) template=darwin ;; |
| dgux*) template=dgux ;; | dgux*) template=dgux ;; |
| freebsd*) template=freebsd ;; | freebsd*) template=freebsd ;; |
| hpux*) template=hpux ;; | hpux*) template=hpux ;; |
| irix*) template=irix5 ;; | irix*) template=irix ;; |
| linux*) template=linux ;; | linux*|gnu*|k*bsd*-gnu) |
| template=linux ;; | |
| mingw*) template=win32 ;; | mingw*) template=win32 ;; |
| netbsd*) template=netbsd ;; | netbsd*) template=netbsd ;; |
| nextstep*) template=nextstep ;; | nextstep*) template=nextstep ;; |
| openbsd*) template=openbsd ;; | openbsd*) template=openbsd ;; |
| osf*) template=osf ;; | osf*) template=osf ;; |
| qnx*) template=qnx4 ;; | |
| sco*) template=sco ;; | sco*) template=sco ;; |
| solaris*) template=solaris ;; | solaris*) template=solaris ;; |
| sunos*) template=sunos4 ;; | sunos*) template=sunos4 ;; |
| Line 104 AC_MSG_RESULT([$template]) | Line 99 AC_MSG_RESULT([$template]) |
| PORTNAME=$template | PORTNAME=$template |
| AC_SUBST(PORTNAME) | AC_SUBST(PORTNAME) |
| # Pick right test-and-set (TAS) code. Most platforms have inline | # Initialize default assumption that we do not need separate assembly code |
| # assembler code in src/include/storage/s_lock.h, so we just use | # for TAS (test-and-set). This can be overridden by the template file |
| # a dummy file here. | # when it's executed. |
| case $host in | need_tas=no |
| *-*-hpux*) need_tas=yes; tas_file=hpux.s ;; | tas_file=dummy.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) | |
| Line 126 AC_SUBST(TAS) | Line 111 AC_SUBST(TAS) |
| ## Command line options | ## Command line options |
| ## | ## |
| # | # |
| # Add non-standard directories to the include path | # Add non-standard directories to the include path |
| # | # |
| Line 144 PGAC_ARG_REQ(with, libs, [ --with- | Line 128 PGAC_ARG_REQ(with, libs, [ --with- |
| # | # |
| # 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]) | 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-integer-datetimes disable 64-bit integer date/time support], |
| [AC_DEFINE([USE_INTEGER_DATETIMES], 1, | [AC_DEFINE([USE_INTEGER_DATETIMES], 1, |
| [Define to 1 if you want 64-bit integer timestamp and interval support. (--enable-integer-datetimes)])]) | [Define to 1 if you want 64-bit integer timestamp and interval support. (--enable-integer-datetimes)])]) |
| AC_MSG_RESULT([$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, | |
| [Define to 1 if you want single-byte recode support. (--enable-recode)])]) | |
| AC_MSG_RESULT([$enable_recode]) | |
| # | # |
| # NLS | # NLS |
| # | # |
| Line 180 AC_SUBST(WANTED_LANGUAGES) | Line 155 AC_SUBST(WANTED_LANGUAGES) |
| # Default port number (--with-pgport), default 5432 | # Default port number (--with-pgport), default 5432 |
| # | # |
| AC_MSG_CHECKING([for default port number]) | 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, [ --with-pgport=PORTNUM set default port number [[5432]]], |
| [default_port=$withval], | [default_port=$withval], |
| [default_port=5432]) | [default_port=5432]) |
| AC_MSG_RESULT([$default_port]) | AC_MSG_RESULT([$default_port]) |
| # Need both of these because some places want an integer and some a string | # Need both of these because some places want an integer and some a string |
| AC_DEFINE_UNQUOTED(DEF_PGPORT, ${default_port}, | AC_DEFINE_UNQUOTED(DEF_PGPORT, ${default_port}, |
| [Define to the default TCP port number on which the server listens and | [Define to the default TCP port number on which the server listens and |
| to which clients will try to connect to. This can be overridden at | to which clients will try to connect. This can be overridden at run-time, |
| run-time, but it's convenient if your clients have the right default | but it's convenient if your clients have the right default compiled in. |
| compiled in. (--with-pgport=PORTNUM)]) | (--with-pgport=PORTNUM)]) |
| AC_DEFINE_UNQUOTED(DEF_PGPORT_STR, "${default_port}", | AC_DEFINE_UNQUOTED(DEF_PGPORT_STR, "${default_port}", |
| [Define to the default TCP port number as string constant.]) | [Define to the default TCP port number as a string constant.]) |
| AC_SUBST(default_port) | AC_SUBST(default_port) |
| # | # |
| Line 208 PGAC_ARG_BOOL(enable, rpath, yes, | Line 183 PGAC_ARG_BOOL(enable, rpath, yes, |
| [ --disable-rpath do not embed shared library search path in executables]) | [ --disable-rpath do not embed shared library search path in executables]) |
| AC_SUBST(enable_rpath) | AC_SUBST(enable_rpath) |
| # | |
| # Spinlocks | |
| # | |
| PGAC_ARG_BOOL(enable, spinlocks, yes, | |
| [ --disable-spinlocks do not use spinlocks]) | |
| # | # |
| # --enable-debug adds -g to compiler flags | # --enable-debug adds -g to compiler flags |
| Line 217 PGAC_ARG_BOOL(enable, debug, no, | Line 197 PGAC_ARG_BOOL(enable, debug, no, |
| AC_SUBST(enable_debug) | 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) | |
| # | |
| # Block size | |
| # | |
| AC_MSG_CHECKING([for block size]) | |
| PGAC_ARG_REQ(with, blocksize, [ --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, [ --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, [ --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, [ --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 | # C compiler |
| # | # |
| Line 232 case $template in | Line 352 case $template in |
| esac | esac |
| AC_PROG_CC([$pgac_cc_list]) | AC_PROG_CC([$pgac_cc_list]) |
| # Check if it's Intel's compiler, which (usually) pretends to be gcc, | |
| # but has idiosyncrasies of its own. We assume icc will define | |
| # __INTEL_COMPILER regardless of CFLAGS. | |
| AC_TRY_COMPILE([], [@%:@ifndef __INTEL_COMPILER | |
| choke me | |
| @%:@endif], [ICC=[yes]], [ICC=[no]]) | |
| unset CFLAGS | |
| # | |
| # Read the template | # Read the template |
| # | |
| . "$srcdir/src/template/$template" || exit | . "$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 | if test "$ac_env_CFLAGS_set" = set; then |
| CFLAGS=$ac_env_CFLAGS_value | 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. | |
| # 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" | |
| # 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. | |
| PGAC_PROG_CC_CFLAGS_OPT([-mp1]) | |
| # Make sure strict aliasing is off (though this is said to be the default) | |
| 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 | fi |
| # supply -g if --enable-debug | |
| if test "$enable_debug" = yes && test "$ac_cv_prog_cc_g" = yes; then | if test "$enable_debug" = yes && test "$ac_cv_prog_cc_g" = yes; then |
| CFLAGS="$CFLAGS -g" | CFLAGS="$CFLAGS -g" |
| fi | fi |
| AC_MSG_NOTICE([using CFLAGS=$CFLAGS]) | |
| # 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 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 | |
| # 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 | # Check if the compiler still works with the template settings |
| AC_MSG_CHECKING([whether the C compiler still works]) | AC_MSG_CHECKING([whether the C compiler still works]) |
| Line 250 AC_TRY_LINK([], [return 0;], | Line 438 AC_TRY_LINK([], [return 0;], |
| [AC_MSG_RESULT(no) | [AC_MSG_RESULT(no) |
| AC_MSG_ERROR([cannot proceed])]) | AC_MSG_ERROR([cannot proceed])]) |
| # Defend against gcc -ffastmath | # Defend against gcc -ffast-math |
| if test "$GCC" = yes; then | if test "$GCC" = yes; then |
| AC_TRY_COMPILE([], [@%:@ifdef __FAST_MATH__ | AC_TRY_COMPILE([], [@%:@ifdef __FAST_MATH__ |
| choke me | choke me |
| Line 272 AC_DEFINE_UNQUOTED(PG_VERSION_STR, | Line 460 AC_DEFINE_UNQUOTED(PG_VERSION_STR, |
| # | # |
| # 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) | |
| # | |
| # Automatic dependency tracking | # Automatic dependency tracking |
| # | # |
| PGAC_ARG_BOOL(enable, depend, no, [ --enable-depend turn on automatic dependency tracking], | PGAC_ARG_BOOL(enable, depend, no, [ --enable-depend turn on automatic dependency tracking], |
| Line 291 PGAC_ARG_BOOL(enable, cassert, no, [ -- | Line 493 PGAC_ARG_BOOL(enable, cassert, no, [ -- |
| # Include directories | # Include directories |
| # | # |
| ac_save_IFS=$IFS | ac_save_IFS=$IFS |
| IFS="${IFS}:" | IFS="${IFS}${PATH_SEPARATOR}" |
| # SRCH_INC comes from the template file | # SRCH_INC comes from the template file |
| for dir in $with_includes $SRCH_INC; do | for dir in $with_includes $SRCH_INC; do |
| if test -d "$dir"; then | if test -d "$dir"; then |
| Line 308 AC_SUBST(INCLUDES) | Line 510 AC_SUBST(INCLUDES) |
| # Library directories | # Library directories |
| # | # |
| ac_save_IFS=$IFS | ac_save_IFS=$IFS |
| IFS="${IFS}:" | IFS="${IFS}${PATH_SEPARATOR}" |
| # LIBRARY_DIRS comes from command line, SRCH_LIB from template file. | # LIBRARY_DIRS comes from command line, SRCH_LIB from template file. |
| for dir in $LIBRARY_DIRS $SRCH_LIB; do | for dir in $LIBRARY_DIRS $SRCH_LIB; do |
| if test -d "$dir"; then | if test -d "$dir"; then |
| Line 320 done | Line 522 done |
| IFS=$ac_save_IFS | IFS=$ac_save_IFS |
| # | # |
| # Enable libpq to be thread-safe | # Enable thread-safe client libraries |
| # | # |
| AC_MSG_CHECKING([allow threaded libpq]) | AC_MSG_CHECKING([allow thread-safe client libraries]) |
| PGAC_ARG_BOOL(with, threads, no, [ --with-threads allow libpq and ecpg to be thread-safe], | if test "$PORTNAME" != "win32"; then |
| [AC_DEFINE([USE_THREADS], 1, [Define to 1 to build libpq and ecpg to be thread-safe. (--with-threads)])]) | 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 | |
| AC_MSG_RESULT([$with_threads]) | PGAC_ARG_BOOL(enable, thread-safety-force, no, [ --enable-thread-safety-force force thread-safety despite thread test failure]) |
| AC_SUBST(with_threads) | 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) | |
| # | # |
| # Tcl/Tk | # Optionally build Tcl modules (PL/Tcl) |
| # | # |
| AC_MSG_CHECKING([whether to build with Tcl]) | AC_MSG_CHECKING([whether to build with Tcl]) |
| PGAC_ARG_BOOL(with, tcl, no, [ --with-tcl build Tcl and Tk interfaces]) | PGAC_ARG_BOOL(with, tcl, no, [ --with-tcl build Tcl modules (PL/Tcl)]) |
| AC_MSG_RESULT([$with_tcl]) | AC_MSG_RESULT([$with_tcl]) |
| AC_SUBST([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. | # 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. | # 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]) | PGAC_ARG_REQ(with, tclconfig, [ --with-tclconfig=DIR tclConfig.sh is 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) | # Optionally build Perl modules (PL/Perl) |
| Line 367 AC_MSG_RESULT([$with_perl]) | Line 564 AC_MSG_RESULT([$with_perl]) |
| AC_SUBST(with_perl) | AC_SUBST(with_perl) |
| # | # |
| # Optionally build Python interface module | # Optionally build Python modules (PL/Python) |
| # | # |
| AC_MSG_CHECKING([whether to build Python modules]) | AC_MSG_CHECKING([whether to build Python modules]) |
| PGAC_ARG_BOOL(with, python, no, [ --with-python build Python interface module]) | PGAC_ARG_BOOL(with, python, no, [ --with-python build Python modules (PL/Python)]) |
| AC_MSG_RESULT([$with_python]) | AC_MSG_RESULT([$with_python]) |
| AC_SUBST(with_python) | AC_SUBST(with_python) |
| # | # |
| # Optionally build the Java/JDBC tools | # GSSAPI |
| # | |
| 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 GSSAPI support]) |
| # | PGAC_ARG_BOOL(with, gssapi, no, [ --with-gssapi build with GSSAPI support], |
| 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(ENABLE_GSS, 1, [Define to build with GSSAPI support. (--with-gssapi)]) |
| AC_DEFINE(KRB4, 1, [Define to build with Kerberos 4 support. (--with-krb4)]) | krb_srvtab="FILE:\$(sysconfdir)/krb5.keytab" |
| ]) | |
| if test -d "$krb4_prefix/include"; then | AC_MSG_RESULT([$with_gssapi]) |
| INCLUDES="$INCLUDES -I$krb4_prefix/include" | AC_SUBST(with_gssapi) |
| 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 | # Kerberos 5 |
| # | # |
| AC_MSG_CHECKING([whether to build with Kerberos 5 support]) | 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]]], | PGAC_ARG_BOOL(with, krb5, no, [ --with-krb5 build with Kerberos 5 support], |
| [krb5_prefix=/usr/athena], | |
| [krb5_prefix=$withval], | |
| [ | [ |
| AC_MSG_RESULT([yes]) | |
| AC_DEFINE(KRB5, 1, [Define to build with Kerberos 5 support. (--with-krb5)]) | AC_DEFINE(KRB5, 1, [Define to build with Kerberos 5 support. (--with-krb5)]) |
| 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" | krb_srvtab="FILE:\$(sysconfdir)/krb5.keytab" |
| ], | ]) |
| [AC_MSG_RESULT(no)]) | AC_MSG_RESULT([$with_krb5]) |
| AC_SUBST(with_krb5) | 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) | AC_SUBST(krb_srvtab) |
| Line 463 AC_SUBST(krb_srvtab) | Line 603 AC_SUBST(krb_srvtab) |
| # Kerberos configuration parameters | # Kerberos configuration parameters |
| # | # |
| PGAC_ARG_REQ(with, krb-srvnam, | PGAC_ARG_REQ(with, krb-srvnam, |
| [ --with-krb-srvnam=NAME name of the service principal in Kerberos [postgres]], | [ --with-krb-srvnam=NAME default service principal name in Kerberos [[postgres]]], |
| [], | [], |
| [with_krb_srvnam="postgres"]) | [with_krb_srvnam="postgres"]) |
| AC_DEFINE_UNQUOTED([PG_KRB_SRVNAM], ["$with_krb_srvnam"], | AC_DEFINE_UNQUOTED([PG_KRB_SRVNAM], ["$with_krb_srvnam"], |
| [Define to the name of the PostgreSQL service principal in Kerberos. (--with-krb-srvnam=NAME)]) | [Define to the name of the default PostgreSQL service principal in Kerberos. (--with-krb-srvnam=NAME)]) |
| # | # |
| Line 482 AC_SUBST(with_pam) | Line 622 AC_SUBST(with_pam) |
| # | # |
| # Rendezvous | # LDAP |
| # | # |
| AC_MSG_CHECKING([whether to build with Rendezvous support]) | AC_MSG_CHECKING([whether to build with LDAP support]) |
| PGAC_ARG_BOOL(with, rendezvous, no, | PGAC_ARG_BOOL(with, ldap, no, |
| [ --with-rendezvous build with Rendezvous support], | [ --with-ldap build with LDAP support], |
| [AC_DEFINE([USE_RENDEZVOUS], 1, [Define to 1 to build with Rendezvous support. (--with-rendezvous)])]) | [AC_DEFINE([USE_LDAP], 1, [Define to 1 to build with LDAP support. (--with-ldap)])]) |
| AC_MSG_RESULT([$with_rendezvous]) | AC_MSG_RESULT([$with_ldap]) |
| AC_SUBST(with_rendezvous) | AC_SUBST(with_ldap) |
| # | # |
| # OpenSSL | # Bonjour |
| # | # |
| PGAC_ARG_OPTARG(with, openssl, | AC_MSG_CHECKING([whether to build with Bonjour support]) |
| [[ --with-openssl[=DIR] build with OpenSSL support [/usr/local/ssl]]], | PGAC_ARG_BOOL(with, bonjour, no, |
| [openssl_prefix=/usr/local/ssl], | [ --with-bonjour build with Bonjour support], |
| [openssl_prefix=$withval], | [AC_DEFINE([USE_BONJOUR], 1, [Define to 1 to build with Bonjour support. (--with-bonjour)])]) |
| [ | AC_MSG_RESULT([$with_bonjour]) |
| AC_MSG_RESULT([building with OpenSSL support]) | AC_SUBST(with_bonjour) |
| AC_DEFINE([USE_SSL], 1, [Define to build with (Open)SSL support. (--with-openssl)]) | |
| 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 | |
| ]) | |
| # | |
| # 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) |
| Line 518 AC_SUBST(with_openssl) | Line 657 AC_SUBST(with_openssl) |
| # Readline | # Readline |
| # | # |
| PGAC_ARG_BOOL(with, readline, yes, | PGAC_ARG_BOOL(with, readline, yes, |
| [ --without-readline do not use Readline]) | [ --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 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], | |
| [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 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) | |
| # | |
| # tzdata | |
| # | |
| PGAC_ARG_REQ(with, system-tzdata, | |
| [ --with-system-tzdata=DIR use system time zone data in DIR]) | |
| AC_SUBST(with_system_tzdata) | |
| # | # |
| # Zlib | # Zlib |
| # | # |
| PGAC_ARG_BOOL(with, zlib, yes, | PGAC_ARG_BOOL(with, zlib, yes, |
| [ --without-zlib do not use Zlib]) | [ --without-zlib do not use Zlib]) |
| AC_SUBST(with_zlib) | |
| # | # |
| # Elf | # Elf |
| Line 558 AC_SUBST(ELF_SYS) | Line 761 AC_SUBST(ELF_SYS) |
| CPPFLAGS="$CPPFLAGS $INCLUDES" | CPPFLAGS="$CPPFLAGS $INCLUDES" |
| LDFLAGS="$LDFLAGS $LIBDIRS" | LDFLAGS="$LDFLAGS $LIBDIRS" |
| AC_MSG_NOTICE([using CPPFLAGS=$CPPFLAGS]) | AC_ARG_VAR(LDFLAGS_SL) |
| AC_MSG_NOTICE([using LDFLAGS=$LDFLAGS]) | |
| AC_PROG_AWK | PGAC_PROG_LD |
| PGAC_PATH_FLEX | |
| AC_PROG_LN_S | |
| AC_PROG_LD | |
| AC_SUBST(LD) | AC_SUBST(LD) |
| AC_SUBST(with_gnu_ld) | AC_SUBST(with_gnu_ld) |
| case $host_os in sysv5*) | case $host_os in sysv5*) |
| Line 579 case $host_os in sysv5*) | Line 777 case $host_os in sysv5*) |
| AC_SUBST(ld_R_works) | AC_SUBST(ld_R_works) |
| esac | esac |
| AC_PROG_RANLIB | AC_PROG_RANLIB |
| AC_CHECK_PROGS(LORDER, lorder) | |
| AC_PATH_PROG(TAR, tar) | |
| PGAC_CHECK_STRIP | PGAC_CHECK_STRIP |
| AC_CHECK_PROGS(YACC, ['bison -y']) | AC_PATH_PROG(TAR, tar) |
| AC_PROG_LN_S | |
| if test "$YACC"; then | AC_PROG_AWK |
| 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. PostgreSQL needs | |
| *** Bison version 1.875 or later.]) | |
| fi | |
| fi | |
| if test -z "$YACC"; then | PGAC_PATH_YACC |
| AC_MSG_WARN([ | PGAC_PATH_FLEX |
| *** 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) | |
| PGAC_PATH_PERL | PGAC_PATH_PERL |
| if test "$with_perl" = yes; then | if test "$with_perl" = yes; then |
| Line 613 fi | Line 794 fi |
| if test "$with_python" = yes; then | if test "$with_python" = yes; then |
| PGAC_PATH_PYTHON | PGAC_PATH_PYTHON |
| PGAC_CHECK_PYTHON_MODULE_SETUP | |
| PGAC_CHECK_PYTHON_EMBED_SETUP | PGAC_CHECK_PYTHON_EMBED_SETUP |
| fi | 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 | ## 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(). | |
| ## | |
| if test "$PORTNAME" != "aix" -a "$PORTNAME" != "alpha" | AC_CHECK_LIB(m, main) |
| then | AC_SEARCH_LIBS(setproctitle, util) |
| AC_CHECK_LIB(bsd, main) | AC_SEARCH_LIBS(dlopen, dl) |
| fi | AC_SEARCH_LIBS(socket, [socket wsock32]) |
| AC_CHECK_LIB(util, setproctitle) | AC_SEARCH_LIBS(shl_load, dld) |
| AC_CHECK_LIB(m, main) | # We only use libld in port/dynloader/aix.c |
| AC_CHECK_LIB(dl, main) | case $host_os in |
| AC_CHECK_LIB(nsl, main) | aix*) |
| AC_CHECK_LIB(socket, main) | AC_SEARCH_LIBS(ldopen, ld) |
| AC_CHECK_LIB(ipc, main) | ;; |
| AC_CHECK_LIB(IPC, main) | esac |
| AC_CHECK_LIB(lc, main) | |
| AC_CHECK_LIB(dld, main) | |
| AC_CHECK_LIB(ld, main) | |
| AC_CHECK_LIB(compat, main) | |
| AC_CHECK_LIB(BSD, main) | |
| AC_CHECK_LIB(gen, main) | |
| AC_CHECK_LIB(PW, main) | |
| AC_CHECK_LIB(resolv, main) | |
| AC_CHECK_LIB(wsock32, main) | |
| AC_SEARCH_LIBS(getopt_long, [getopt gnugetopt]) | AC_SEARCH_LIBS(getopt_long, [getopt gnugetopt]) |
| # QNX: | AC_SEARCH_LIBS(crypt, crypt) |
| AC_CHECK_LIB(unix, main) | |
| AC_SEARCH_LIBS(crypt, crypt) | |
| # BeOS: | |
| AC_CHECK_LIB(bind, __inet_ntoa) | |
| # Solaris: | # Solaris: |
| AC_SEARCH_LIBS(fdatasync, [rt posix4]) | AC_SEARCH_LIBS(fdatasync, [rt posix4]) |
| # Cygwin: | # Cygwin: |
| AC_CHECK_LIB(cygipc, shmget) | AC_SEARCH_LIBS(shmget, cygipc) |
| if test "$with_readline" = yes; then | if test "$with_readline" = yes; then |
| PGAC_CHECK_READLINE | PGAC_CHECK_READLINE |
| Line 671 failure. It is possible the compiler is | Line 849 failure. It is possible the compiler is |
| Use --without-zlib to disable zlib support.])]) | Use --without-zlib to disable zlib support.])]) |
| fi | fi |
| if test "$with_krb4" = yes ; then | if test "$enable_spinlocks" = yes; then |
| AC_CHECK_LIB(des, des_encrypt, [], [AC_MSG_ERROR([library 'des' is required for Kerberos 4])]) | AC_DEFINE(HAVE_SPINLOCKS, 1, [Define to 1 if you have spinlocks.]) |
| AC_CHECK_LIB(krb, krb_sendauth, [], [AC_MSG_ERROR([library 'krb' is required for Kerberos 4])]) | else |
| AC_REPLACE_FUNCS([gethostname]) | 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 | fi |
| if test "$with_krb5" = yes ; then | if test "$with_krb5" = yes ; then |
| AC_SEARCH_LIBS(com_err, [krb5 'krb5 -ldes -lasn1 -lroken' com_err], [], | if test "$PORTNAME" != "win32"; then |
| [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])]) | AC_SEARCH_LIBS(com_err, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken' com_err], [], |
| AC_SEARCH_LIBS(krb5_encrypt, [krb5 'krb5 -ldes -lasn1 -lroken' crypto k5crypto], [], | [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])]) |
| [AC_MSG_ERROR([could not find function 'krb5_encrypt' required for Kerberos 5])]) | AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [], |
| AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -ldes -lasn1 -lroken'], [], | [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])]) |
| [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 | fi |
| if test "$with_openssl" = yes ; then | if test "$with_openssl" = yes ; then |
| dnl Order matters! | dnl Order matters! |
| AC_CHECK_LIB(crypto, CRYPTO_new_ex_data, [], [AC_MSG_ERROR([library 'crypto' is required for OpenSSL])]) | if test "$PORTNAME" != "win32"; then |
| AC_CHECK_LIB(ssl, SSL_library_init, [], [AC_MSG_ERROR([library 'ssl' is required for OpenSSL])]) | 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 | fi |
| if test "$with_pam" = yes ; then | if test "$with_pam" = yes ; then |
| AC_CHECK_LIB(pam, pam_start, [], [AC_MSG_ERROR([library 'pam' is required for PAM])]) | AC_CHECK_LIB(pam, pam_start, [], [AC_MSG_ERROR([library 'pam' is required for PAM])]) |
| fi | 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, 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 | ## Header files |
| ## | ## |
| dnl sys/socket.h is required by AC_FUNC_ACCEPT_ARGTYPES | 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 poll.h pwd.h sys/ipc.h sys/poll.h sys/pstat.h sys/select.h sys/sem.h sys/socket.h sys/shm.h sys/un.h termios.h utime.h kernel/OS.h kernel/image.h SupportDefs.h]) | 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 | # At least on IRIX, cpp test for netinet/tcp.h will fail unless |
| # netinet/in.h is included first. | # netinet/in.h is included first. |
| Line 714 AC_CHECK_HEADERS(netinet/tcp.h, [], [], | Line 928 AC_CHECK_HEADERS(netinet/tcp.h, [], [], |
| #endif | #endif |
| ]) | ]) |
| if test "$with_readline" = yes; then | if expr x"$pgac_cv_check_readline" : 'x-lreadline' >/dev/null ; then |
| AC_CHECK_HEADERS(readline/readline.h, [], | AC_CHECK_HEADERS(readline/readline.h, [], |
| [AC_CHECK_HEADERS(editline/readline.h, [], | [AC_CHECK_HEADERS(readline.h, [], |
| [AC_CHECK_HEADERS(readline.h, [], | [AC_MSG_ERROR([readline header not found |
| [AC_MSG_ERROR([readline header not found | |
| If you have readline already installed, see config.log for details on the | 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. | failure. It is possible the compiler isn't looking in the proper directory. |
| Use --without-readline to disable readline support.])])])]) | Use --without-readline to disable readline support.])])]) |
| AC_CHECK_HEADERS(readline/history.h, [], | AC_CHECK_HEADERS(readline/history.h, [], |
| [AC_CHECK_HEADERS(editline/history.h, [], | [AC_CHECK_HEADERS(history.h, [], |
| [AC_CHECK_HEADERS(history.h, [], | [AC_MSG_ERROR([history header not found |
| [AC_MSG_ERROR([history header not found | |
| If you have readline already installed, see config.log for details on the | 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. | failure. It is possible the compiler isn't looking in the proper directory. |
| Use --without-readline to disable readline support.])])])]) | 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 | fi |
| if test "$with_zlib" = yes; then | if test "$with_zlib" = yes; then |
| Line 738 failure. It is possible the compiler is | Line 970 failure. It is possible the compiler is |
| Use --without-zlib to disable zlib support.])]) | Use --without-zlib to disable zlib support.])]) |
| fi | fi |
| if test "$with_krb4" = yes ; then | if test "$with_gssapi" = yes ; then |
| AC_CHECK_HEADER(krb.h, [], [AC_MSG_ERROR([header file <krb.h> is required for Kerberos 4])]) | AC_CHECK_HEADERS(gssapi/gssapi.h, [], |
| [AC_CHECK_HEADERS(gssapi.h, [], [AC_MSG_ERROR([gssapi.h header file is required for GSSAPI])])]) | |
| fi | fi |
| if test "$with_krb5" = yes ; then | if test "$with_krb5" = yes ; then |
| AC_CHECK_HEADER(krb5.h, [], [AC_MSG_ERROR([header file <krb5.h> is required for Kerberos 5])]) | AC_CHECK_HEADER(krb5.h, [], [AC_MSG_ERROR([header file <krb5.h> is required for Kerberos 5])]) |
| AC_CHECK_HEADER(com_err.h, [], [AC_MSG_ERROR([header file <com_err.h> is required for Kerberos 5])]) | |
| fi | fi |
| if test "$with_openssl" = yes ; then | if test "$with_openssl" = yes ; then |
| AC_CHECK_HEADER(openssl/ssl.h, [], [AC_MSG_ERROR([header file <openssl/ssl.h> is required for OpenSSL])]) | AC_CHECK_HEADER(openssl/ssl.h, [], [AC_MSG_ERROR([header file <openssl/ssl.h> is required for OpenSSL])]) |
| AC_CHECK_HEADER(openssl/err.h, [], [AC_MSG_ERROR([header file <openssl/err.h> is required for OpenSSL])]) | AC_CHECK_HEADER(openssl/err.h, [], [AC_MSG_ERROR([header file <openssl/err.h> is required for OpenSSL])]) |
| AC_CHECK_FUNCS([ERR_set_mark]) | |
| fi | fi |
| if test "$with_pam" = yes ; then | if test "$with_pam" = yes ; then |
| Line 758 if test "$with_pam" = yes ; then | Line 991 if test "$with_pam" = yes ; then |
| [AC_MSG_ERROR([header file <security/pam_appl.h> or <pam/pam_appl.h> is required for PAM.])])]) | [AC_MSG_ERROR([header file <security/pam_appl.h> or <pam/pam_appl.h> is required for PAM.])])]) |
| fi | fi |
| if test "$with_rendezvous" = yes ; then | if test "$with_libxml" = yes ; then |
| AC_CHECK_HEADER(DNSServiceDiscovery/DNSServiceDiscovery.h, [], [AC_MSG_ERROR([header file <DNSServiceDiscovery/DNSServiceDiscovery.h> is required for Rendezvous])]) | AC_CHECK_HEADER(libxml/parser.h, [], [AC_MSG_ERROR([header file <libxml/parser.h> is required for XML support])]) |
| fi | |
| if test "$with_libxslt" = yes ; then | |
| AC_CHECK_HEADER(libxslt/xslt.h, [], [AC_MSG_ERROR([header file <libxslt/xslt.h> 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 <ldap.h> is required for LDAP])]) | |
| else | |
| AC_CHECK_HEADERS(winldap.h, [], | |
| [AC_MSG_ERROR([header file <winldap.h> is required for LDAP])], | |
| [AC_INCLUDES_DEFAULT | |
| #include <windows.h> | |
| ]) | |
| fi | |
| fi | |
| if test "$with_bonjour" = yes ; then | |
| AC_CHECK_HEADER(DNSServiceDiscovery/DNSServiceDiscovery.h, [], [AC_MSG_ERROR([header file <DNSServiceDiscovery/DNSServiceDiscovery.h> 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 <ossp/uuid.h> or <uuid.h> is required for OSSP-UUID])])]) | |
| fi | fi |
| Line 768 fi | Line 1029 fi |
| ## | ## |
| m4_defun([AC_PROG_CC_STDC], []) dnl We don't want that. | m4_defun([AC_PROG_CC_STDC], []) dnl We don't want that. |
| AC_C_BIGENDIAN | |
| AC_C_CONST | AC_C_CONST |
| AC_C_INLINE | AC_C_INLINE |
| AC_C_STRINGIZE | AC_C_STRINGIZE |
| Line 778 PGAC_STRUCT_TIMEZONE | Line 1040 PGAC_STRUCT_TIMEZONE |
| PGAC_UNION_SEMUN | PGAC_UNION_SEMUN |
| PGAC_STRUCT_SOCKADDR_UN | PGAC_STRUCT_SOCKADDR_UN |
| PGAC_STRUCT_SOCKADDR_STORAGE | PGAC_STRUCT_SOCKADDR_STORAGE |
| PGAC_STRUCT_SOCKADDR_STORAGE_SS_FAMILY | PGAC_STRUCT_SOCKADDR_STORAGE_MEMBERS |
| PGAC_STRUCT_ADDRINFO | PGAC_STRUCT_ADDRINFO |
| AC_CHECK_TYPES([struct cmsgcred, struct fcred, struct sockcred], [], [], | AC_CHECK_TYPES([struct cmsgcred, struct fcred, struct sockcred], [], [], |
| Line 787 AC_CHECK_TYPES([struct cmsgcred, struct | Line 1049 AC_CHECK_TYPES([struct cmsgcred, struct |
| #include <sys/socket.h> | #include <sys/socket.h> |
| #include <sys/ucred.h>]) | #include <sys/ucred.h>]) |
| AC_CHECK_TYPES([struct option], [], [], | |
| [#ifdef HAVE_GETOPT_H | |
| #include <getopt.h> | |
| #endif]) | |
| if test "$with_zlib" = yes; then | if test "$with_zlib" = yes; then |
| # Check that <zlib.h> defines z_streamp (versions before about 1.0.4 | # Check that <zlib.h> defines z_streamp (versions before about 1.0.4 |
| # did not). While we could work around the lack of z_streamp, it | # did not). While we could work around the lack of z_streamp, it |
| Line 808 if test "$with_krb5" = yes; then | Line 1075 if test "$with_krb5" = yes; then |
| [AC_MSG_ERROR([could not determine how to extract Kerberos 5 error messages])], | [AC_MSG_ERROR([could not determine how to extract Kerberos 5 error messages])], |
| [#include <krb5.h>])], | [#include <krb5.h>])], |
| [#include <krb5.h>]) | [#include <krb5.h>]) |
| # 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.h>], | |
| [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 | fi |
| Line 819 PGAC_VAR_INT_TIMEZONE | Line 1095 PGAC_VAR_INT_TIMEZONE |
| AC_FUNC_ACCEPT_ARGTYPES | AC_FUNC_ACCEPT_ARGTYPES |
| PGAC_FUNC_GETTIMEOFDAY_1ARG | PGAC_FUNC_GETTIMEOFDAY_1ARG |
| # SunOS doesn't handle negative byte comparisons properly with +/- return | AC_CHECK_FUNCS([cbrt dlopen fcvt fdatasync getpeereid getrlimit memmove poll pstat readlink setproctitle setsid sigprocmask symlink sysconf towlower utime utimes waitpid wcstombs]) |
| AC_FUNC_MEMCMP | |
| AC_CHECK_FUNCS([cbrt dlopen fcvt fdatasync getpeereid memmove poll pstat setproctitle setsid sigprocmask symlink sysconf utime utimes waitpid]) | |
| AC_CHECK_DECLS(fdatasync, [], [], [#include <unistd.h>]) | AC_CHECK_DECLS(fdatasync, [], [], [#include <unistd.h>]) |
| AC_CHECK_DECLS(posix_fadvise, [], [], [#include <fcntl.h>]) | |
| AC_CHECK_DECLS([strlcat, strlcpy]) | |
| # This is probably only present on Darwin, but may as well check always | |
| AC_CHECK_DECLS(F_FULLFSYNC, [], [], [#include <fcntl.h>]) | |
| HAVE_IPV6=no | |
| AC_CHECK_TYPE([struct sockaddr_in6], | AC_CHECK_TYPE([struct sockaddr_in6], |
| [AC_CHECK_FUNC(inet_ntop, | [AC_DEFINE(HAVE_IPV6, 1, [Define to 1 if you have support for IPv6.]) |
| [AC_DEFINE(HAVE_IPV6, 1, [Define to 1 if you have support for IPv6.])])], | HAVE_IPV6=yes], |
| [], | [], |
| [$ac_includes_default | [$ac_includes_default |
| #include <netinet/in.h>]) | #include <netinet/in.h>]) |
| AC_SUBST(HAVE_IPV6) | |
| AC_CACHE_CHECK([for PS_STRINGS], [pgac_cv_var_PS_STRINGS], | AC_CACHE_CHECK([for PS_STRINGS], [pgac_cv_var_PS_STRINGS], |
| [AC_TRY_LINK( | [AC_TRY_LINK( |
| Line 850 fi | Line 1129 fi |
| # We use our snprintf.c emulation if either snprintf() or vsnprintf() | # We use our snprintf.c emulation if either snprintf() or vsnprintf() |
| # is missing. Yes, there are machines that have only one. We may | # 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 | # also decide to use snprintf.c if snprintf() is present but does not |
| # have working "long long int" support -- see below. | # have all the features we need --- see below. |
| pgac_need_repl_snprintf=no | if test "$PORTNAME" = "win32"; then |
| AC_CHECK_FUNCS(snprintf, [], pgac_need_repl_snprintf=yes) | # Win32 gets snprintf.c built unconditionally. |
| AC_CHECK_FUNCS(vsnprintf, [], pgac_need_repl_snprintf=yes) | # |
| # 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 <libintl.h>. | |
| # | |
| # 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 <stdio.h> declares snprintf() and vsnprintf(); if not, | # Check whether <stdio.h> declares snprintf() and vsnprintf(); if not, |
| Line 865 AC_CHECK_FUNCS(vsnprintf, [], pgac_need_ | Line 1173 AC_CHECK_FUNCS(vsnprintf, [], pgac_need_ |
| AC_CHECK_DECLS([snprintf, vsnprintf]) | AC_CHECK_DECLS([snprintf, vsnprintf]) |
| # do this one the hard way in case isinf() is a macro | dnl Cannot use AC_CHECK_FUNC because isinf may be a macro |
| AC_CACHE_CHECK([for isinf], ac_cv_func_isinf, | AC_CACHE_CHECK([for isinf], ac_cv_func_isinf, |
| [AC_TRY_LINK( | [AC_TRY_LINK([ |
| [#include <math.h> | #include <math.h> |
| double glob_double; | |
| ], | ], |
| [double x = 0.0; int res = isinf(x);], | [return isinf(glob_double) ? 0 : 1;], |
| [ac_cv_func_isinf=yes], | [ac_cv_func_isinf=yes], |
| [ac_cv_func_isinf=no])]) | [ac_cv_func_isinf=no])]) |
| Line 882 else | Line 1191 else |
| AC_CHECK_FUNCS([fpclass fp_class fp_class_d class], [break]) | AC_CHECK_FUNCS([fpclass fp_class fp_class_d class], [break]) |
| fi | fi |
| AC_REPLACE_FUNCS([crypt fseeko getopt getopt_long getrusage inet_aton random rint srandom strcasecmp strdup strerror strtol strtoul]) | # Some versions of libedit contain strlcpy(); so disregard that library while |
| # checking for these standard libc functions. | |
| # system's version of getaddrinfo(), if any, may be used only if we found | pgac_save_LIBS="$LIBS" |
| # a definition for struct addrinfo; see notes in src/include/getaddrinfo.h | LIBS=`echo "$LIBS" | sed -e 's/-ledit//g' -e 's/-lreadline//g'` |
| AC_REPLACE_FUNCS([crypt 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 | if test x"$ac_cv_type_struct_addrinfo" = xyes ; then |
| AC_REPLACE_FUNCS([getaddrinfo]) | AC_REPLACE_FUNCS([getaddrinfo]) |
| else | else |
| AC_LIBOBJ(getaddrinfo) | AC_LIBOBJ(getaddrinfo) |
| fi | fi |
| # BSD/OS & NetBSD use a custom fseeko/ftello built on fsetpos/fgetpos | # Similarly, use system's getopt_long() only if system provides struct option. |
| # We override the previous test that said fseeko/ftello didn't exist | # Solaris' getopt() doesn't do what we want for long options, so always use |
| # OS tests are also done in include/c.h and port/fseeko.c | # our versions on that platform. |
| case $host_os in bsdi*|netbsd*) | if test "$PORTNAME" = "solaris"; then |
| ac_cv_func_fseeko=yes | AC_LIBOBJ(getopt) |
| esac | AC_LIBOBJ(getopt_long) |
| elif test x"$ac_cv_type_struct_option" = xyes ; then | |
| # Solaris has a very slow qsort in certain cases, so we replace it. | AC_REPLACE_FUNCS([getopt_long]) |
| case $host_os in solaris*) | else |
| AC_LIBOBJ(qsort) ;; | AC_LIBOBJ(getopt_long) |
| esac | fi |
| # Win32 can't to rename or unlink on an open file | # Win32 support |
| case $host_os in mingw*) | if test "$PORTNAME" = "win32"; then |
| AC_LIBOBJ(dirmod) | AC_REPLACE_FUNCS(gettimeofday) |
| AC_LIBOBJ(copydir) | AC_LIBOBJ(kill) |
| AC_LIBOBJ(gettimeofday) ;; | AC_LIBOBJ(open) |
| esac | 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 | if test "$with_readline" = yes; then |
| PGAC_VAR_RL_COMPLETION_APPEND_CHARACTER | PGAC_VAR_RL_COMPLETION_APPEND_CHARACTER |
| Line 918 if test "$with_readline" = yes; then | Line 1241 if test "$with_readline" = yes; then |
| fi | fi |
| dnl Cannot use AC_CHECK_FUNC because finite may be a macro | |
| AC_MSG_CHECKING(for finite) | |
| AC_TRY_LINK([#include <math.h>], | |
| [int dummy=finite(1.0);], | |
| [AC_DEFINE(HAVE_FINITE, 1, [Define 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 Cannot use AC_CHECK_FUNC because sigsetjmp may be a macro |
| dnl (especially on GNU libc) | dnl (especially on GNU libc) |
| dnl See also comments in c.h. | dnl See also comments in c.h. |
| Line 936 AC_TRY_LINK([#include <setjmp.h>], | Line 1251 AC_TRY_LINK([#include <setjmp.h>], |
| AC_MSG_RESULT(yes)], | AC_MSG_RESULT(yes)], |
| [AC_MSG_RESULT(no)]) | [AC_MSG_RESULT(no)]) |
| AC_DECL_SYS_SIGLIST | |
| AC_CHECK_FUNC(syslog, | AC_CHECK_FUNC(syslog, |
| [AC_CHECK_HEADER(syslog.h, | [AC_CHECK_HEADER(syslog.h, |
| [AC_DEFINE(HAVE_SYSLOG, 1, [Define to 1 if you have the syslog interface.])])]) | [AC_DEFINE(HAVE_SYSLOG, 1, [Define to 1 if you have the syslog interface.])])]) |
| Line 957 AC_CHECK_FUNCS(atexit, [], | Line 1274 AC_CHECK_FUNCS(atexit, [], |
| [AC_CHECK_FUNCS(on_exit, [], | [AC_CHECK_FUNCS(on_exit, [], |
| [AC_MSG_ERROR([neither atexit() nor on_exit() found])])]) | [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 | # Pthreads |
| # | # |
| # For each platform, we need to know about any special compile and link | # For each platform, we need to know about any special compile and link |
| # libraries, and whether the normal C function names are thread-safe. | # 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. |
| NEED_REENTRANT_FUNC_NAMES=no | # WIN32 doesn't need the pthread tests; it always uses threads |
| if test "$with_threads" = yes; then | if test "$enable_thread_safety" = yes -a "$PORTNAME" != "win32"; then |
| AC_CHECK_HEADER(pthread.h, [], [AC_MSG_ERROR([pthread.h not found, required for --with-threads])]) | 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" | |
| if test "$SUPPORTS_THREADS" != yes; then | |
| # 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([ | AC_MSG_ERROR([ |
| Cannot enable threads on your platform. | PostgreSQL does not support platforms that require a special compiler |
| Please report your platform threading info to the PostgreSQL mailing lists | for thread safety.]) |
| so it can be added to the next release. Report any compile flags, link flags, | |
| functions, or libraries required for threading support. | |
| ]) | |
| fi | fi |
| fi | |
| AC_SUBST(THREAD_CFLAGS) | |
| AC_SUBST(THREAD_LIBS) | |
| 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 |
| # Check for re-entrant versions of certain functions | |
| # | |
| # Include special flags if threads are enabled _and_ if required for | |
| # threading on this platform. Some platforms have *_r functions but | |
| # their natively named funcs are threadsafe, and should be used instead. | |
| # | |
| # One trick here is that if the don't call AC_CHECK_FUNCS, the | |
| # functions are marked "not found", which is perfect. | |
| # | |
| if test "$NEED_REENTRANT_FUNC_NAMES" = yes ; then | |
| _CFLAGS="$CFLAGS" | _CFLAGS="$CFLAGS" |
| _LIB="$LIBS" | _LIBS="$LIBS" |
| CFLAGS="$CFLAGS $TREAD_CFLAGS" | CFLAGS="$CFLAGS $PTHREAD_CFLAGS" |
| LIBS="$LIBS $THREAD_LIBS" | 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]) | 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" | CFLAGS="$_CFLAGS" |
| LIB="$_LIBS" | 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 | fi |
| AC_SUBST(LDAP_LIBS_FE) | |
| AC_SUBST(LDAP_LIBS_BE) | |
| # This test makes sure that run tests work at all. Sometimes a shared | # This test makes sure that run tests work at all. Sometimes a shared |
| Line 1012 AC_TRY_RUN([int main() { return 0; }], | Line 1380 AC_TRY_RUN([int main() { return 0; }], |
| [AC_MSG_RESULT(ok)], | [AC_MSG_RESULT(ok)], |
| [AC_MSG_RESULT(failed) | [AC_MSG_RESULT(failed) |
| AC_MSG_ERROR([[ | AC_MSG_ERROR([[ |
| *** Could not execute a simple test program. This may be a problem | Could not execute a simple test program. This may be a problem |
| *** related to locating shared libraries. Check the file 'config.log' | related to locating shared libraries. Check the file 'config.log' |
| *** for the exact reason.]])], | for the exact reason.]])], |
| [AC_MSG_RESULT([cross-compiling])]) | [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 Check to see if we have a working 64-bit integer type. |
| dnl This breaks down into two steps: | dnl This breaks down into two steps: |
| Line 1053 fi | Line 1434 fi |
| # If we found "long int" is 64 bits, assume snprintf handles it. If | # 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 | # we found we need to use "long long int", better check. We cope with |
| # snprintfs that use either %lld, %qd, or %I64d as the format. If | # snprintfs that use %lld, %qd, or %I64d as the format. If none of these |
| # neither works, fall back to our own snprintf emulation (which we | # work, fall back to our own snprintf emulation (which we know uses %lld). |
| # know uses %lld). | |
| if test "$HAVE_LONG_LONG_INT_64" = yes ; then | if test "$HAVE_LONG_LONG_INT_64" = yes ; then |
| if test $pgac_need_repl_snprintf = no; then | if test $pgac_need_repl_snprintf = no; then |
| Line 1069 if test "$HAVE_LONG_LONG_INT_64" = yes ; | Line 1449 if test "$HAVE_LONG_LONG_INT_64" = yes ; |
| # Here if we previously decided we needed to use our own snprintf | # Here if we previously decided we needed to use our own snprintf |
| LONG_LONG_INT_FORMAT='%lld' | LONG_LONG_INT_FORMAT='%lld' |
| fi | fi |
| LONG_LONG_UINT_FORMAT=`echo "$LONG_LONG_INT_FORMAT" | sed 's/d$/u/'` | |
| INT64_FORMAT="\"$LONG_LONG_INT_FORMAT\"" | INT64_FORMAT="\"$LONG_LONG_INT_FORMAT\"" |
| UINT64_FORMAT="\"$LONG_LONG_UINT_FORMAT\"" | |
| else | else |
| # Here if we are not using 'long long int' at all | # Here if we are not using 'long long int' at all |
| INT64_FORMAT='"%ld"' | INT64_FORMAT='"%ld"' |
| UINT64_FORMAT='"%lu"' | |
| fi | fi |
| AC_DEFINE_UNQUOTED(INT64_FORMAT, $INT64_FORMAT, | AC_DEFINE_UNQUOTED(INT64_FORMAT, $INT64_FORMAT, |
| [Define to the appropriate snprintf format for 64-bit ints, if any.]) | [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 | if test $pgac_need_repl_snprintf = yes; then |
| AC_DEFINE(USE_REPL_SNPRINTF, 1, [Use replacement snprintf() functions.]) | |
| AC_LIBOBJ(snprintf) | AC_LIBOBJ(snprintf) |
| fi | fi |
| # Need a #define for the size of Datum (unsigned long) | # Need a #define for the size of Datum (unsigned long) |
| AC_CHECK_SIZEOF([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]) | |
| # 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-byval 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-byval disable float8 passed by value]) | |
| else | |
| PGAC_ARG_BOOL(enable, float8-byval, no, [ --disable-float8-byval 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. | # Determine memory alignment requirements for the basic C data types. |
| PGAC_CHECK_ALIGNOF(short) | AC_CHECK_ALIGNOF(short) |
| PGAC_CHECK_ALIGNOF(int) | AC_CHECK_ALIGNOF(int) |
| PGAC_CHECK_ALIGNOF(long) | AC_CHECK_ALIGNOF(long) |
| if test x"$HAVE_LONG_LONG_INT_64" = x"yes" ; then | if test x"$HAVE_LONG_LONG_INT_64" = x"yes" ; then |
| PGAC_CHECK_ALIGNOF(long long int) | AC_CHECK_ALIGNOF(long long int) |
| fi | fi |
| PGAC_CHECK_ALIGNOF(double) | AC_CHECK_ALIGNOF(double) |
| # Compute maximum alignment of any basic type. | # Compute maximum alignment of any basic type. |
| # We assume long's alignment is at least as strong as char, short, or int; | # 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. | # but we must check long long (if it exists) and double. |
| MAX_ALIGNOF=$pgac_cv_alignof_long | MAX_ALIGNOF=$ac_cv_alignof_long |
| if test $MAX_ALIGNOF -lt $pgac_cv_alignof_double ; then | if test $MAX_ALIGNOF -lt $ac_cv_alignof_double ; then |
| MAX_ALIGNOF=$pgac_cv_alignof_double | MAX_ALIGNOF=$ac_cv_alignof_double |
| fi | fi |
| if test x"$HAVE_LONG_LONG_INT_64" = xyes && test $MAX_ALIGNOF -lt $pgac_cv_alignof_long_long_int ; then | if test x"$HAVE_LONG_LONG_INT_64" = xyes && test $MAX_ALIGNOF -lt $ac_cv_alignof_long_long_int ; then |
| MAX_ALIGNOF="$pgac_cv_alignof_long_long_int" | MAX_ALIGNOF="$ac_cv_alignof_long_long_int" |
| fi | fi |
| AC_DEFINE_UNQUOTED(MAXIMUM_ALIGNOF, $MAX_ALIGNOF, [Define as the maximum alignment requirement of any C data type.]) | AC_DEFINE_UNQUOTED(MAXIMUM_ALIGNOF, $MAX_ALIGNOF, [Define as the maximum alignment requirement of any C data type.]) |
| Line 1122 AC_CHECK_TYPES([int8, uint8, int64, uint | Line 1546 AC_CHECK_TYPES([int8, uint8, int64, uint |
| AC_CHECK_TYPES(sig_atomic_t, [], [], [#include <signal.h>]) | AC_CHECK_TYPES(sig_atomic_t, [], [], [#include <signal.h>]) |
| # 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 | 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 | if test $ac_cv_func_fseeko = yes; then |
| AC_SYS_LARGEFILE | AC_SYS_LARGEFILE |
| fi | 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 | |
| # Select semaphore implementation type. | # Select semaphore implementation type. |
| if test x"$USE_NAMED_POSIX_SEMAPHORES" = x"1" ; then | if test "$PORTNAME" != "win32"; then |
| AC_DEFINE(USE_NAMED_POSIX_SEMAPHORES, 1, [Define to select named POSIX semaphores.]) | if test x"$USE_NAMED_POSIX_SEMAPHORES" = x"1" ; then |
| SEMA_IMPLEMENTATION="src/backend/port/posix_sema.c" | AC_DEFINE(USE_NAMED_POSIX_SEMAPHORES, 1, [Define to select named POSIX semaphores.]) |
| 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" | SEMA_IMPLEMENTATION="src/backend/port/posix_sema.c" |
| else | else |
| AC_DEFINE(USE_SYSV_SEMAPHORES, 1, [Define to select SysV-style semaphores.]) | if test x"$USE_UNNAMED_POSIX_SEMAPHORES" = x"1" ; then |
| SEMA_IMPLEMENTATION="src/backend/port/sysv_sema.c" | 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 | fi |
| else | |
| AC_DEFINE(USE_WIN32_SEMAPHORES, 1, [Define to select Win32-style semaphores.]) | |
| SEMA_IMPLEMENTATION="src/backend/port/win32_sema.c" | |
| fi | fi |
| # Select shared-memory implementation type. | # Select shared-memory implementation type. |
| AC_DEFINE(USE_SYSV_SHARED_MEMORY, 1, [Define to select SysV-style shared memory.]) | if test "$PORTNAME" != "win32"; then |
| SHMEM_IMPLEMENTATION="src/backend/port/sysv_shmem.c" | 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 | if test "$enable_nls" = yes ; then |
| Line 1158 if test "$with_tcl" = yes; then | Line 1632 if test "$with_tcl" = yes; then |
| PGAC_EVAL_TCLCONFIGSH([$TCL_CONFIG_SH], | PGAC_EVAL_TCLCONFIGSH([$TCL_CONFIG_SH], |
| [TCL_INCLUDE_SPEC,TCL_LIB_FILE,TCL_LIBS,TCL_LIB_SPEC,TCL_SHARED_BUILD]) | [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 | 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 <tcl.h> | |
| ac_save_CPPFLAGS=$CPPFLAGS | |
| CPPFLAGS="$TCL_INCLUDE_SPEC $CPPFLAGS" | |
| AC_CHECK_HEADER(tcl.h, [], [AC_MSG_ERROR([header file <tcl.h> is required for Tcl])]) | |
| CPPFLAGS=$ac_save_CPPFLAGS | |
| fi | 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 | # Check for DocBook and tools |
| # | # |
| PGAC_PROG_NSGMLS | PGAC_PROG_NSGMLS |
| PGAC_PROG_JADE | PGAC_PROG_JADE |
| PGAC_CHECK_DOCBOOK(3.1) | PGAC_CHECK_DOCBOOK(4.2) |
| PGAC_PATH_DOCBOOK_STYLESHEETS | PGAC_PATH_DOCBOOK_STYLESHEETS |
| PGAC_PATH_COLLATEINDEX | PGAC_PATH_COLLATEINDEX |
| AC_CHECK_PROGS(SGMLSPL, sgmlspl) | 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 | |
| # 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 libraries 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 | # prepare build tree if outside source tree |
| # Note 1: test -ef might not exist, but it's more reliable than `pwd`. | # 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 | # Note 2: /bin/pwd might be better than shell's built-in at getting |
| # a symlink-free name. | # 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 |
| if ( test "$srcdir" -ef . ) >/dev/null 2>&1 || test "`cd $srcdir && /bin/pwd`" = "`/bin/pwd`"; then | vpath_build=no |
| : | else |
| else | vpath_build=yes |
| AC_SUBST(vpath_build, yes) | if test "$no_create" != yes; then |
| _AS_ECHO_N([preparing build tree... ]) | _AS_ECHO_N([preparing build tree... ]) |
| pgac_abs_top_srcdir=`cd "$srcdir" && pwd` | pgac_abs_top_srcdir=`cd "$srcdir" && pwd` |
| $SHELL "$ac_aux_dir/prep_buildtree" "$pgac_abs_top_srcdir" "." \ | $SHELL "$ac_aux_dir/prep_buildtree" "$pgac_abs_top_srcdir" "." \ |
| Line 1194 if test "$no_create" != yes; then | Line 1738 if test "$no_create" != yes; then |
| AC_MSG_RESULT(done) | AC_MSG_RESULT(done) |
| fi | fi |
| fi | fi |
| AC_SUBST(vpath_build) | |
| AC_CONFIG_FILES([GNUmakefile src/Makefile.global]) | AC_CONFIG_FILES([GNUmakefile src/Makefile.global]) |
| Line 1207 AC_CONFIG_LINKS([ | Line 1752 AC_CONFIG_LINKS([ |
| src/Makefile.port:src/makefiles/Makefile.${template} | 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], | AC_CONFIG_HEADERS([src/include/pg_config.h], |
| [ | [ |
| # Update timestamp for pg_config.h (see Makefile.global) | # Update timestamp for pg_config.h (see Makefile.global) |
| echo >src/include/stamp-h | echo >src/include/stamp-h |
| ]) | ]) |
| AC_CONFIG_HEADERS([src/interfaces/ecpg/include/ecpg_config.h]) | |
| AC_OUTPUT | AC_OUTPUT |
| # Warn about unknown options | |
| PGAC_ARG_CHECK |