| dnl Process this file with autoconf to produce a configure script. |
| dnl $PostgreSQL: pgsql/configure.in,v 1.546.2.11 2009/01/30 02:59:28 scrappy Exp $ |
| dnl |
| dnl Developers, please strive to achieve this order: |
| dnl |
| dnl 0. Initialization and options processing |
| dnl 1. Programs |
| dnl 2. Libraries |
| dnl 3. Header files |
| dnl 4. Types |
| dnl 5. Structures |
| dnl 6. Compiler characteristics |
| dnl 7. Functions, global variables |
| dnl 8. System services |
| dnl |
| dnl Read the Autoconf manual for details. |
| dnl |
| m4_pattern_forbid(^PGAC_)dnl to catch undefined macros |
| |
| AC_INIT([HAWQ], [8.2.15], [https://issues.apache.org/jira/browse/HAWQ]) |
| |
| AC_PREREQ(2.63) |
| dnl m4_if(m4_defn([m4_PACKAGE_VERSION]), [2.63], [], [m4_fatal([Autoconf version 2.63 is required. |
| dnl Untested combinations of 'autoconf' and PostgreSQL versions are not |
| dnl recommended. You can remove the check from 'configure.in' but it is then |
| dnl your responsibility whether the result works or not.])]) |
| AC_COPYRIGHT([Copyright (c) 1996-2010, PostgreSQL Global Development Group]) |
| AC_CONFIG_SRCDIR([src/backend/access/common/heaptuple.c]) |
| AC_CONFIG_AUX_DIR(config) |
| AC_PREFIX_DEFAULT(/usr/local/hawq) |
| AC_SUBST(configure_args, [$ac_configure_args]) |
| |
| AC_DEFINE_UNQUOTED(PG_VERSION, "$PACKAGE_VERSION", [Postgres version HAWQ is based on]) |
| [PG_MAJORVERSION=`expr "$PACKAGE_VERSION" : '\([0-9][0-9]*\.[0-9][0-9]*\)'`] |
| AC_SUBST(PG_MAJORVERSION) |
| AC_DEFINE_UNQUOTED(PG_MAJORVERSION, "$PG_MAJORVERSION", [PostgreSQL major version as a string]) |
| |
| AC_CANONICAL_HOST |
| |
| template= |
| AC_MSG_CHECKING([which template to use]) |
| |
| PGAC_ARG_REQ(with, template, [], |
| [ |
| case $withval in |
| list) echo; ls "$srcdir/src/template"; exit;; |
| *) if test -f "$srcdir/src/template/$with_template" ; then |
| template=$withval |
| else |
| AC_MSG_ERROR(['$withval' is not a valid template name. Use 'list' for a list.]) |
| fi;; |
| esac |
| ], |
| [ |
| # --with-template not given |
| |
| case $host_os in |
| aix*) template=aix ;; |
| bsdi*) template=bsdi ;; |
| cygwin*) template=cygwin ;; |
| darwin*) template=darwin ;; |
| dragonfly*) template=netbsd ;; |
| dgux*) template=dgux ;; |
| freebsd*) template=freebsd ;; |
| hpux*) template=hpux ;; |
| irix*) template=irix ;; |
| linux*|gnu*|k*bsd*-gnu) |
| template=linux ;; |
| mingw*) template=win32 ;; |
| netbsd*) template=netbsd ;; |
| nextstep*) template=nextstep ;; |
| openbsd*) template=openbsd ;; |
| osf*) template=osf ;; |
| sco*) template=sco ;; |
| solaris*) template=solaris ;; |
| sunos*) template=sunos4 ;; |
| sysv4.2*) |
| case $host_vendor in |
| univel) template=univel ;; |
| esac ;; |
| sysv4*) template=svr4 ;; |
| sysv5*) template=unixware ;; |
| ultrix*) template=ultrix4 ;; |
| esac |
| |
| if test x"$template" = x"" ; then |
| AC_MSG_ERROR([[ |
| ******************************************************************* |
| PostgreSQL has apparently not been ported to your platform yet. |
| To try a manual configuration, look into the src/template directory |
| for a similar platform and use the '--with-template=' option. |
| |
| Please also contact <pgsql-bugs@postgresql.org> to see about |
| rectifying this. Include the above 'checking host system type...' |
| line. |
| ******************************************************************* |
| ]]) |
| fi |
| |
| ]) |
| |
| AC_MSG_RESULT([$template]) |
| |
| PORTNAME=$template |
| AC_SUBST(PORTNAME) |
| |
| # Initialize default assumption that we do not need separate assembly code |
| # for TAS (test-and-set). This can be overridden by the template file |
| # when it's executed. |
| need_tas=no |
| tas_file=dummy.s |
| |
| |
| |
| ## |
| ## Command line options |
| ## |
| |
| # |
| # Installation directory for documentation |
| # |
| PGAC_ARG(with, docdir, [ --with-docdir=DIR install the documentation in DIR [[PREFIX/docs]] |
| --without-docdir do not install the documentation], |
| [AC_MSG_ERROR([option --with-docdir requires an argument])], |
| [docdir=], |
| [docdir=$withval], |
| [docdir='${prefix}/docs']) |
| 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]) |
| |
| |
| # |
| # Add non-standard directories to the library search path |
| # |
| PGAC_ARG_REQ(with, libraries, [ --with-libraries=DIRS look for additional libraries in DIRS], |
| [LIBRARY_DIRS=$withval]) |
| |
| PGAC_ARG_REQ(with, libs, [ --with-libs=DIRS alternative spelling of --with-libraries], |
| [LIBRARY_DIRS=$withval]) |
| |
| |
| # |
| # 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, 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]) |
| |
| |
| # |
| # NLS |
| # |
| AC_MSG_CHECKING([whether NLS is wanted]) |
| PGAC_ARG_OPTARG(enable, nls, |
| [[ --enable-nls[=LANGUAGES] enable Native Language Support]], |
| [], |
| [WANTED_LANGUAGES=$enableval], |
| [AC_DEFINE(ENABLE_NLS, 1, |
| [Define to 1 if you want National Language Support. (--enable-nls)])]) |
| AC_MSG_RESULT([$enable_nls]) |
| AC_SUBST(enable_nls) |
| AC_SUBST(WANTED_LANGUAGES) |
| |
| # |
| # Default port number (--with-pgport), default 5432 |
| # |
| AC_MSG_CHECKING([for default port number]) |
| PGAC_ARG_REQ(with, pgport, [ --with-pgport=PORTNUM change default port number [[5432]]], |
| [default_port=$withval], |
| [default_port=5432]) |
| AC_MSG_RESULT([$default_port]) |
| # Need both of these because some places want an integer and some a string |
| AC_DEFINE_UNQUOTED(DEF_PGPORT, ${default_port}, |
| [Define to the default TCP port number on which the server listens and |
| to which clients will try to connect. This can be overridden at run-time, |
| but it's convenient if your clients have the right default compiled in. |
| (--with-pgport=PORTNUM)]) |
| AC_DEFINE_UNQUOTED(DEF_PGPORT_STR, "${default_port}", |
| [Define to the default TCP port number as a string constant.]) |
| AC_SUBST(default_port) |
| |
| # |
| # Option to disable shared libraries |
| # |
| PGAC_ARG_BOOL(enable, shared, yes, |
| [ --disable-shared do not build shared libraries]) |
| AC_SUBST(enable_shared) |
| |
| # |
| # '-rpath'-like feature can be disabled |
| # |
| PGAC_ARG_BOOL(enable, rpath, yes, |
| [ --disable-rpath do not embed shared library search path in executables]) |
| AC_SUBST(enable_rpath) |
| |
| # |
| # Spinlocks |
| # |
| PGAC_ARG_BOOL(enable, spinlocks, yes, |
| [ --disable-spinlocks do not use spinlocks]) |
| |
| # |
| # --enable-debug adds -g to compiler flags |
| # |
| PGAC_ARG_BOOL(enable, debug, no, |
| [ --enable-debug 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 ]) |
| AC_SUBST(enable_profiling) |
| |
| # |
| # --enable-coverage enables generation of code coverage metrics with gcov |
| # |
| PGAC_ARG_BOOL(enable, coverage, no, |
| [ --enable-coverage 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], |
| [AC_DEFINE([ENABLE_DTRACE], 1, |
| [Define to 1 to enable DTrace support. (--enable-dtrace)]) |
| AC_CHECK_PROGS(DTRACE, dtrace) |
| if test -z "$DTRACE"; then |
| AC_MSG_ERROR([dtrace not found]) |
| fi |
| AC_SUBST(DTRACEFLAGS)]) |
| AC_SUBST(enable_dtrace) |
| |
| # |
| # C compiler |
| # |
| |
| # 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]) |
| |
| case $template in |
| aix) pgac_cc_list="gcc xlc";; |
| irix) pgac_cc_list="cc";; # no gcc |
| *) pgac_cc_list="gcc cc";; |
| esac |
| |
| 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]]) |
| |
| # 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 |
| |
| # |
| # Read the template |
| # |
| . "$srcdir/src/template/$template" || exit |
| |
| # CFLAGS are selected so: |
| # If the user specifies something in the environment, that is used. |
| # else: If the template file set something, that is used. |
| # else: If coverage was enabled, don't set anything. |
| # else: If the compiler is GCC, then we use -O3. |
| # else: If the compiler is something else, then we use -O, unless debugging. |
| |
| 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 |
| if test "$enable_debug" == yes; then |
| CFLAGS="-O0" |
| else |
| CFLAGS="-O3" |
| fi |
| else |
| # if the user selected debug mode, don't use -O |
| if test "$enable_debug" != yes; then |
| CFLAGS="-O" |
| fi |
| fi |
| |
| # For GPDB, Use C99, rather than C89, compile rules |
| # |
| # |
| if test "$GCC" = yes; then |
| if test "$ICC" = yes; then |
| CFLAGS="$CFLAGS -c99 " |
| else |
| CFLAGS="$CFLAGS -std=gnu99 " |
| fi |
| fi |
| |
| |
| # Check for x86 cpuid instruction to determine if we can perform a |
| # runtime check |
| AC_CACHE_CHECK([for __get_cpuid], [pgac_cv__get_cpuid], |
| [AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <cpuid.h>], |
| [[unsigned int exx[4] = {0, 0, 0, 0}; |
| __get_cpuid(1, &exx[0], &exx[1], &exx[2], &exx[3]); |
| ]])], |
| [pgac_cv__get_cpuid="yes"], |
| [pgac_cv__get_cpuid="no"])]) |
| if test x"$pgac_cv__get_cpuid" = x"yes"; then |
| AC_DEFINE(HAVE__GET_CPUID, 1, [Define to 1 if you have __get_cpuid.]) |
| fi |
| |
| AC_CACHE_CHECK([for __cpuid], [pgac_cv__cpuid], |
| [AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <intrin.h>], |
| [[unsigned int exx[4] = {0, 0, 0, 0}; |
| __get_cpuid(exx[0], 1); |
| ]])], |
| [pgac_cv__cpuid="yes"], |
| [pgac_cv__cpuid="no"])]) |
| if test x"$pgac_cv__cpuid" = x"yes"; then |
| AC_DEFINE(HAVE__CPUID, 1, [Define to 1 if you have __cpuid.]) |
| fi |
| |
| # Check for Intel SSE 4.2 intrinsics to do CRC calculations. |
| # |
| # First check if the _mm_crc32_u8 and _mm_crc32_u64 intrinsics can be used |
| # with the default compiler flags. If not, check if adding the -msse4.2 |
| # flag helps. CFLAGS_SSE42 is set to -msse4.2 if that's required. |
| PGAC_SSE42_CRC32_INTRINSICS([]) |
| if test x"$pgac_sse42_crc32_intrinsics" != x"yes"; then |
| PGAC_SSE42_CRC32_INTRINSICS([-msse4.2]) |
| fi |
| AC_SUBST(CFLAGS_SSE42) |
| |
| # Are we targeting a processor that supports SSE 4.2? gcc, clang and icc all |
| # define __SSE4_2__ in that case. |
| AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [ |
| #ifndef __SSE4_2__ |
| #error __SSE4_2__ not defined |
| #endif |
| ])], [SSE4_2_TARGETED=1]) |
| |
| # Select CRC-32C implementation. |
| # |
| # If we are targeting a processor that has SSE 4.2 instructions, we can use the |
| # special CRC instructions for calculating CRC-32C. If we're not targeting such |
| # a processor, but we can nevertheless produce code that uses the SSE |
| # intrinsics, perhaps with some extra CFLAGS, compile both implementations and |
| # select which one to use at runtime, depending on whether SSE 4.2 is supported |
| # by the processor we're running on. |
| # |
| # You can override this logic by setting the appropriate USE_*_CRC32 flag to 1 |
| # in the template or configure command line. |
| if test x"$USE_SSE42_CRC32C" = x"" && test x"$USE_SSE42_CRC32C_WITH_RUNTIME_CHECK" = x"" && test x"$USE_SLICING_BY_8_CRC32C" = x""; then |
| if test x"$pgac_sse42_crc32_intrinsics" = x"yes" && test x"$SSE4_2_TARGETED" = x"1" ; then |
| USE_SSE42_CRC32C=1 |
| else |
| # the CPUID instruction is needed for the runtime check. |
| if test x"$pgac_sse42_crc32_intrinsics" = x"yes" && (test x"$pgac_cv__get_cpuid" = x"yes" || test x"$pgac_cv__cpuid" = x"yes"); then |
| USE_SSE42_CRC32C_WITH_RUNTIME_CHECK=1 |
| else |
| # fall back to slicing-by-8 algorithm which doesn't require any special |
| # CPU support. |
| USE_SLICING_BY_8_CRC32C=1 |
| fi |
| fi |
| fi |
| |
| # Set PG_CRC32C_OBJS appropriately depending on the selected implementation. |
| AC_MSG_CHECKING([which CRC-32C implementation to use]) |
| if test x"$USE_SSE42_CRC32C" = x"1"; then |
| AC_DEFINE(USE_SSE42_CRC32C, 1, [Define to 1 use Intel SSE 4.2 CRC instructions.]) |
| PG_CRC32C_OBJS="pg_crc32c_sse42.o" |
| AC_MSG_RESULT(SSE 4.2) |
| else |
| if test x"$USE_SSE42_CRC32C_WITH_RUNTIME_CHECK" = x"1"; then |
| AC_DEFINE(USE_SSE42_CRC32C_WITH_RUNTIME_CHECK, 1, [Define to 1 to use Intel SSSE 4.2 CRC instructions with a runtime check.]) |
| PG_CRC32C_OBJS="pg_crc32c_sse42.o pg_crc32c_sb8.o pg_crc32c_choose.o" |
| AC_MSG_RESULT(SSE 4.2 with runtime check) |
| else |
| AC_DEFINE(USE_SLICING_BY_8_CRC32C, 1, [Define to 1 to use Intel SSE 4.2 CRC instructions with a runtime check.]) |
| PG_CRC32C_OBJS="pg_crc32c_sb8.o" |
| AC_MSG_RESULT(slicing-by-8) |
| fi |
| fi |
| AC_SUBST(PG_CRC32C_OBJS) |
| |
| |
| # 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 flags, |
| # but has its own. Also check other compiler-specific flags here. |
| |
| if test "$GCC" = yes -a "$ICC" = no; then |
| CFLAGS="$CFLAGS -Wall -Wmissing-prototypes -Wpointer-arith " |
| # These work in some but not all gcc versions |
| PGAC_PROG_CC_CFLAGS_OPT([-Wendif-labels]) |
| #PGAC_PROG_CC_CFLAGS_OPT([-Wmissing-format-attribute]) |
| # This was included in -Wall/-Wformat in older GCC versions |
| PGAC_PROG_CC_CFLAGS_OPT([-Wformat-security]) |
| # 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]) |
| # Disable optimizations that do aggresive-loop-optimization for variable length array; needed for gcc 4.8+ |
| PGAC_PROG_CC_CFLAGS_OPT([-fno-aggressive-loop-optimizations]) |
| 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 "$PORTNAME" = "aix"; then |
| # AIX's xlc has to have strict aliasing turned off too |
| PGAC_PROG_CC_CFLAGS_OPT([-qnoansialias]) |
| fi |
| |
| # supply -g if --enable-debug |
| if test "$enable_debug" = yes && test "$ac_cv_prog_cc_g" = yes; then |
| if test "$GCC" = yes; then |
| CFLAGS="$CFLAGS -g -ggdb" |
| else |
| CFLAGS="$CFLAGS -g" |
| fi |
| 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 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 |
| AC_MSG_CHECKING([whether the C compiler still works]) |
| AC_TRY_LINK([], [return 0;], |
| [AC_MSG_RESULT(yes)], |
| [AC_MSG_RESULT(no) |
| AC_MSG_ERROR([cannot proceed])]) |
| |
| # Defend against gcc -ffast-math |
| if test "$GCC" = yes; then |
| AC_TRY_COMPILE([], [@%:@ifdef __FAST_MATH__ |
| choke me |
| @%:@endif], [], [AC_MSG_ERROR([do not put -ffast-math in CFLAGS])]) |
| fi |
| |
| AC_PROG_CPP |
| AC_SUBST(GCC) |
| |
| # Generate HAWQ version file. |
| if [[ -x getversion ]] ; then |
| ./getversion > VERSION |
| fi |
| |
| # Get the HAWQ version string from ./VERSION |
| # If there is no VERSION file, set the version to devel |
| if [[ -f VERSION ]] ; then |
| HQ_VERSION=`cat VERSION` |
| else |
| HQ_VERSION="devel" |
| fi |
| |
| GP_VERSION='4.2.0 build 1' |
| GP_VERSION_IN="src/include/catalog/gp_version.in" |
| GP_VERSION_HEADER="src/include/catalog/gp_version.h" |
| if grep '\$\$' $GP_VERSION_IN > /dev/null 2>&1 ; then |
| sed "s,\\$.*\\$\\$,$HQ_VERSION," $GP_VERSION_IN > $GP_VERSION_HEADER |
| fi |
| |
| # Create compiler version string |
| if test x"$GCC" = x"yes" ; then |
| cc_string="GCC `${CC} --version | sed q`" |
| else |
| cc_string=$CC |
| fi |
| AC_DEFINE_UNQUOTED(PG_VERSION_STR, |
| ["PostgreSQL $PACKAGE_VERSION (Greenplum Database $GP_VERSION) (HAWQ $HQ_VERSION) on $host, compiled by $cc_string"], |
| [A string containing the version number, platform, and C compiler]) |
| |
| if `echo "$HQ_VERSION" | grep "main build" > /dev/null 2>&1` ; then |
| HQ_VERSION="1.0.0" |
| fi |
| |
| AC_DEFINE_UNQUOTED(GP_VERSION, |
| ["$GP_VERSION"], |
| [A string containing the Greenplum version number]) |
| |
| AC_DEFINE_UNQUOTED(HQ_VERSION, |
| ["$HQ_VERSION"], |
| [A string containing the HAWQ version number]) |
| |
| dnl If we are a development build, fake a numeric version number |
| dnl this needs to be manually updated each time we branch a new version |
| |
| [GP_MAJORVERSION=`expr "$GP_VERSION" : '\([0-9][0-9]*\.[0-9][0-9]*\)'`] |
| AC_SUBST(GP_MAJORVERSION) |
| AC_DEFINE_UNQUOTED(GP_MAJORVERSION, "$GP_MAJORVERSION", [Greenplum major version as a string]) |
| |
| [HQ_MAJORVERSION=`expr "$HQ_VERSION" : '\([0-9][0-9]*\.[0-9][0-9]*\)'`] |
| AC_SUBST(HQ_MAJORVERSION) |
| AC_DEFINE_UNQUOTED(HQ_MAJORVERSION, "$HQ_MAJORVERSION", [HAWQ major version as a string]) |
| |
| # |
| # 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 |
| # |
| PGAC_ARG_BOOL(enable, depend, no, [ --enable-depend turn on automatic dependency tracking], |
| [autodepend=yes]) |
| AC_SUBST(autodepend) |
| |
| |
| # |
| # Enable assert checks |
| # |
| PGAC_ARG_BOOL(enable, cassert, no, [ --enable-cassert enable assertion checks (for debugging)], |
| [AC_DEFINE([USE_ASSERT_CHECKING], 1, |
| [Define to 1 to build with assertion checks. (--enable-cassert)])]) |
| |
| # |
| # Enable forced plans |
| # |
| PGAC_ARG_BOOL(enable, forceplan, no, [ --enable-forceplan enable forcing of plans via EXPLAIN FORCE (for debugging)], |
| [AC_DEFINE([USE_FORCE_PLAN], 1, |
| [Define to 1 to build with plan forcing capabilities. (--enable-forceplan)])]) |
| |
| # |
| # Enable debug_break |
| # |
| PGAC_ARG_BOOL(enable, debugbreak, no, [ --enable-debugbreak enable debug_break and debug_break_n (for debugging)], |
| [AC_DEFINE([USE_DEBUG_BREAK], 1, |
| [Define to 1 to build with debug_break capabilities. (--enable-debugbreak)])]) |
| |
| # Enable debug ntuplestore |
| PGAC_ARG_BOOL(enable, debugntuplestore, no, [ --enable-ntuplestore enable debug_ntuplestore (for debugging)], |
| [AC_DEFINE([USE_DEBUG_NTUPLESTORE], 1, |
| [Define to 1 to build with debug_ntuplestore. (--enable-ntuplestore)])]) |
| |
| |
| # |
| # Enable testing utilities |
| # |
| PGAC_ARG_BOOL(enable, testutils, no, [ --enable-testutils enable testing utilities], |
| [AC_DEFINE([USE_TEST_UTILS], 1, |
| [Define to 1 to build with testing utilities. (--enable-testutils)])]) |
| |
| # |
| # --enable-snmp enables snmp mib and trap/inform |
| # |
| PGAC_ARG_BOOL(enable, snmp, no, [ --enable-snmp enable snmp for MIB and alerts via TRAP/INFORM], |
| [AC_DEFINE([USE_SNMP], 1, |
| [Define to 1 to build with snmp capabilities. (--enable-snmp)])]) |
| AC_MSG_RESULT([checking whether to build with snmp... $enable_snmp]) |
| AC_SUBST(enable_snmp) |
| |
| # |
| # --enable-gphdfs enables GPHDFS support |
| # |
| PGAC_ARG_BOOL(enable, gphdfs, no, [ --enable-gphdfs enables GPHDFS support], |
| [AC_DEFINE([USE_GPHDFS], 1, |
| [Define to 1 to build with gphdfs capabilities. (--enable-gphdfs)])]) |
| AC_MSG_RESULT([checking whether to build with gphdfs...$enable_gphdfs]) |
| AC_SUBST(enable_gphdfs) |
| |
| # |
| # --enable-email enables email alerts |
| # |
| PGAC_ARG_BOOL(enable, email, no, [ --enable-email enable email alerts], |
| [AC_DEFINE([USE_EMAIL], 1, |
| [Define to 1 to build with email alert capabilities. (--enable-email)])]) |
| AC_MSG_RESULT([checking whether to build with email...$enable_email]) |
| AC_SUBST(enable_email) |
| |
| # |
| # Enable Pivotal Query Optimizer |
| # |
| PGAC_ARG_BOOL(enable, orca, no, [ --enable-orca enable Pivotal Query Optimizer], |
| [AC_DEFINE([USE_ORCA], 1, |
| [Define to 1 to build with Pivotal Query Optimizer. (--enable-orca)])]) |
| AC_SUBST(enable_orca) |
| |
| # |
| # Enable thread-safe client libraries |
| # |
| AC_MSG_CHECKING([allow thread-safe client libraries]) |
| # GPDB wants the default here to be "yes", unlike PostgreSQL. |
| # it's also required for Win32 client builds. |
| PGAC_ARG_BOOL(enable, thread-safety, yes, [ --disable-thread-safety Do not make client libraries thread-safe]) |
| |
| PGAC_ARG_BOOL(enable, thread-safety-force, no, [ --enable-thread-safety-force force thread-safety despite thread test failure]) |
| if test "$enable_thread_safety" = yes -o \ |
| "$enable_thread_safety_force" = yes; then |
| enable_thread_safety="yes" # for 'force' |
| AC_DEFINE([ENABLE_THREAD_SAFETY], 1, |
| [Define to 1 to build client libraries as thread-safe code. (--enable-thread-safety)]) |
| fi |
| AC_MSG_RESULT([$enable_thread_safety]) |
| AC_SUBST(enable_thread_safety) |
| |
| # |
| # Optionally build Tcl modules (PL/Tcl) |
| # |
| AC_MSG_CHECKING([whether to build with Tcl]) |
| PGAC_ARG_BOOL(with, tcl, no, [ --with-tcl build Tcl modules (PL/Tcl)]) |
| AC_MSG_RESULT([$with_tcl]) |
| AC_SUBST([with_tcl]) |
| |
| # We see if the path to the Tcl/Tk configuration scripts is specified. |
| # This will override the use of tclsh to find the paths to search. |
| |
| PGAC_ARG_REQ(with, tclconfig, [ --with-tclconfig=DIR tclConfig.sh is in DIR]) |
| |
| # |
| # Optionally build Perl modules (PL/Perl) |
| # |
| AC_MSG_CHECKING([whether to build Perl modules]) |
| PGAC_ARG_BOOL(with, perl, no, [ --with-perl build Perl modules (PL/Perl)]) |
| AC_MSG_RESULT([$with_perl]) |
| AC_SUBST(with_perl) |
| |
| # |
| # Optionally build Python modules (PL/Python) |
| # |
| AC_MSG_CHECKING([whether to build Python modules]) |
| PGAC_ARG_BOOL(with, python, no, [ --with-python build Python modules (PL/Python)]) |
| AC_MSG_RESULT([$with_python]) |
| AC_SUBST(with_python) |
| |
| # |
| # Optionally build Java modules (PL/Java) |
| # |
| AC_MSG_CHECKING([whether to build Java modules]) |
| PGAC_ARG_BOOL(with, java, no, [ --with-java build Java modules (PL/Java)]) |
| AC_MSG_RESULT([$with_java]) |
| AC_SUBST(with_java) |
| |
| # |
| # Optionally build R modules (PL/R) |
| # |
| AC_MSG_CHECKING([whether to build R modules]) |
| PGAC_ARG_BOOL(with, r, no, [ --with-r build R modules (PL/R)]) |
| AC_MSG_RESULT([$with_r]) |
| AC_SUBST(with_r) |
| |
| # |
| # Optionally build with pgcrypto. |
| # |
| AC_MSG_CHECKING([whether to build pgcrypto modules]) |
| PGAC_ARG_BOOL(with, pgcrypto, no, [ --with-pgcrypto build with pgcrypto ]) |
| AC_MSG_RESULT([$with_pgcrypto]) |
| AC_SUBST(with_pgcrypto) |
| |
| # |
| # GSSAPI |
| # |
| AC_MSG_CHECKING([whether to build with GSSAPI support]) |
| PGAC_ARG_BOOL(with, gssapi, no, [ --with-gssapi build with GSSAPI support], |
| [ |
| AC_DEFINE(ENABLE_GSS, 1, [Define to build with GSSAPI support. (--with-gssapi)]) |
| krb_srvtab="FILE:\$(sysconfdir)/krb5.keytab" |
| ]) |
| AC_MSG_RESULT([$with_gssapi]) |
| AC_SUBST(with_gssapi) |
| |
| # |
| # Kerberos 5 |
| # |
| AC_MSG_CHECKING([whether to build with Kerberos 5 support]) |
| PGAC_ARG_BOOL(with, krb5, no, [ --with-krb5 build with Kerberos 5 support], |
| [ |
| AC_DEFINE(KRB5, 1, [Define to build with Kerberos 5 support. (--with-krb5)]) |
| krb_srvtab="FILE:\$(sysconfdir)/krb5.keytab" |
| ]) |
| AC_MSG_RESULT([$with_krb5]) |
| AC_SUBST(with_krb5) |
| |
| |
| AC_SUBST(krb_srvtab) |
| |
| |
| # |
| # Kerberos configuration parameters |
| # |
| PGAC_ARG_REQ(with, krb-srvnam, |
| [ --with-krb-srvnam=NAME default service principal name in Kerberos [[postgres]]], |
| [], |
| [with_krb_srvnam="postgres"]) |
| AC_DEFINE_UNQUOTED([PG_KRB_SRVNAM], ["$with_krb_srvnam"], |
| [Define to the name of the default PostgreSQL service principal in Kerberos. (--with-krb-srvnam=NAME)]) |
| |
| |
| # |
| # PAM |
| # |
| AC_MSG_CHECKING([whether to build with PAM support]) |
| PGAC_ARG_BOOL(with, pam, no, |
| [ --with-pam build with PAM support], |
| [AC_DEFINE([USE_PAM], 1, [Define to 1 to build with PAM support. (--with-pam)])]) |
| AC_MSG_RESULT([$with_pam]) |
| AC_SUBST(with_pam) |
| |
| |
| # |
| # LDAP |
| # |
| AC_MSG_CHECKING([whether to build with LDAP support]) |
| PGAC_ARG_BOOL(with, ldap, no, |
| [ --with-ldap build with LDAP support], |
| [AC_DEFINE([USE_LDAP], 1, [Define to 1 to build with LDAP support. (--with-ldap)])]) |
| AC_MSG_RESULT([$with_ldap]) |
| AC_SUBST(with_ldap) |
| |
| |
| # |
| # Bonjour |
| # |
| AC_MSG_CHECKING([whether to build with Bonjour support]) |
| PGAC_ARG_BOOL(with, bonjour, no, |
| [ --with-bonjour build with Bonjour support], |
| [AC_DEFINE([USE_BONJOUR], 1, [Define to 1 to build with Bonjour support. (--with-bonjour)])]) |
| AC_MSG_RESULT([$with_bonjour]) |
| AC_SUBST(with_bonjour) |
| |
| |
| # |
| # OpenSSL |
| # |
| AC_MSG_CHECKING([whether to build with OpenSSL support]) |
| PGAC_ARG_BOOL(with, openssl, no, [ --with-openssl build with OpenSSL support], |
| [AC_DEFINE([USE_SSL], 1, [Define to build with (Open)SSL support. (--with-openssl)])]) |
| AC_MSG_RESULT([$with_openssl]) |
| AC_SUBST(with_openssl) |
| |
| |
| # |
| # Readline |
| # |
| PGAC_ARG_BOOL(with, readline, yes, |
| [ --without-readline do not use GNU Readline nor BSD Libedit for editing]) |
| # readline on MinGW has problems with backslashes in psql and other bugs. |
| # This is particularly a problem with non-US code pages. |
| # Therefore disable its use until we understand the cause. 2004-07-20 |
| if test "$PORTNAME" = "win32"; then |
| if test "$with_readline" = yes; then |
| AC_MSG_WARN([*** Readline does not work on MinGW --- disabling]) |
| with_readline=no |
| fi |
| fi |
| |
| # |
| # libyarn |
| # |
| PGAC_ARG_BOOL(with, libyarn, yes, |
| [ --without-libyarn do not build libyarn]) |
| AC_SUBST(with_libyarn) |
| |
| # |
| # libhdfs3 |
| # |
| PGAC_ARG_BOOL(with, libhdfs3, yes, |
| [ --without-libhdfs3 do not build libhdfs3]) |
| AC_SUBST(with_libhdfs3) |
| |
| # |
| # Prefer libedit |
| # |
| # In GPDB we want the default to be yes, because we don't want to link with GPL code. |
| # |
| PGAC_ARG_BOOL(with, libedit-preferred, yes, |
| [ --without-libedit-preferred Don't prefer BSD Libedit over GNU Readline]) |
| |
| |
| # |
| # tzdata |
| # |
| PGAC_ARG_REQ(with, system-tzdata, |
| [ --with-system-tzdata=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]) |
| AC_SUBST(with_zlib) |
| |
| # |
| # Realtime library |
| # |
| PGAC_ARG_BOOL(with, rt, yes, |
| [ --without-rt do not use Realtime Library]) |
| AC_SUBST(with_rt) |
| |
| # |
| # Elf |
| # |
| |
| # Assume system is ELF if it predefines __ELF__ as 1, |
| # otherwise believe host_os based default.PostgreSQL |
| case $host_os in |
| freebsd1*|freebsd2*) elf=no;; |
| freebsd3*|freebsd4*) elf=yes;; |
| esac |
| |
| AC_EGREP_CPP(yes, |
| [#if __ELF__ |
| yes |
| #endif |
| ], |
| [ELF_SYS=true], |
| [if test "X$elf" = "Xyes" ; then |
| ELF_SYS=true |
| else |
| ELF_SYS= |
| fi]) |
| AC_SUBST(ELF_SYS) |
| |
| # |
| # Include directories |
| # |
| #INCLUDES="$INCLUDES -I$ac_pwd/depends/thirdparty/googletest/googletest/include -I$ac_pwd/depends/thirdparty/googletest/googlemock/include" |
| |
| ac_save_IFS=$IFS |
| IFS="${IFS}${PATH_SEPARATOR}" |
| # SRCH_INC comes from the template file |
| for dir in $with_includes $SRCH_INC; do |
| if test -d "$dir"; then |
| INCLUDES="$INCLUDES -I$dir" |
| else |
| AC_MSG_WARN([*** Include directory $dir does not exist.]) |
| fi |
| done |
| IFS=$ac_save_IFS |
| AC_SUBST(INCLUDES) |
| |
| |
| # |
| # Library directories |
| # |
| #LIBDIRS="$LIBDIRS -L$ac_pwd/depends/thirdparty/googletest/build/googlemock/gtest -L$ac_pwd/depends/thirdparty/googletest/build/googlemock" |
| |
| ac_save_IFS=$IFS |
| IFS="${IFS}${PATH_SEPARATOR}" |
| # LIBRARY_DIRS comes from command line, SRCH_LIB from template file. |
| for dir in $LIBRARY_DIRS $SRCH_LIB; do |
| if test -d "$dir"; then |
| LIBDIRS="$LIBDIRS -L$dir" |
| else |
| AC_MSG_WARN([*** Library directory $dir does not exist.]) |
| fi |
| done |
| IFS=$ac_save_IFS |
| |
| |
| # |
| # Assignments |
| # |
| |
| CPPFLAGS="$CPPFLAGS $INCLUDES" |
| LDFLAGS="$LDFLAGS $LIBDIRS" |
| |
| AC_ARG_VAR(LDFLAGS_EX, [extra linker flags for linking executables only]) |
| AC_ARG_VAR(LDFLAGS_SL, [extra linker flags for linking shared libraries only]) |
| |
| AC_MSG_NOTICE([using CPPFLAGS=$CPPFLAGS]) |
| AC_MSG_NOTICE([using LDFLAGS=$LDFLAGS]) |
| |
| PGAC_PROG_LD |
| AC_SUBST(LD) |
| AC_SUBST(with_gnu_ld) |
| case $host_os in sysv5*) |
| AC_CACHE_CHECK([whether ld -R works], [pgac_cv_prog_ld_R], |
| [ |
| pgac_save_LDFLAGS=$LDFLAGS; LDFLAGS="$LDFLAGS -Wl,-R/usr/lib" |
| AC_TRY_LINK([], [], [pgac_cv_prog_ld_R=yes], [pgac_cv_prog_ld_R=no]) |
| LDFLAGS=$pgac_save_LDFLAGS |
| ]) |
| ld_R_works=$pgac_cv_prog_ld_R |
| AC_SUBST(ld_R_works) |
| esac |
| AC_PROG_RANLIB |
| PGAC_CHECK_STRIP |
| AC_CHECK_TOOL(AR, ar, ar) |
| if test "$PORTNAME" = "win32"; then |
| AC_CHECK_TOOL(DLLTOOL, dlltool, dlltool) |
| AC_CHECK_TOOL(DLLWRAP, dllwrap, dllwrap) |
| AC_CHECK_TOOL(WINDRES, windres, windres) |
| fi |
| |
| AC_PATH_PROG(TAR, tar) |
| AC_PROG_LN_S |
| AC_PROG_AWK |
| AC_PROG_MKDIR_P |
| # When Autoconf chooses install-sh as mkdir -p program it tries to generate |
| # a relative path to it in each makefile where it subsitutes it. This clashes |
| # with our Makefile.global concept. This workaround helps. |
| case $MKDIR_P in |
| *install-sh*) MKDIR_P='\${SHELL} \${top_srcdir}/config/install-sh -c -d';; |
| esac |
| |
| PGAC_PATH_BISON |
| PGAC_PATH_FLEX |
| PGAC_PATH_MAVEN |
| PGAC_PATH_GPERF |
| |
| PGAC_PATH_PERL |
| PGAC_CHECK_PERL_MODULES([JSON]) |
| if test "$with_perl" = yes; then |
| if test -z "$PERL"; then |
| AC_MSG_ERROR([Perl not found]) |
| fi |
| PGAC_CHECK_PERL_CONFIGS([archlibexp,privlibexp,useshrplib]) |
| PGAC_CHECK_PERL_EMBED_LDFLAGS |
| fi |
| |
| PGAC_PATH_PYTHON |
| |
| if test "$with_python" = yes; then |
| PGAC_CHECK_PYTHON_EMBED_SETUP |
| fi |
| |
| if test "$with_java" = yes; then |
| PGAC_PATH_JAVA |
| PGAC_CHECK_JAVA_EMBED_SETUP |
| fi |
| |
| ZIC= |
| if test "$cross_compiling" = yes && test -z "$with_system_tzdata"; then |
| AC_PATH_PROG(ZIC, zic) |
| if test -z "$ZIC"; then |
| AC_MSG_ERROR([ |
| When cross-compiling, either use the option --with-system-tzdata to use |
| existing time-zone data, or set the environment variable ZIC to a zic |
| program to use during the build.]) |
| 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]) |
| |
| # |
| [GP_VERSION_NUM="`echo "$GP_VERSION" | sed 's/[A-Za-z].*$//' | |
| tr '.' ' ' | |
| $AWK '{printf "%d%02d%02d", $1, $2, (NF >= 3) ? $3 : 0}'`"] |
| AC_DEFINE_UNQUOTED(GP_VERSION_NUM, $GP_VERSION_NUM, [Greenplum version as a number]) |
| |
| [HQ_VERSION_NUM="`echo "$HQ_VERSION" | sed 's/[A-Za-z].*$//' | |
| tr '.' ' ' | |
| $AWK '{printf "%d%02d%02d", $1, $2, (NF >= 3) ? $3 : 0}'`"] |
| AC_DEFINE_UNQUOTED(HQ_VERSION_NUM, $HQ_VERSION_NUM, [HAWQ version as a number]) |
| |
| ## |
| ## Libraries |
| ## |
| ## Most libraries are included only if they demonstrably provide a function |
| ## we need, but libm is an exception: always include it, because there are |
| ## too many compilers that play cute optimization games that will break |
| ## probes for standard functions such as pow(). |
| ## |
| |
| AC_CHECK_LIB(m, main) |
| AC_SEARCH_LIBS(setproctitle, util) |
| AC_SEARCH_LIBS(dlopen, dl) |
| AC_SEARCH_LIBS(socket, [socket wsock32]) |
| AC_SEARCH_LIBS(shl_load, dld) |
| # We only use libld in port/dynloader/aix.c |
| case $host_os in |
| aix*) |
| AC_SEARCH_LIBS(ldopen, ld) |
| ;; |
| esac |
| AC_SEARCH_LIBS(getopt_long, [getopt gnugetopt]) |
| AC_SEARCH_LIBS(crypt, crypt) |
| # Solaris: |
| AC_SEARCH_LIBS(fdatasync, [rt posix4]) |
| # Required for thread_test.c on Solaris 2.5: |
| # Other ports use it too (HP-UX) so test unconditionally |
| AC_SEARCH_LIBS(gethostbyname_r, nsl) |
| # Cygwin: |
| AC_SEARCH_LIBS(shmget, cygipc) |
| |
| if test "$with_readline" = yes; then |
| PGAC_CHECK_READLINE |
| if test x"$pgac_cv_check_readline" = x"no"; then |
| AC_MSG_ERROR([readline library not found |
| If you have readline already installed, see config.log for details on the |
| failure. It is possible the compiler isn't looking in the proper directory. |
| Use --without-readline to disable readline support.]) |
| fi |
| fi |
| |
| if test "$with_zlib" = yes; then |
| AC_CHECK_LIB(z, inflate, [], |
| [AC_MSG_ERROR([zlib library not found |
| If you have zlib already installed, see config.log for details on the |
| failure. It is possible the compiler isn't looking in the proper directory. |
| Use --without-zlib to disable zlib support.])]) |
| fi |
| |
| if test "$with_r" = yes; then |
| AC_MSG_CHECKING([R_HOME]) |
| if test "x${R_HOME}" = x; then |
| r_home_guess=`pkg-config --variable=rhome libR 2>/dev/null` |
| if test "x${r_home_guess}" != "x"; then |
| R_HOME=$r_home_guess |
| else |
| AC_MSG_ERROR([Failed to set R_HOME. R is not installed? Or R_HOME is not set |
| or pkg-config is not installed to find R_HOME automatically. |
| Check config.log for details or not use --with-r if you do not want the PL/R support.]) |
| fi |
| fi |
| AC_MSG_RESULT(${R_HOME}) |
| AC_SUBST(R_HOME) |
| fi |
| |
| if test "$enable_spinlocks" = yes; then |
| AC_DEFINE(HAVE_SPINLOCKS, 1, [Define to 1 if you have spinlocks.]) |
| else |
| AC_MSG_WARN([ |
| *** Not using spinlocks will cause poor performance.]) |
| fi |
| |
| if test "$with_gssapi" = yes ; then |
| if test "$PORTNAME" != "win32"; then |
| AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [], |
| [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI. |
| Check config.log for details. It is possible the compiler isn't looking in the proper directory. |
| Don't use --with-gssapi if you don't want the GSSAPI support.])]) |
| else |
| LIBS="$LIBS -lgssapi32" |
| fi |
| fi |
| |
| if test "$with_krb5" = yes ; then |
| if test "$PORTNAME" != "win32"; then |
| AC_SEARCH_LIBS(com_err, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken' com_err 'com_err -lssl -lcrypto'], [], |
| [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5. |
| Check config.log for details. It is possible the compiler isn't looking in the proper directory. |
| Don't use --with-krb5 if you don't want the Kerberos 5 support.])]) |
| AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [], |
| [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5. |
| Check config.log for details. It is possible the compiler isn't looking in the proper directory. |
| Don't use --with-krb5 if you don't want the Kerberos 5 support.])]) |
| else |
| AC_SEARCH_LIBS(com_err, 'comerr32 -lkrb5_32', [], |
| [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5. |
| Check config.log for details. It is possible the compiler isn't looking in the proper directory. |
| Don't use --with-krb5 if you don't want the Kerberos 5 support.])]) |
| fi |
| fi |
| |
| if test "$with_openssl" = yes ; then |
| dnl workaround for 'brew link openssl --force' error on MacOS 10.12 |
| if test "$PORTNAME" == "darwin"; then |
| LDFLAGS = "$LDFLAGS -L/usr/local/opt/openssl/lib" |
| fi |
| dnl Order matters! |
| if test "$PORTNAME" != "win32"; then |
| AC_CHECK_LIB(crypto, CRYPTO_new_ex_data, [], [AC_MSG_ERROR([library 'crypto' is required for OpenSSL. |
| Check config.log for details. It is possible the compiler isn't looking in the proper directory. |
| Don't use --with-openssl if you don't want the OpenSSL support.])]) |
| AC_CHECK_LIB(ssl, SSL_library_init, [], [AC_MSG_ERROR([library 'ssl' is required for OpenSSL. |
| Check config.log for details. It is possible the compiler isn't looking in the proper directory. |
| Don't use --with-openssl if you don't want the OpenSSL support.])]) |
| else |
| AC_CHECK_LIB(eay32, CRYPTO_new_ex_data, [], [AC_MSG_ERROR([library 'eay32' is required for OpenSSL. |
| Check config.log for details. It is possible the compiler isn't looking in the proper directory. |
| Don't use --with-openssl if you don't want the OpenSSL support.])]) |
| AC_CHECK_LIB(ssleay32, SSL_library_init, [], [AC_MSG_ERROR([library 'ssleay32' is required for OpenSSL. |
| Check config.log for details. It is possible the compiler isn't looking in the proper directory. |
| Don't use --with-openssl if you don't want the OpenSSL support.])]) |
| fi |
| fi |
| |
| if test "$with_rt" = yes ; then |
| AC_CHECK_LIB(rt, clock_gettime, [], |
| [AC_MSG_WARN([Realtime library not found. |
| Check config.log for details. It is possible the compiler isn't looking in the proper directory. |
| Use --without-rt to avoid using the Realtime library.])]) |
| fi |
| |
| if test "$with_pam" = yes ; then |
| AC_CHECK_LIB(pam, pam_start, [], [AC_MSG_ERROR([library 'pam' is required for PAM. |
| Check config.log for details. It is possible the compiler isn't looking in the proper directory. |
| Don't use --with-pam if you don't want the PAM support.])]) |
| fi |
| |
| # Check for curl. |
| AC_CHECK_CURL([7.0.0]) |
| CFLAGS="$CFLAGS $CURL_CFLAGS" |
| LIBS="$LIBS $CURL_LIBS" |
| |
| # Check for bzip2 |
| AC_CHECK_HEADERS(bzlib.h, [], [AC_MSG_ERROR([header file <bzlib.h> is required. |
| 'bzip2' is used for table compression. Check config.log for details. |
| It is possible the compiler isn't looking in the proper directory.])]) |
| AC_SEARCH_LIBS(BZ2_bzDecompress, bz2, [], [AC_MSG_ERROR([library 'bzip2' is required. |
| 'bzip2' is used for table compression. Check config.log for details. |
| It is possible the compiler isn't looking in the proper directory.])]) |
| |
| # Check for snappy |
| AC_CHECK_HEADERS(snappy-c.h, [], [AC_MSG_ERROR([header file <snappy-c.h> is required. |
| 'snappy' is used for table compression. Check config.log for details. |
| It is possible the compiler isn't looking in the proper directory.])]) |
| AC_SEARCH_LIBS(snappy_max_compressed_length, snappy, [], [AC_MSG_ERROR([library 'snappy' is required. |
| 'snappy' is used for table compression. Check config.log for details. |
| It is possible the compiler isn't looking in the proper directory.])]) |
| |
| AC_LANG_PUSH([C++]) |
| |
| # Check for thrift |
| AC_CHECK_HEADERS(thrift/protocol/TBinaryProtocol.h, [], [AC_MSG_ERROR([thrift is required])]) |
| |
| # Check for boost |
| AC_CHECK_HEADERS(boost/chrono.hpp, [], [AC_MSG_ERROR([boost is required. |
| Check config.log for details. It is possible the compiler isn't looking in the proper directory.])]) |
| |
| AC_LANG_POP([C++]) |
| |
| # Check for libyaml |
| AC_CHECK_HEADERS(yaml.h, [], [AC_MSG_ERROR([header file <yaml.h> is required. |
| Check config.log for details. It is possible the compiler isn't looking in the proper directory.])]) |
| AC_SEARCH_LIBS(yaml_get_version, yaml, [], [AC_MSG_ERROR([library 'libyaml' is required. |
| Check config.log for details. It is possible the compiler isn't looking in the proper directory.])]) |
| |
| # Check for libevent |
| AC_CHECK_HEADERS(event.h, [], [AC_MSG_ERROR([header file <event.h> is required. |
| Check config.log for details. It is possible the compiler isn't looking in the proper directory.])]) |
| AC_SEARCH_LIBS(event_init, event, [], [AC_MSG_ERROR([library 'libevent' is required. |
| Check config.log for details. It is possible the compiler isn't looking in the proper directory.])]) |
| |
| # Check for sigar |
| AC_SEARCH_LIBS(sigar_open, sigar) |
| |
| # Check for net-snmp |
| if test "$enable_snmp" = yes ; then |
| AC_CHECK_LIB(netsnmp, netsnmp_ds_set_string, [], [AC_MSG_ERROR([library 'netsnmp' is required for snmp support. |
| Check config.log for details. It is possible the compiler isn't looking in the proper directory. |
| Don't use --enable-snmp if you don't want to enable the snmp support.])]) |
| fi |
| |
| # Check for libesmtp |
| if test "$enable_email" = yes ; then |
| if test "$with_openssl" != yes ; then |
| AC_MSG_ERROR([--enable-email requires --with-openssl]) |
| fi |
| AC_CHECK_LIB(esmtp, smtp_start_session, [], [AC_MSG_ERROR([library 'libesmtp' is required for email alert support. |
| Check config.log for details. It is possible the compiler isn't looking in the proper directory. |
| Don't use --enable-email if you don't want to enable the email alert support.])]) |
| fi |
| |
| ## |
| ## Header files |
| ## |
| |
| 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 ifaddrs.h langinfo.h poll.h pwd.h sys/ioctl.h sys/ipc.h sys/poll.h sys/pstat.h sys/resource.h sys/select.h sys/sem.h sys/shm.h sys/socket.h sys/sockio.h sys/tas.h sys/time.h sys/un.h termios.h ucred.h utime.h wchar.h wctype.h kernel/OS.h kernel/image.h SupportDefs.h]) |
| |
| # On BSD, cpp test for net/if.h will fail unless sys/socket.h |
| # is included first. |
| AC_CHECK_HEADERS(net/if.h, [], [], |
| [AC_INCLUDES_DEFAULT |
| #ifdef HAVE_SYS_SOCKET_H |
| #include <sys/socket.h> |
| #endif |
| ]) |
| |
| # At least on IRIX, cpp test for netinet/tcp.h will fail unless |
| # netinet/in.h is included first. |
| AC_CHECK_HEADERS(netinet/in.h) |
| AC_CHECK_HEADERS(netinet/tcp.h, [], [], |
| [AC_INCLUDES_DEFAULT |
| #ifdef HAVE_NETINET_IN_H |
| #include <netinet/in.h> |
| #endif |
| ]) |
| |
| if expr x"$pgac_cv_check_readline" : 'x-lreadline' >/dev/null ; then |
| AC_CHECK_HEADERS(readline/readline.h, [], |
| [AC_CHECK_HEADERS(readline.h, [], |
| [AC_MSG_ERROR([readline header not found |
| If you have readline already installed, see config.log for details on the |
| failure. It is possible the compiler isn't looking in the proper directory. |
| Use --without-readline to disable readline support.])])]) |
| AC_CHECK_HEADERS(readline/history.h, [], |
| [AC_CHECK_HEADERS(history.h, [], |
| [AC_MSG_ERROR([history header not found |
| If you have readline already installed, see config.log for details on the |
| failure. It is possible the compiler isn't looking in the proper directory. |
| Use --without-readline to disable readline support.])])]) |
| fi |
| |
| if expr x"$pgac_cv_check_readline" : 'x-ledit' >/dev/null ; then |
| # Some installations of libedit usurp /usr/include/readline/, which seems |
| # bad practice, since in combined installations readline will have its headers |
| # there. We might have to resort to AC_EGREP checks to make sure we found |
| # the proper header... |
| AC_CHECK_HEADERS(editline/readline.h, [], |
| [AC_CHECK_HEADERS(readline.h, [], |
| [AC_CHECK_HEADERS(readline/readline.h, [], |
| [AC_MSG_ERROR([readline header not found |
| If you have libedit already installed, see config.log for details on the |
| failure. It is possible the compiler isn't looking in the proper directory. |
| Use --without-readline to disable libedit support.])])])]) |
| # Note: in a libedit installation, history.h is sometimes a dummy, and may |
| # not be there at all. Hence, don't complain if not found. We must check |
| # though, since in yet other versions it is an independent header. |
| AC_CHECK_HEADERS(editline/history.h, [], |
| [AC_CHECK_HEADERS(history.h, [], |
| [AC_CHECK_HEADERS(readline/history.h)])]) |
| fi |
| |
| if test "$with_zlib" = yes; then |
| AC_CHECK_HEADER(zlib.h, [], [AC_MSG_ERROR([zlib header not found |
| If you have zlib already installed, see config.log for details on the |
| failure. It is possible the compiler isn't looking in the proper directory. |
| Use --without-zlib to disable zlib support.])]) |
| fi |
| |
| if test "$with_gssapi" = yes ; then |
| AC_CHECK_HEADERS(gssapi/gssapi.h, [], |
| [AC_CHECK_HEADERS(gssapi.h, [], [AC_MSG_ERROR([gssapi.h header file is required for GSSAPI. |
| Check config.log for details. It is possible the compiler isn't looking in the proper directory. |
| Don't use --with-gssapi if you don't want the GSSAPI support.])])]) |
| fi |
| |
| if test "$with_krb5" = yes ; then |
| AC_CHECK_HEADER(krb5.h, [], [AC_MSG_ERROR([header file <krb5.h> is required for Kerberos 5. |
| Check config.log for details. It is possible the compiler isn't looking in the proper directory. |
| Don't use --with-krb5 if you don't want the Kerberos 5 support.])]) |
| fi |
| |
| if test "$with_openssl" = yes ; then |
| dnl workaround for 'brew link openssl --force' error on MacOS 10.12 |
| if test "$PORTNAME" == "darwin"; then |
| CPPFLAGS="$CPPFLAGS -I/usr/local/opt/openssl/include" |
| fi |
| AC_CHECK_HEADER(openssl/ssl.h, [], [AC_MSG_ERROR([header file <openssl/ssl.h> is required for OpenSSL. |
| Check config.log for details. It is possible the compiler isn't looking in the proper directory. |
| Don't use --with-openssl if you don't want to the OpenSSL support.])]) |
| AC_CHECK_HEADER(openssl/err.h, [], [AC_MSG_ERROR([header file <openssl/err.h> is required for OpenSSL. |
| Check config.log for details. It is possible the compiler isn't looking in the proper directory. |
| Don't use --with-openssl if you don't want to the OpenSSL support.])]) |
| AC_CHECK_FUNCS([ERR_set_mark]) |
| fi |
| |
| if test "$with_pam" = yes ; then |
| AC_CHECK_HEADERS(security/pam_appl.h, [], |
| [AC_CHECK_HEADERS(pam/pam_appl.h, [], |
| [AC_MSG_ERROR([header file <security/pam_appl.h> or <pam/pam_appl.h> is required for PAM. |
| Check config.log for details. It is possible the compiler isn't looking in the proper directory. |
| Use --without-pam to disable the PAM 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. |
| Check config.log for details. It is possible the compiler isn't looking in the proper directory.])]) |
| 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. |
| Check config.log for details. It is possible the compiler isn't looking in the proper directory.])]) |
| fi |
| |
| # For processor affinity support in Linux on NUMA platforms such as |
| # AMD x86_64, the 'numactl' or 'libnuma' package is required. See |
| # http://lwn.net/Articles/67005/ |
| # http://www.x86-64.org/pipermail/discuss/2003-May/003528.html |
| case $template in |
| linux*) |
| AC_CHECK_LIB(numa, numa_available) |
| AC_CHECK_HEADERS([numa.h]) |
| ;; |
| esac |
| |
| # net-snmp |
| if test "$enable_snmp" = yes; then |
| AC_CHECK_HEADERS([net-snmp/net-snmp-config.h], [], |
| [AC_MSG_ERROR([header file <net-snmp/net-snmp-config.h> is required for snmp support. |
| Check config.log for details. It is possible the compiler isn't looking in the proper directory. |
| Use --disable-snmp to disable the snmp support.])]) |
| fi |
| |
| # email |
| if test "$enable_email" = yes; then |
| AC_CHECK_HEADERS(libesmtp.h, [], |
| [AC_MSG_ERROR([header file <libesnmp.h> is required for email alert support. |
| Check config.log for details. It is possible the compiler isn't looking in the proper directory. |
| Use --disable-email to disable the snmp support.])]) |
| AC_CHECK_HEADERS(auth-client.h, [], |
| [AC_MSG_ERROR([header file <auth-client.h> is required for email alert support. |
| Check config.log for details. It is possible the compiler isn't looking in the proper directory. |
| Use --disable-email to disable the snmp support.])]) |
| fi |
| |
| # realtime library header |
| if test "$with_rt" = yes; then |
| AC_CHECK_HEADERS([time.h], [], |
| [AC_MSG_ERROR([header file <time.h> is required for realtime library support. |
| Check config.log for details. It is possible the compiler isn't looking in the proper directory. |
| Use --without-rt to avoid using realtime library.])]) |
| fi |
| |
| # json-c |
| AC_CHECK_HEADERS(json-c/json.h, [], [AC_MSG_ERROR([header file <json-c/json.h> is required. |
| Check config.log for details. It is possible the compiler isn't looking in the proper directory.])]) |
| AC_SEARCH_LIBS(json_tokener_parse, json-c json, [], [AC_MSG_ERROR([library 'json-c' is required. |
| Check config.log for details. It is possible the compiler isn't looking in the proper directory.])], []) |
| |
| # libxml2 |
| AM_PATH_XML2([2.7.6], [], [AC_MSG_ERROR([libxml2 is required. |
| Check config.log for details. It is possible the compiler isn't looking in the proper directory.])]) |
| pgac_args="$pgac_args with_xml_prefix with_xml_exec_prefix enable_xmltest" |
| CFLAGS="$CFLAGS $XML_CPPFLAGS" |
| |
| # apr for gpfdist |
| AC_CHECK_PROG([APR_CONFIG], [apr-1-config],[yes]) |
| test -z "$APR_CONFIG" && AC_MSG_ERROR([Please install apr from http://apr.apache.org/ and add dir of 'apr-1-config' to env variable '$PATH'.]) |
| |
| ## |
| ## Types, structures, compiler characteristics |
| ## |
| |
| m4_defun([AC_PROG_CC_STDC], []) dnl We don't want that. |
| AC_C_BIGENDIAN |
| AC_C_CONST |
| AC_C_INLINE |
| AC_C_STRINGIZE |
| PGAC_C_SIGNED |
| AC_C_VOLATILE |
| PGAC_C_FUNCNAME_SUPPORT |
| PGAC_STRUCT_TIMEZONE |
| PGAC_UNION_SEMUN |
| PGAC_STRUCT_SOCKADDR_UN |
| PGAC_STRUCT_SOCKADDR_STORAGE |
| PGAC_STRUCT_SOCKADDR_STORAGE_MEMBERS |
| PGAC_STRUCT_ADDRINFO |
| AC_TYPE_INTPTR_T |
| AC_TYPE_UINTPTR_T |
| AC_TYPE_LONG_LONG_INT |
| |
| AC_CHECK_TYPES([struct cmsgcred, struct fcred, struct sockcred], [], [], |
| [#include <sys/param.h> |
| #include <sys/types.h> |
| #include <sys/socket.h> |
| #include <sys/ucred.h>]) |
| |
| AC_CHECK_TYPES([struct option], [], [], |
| [#ifdef HAVE_GETOPT_H |
| #include <getopt.h> |
| #endif]) |
| |
| if test "$with_zlib" = yes; then |
| # 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 |
| # seems unwise to encourage people to use such old zlib versions... |
| AC_CHECK_TYPE(z_streamp, [], [AC_MSG_ERROR([zlib version is too old |
| Use --without-zlib to disable zlib support.])], |
| [#include <zlib.h>]) |
| fi |
| |
| if test "$with_krb5" = yes; then |
| # Check for differences between MIT and Heimdal (KTH) releases |
| AC_CHECK_MEMBERS(krb5_ticket.enc_part2, [], |
| [AC_CHECK_MEMBERS(krb5_ticket.client, [], |
| [AC_MSG_ERROR([could not determine how to get client name from Kerberos 5 ticket])], |
| [#include <krb5.h>])], |
| [#include <krb5.h>]) |
| AC_CHECK_MEMBERS(krb5_error.text.data, [], |
| [AC_CHECK_MEMBERS(krb5_error.e_data, [], |
| [AC_MSG_ERROR([could not determine how to extract Kerberos 5 error messages])], |
| [#include <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 |
| |
| |
| ## |
| ## Functions, global variables |
| ## |
| |
| PGAC_VAR_INT_TIMEZONE |
| AC_FUNC_ACCEPT_ARGTYPES |
| PGAC_FUNC_GETTIMEOFDAY_1ARG |
| |
| AC_CHECK_FUNCS([cbrt dlopen fcvt fdatasync getifaddrs getpeereid getpeerucred getrlimit memmove poll pstat readlink setproctitle setsid sigprocmask symlink sysconf towlower utime utimes waitpid wcstombs]) |
| |
| # posix_fadvise() is a no-op on Solaris, so don't incur function overhead |
| # by calling it, 2009-04-02 |
| # http://src.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/lib/libc/port/gen/posix_fadvise.c |
| if test "$PORTNAME" != "solaris"; then |
| AC_CHECK_FUNCS(posix_fadvise) |
| AC_CHECK_DECLS(posix_fadvise, [], [], [#include <fcntl.h>]) |
| fi |
| |
| AC_CHECK_DECLS(fdatasync, [], [], [#include <unistd.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_DEFINE(HAVE_IPV6, 1, [Define to 1 if you have support for IPv6.]) |
| HAVE_IPV6=yes], |
| [], |
| [$ac_includes_default |
| #include <netinet/in.h>]) |
| AC_SUBST(HAVE_IPV6) |
| |
| AC_CACHE_CHECK([for PS_STRINGS], [pgac_cv_var_PS_STRINGS], |
| [AC_TRY_LINK( |
| [#include <machine/vmparam.h> |
| #include <sys/exec.h> |
| ], |
| [PS_STRINGS->ps_nargvstr = 1; |
| PS_STRINGS->ps_argvstr = "foo";], |
| [pgac_cv_var_PS_STRINGS=yes], |
| [pgac_cv_var_PS_STRINGS=no])]) |
| if test "$pgac_cv_var_PS_STRINGS" = yes ; then |
| AC_DEFINE([HAVE_PS_STRINGS], [], [Define to 1 if the PS_STRINGS thing exists.]) |
| fi |
| |
| |
| # We use our snprintf.c emulation if either snprintf() or vsnprintf() |
| # is missing. Yes, there are machines that have only one. We may |
| # also decide to use snprintf.c if snprintf() is present but does not |
| # have all the features we need --- see below. |
| |
| if test "$PORTNAME" = "win32"; then |
| # Win32 gets snprintf.c built unconditionally. |
| # |
| # To properly translate all NLS languages strings, we must support the |
| # *printf() %$ format, which allows *printf() arguments to be selected |
| # by position in the translated string. |
| # |
| # libintl versions < 0.13 use the native *printf() functions, and Win32 |
| # *printf() doesn't understand %$, so we must use our /port versions, |
| # which do understand %$. libintl versions >= 0.13 include their own |
| # *printf versions on Win32. The libintl 0.13 release note text is: |
| # |
| # C format strings with positions, as they arise when a translator |
| # needs to reorder a sentence, are now supported on all platforms. |
| # On those few platforms (NetBSD and Woe32) for which the native |
| # printf()/fprintf()/... functions don't support such format |
| # strings, replacements are provided through <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, |
| # include/c.h will provide declarations. Note this is a separate test |
| # from whether the functions exist in the C library --- there are |
| # systems that have the functions but don't bother to declare them :-( |
| |
| AC_CHECK_DECLS([snprintf, vsnprintf]) |
| |
| |
| dnl Cannot use AC_CHECK_FUNC because isinf may be a macro |
| AC_CACHE_CHECK([for isinf], ac_cv_func_isinf, |
| [AC_TRY_LINK([ |
| #include <math.h> |
| double glob_double; |
| ], |
| [return isinf(glob_double) ? 0 : 1;], |
| [ac_cv_func_isinf=yes], |
| [ac_cv_func_isinf=no])]) |
| |
| if test $ac_cv_func_isinf = yes ; then |
| AC_DEFINE(HAVE_ISINF, 1, [Define to 1 if you have isinf().]) |
| else |
| AC_LIBOBJ(isinf) |
| # Look for a way to implement a substitute for isinf() |
| AC_CHECK_FUNCS([fpclass fp_class fp_class_d class], [break]) |
| fi |
| |
| # Some versions of libedit contain strlcpy(); so disregard that library while |
| # checking for these standard libc functions. |
| pgac_save_LIBS="$LIBS" |
| LIBS=`echo "$LIBS" | sed -e 's/-ledit//g' -e 's/-lreadline//g' -e 's/-lnetsnmp//g'` |
| |
| AC_REPLACE_FUNCS([crypt fseeko getopt getrusage inet_aton random rint srandom strdup strerror strlcat strlcpy strtol strtoul unsetenv]) |
| |
| case $host_os in |
| |
| # Windows uses a specialised env handler |
| mingw*) |
| AC_DEFINE(HAVE_UNSETENV, 1, [Define to 1 because replacement version used.]) |
| ac_cv_func_unsetenv=yes;; |
| *) |
| AC_REPLACE_FUNCS([unsetenv]) |
| ;; |
| esac |
| |
| LIBS="$pgac_save_LIBS" |
| |
| # System's version of getaddrinfo(), if any, may be used only if we found |
| # a definition for struct addrinfo; see notes in src/include/getaddrinfo.h. |
| # (Note: the AC_REPLACE_FUNCS probe fails on Windows, where the available |
| # versions of getaddrinfo don't follow normal C call protocol. This is OK |
| # because we want to use our own getaddrinfo.c on Windows anyway.) |
| if test x"$ac_cv_type_struct_addrinfo" = xyes ; then |
| AC_REPLACE_FUNCS([getaddrinfo]) |
| else |
| AC_LIBOBJ(getaddrinfo) |
| fi |
| |
| # Similarly, use system's getopt_long() only if system provides struct option. |
| if test x"$ac_cv_type_struct_option" = xyes ; then |
| AC_REPLACE_FUNCS([getopt_long]) |
| else |
| AC_LIBOBJ(getopt_long) |
| fi |
| |
| # Solaris' getopt() doesn't do what we want for long options, so always use |
| # our version on that platform. |
| if test "$PORTNAME" = "solaris"; then |
| AC_LIBOBJ(getopt) |
| fi |
| |
| # Win32 support |
| if test "$PORTNAME" = "win32"; then |
| AC_REPLACE_FUNCS(gettimeofday) |
| AC_LIBOBJ(kill) |
| AC_LIBOBJ(open) |
| AC_LIBOBJ(rand) |
| AC_LIBOBJ(win32env) |
| AC_LIBOBJ(win32error) |
| AC_DEFINE([HAVE_SYMLINK], 1, |
| [Define to 1 if you have the `symlink' function.]) |
| fi |
| |
| if test "$with_readline" = yes; then |
| PGAC_VAR_RL_COMPLETION_APPEND_CHARACTER |
| AC_CHECK_FUNCS([rl_completion_matches rl_filename_completion_function]) |
| AC_CHECK_FUNCS([replace_history_entry]) |
| fi |
| |
| |
| dnl Cannot use AC_CHECK_FUNC because finite may be a macro |
| AC_MSG_CHECKING(for finite) |
| AC_TRY_LINK([ |
| #include <math.h> |
| double glob_double; |
| ], |
| [return finite(glob_double) ? 0 : 1;], |
| [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 (especially on GNU libc) |
| dnl See also comments in c.h. |
| AC_MSG_CHECKING(for sigsetjmp) |
| AC_TRY_LINK([#include <setjmp.h>], |
| [sigjmp_buf x; sigsetjmp(x, 1);], |
| [AC_DEFINE(HAVE_SIGSETJMP, 1, [Define to 1 if you have sigsetjmp().]) |
| AC_MSG_RESULT(yes)], |
| [AC_MSG_RESULT(no)]) |
| |
| AC_DECL_SYS_SIGLIST |
| |
| AC_CHECK_FUNC(syslog, |
| [AC_CHECK_HEADER(syslog.h, |
| [AC_DEFINE(HAVE_SYSLOG, 1, [Define to 1 if you have the syslog interface.])])]) |
| |
| AC_CACHE_CHECK([for opterr], pgac_cv_var_int_opterr, |
| [AC_TRY_LINK([#include <unistd.h>], |
| [extern int opterr; opterr = 1;], |
| [pgac_cv_var_int_opterr=yes], |
| [pgac_cv_var_int_opterr=no])]) |
| if test x"$pgac_cv_var_int_opterr" = x"yes"; then |
| AC_DEFINE(HAVE_INT_OPTERR, 1, [Define to 1 if you have the global variable 'int opterr'.]) |
| fi |
| |
| AC_CACHE_CHECK([for optreset], pgac_cv_var_int_optreset, |
| [AC_TRY_LINK([#include <unistd.h>], |
| [extern int optreset; optreset = 1;], |
| [pgac_cv_var_int_optreset=yes], |
| [pgac_cv_var_int_optreset=no])]) |
| if test x"$pgac_cv_var_int_optreset" = x"yes"; then |
| AC_DEFINE(HAVE_INT_OPTRESET, 1, [Define to 1 if you have the global variable 'int optreset'.]) |
| fi |
| |
| AC_CHECK_FUNCS([strtoll strtoq], [break]) |
| AC_CHECK_FUNCS([strtoull strtouq], [break]) |
| |
| # Check for one of atexit() or on_exit() |
| AC_CHECK_FUNCS(atexit, [], |
| [AC_CHECK_FUNCS(on_exit, [], |
| [AC_MSG_ERROR([neither atexit() nor on_exit() found])])]) |
| |
| AC_REPLACE_FUNCS(fseeko) |
| case $host_os in |
| # BSD/OS & NetBSD use a custom fseeko/ftello built on fsetpos/fgetpos |
| # Mingw uses macros to access Win32 API calls |
| bsdi*|netbsd*|mingw*) |
| AC_DEFINE(HAVE_FSEEKO, 1, [Define to 1 because replacement version used.]) |
| ac_cv_func_fseeko=yes;; |
| *) |
| AC_FUNC_FSEEKO;; |
| esac |
| |
| |
| # |
| # Pthreads |
| # |
| # For each platform, we need to know about any special compile and link |
| # libraries, and whether the normal C function names are thread-safe. |
| # See the comment at the top of src/port/thread.c for more information. |
| # WIN32 doesn't need the pthread tests; it always uses threads |
| if test "$enable_thread_safety" = yes -a "$PORTNAME" != "win32"; then |
| ACX_PTHREAD # set thread flags |
| |
| # Some platforms use these, so just 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" |
| |
| |
| # At this point, we don't want to muck with the compiler name for threading. |
| # Let's see who fails, perhaps AIX. 2004-04-23 |
| if test "$PTHREAD_CC" != "$CC"; then |
| AC_MSG_ERROR([ |
| PostgreSQL does not support platforms that require a special compiler |
| for thread safety.]) |
| fi |
| |
| if test "$THREAD_SUPPORT" = no; then |
| AC_MSG_ERROR([cannot enable threads on this platform |
| This platform is known to not support thread-safe programs. For details, |
| compile and run src/bin/pg_thread_test.]) |
| fi |
| |
| # Check for *_r functions |
| _CFLAGS="$CFLAGS" |
| _LIBS="$LIBS" |
| CFLAGS="$CFLAGS $PTHREAD_CFLAGS" |
| LIBS="$LIBS $PTHREAD_LIBS" |
| |
| if test "$PORTNAME" != "win32"; then |
| AC_CHECK_HEADER(pthread.h, [], [AC_MSG_ERROR([pthread.h not found, required for --enable-thread-safety])]) |
| fi |
| |
| AC_CHECK_FUNCS([strerror_r getpwuid_r gethostbyname_r]) |
| |
| # Do test here with the proper thread flags |
| PGAC_FUNC_GETPWUID_R_5ARG |
| PGAC_FUNC_STRERROR_R_INT |
| |
| CFLAGS="$_CFLAGS" |
| LIBS="$_LIBS" |
| |
| else |
| # do not use values from template file |
| PTHREAD_CFLAGS= |
| PTHREAD_LIBS= |
| fi |
| |
| AC_SUBST(PTHREAD_CFLAGS) |
| AC_SUBST(PTHREAD_LIBS) |
| |
| |
| # We can test for libldap_r only after we know PTHREAD_LIBS |
| if test "$with_ldap" = yes ; then |
| _LIBS="$LIBS" |
| if test "$PORTNAME" != "win32"; then |
| AC_CHECK_LIB(ldap, ldap_bind, [], |
| [AC_MSG_ERROR([library 'ldap' is required for LDAP])], |
| [$EXTRA_LDAP_LIBS]) |
| LDAP_LIBS_BE="-lldap $EXTRA_LDAP_LIBS" |
| if test "$enable_thread_safety" = yes; then |
| # on some platforms ldap_r fails to link without PTHREAD_LIBS |
| AC_CHECK_LIB(ldap_r, ldap_simple_bind, [], |
| [AC_MSG_ERROR([library 'ldap_r' is required for LDAP])], |
| [$PTHREAD_CFLAGS $PTHREAD_LIBS $EXTRA_LDAP_LIBS]) |
| LDAP_LIBS_FE="-lldap_r $EXTRA_LDAP_LIBS" |
| else |
| LDAP_LIBS_FE="-lldap $EXTRA_LDAP_LIBS" |
| fi |
| else |
| AC_CHECK_LIB(wldap32, ldap_bind, [], [AC_MSG_ERROR([library 'wldap32' is required for LDAP])]) |
| LDAP_LIBS_FE="-lwldap32" |
| LDAP_LIBS_BE="-lwldap32" |
| fi |
| LIBS="$_LIBS" |
| fi |
| AC_SUBST(LDAP_LIBS_FE) |
| AC_SUBST(LDAP_LIBS_BE) |
| |
| |
| # This test makes sure that run tests work at all. Sometimes a shared |
| # library is found by the linker, but the runtime linker can't find it. |
| # This check should come after all modifications of compiler or linker |
| # variables, and before any other run tests. |
| AC_MSG_CHECKING([test program]) |
| AC_TRY_RUN([int main() { return 0; }], |
| [AC_MSG_RESULT(ok)], |
| [AC_MSG_RESULT(failed) |
| AC_MSG_ERROR([[ |
| Could not execute a simple test program. This may be a problem |
| related to locating shared libraries. Check the file 'config.log' |
| for the exact reason.]])], |
| [AC_MSG_RESULT([cross-compiling])]) |
| |
| # -------------------- |
| # Run tests below here |
| # -------------------- |
| |
| # Force use of our snprintf if system's doesn't do arg control |
| # See comment above at snprintf test for details. |
| if test "$enable_nls" = yes -a "$pgac_need_repl_snprintf" = no; then |
| PGAC_FUNC_PRINTF_ARG_CONTROL |
| if test $pgac_cv_printf_arg_control != yes ; then |
| pgac_need_repl_snprintf=yes |
| fi |
| fi |
| |
| |
| dnl Check to see if we have a working 64-bit integer type. |
| dnl This breaks down into two steps: |
| dnl (1) figure out if the compiler has a 64-bit int type with working |
| dnl arithmetic, and if so |
| dnl (2) see whether snprintf() can format the type correctly. (Currently, |
| dnl snprintf is the only library routine we really need for int8 support.) |
| dnl It's entirely possible to have a compiler that handles a 64-bit type |
| dnl when the C library doesn't; this is fairly likely when using gcc on |
| dnl an older platform, for example. |
| dnl If there is no native snprintf() or it does not handle the 64-bit type, |
| dnl we force our own version of snprintf() to be used instead. |
| dnl Note this test must be run after our initial check for snprintf/vsnprintf. |
| |
| dnl As of Postgres 8.4, we no longer support compilers without a working |
| dnl 64-bit type. But we still handle the case of snprintf being broken. |
| |
| PGAC_TYPE_64BIT_INT([long int]) |
| |
| if test x"$HAVE_LONG_INT_64" = x"no" ; then |
| PGAC_TYPE_64BIT_INT([long long int]) |
| if test x"$HAVE_LONG_LONG_INT_64" = x"no" ; then |
| AC_MSG_ERROR([Cannot find a working 64-bit integer type.]) |
| fi |
| fi |
| |
| |
| dnl If we need to use "long long int", figure out whether nnnLL notation works. |
| |
| if test x"$HAVE_LONG_LONG_INT_64" = xyes ; then |
| AC_TRY_COMPILE([ |
| #define INT64CONST(x) x##LL |
| long long int foo = INT64CONST(0x1234567890123456); |
| ], |
| [], |
| [AC_DEFINE(HAVE_LL_CONSTANTS, 1, [Define to 1 if constants of type 'long long int' should have the suffix LL.])], |
| []) |
| fi |
| |
| |
| # If we found "long int" is 64 bits, assume snprintf handles it. If |
| # we found we need to use "long long int", better check. We cope with |
| # snprintfs that use %lld, %qd, or %I64d as the format. If none of these |
| # work, fall back to our own snprintf emulation (which we know uses %lld). |
| |
| if test "$HAVE_LONG_LONG_INT_64" = yes ; then |
| if test $pgac_need_repl_snprintf = no; then |
| PGAC_FUNC_SNPRINTF_LONG_LONG_INT_FORMAT |
| if test "$LONG_LONG_INT_FORMAT" = ""; then |
| # Force usage of our own snprintf, since system snprintf is broken |
| pgac_need_repl_snprintf=yes |
| LONG_LONG_INT_FORMAT='%lld' |
| fi |
| else |
| # Here if we previously decided we needed to use our own snprintf |
| LONG_LONG_INT_FORMAT='%lld' |
| fi |
| LONG_LONG_UINT_FORMAT=`echo "$LONG_LONG_INT_FORMAT" | sed 's/d$/u/'` |
| INT64_FORMAT="\"$LONG_LONG_INT_FORMAT\"" |
| UINT64_FORMAT="\"$LONG_LONG_UINT_FORMAT\"" |
| else |
| # Here if we are not using 'long long int' at all |
| INT64_FORMAT='"%ld"' |
| UINT64_FORMAT='"%lu"' |
| fi |
| |
| AC_DEFINE_UNQUOTED(INT64_FORMAT, $INT64_FORMAT, |
| [Define to the appropriate snprintf format for 64-bit ints, if any.]) |
| |
| AC_DEFINE_UNQUOTED(UINT64_FORMAT, $UINT64_FORMAT, |
| [Define to the appropriate snprintf format for unsigned 64-bit ints, if any.]) |
| |
| # Now we have checked all the reasons to replace snprintf |
| if test $pgac_need_repl_snprintf = yes; then |
| AC_DEFINE(USE_REPL_SNPRINTF, 1, [Use replacement snprintf() functions.]) |
| AC_LIBOBJ(snprintf) |
| fi |
| |
| # Need a #define for the size of Datum (unsigned long) |
| AC_CHECK_SIZEOF([unsigned long]) |
| |
| # And check size of void *, size_t (enables tweaks for > 32bit address space) |
| AC_CHECK_SIZEOF([void *]) |
| AC_CHECK_SIZEOF([size_t]) |
| |
| # Determine memory alignment requirements for the basic C data types. |
| |
| PGAC_CHECK_ALIGNOF(short) |
| PGAC_CHECK_ALIGNOF(int) |
| PGAC_CHECK_ALIGNOF(long) |
| if test x"$HAVE_LONG_LONG_INT_64" = x"yes" ; then |
| PGAC_CHECK_ALIGNOF(long long int) |
| fi |
| PGAC_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 |
| fi |
| if test x"$HAVE_LONG_LONG_INT_64" = xyes && test $MAX_ALIGNOF -lt $pgac_cv_alignof_long_long_int ; then |
| MAX_ALIGNOF="$pgac_cv_alignof_long_long_int" |
| fi |
| AC_DEFINE_UNQUOTED(MAXIMUM_ALIGNOF, $MAX_ALIGNOF, [Define as the maximum alignment requirement of any C data type.]) |
| |
| |
| # Some platforms predefine the types int8, int16, etc. Only check |
| # a (hopefully) representative subset. |
| AC_CHECK_TYPES([int8, uint8, int64, uint64], [], [], |
| [#include <stdio.h> |
| #ifdef HAVE_SUPPORTDEFS_H |
| #include <SupportDefs.h> |
| #endif]) |
| |
| # We also check for sig_atomic_t, which *should* be defined per ANSI |
| # C, but is missing on some old platforms. |
| AC_CHECK_TYPES(sig_atomic_t, [], [], [#include <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 |
| if test "$pgac_cv_func_posix_signals" != yes -a "$enable_thread_safety" = yes; then |
| AC_MSG_ERROR([ |
| Thread-safety requires POSIX signals, which are not supported by this |
| operating system.]) |
| fi |
| fi |
| |
| if test $ac_cv_func_fseeko = yes; then |
| AC_SYS_LARGEFILE |
| AC_SUBST(enable_largefile) |
| else |
| enable_largefile=no |
| AC_SUBST(enable_largefile) |
| fi |
| |
| # Check for largefile support (must be after AC_SYS_LARGEFILE) |
| AC_CHECK_SIZEOF([off_t]) |
| |
| if test "$PORTNAME" != "win32"; then |
| # 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 |
| fi |
| |
| # SunOS doesn't handle negative byte comparisons properly with +/- return |
| AC_FUNC_MEMCMP |
| |
| |
| # Select semaphore implementation type. |
| if test "$PORTNAME" != "win32"; then |
| if test x"$USE_NAMED_POSIX_SEMAPHORES" = x"1" ; then |
| AC_DEFINE(USE_NAMED_POSIX_SEMAPHORES, 1, [Define to select named POSIX semaphores.]) |
| SEMA_IMPLEMENTATION="src/backend/port/posix_sema.c" |
| else |
| if test x"$USE_UNNAMED_POSIX_SEMAPHORES" = x"1" ; then |
| AC_DEFINE(USE_UNNAMED_POSIX_SEMAPHORES, 1, [Define to select unnamed POSIX semaphores.]) |
| SEMA_IMPLEMENTATION="src/backend/port/posix_sema.c" |
| else |
| AC_DEFINE(USE_SYSV_SEMAPHORES, 1, [Define to select SysV-style semaphores.]) |
| SEMA_IMPLEMENTATION="src/backend/port/sysv_sema.c" |
| fi |
| fi |
| else |
| AC_DEFINE(USE_WIN32_SEMAPHORES, 1, [Define to select Win32-style semaphores.]) |
| SEMA_IMPLEMENTATION="src/backend/port/win32_sema.c" |
| fi |
| |
| |
| # Select shared-memory implementation type. |
| if test "$PORTNAME" != "win32"; then |
| AC_DEFINE(USE_SYSV_SHARED_MEMORY, 1, [Define to select SysV-style shared memory.]) |
| SHMEM_IMPLEMENTATION="src/backend/port/sysv_shmem.c" |
| else |
| AC_DEFINE(USE_WIN32_SHARED_MEMORY, 1, [Define to select Win32-style shared memory.]) |
| SHMEM_IMPLEMENTATION="src/backend/port/win32_shmem.c" |
| fi |
| |
| # If not set in template file, set bytes to use libc memset() |
| if test x"$MEMSET_LOOP_LIMIT" = x"" ; then |
| MEMSET_LOOP_LIMIT=1024 |
| fi |
| AC_DEFINE_UNQUOTED(MEMSET_LOOP_LIMIT, ${MEMSET_LOOP_LIMIT}, [Define bytes to use libc memset().]) |
| |
| |
| if test "$enable_nls" = yes ; then |
| PGAC_CHECK_GETTEXT |
| fi |
| |
| # Check for Tcl configuration script tclConfig.sh |
| if test "$with_tcl" = yes; then |
| PGAC_PATH_TCLCONFIGSH([$with_tclconfig]) |
| PGAC_EVAL_TCLCONFIGSH([$TCL_CONFIG_SH], |
| [TCL_INCLUDE_SPEC,TCL_LIB_FILE,TCL_LIBS,TCL_LIB_SPEC,TCL_SHARED_BUILD]) |
| AC_SUBST(TCL_SHLIB_LD_LIBS)dnl don't want to double-evaluate that one |
| # now that we have TCL_INCLUDE_SPEC, we can check for <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. |
| Check config.log for details. It is possible the compiler isn't looking in the proper directory. |
| Don't use --with-tcl if you don't want to enable to PL/Tcl funciontality.])]) |
| CPPFLAGS=$ac_save_CPPFLAGS |
| fi |
| |
| # |
| # Check for DocBook and tools |
| # |
| PGAC_PROG_NSGMLS |
| PGAC_PROG_JADE |
| PGAC_CHECK_DOCBOOK(4.2) |
| PGAC_PATH_DOCBOOK_STYLESHEETS |
| PGAC_PATH_COLLATEINDEX |
| AC_CHECK_PROGS(SGMLSPL, sgmlspl) |
| |
| # Thread testing |
| |
| # We have to run the thread test near the end so we have all our symbols |
| # defined. Cross compiling throws a warning. |
| # |
| if test "$enable_thread_safety_force" = yes; then |
| if test "$PORTNAME" != "win32" |
| then |
| AC_MSG_WARN([ |
| *** Skipping thread test program. --enable-thread-safety-force was used. |
| *** Run the program in src/test/thread on the your machine and add proper |
| *** locking function calls to your applications to guarantee thread safety. |
| ]) |
| else |
| AC_MSG_WARN([*** skipping thread test on Win32]) |
| fi |
| elif test "$enable_thread_safety" = yes; then |
| if test "$PORTNAME" != "win32" |
| then |
| AC_MSG_CHECKING([thread safety of required library functions]) |
| |
| _CFLAGS="$CFLAGS" |
| _LIBS="$LIBS" |
| CFLAGS="$CFLAGS $PTHREAD_CFLAGS -DIN_CONFIGURE" |
| LIBS="$LIBS $PTHREAD_LIBS" |
| AC_TRY_RUN([#include "$srcdir/src/test/thread/thread_test.c"], |
| [AC_MSG_RESULT(yes)], |
| [AC_MSG_RESULT(no) |
| AC_MSG_ERROR([thread test program failed |
| This platform is not thread-safe. Check the file 'config.log' for the |
| exact reason. |
| |
| You can use the configure option --enable-thread-safety-force to force |
| threads to be enabled. But you must then run the program in |
| src/test/thread and add locking function calls to your applications to |
| guarantee thread safety.])], |
| [AC_MSG_RESULT(maybe) |
| AC_MSG_WARN([ |
| *** Skipping thread test program because of cross-compile build. |
| *** Run the program in src/test/thread on the target machine. |
| ])]) |
| CFLAGS="$_CFLAGS" |
| LIBS="$_LIBS" |
| else |
| AC_MSG_WARN([*** skipping thread test on Win32]) |
| fi |
| fi |
| |
| # If compiler will take -Wl,--as-needed (or various platform-specific |
| # spellings thereof) 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,-dead_strip_dylibs], $link_test_func) |
| elif test "$PORTNAME" = "openbsd"; then |
| PGAC_PROG_CC_LDFLAGS_OPT([-Wl,-Bdynamic], $link_test_func) |
| else |
| PGAC_PROG_CC_LDFLAGS_OPT([-Wl,--as-needed], $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 |
| # a symlink-free name. |
| if ( test "$srcdir" -ef . ) >/dev/null 2>&1 || test "`cd $srcdir && /bin/pwd`" = "`/bin/pwd`"; then |
| vpath_build=no |
| else |
| vpath_build=yes |
| if test "$no_create" != yes; then |
| _AS_ECHO_N([preparing build tree... ]) |
| pgac_abs_top_srcdir=`cd "$srcdir" && pwd` |
| $SHELL "$ac_aux_dir/prep_buildtree" "$pgac_abs_top_srcdir" "." \ |
| || AC_MSG_ERROR(failed) |
| AC_MSG_RESULT(done) |
| fi |
| fi |
| AC_SUBST(vpath_build) |
| |
| AC_CONFIG_FILES([GNUmakefile src/VERSIONS.mk depends/thirdparty/googletest/Makefile.global depends/libhdfs3/Makefile.global depends/libyarn/Makefile.global src/Makefile.global src/pl/pljava/src/java/Makefile.global]) |
| |
| AC_CONFIG_LINKS([ |
| src/backend/port/dynloader.c:src/backend/port/dynloader/${template}.c |
| src/backend/port/pg_sema.c:${SEMA_IMPLEMENTATION} |
| src/backend/port/pg_shmem.c:${SHMEM_IMPLEMENTATION} |
| src/include/dynloader.h:src/backend/port/dynloader/${template}.h |
| src/include/pg_config_os.h:src/include/port/${template}.h |
| 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 |
| |
| # Remove build_timestamp file to make sure rebuild depends lib: libhdfs & libyarn |
| rm -f depends/libhdfs3/build/libhdfs3_build_timestamp |
| rm -f depends/libyarn/build/libyarn_build_timestamp |
| rm -f depends/thirdparty/gporca_build_timestamp |
| rm -f depends/thirdparty/gpos_build_timestamp |
| rm -f depends/thirdparty/gp-xerces_build_timestamp |
| rm -f depends/thirdparty/gpos_build_timestamp |
| |
| AC_CONFIG_HEADERS([src/include/pg_config.h], |
| [ |
| # Update timestamp for pg_config.h (see Makefile.global) |
| echo >src/include/stamp-h |
| ]) |
| |
| AC_CONFIG_HEADERS([src/interfaces/ecpg/include/ecpg_config.h], |
| [echo >src/interfaces/ecpg/include/stamp-h]) |
| |
| AC_OUTPUT |
| |
| # Warn about unknown options |
| PGAC_ARG_CHECK |