*** pgsql/configure.in 2000/07/05 17:44:26 1.26 --- pgsql/configure.in 2009/10/21 19:56:21 1.612.2.1 *************** *** 1,944 **** dnl Process this file with autoconf to produce a configure script. ! AC_INIT(src/backend/access/common/heaptuple.c) ! AC_PREFIX_DEFAULT(/usr/local/pgsql) ! AC_CONFIG_HEADER(src/include/config.h) ! AC_PREREQ(2.13) ! AC_CONFIG_AUX_DIR(`pwd`/config) ! VERSION='7.1devel' ! AC_SUBST(VERSION) ! AC_DEFINE_UNQUOTED(PG_VERSION, "$VERSION") ! mkinstalldirs="\$(SHELL) \$(top_srcdir)/config/mkinstalldirs" ! AC_SUBST(mkinstalldirs) AC_CANONICAL_HOST ! tas_file=dummy.s ! case "$host_os" in ! solaris*) ! case "$host_cpu" in ! sparc) os=solaris_sparc need_tas=yes tas_file=solaris_sparc.s ;; ! i386) os=solaris_i386 need_tas=yes tas_file=solaris_i386.s ;; ! esac ;; ! sunos*) os=sunos4 need_tas=no ;; ! beos) os=beos need_tas=no ;; ! aux*) os=aux need_tas=no ;; ! linux*) os=linux need_tas=no ;; ! bsdi*) os=bsdi need_tas=no ;; ! freebsd1*|freebsd2*) os=freebsd need_tas=no ;; ! freebsd*) os=freebsd need_tas=no elf=yes ;; ! netbsd*) os=netbsd need_tas=no ;; ! openbsd*) os=bsd need_tas=no ;; ! dgux*) os=dgux need_tas=no ;; ! aix*) os=aix need_tas=no ;; ! nextstep*) os=nextstep need_tas=no ;; ! ultrix*) os=ultrix4 need_tas=no ;; ! irix*) os=irix5 need_tas=no ;; ! hpux*) os=hpux need_tas=yes tas_file=hpux.s ;; ! osf*) os=alpha need_tas=no ;; ! sco*) os=sco need_tas=no ;; ! machten*) os=machten need_tas=no ;; ! cygwin*) os=win need_tas=no ;; sysv4.2*) ! case "$host_vendor" in ! univel) os=univel need_tas=no ;; ! *) os=unknown need_tas=no ;; ! esac ;; ! sysv4*) os=svr4 need_tas=no ;; ! sysv5uw*) os=unixware need_tas=no ;; ! unixware*) os=unixware need_tas=no ;; ! qnx*) os=qnx4 need_tas=no ;; ! *) echo "" ! echo "*************************************************************" ! echo "configure does not currently recognize your operating system," ! echo "therefore you must do a manual configuration of:" ! echo "$host_os" ! echo "Please contact scrappy@hub.org to see about rectifying this, " ! echo "including the above 'checking host system type...' line " ! echo "*************************************************************" ! echo "" ! exit;; esac ! PORTNAME=${os} ! CPU=${host_cpu} ! AC_LINK_FILES(src/backend/port/dynloader/${os}.c, src/backend/port/dynloader.c) ! AC_LINK_FILES(src/backend/port/dynloader/${os}.h, src/include/dynloader.h) ! AC_LINK_FILES(src/include/port/${os}.h, src/include/os.h) ! AC_LINK_FILES(src/makefiles/Makefile.${os}, src/Makefile.port) ! if test "X$need_tas" = "Xyes" ! then ! AC_LINK_FILES(src/backend/port/tas/${tas_file}, src/backend/port/tas.s) ! TAS=tas.o ! AC_SUBST(TAS) ! fi ! ! dnl this part selects the template from the ones in the template directory. ! ! AC_MSG_CHECKING(setting template to) ! AC_ARG_WITH(template, ! [ --with-template=TEMPLATE ! use operating system template file ! see template directory], ! [ TEMPLATE=$withval ], ! [ ! ! # lowercase $host ! host="`echo $host | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`" ! ! # First, try for a template exactly matching $host ! if test -f "src/template/$host" ! then TEMPLATE="$host" ! else ! # Scan template/.similar for a rule that tells us which template to use. ! # The format of each line of the file is ! # hostnamepattern=templatefilename ! # where the hostnamepattern is evaluated per the rules of expr(1) --- ! # namely, it is a standard regular expression with an implicit ^ at the ! # start. If multiple lines match, we will end up using the last match. ! # ! # The tempfile hackery is needed because some shells will run the loop ! # inside a subshell, whereupon shell variables set therein aren't seen ! # outside the loop :-( ! TMPFILE="guesses.$$" ! cat /dev/null > $TMPFILE ! while read LINE ! do ! SIMHOST=`expr "$LINE" : '\(.*\)='` ! MATCH=`expr "$host" : "$SIMHOST"` ! if test "$MATCH" != 0 ! then ! echo "$LINE" | sed 's/^.*=//' > $TMPFILE ! fi ! done conftest.sh ! . ./conftest.sh ! rm -f conftest.sh ! ] ! dnl ! dnl Add non-standard directories to the include path ! dnl ! AC_ARG_WITH(includes, [ --with-includes=DIRS add non-standard include paths], ! [if test x"$withval" = x"yes" || test x"$withval" = x"no" ; then ! AC_MSG_ERROR([You must supply an argument to the --with-includes option.]) fi]) ! # SRCH_INC comes from the template file ! ac_save_IFS=$IFS ! IFS=':' ! 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) - dnl - dnl Add non-standard directories to the library search path - dnl - AC_ARG_WITH(libraries, - [ --with-libraries=DIRS look for additional libraries in DIRS], - [ - case "$withval" in - "" | y | ye | yes | n | no) - AC_MSG_ERROR([*** You must supply an argument to the --with-libraries option.]) - ;; - esac - LIBRARY_DIRS="$withval" - ]) - - AC_ARG_WITH(libs, - [ --with-libs=DIRS alternate spelling of --with-libraries], - [ - case "$withval" in - "" | y | ye | yes | n | no) - AC_MSG_ERROR([*** You must supply an argument to the --with-libs option.]) - ;; - esac - LIBRARY_DIRS="$withval" - ]) - - dnl LIBRARY_DIRS comes from command line, SRCH_LIB from template file. - dnl Each can name one or more directories. - if test "$LIBRARY_DIRS" -o "$SRCH_LIB"; then - for dir in $LIBRARY_DIRS $SRCH_LIB; do - if test -d "$dir"; then - PGSQL_LDFLAGS="$PGSQL_LDFLAGS -L$dir" - else - AC_MSG_WARN([*** Library directory $dir does not exist.]) - fi - done - fi - - - AC_MSG_CHECKING(whether to support locale) - AC_ARG_ENABLE( - locale, - [ --enable-locale enable locale support ], - [AC_DEFINE(USE_LOCALE) AC_MSG_RESULT(enabled)], - AC_MSG_RESULT(disabled) - ) - - dnl We exclude cyrillic recode support unless we override it with - dnl --enable-recode to explicitly enable it - dnl It defaults to disabled - AC_MSG_CHECKING(whether to support cyrillic recode) - AC_ARG_ENABLE( - recode, - [ --enable-recode enable cyrillic recode support ], - [AC_DEFINE(CYR_RECODE) AC_MSG_RESULT(enabled)], - AC_MSG_RESULT(disabled) - ) - - dnl Multibyte support - - AC_MSG_CHECKING(whether to support multibyte) - AC_ARG_ENABLE(multibyte, - [ --enable-multibyte enable multibyte character support ], - [ - MULTIBYTE=SQL_ASCII - if test "$enableval" != "yes"; then - case "$enableval" in - SQL_ASCII|EUC_JP|EUC_CN|EUC_KR|EUC_TW|UNICODE|MULE_INTERNAL|LATIN1|LATIN2|LATIN3|LATIN4|LATIN5|KOI8|WIN|ALT) - # ok - ;; - *) - AC_MSG_ERROR( - [Argument to --enable-multibyte must be one of: - SQL_ASCII, EUC_JP, EUC_CN, EUC_KR, EUC_TW, - UNICODE, MULE_INTERNAL, - LATIN1, LATIN2, LATIN3, LATIN4, LATIN5, - KOI8, WIN, ALT - Or do not specify an argument to the option to use the default.]) - esac - MULTIBYTE=$enableval - fi - AC_DEFINE(MULTIBYTE) - AC_MSG_RESULT(enabled) - ], - AC_MSG_RESULT("disabled") - ) - - dnl Old option variant - if test "${with_mb}"; then - AC_MSG_ERROR([--with-mb is not supported anymore. Use --enable-multibyte instead.]) - fi - - - dnl We use the default value of 5432 for the DEF_PGPORT value. If - dnl we over-ride it with --with-pgport=port then we bypass this piece - AC_MSG_CHECKING(setting DEF_PGPORT) - AC_ARG_WITH( - pgport, - [ --with-pgport=PORTNUM change default postmaster port ], - [default_port="$withval"], - [default_port=5432] - ) - dnl Need both of these because backend wants an integer and frontend a string - AC_DEFINE_UNQUOTED(DEF_PGPORT, ${default_port}) - AC_DEFINE_UNQUOTED(DEF_PGPORT_STR, "${default_port}") - AC_MSG_RESULT(${default_port}) - - - dnl DEF_MAXBACKENDS can be set by --with-maxbackends. Default value is 32. - AC_MSG_CHECKING(setting DEF_MAXBACKENDS) - AC_ARG_WITH( - maxbackends, - [ --with-maxbackends=N set default maximum number of server processes ], - AC_DEFINE_UNQUOTED(DEF_MAXBACKENDS, ${withval}) AC_MSG_RESULT($with_maxbackends), - AC_DEFINE_UNQUOTED(DEF_MAXBACKENDS, 32) AC_MSG_RESULT(32) - ) - - - dnl Check for C support (allow override if needed) - dnl Note: actually, setting CC environment variable works just as well. - AC_ARG_WITH(CC, - [ --with-CC=compiler use specific C compiler], - [ - case "$withval" in - "" | y | ye | yes | n | no) - AC_MSG_ERROR([*** You must supply an argument to the --with-CC option.]) - ;; - esac - CC="$withval" - ]) - - dnl Find a compiler if CC is not already set. - AC_PROG_CC - dnl Find CPP, then check traditional. - dnl Caution: these macros must be called in this order... AC_PROG_CPP - AC_PROG_GCC_TRADITIONAL AC_SUBST(GCC) - if test x"$GCC" = x"yes" ; then - cc_string="GCC `${CC} --version`" - else - cc_string=$CC - fi - AC_DEFINE_UNQUOTED(PG_VERSION_STR, ["PostgreSQL $VERSION on $host, compiled by $cc_string"], [A canonical string containing the version number, platform, and C compiler]) - ! dnl We exclude tcl support unless user says --with-tcl ! AC_MSG_CHECKING(setting USE_TCL) ! AC_ARG_WITH( ! tcl, ! [ --with-tcl build Tcl interfaces and pgtclsh ], ! [ ! case "$withval" in ! y | ye | yes) USE_TCL=true; USE_TK=true; AC_MSG_RESULT(enabled) ;; ! *) USE_TCL=; USE_TK=; AC_MSG_RESULT(disabled) ;; ! esac ! ], ! [ USE_TCL=; USE_TK=; AC_MSG_RESULT(disabled) ] ! ) ! ! export USE_TCL ! export USE_TK ! ! dnl We see if the path to the TCL/TK configuration scripts is specified. ! dnl This will override the use of tclsh to find the paths to search. ! ! AC_ARG_WITH(tclconfig, ! [ --with-tclconfig=DIR tclConfig.sh and tkConfig.sh are in DIR], ! [ ! case "$withval" in ! "" | y | ye | yes | n | no) ! AC_MSG_ERROR([*** You must supply an argument to the --with-tclconfig option.]) ! ;; ! esac ! TCL_DIRS="$withval" ! ] ! ) ! ! dnl We see if the path to the TK configuration scripts is specified. ! dnl This will override the use of tclsh to find the paths to search. ! ! AC_ARG_WITH(tkconfig, ! [ --with-tkconfig=DIR tkConfig.sh is in DIR], ! [ ! case "$withval" in ! "" | y | ye | yes | n | no) ! AC_MSG_ERROR([*** You must supply an argument to the --with-tkconfig option.]) ! ;; ! esac ! TK_DIRS="$withval" ! ] ! ) ! dnl ! dnl Optionally build Perl modules (Pg.pm and PL/Perl) ! dnl ! AC_MSG_CHECKING(whether to build Perl modules) ! AC_ARG_WITH(perl, [ --with-perl build Perl interface and plperl], ! [if test x"${withval}" = x"yes" ; then ! AC_MSG_RESULT(yes) ! else ! AC_MSG_RESULT(no) ! fi], ! [AC_MSG_RESULT(no)]) ! AC_SUBST(with_perl) ! dnl ! dnl Optionally build Python interface module ! dnl ! AC_MSG_CHECKING(whether to build Python modules) ! AC_ARG_WITH(python, [ --with-python build Python interface module], ! [if test x"${withval}" = x"yes" ; then ! AC_MSG_RESULT(yes) ! PGAC_PROG_PYTHON ! PGAC_PATH_PYTHONDIR ! else ! AC_MSG_RESULT(no) ! fi], ! [AC_MSG_RESULT(no)]) ! AC_SUBST(with_python) ! dnl ! dnl Optionally build with Kerberos 4 support ! dnl ! AC_MSG_CHECKING(whether to build with Kerberos 4 support) ! AC_ARG_WITH(krb4, [ --with-krb4[=DIR] use Kerberos 4 [/usr/athena]], ! [if test x"$withval" != x"no"; then ! # If the user didn't give an argument, we take the Kerberos 4 default ! # path /usr/athena. We look into lib/ and include/ for the Kerberos ! # libraries and includes. If the user has a more complicated layout ! # he can use --with-includes and --with-libraries. ! if test x"$withval" = x"yes"; then ! krb4dir=/usr/athena else ! krb4dir=$withval ! fi ! with_krb4=yes ! AC_MSG_RESULT(yes) ! if test -d $krb4dir; then ! if test -d "$krb4dir/include"; then ! INCLUDES="$INCLUDES -I$krb4dir/include" ! fi ! if test -d "$krb4dir/lib"; then ! krb_libdir="-L$krb4dir/lib" ! LIBS="$krb_libdir $LIBS" ! fi fi ! AC_CHECK_LIB(des, main, [], [AC_MSG_ERROR([library \`des' is required for Kerberos 4])]) ! AC_CHECK_LIB(krb, main, [], [AC_MSG_ERROR([library \`krb' is required for Kerberos 4])]) ! KRB_LIBS="$krb_libdir -lkrb -ldes" ! AC_DEFINE(KRB4,, [Define if you are building with Kerberos 4 support.]) ! else ! AC_MSG_RESULT(no) ! fi], ! [AC_MSG_RESULT(no)]) ! AC_SUBST(with_krb4) ! dnl ! dnl Optionally build with Kerberos 5 support ! dnl ! AC_MSG_CHECKING(whether to build with Kerberos 5 support) ! AC_ARG_WITH(krb5, [ --with-krb5[=DIR] use Kerberos 5 [/usr/athena]], ! [if test x"$withval" != x"no"; then ! if test x"$withval" = x"yes"; then ! krb5dir=/usr/athena else ! krb5dir=$withval ! fi ! with_krb5=yes ! AC_MSG_RESULT(yes) ! if test -d $krb5dir; then ! if test -d "$krb5dir/include"; then ! INCLUDES="$INCLUDES -I$krb5dir/include" ! fi ! if test -d "$krb5dir/lib"; then ! krb_libdir="-L$krb5dir/lib" ! LIBS="$krb_libdir $LIBS" ! fi fi ! AC_CHECK_LIB(com_err, main, [], [AC_MSG_ERROR([library \`com_err' is required for Kerberos 5])]) ! AC_CHECK_LIB(crypto, main, [], [AC_MSG_ERROR([library \`crypto' is required for Kerberos 5])]) ! AC_CHECK_LIB(krb5, main, [], [AC_MSG_ERROR([library \`krb5' is required for Kerberos 5])]) ! KRB_LIBS="$krb_libdir -lkrb5 -lcrypto -lcom_err" ! AC_DEFINE(KRB5,, [Define if you are building with Kerberos 5 support.]) ! else ! AC_MSG_RESULT(no) ! fi], ! [AC_MSG_RESULT(no)]) ! AC_SUBST(with_krb5) ! dnl Necessary for special libpq link ! AC_SUBST(KRB_LIBS) ! dnl ! dnl Kerberos configuration parameters ! dnl ! AC_ARG_WITH(krb-srvnam, [ --with-krb-srvnam=NAME name of the Postgres service principal in Kerberos], ! [if test x"$withval" = x"yes"; then ! AC_MSG_ERROR([argument required for --with-krb-srvnam]) ! else ! krb_srvnam=$withval ! fi], ! [krb_srvnam="postgres"]) ! AC_DEFINE_UNQUOTED(PG_KRB_SRVNAM, ["$krb_srvnam"], [The name of the Postgres service principal]) ! ! AC_ARG_WITH(krb-srvtab, [ --with-krb-srvtab=FILE location of Kerberos server's keytab file], ! [if test x"$withval" = x"yes"; then ! AC_MSG_ERROR([argument required for --with-krb-srvtab]) ! else ! krb_srvtab=$withval ! fi], ! [if test x"$with_krb5" = x"yes"; then ! krb_srvtab="FILE:/usr/local/postgres/krb5.keytab" ! else ! krb_srvtab="/etc/srvtab" ! fi]) ! AC_DEFINE_UNQUOTED(PG_KRB_SRVTAB, ["$krb_srvtab"], [The location of the Kerberos server's keytab file]) ! dnl ! dnl Optionally enable the building of the ODBC driver ! dnl ! ! dnl Old option name ! if test "x${with_odbc+set}" = xset && test "x${enable_odbc+set}" != xset; then ! enable_odbc=$with_odbc ! fi ! ! AC_MSG_CHECKING(whether to build the ODBC driver) ! AC_ARG_ENABLE(odbc, [ --enable-odbc build the ODBC driver package], ! [if test x"$enableval" = x"yes" ; then ! AC_MSG_RESULT(yes) ! else ! AC_MSG_RESULT(no) ! fi], ! [AC_MSG_RESULT(no)]) ! AC_SUBST(enable_odbc) ! ! ! dnl Allow for overriding the default location of the odbcinst.ini ! dnl file which is normally ${datadir} (i.e., ${prefix}/share). ! if test x"$enable_odbc" = x"yes" ; then ! AC_ARG_WITH(odbcinst, [ --with-odbcinst=DIR default directory for odbcinst.ini [datadir]], ! [if test x"$with_odbcinst" = x"yes" || test x"$with_odbcinst" = x"no" ; then ! AC_MSG_ERROR([You must supply an argument to the --with-odbcinst option.]) ! fi ! odbcinst_ini_dir=$withval], ! [odbcinst_ini_dir='${datadir}']) ! else ! odbcinst_ini_dir='${datadir}' ! fi ! AC_SUBST(odbcinst_ini_dir) - dnl Unless we specify the command line options - dnl --enable cassert to explicitly enable it - dnl If you do not explicitly do it, it defaults to disabled - AC_MSG_CHECKING(setting ASSERT CHECKING) - AC_ARG_ENABLE( - cassert, - [ --enable-cassert enable assertion checks (for debugging) ], - AC_DEFINE(USE_ASSERT_CHECKING) AC_MSG_RESULT(enabled), - AC_MSG_RESULT(disabled) - ) ! CPPFLAGS="$CPPFLAGS $INCLUDES" ! echo "- setting CPPFLAGS=$CPPFLAGS" ! LDFLAGS="$LDFLAGS $PGSQL_LDFLAGS" ! echo "- setting LDFLAGS=$LDFLAGS" ! dnl --enable-debug adds -g to compiler flags ! dnl --disable-debug will forcefully remove it ! AC_MSG_CHECKING(setting debug compiler flag) ! AC_ARG_ENABLE( ! debug, ! [ --enable-debug build with debugging symbols (-g) ], ! [ ! case "$enableval" in ! y | ye | yes) ! CFLAGS="$CFLAGS -g" ! AC_MSG_RESULT(enabled) ! ;; ! *) ! CFLAGS=`echo "$CFLAGS" | sed -e 's/ -g/ /g' | sed -e 's/^-g//'` ! AC_MSG_RESULT(disabled) ! ;; ! esac ! ], ! AC_MSG_RESULT(using default) ! ) # Assume system is ELF if it predefines __ELF__ as 1, ! # otherwise believe "elf" setting from check of host_os above. 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) ! AC_SUBST(PORTNAME) ! AC_SUBST(CPU) ! AC_SUBST(SRCDIR) ! AC_SUBST(LDFLAGS) ! AC_SUBST(AROPT) ! AC_SUBST(SHARED_LIB) ! AC_SUBST(CFLAGS) ! AC_SUBST(DLSUFFIX) ! AC_SUBST(DL_LIB) ! AC_SUBST(USE_TCL) ! AC_SUBST(USE_TK) ! AC_SUBST(WISH) ! AC_SUBST(MULTIBYTE) ! dnl ! dnl Optionally build C++ code (i.e., libpq++) ! dnl ! AC_MSG_CHECKING(whether to build C++ modules) ! AC_ARG_WITH(CXX, [ --with-CXX build C++ modules (libpq++)], ! [if test "x${withval+set}" = xset; then ! AC_MSG_RESULT(yes) ! if test x"$withval" != xyes ; then ! CXX=$withval fi ! AC_PROG_CXX ! AC_PROG_CXXCPP ! PGAC_CLASS_STRING ! PGAC_CXX_NAMESPACE_STD else ! AC_MSG_RESULT(no) ! fi], ! [AC_MSG_RESULT(no)]) ! AC_SUBST(with_CXX) ! dnl Figure out how to invoke "install" and what install options to use. ! AC_PROG_INSTALL ! INSTLOPTS="-m 444" ! INSTL_EXE_OPTS="-m 555" ! INSTL_SCRIPT_OPTS="-m 755" ! INSTL_LIB_OPTS="-m 644" ! INSTL_SHLIB_OPTS="-m 644" ! dnl HPUX wants shared libs to be mode 555. ! case "$host_os" in ! hpux*) ! INSTL_SHLIB_OPTS="-m 555" ;; ! esac ! AC_SUBST(INSTLOPTS) ! AC_SUBST(INSTL_LIB_OPTS) ! AC_SUBST(INSTL_SHLIB_OPTS) ! AC_SUBST(INSTL_EXE_OPTS) - dnl Fix autoconf's brain-dead defaults for script and shlib installs. ! INSTALL_SCRIPT="\${INSTALL} $INSTL_SCRIPT_OPTS" ! AC_SUBST(INSTALL_SCRIPT) ! INSTALL_SHLIB="\${INSTALL} $INSTL_SHLIB_OPTS" ! AC_SUBST(INSTALL_SHLIB) ! AC_PROG_AWK ! AC_PROG_LEX ! if test "$LEX" = "flex"; then ! $LEX --version 2> /dev/null | grep -s '2\.5\.3' > /dev/null 2>&1 ! if test $? -eq 0 ; then ! AC_MSG_WARN([ ! *** ! You have flex version 2.5.3, which is broken. Get version 2.5.4 or ! a different lex. ! (If you are using the official distribution of PostgreSQL then you ! do not need to worry about this because the lexer files are ! pre-generated. However, other software using flex is likely to be ! broken as well.) ! ***]) ! fi fi - AC_PROG_LN_S - AC_PROG_RANLIB - AC_PATH_PROG(find, find) - AC_PATH_PROG(tar, tar) - AC_PATH_PROG(split, split) - AC_PATH_PROG(etags, etags) - AC_PATH_PROG(xargs, xargs) - AC_PATH_PROGS(GZCAT, gzcat zcat, gzcat) - AC_CHECK_PROGS(PERL, perl,) - AC_PROG_YACC - AC_SUBST(YFLAGS) - - - AC_CHECK_LIB(z, main) - AC_CHECK_LIB(sfio, main) - AC_CHECK_LIB(ncurses, main, [], [AC_CHECK_LIB(curses, main)]) - AC_CHECK_LIB(termcap, main) - AC_CHECK_LIB(readline, main) - AC_CHECK_LIB(readline, using_history, AC_DEFINE(HAVE_HISTORY_IN_READLINE), - AC_CHECK_LIB(history, main) ) ! if test "$PORTNAME" != "aix" -a "$PORTNAME" != "alpha" ! then ! AC_CHECK_LIB(bsd, main) fi - AC_CHECK_LIB(util, setproctitle) - AC_CHECK_LIB(m, main) - AC_CHECK_LIB(dl, main) - AC_CHECK_LIB(socket, main) - AC_CHECK_LIB(nsl, main) - AC_CHECK_LIB(ipc, main) - AC_CHECK_LIB(IPC, main) - AC_CHECK_LIB(lc, main) - AC_CHECK_LIB(dld, main) - AC_CHECK_LIB(ln, 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_SEARCH_LIBS(crypt, crypt) - - dnl Checks for header files. - AC_HEADER_STDC - AC_HEADER_SYS_WAIT - AC_CHECK_HEADERS(arpa/inet.h) - AC_CHECK_HEADERS(crypt.h) - AC_CHECK_HEADERS(dld.h) - AC_CHECK_HEADERS(endian.h) - AC_CHECK_HEADERS(float.h) - AC_CHECK_HEADERS(fp_class.h) - AC_CHECK_HEADERS(getopt.h) - AC_CHECK_HEADERS(history.h) - AC_CHECK_HEADERS(ieeefp.h) - AC_CHECK_HEADERS(limits.h) - AC_CHECK_HEADERS(netdb.h) - AC_CHECK_HEADERS(netinet/in.h) - AC_CHECK_HEADERS(readline.h) - AC_CHECK_HEADERS(readline/history.h) - AC_CHECK_HEADERS(readline/readline.h) - AC_CHECK_HEADERS(sys/select.h) - AC_CHECK_HEADERS(termios.h) - AC_CHECK_HEADERS(unistd.h) - AC_CHECK_HEADERS(values.h) - AC_CHECK_HEADERS(sys/exec.h sys/pstat.h machine/vmparam.h) - AC_CHECK_HEADERS(sys/types.h sys/socket.h) - AC_CHECK_HEADERS(sys/param.h pwd.h) ! dnl Checks for typedefs, structures, and compiler characteristics. AC_C_CONST AC_C_INLINE AC_C_STRINGIZE - AC_TYPE_UID_T - AC_TYPE_MODE_T - AC_TYPE_OFF_T - AC_TYPE_SIZE_T - AC_STRUCT_TIMEZONE PGAC_C_SIGNED ! PGAC_C_VOLATILE ! AC_FUNC_ACCEPT_ARGTYPES PGAC_VAR_INT_TIMEZONE PGAC_FUNC_GETTIMEOFDAY_1ARG - PGAC_UNION_SEMUN ! AC_MSG_CHECKING(for fcntl(F_SETLK)) ! AC_TRY_LINK([#include ! #include ], ! [struct flock lck; ! lck.l_whence = SEEK_SET; lck.l_start = lck.l_len = 0; ! lck.l_type = F_WRLCK; ! fcntl(0, F_SETLK, &lck);], ! [AC_DEFINE(HAVE_FCNTL_SETLK) AC_MSG_RESULT(yes)], ! AC_MSG_RESULT(no)) ! dnl Checks for library functions. ! AC_FUNC_MEMCMP ! AC_TYPE_SIGNAL ! AC_FUNC_VPRINTF ! AC_CHECK_FUNCS(memmove sysconf) ! AC_CHECK_FUNCS(sigprocmask waitpid setsid fcvt) ! AC_CHECK_FUNCS(setproctitle pstat) ! ! AC_MSG_CHECKING(for PS_STRINGS) ! AC_TRY_LINK( ! [#ifdef HAVE_MACHINE_VMPARAM_H ! # include ! #endif ! #ifdef HAVE_SYS_EXEC_H ! # include ! #endif], [PS_STRINGS->ps_nargvstr = 1; PS_STRINGS->ps_argvstr = "foo";], ! [AC_MSG_RESULT(yes) AC_DEFINE(HAVE_PS_STRINGS)], ! AC_MSG_RESULT(no)) ! AC_CHECK_FUNCS(fpclass fp_class fp_class_d class) ! dnl We use our snprintf.c emulation if either snprintf() or vsnprintf() ! dnl is missing. Yes, there are machines that have only one. ! dnl We may also decide to use snprintf.c if snprintf() is present but does ! dnl not have working "long long int" support -- see below. ! SNPRINTF='' ! AC_CHECK_FUNC(snprintf, ! AC_DEFINE(HAVE_SNPRINTF), ! SNPRINTF='snprintf.o') ! AC_CHECK_FUNC(vsnprintf, ! AC_DEFINE(HAVE_VSNPRINTF), ! SNPRINTF='snprintf.o') ! AC_SUBST(SNPRINTF) ! dnl Check whether declares snprintf() and vsnprintf(); if not, ! dnl include/c.h will provide declarations. Note this is a separate test ! dnl from whether the functions exist in the C library --- there are systems ! dnl that have the functions but don't bother to declare them :-( ! dnl Note: simple-minded pattern here will do wrong thing if stdio.h ! dnl declares vsnprintf() but not snprintf(). Hopefully there are no ! dnl systems that are *that* brain-damaged... ! AC_EGREP_HEADER(snprintf, stdio.h, AC_DEFINE(HAVE_SNPRINTF_DECL)) ! AC_EGREP_HEADER(vsnprintf, stdio.h, AC_DEFINE(HAVE_VSNPRINTF_DECL)) ! dnl ! dnl do this one the hard way in case isinf() is a macro ! AC_MSG_CHECKING(for isinf) ! AC_CACHE_VAL(ac_cv_func_or_macro_isinf, ! [AC_TRY_LINK( ! [#include ], ! [double x = 0.0; int res = isinf(x);], ! [ac_cv_func_or_macro_isinf=yes], ! [ac_cv_func_or_macro_isinf=no])]) ! if [[ $ac_cv_func_or_macro_isinf = yes ]]; then ! AC_MSG_RESULT(yes) ! AC_DEFINE(HAVE_ISINF) ! ISINF='' ! else ! AC_MSG_RESULT(no) ! ISINF='isinf.o' ! fi ! AC_SUBST(ISINF) ! AC_CHECK_FUNC(getrusage, ! AC_DEFINE(HAVE_GETRUSAGE), ! GETRUSAGE='getrusage.o') ! AC_SUBST(GETRUSAGE) ! AC_CHECK_FUNC(srandom, ! AC_DEFINE(HAVE_SRANDOM), ! SRANDOM='srandom.o') ! AC_SUBST(SRANDOM) ! AC_CHECK_FUNC(gethostname, ! AC_DEFINE(HAVE_GETHOSTNAME), ! GETHOSTNAME='gethostname.o') ! AC_SUBST(GETHOSTNAME) ! AC_CHECK_FUNC(random, ! AC_DEFINE(HAVE_RANDOM), ! MISSING_RANDOM='random.o') ! AC_SUBST(MISSING_RANDOM) ! AC_CHECK_FUNC(inet_aton, ! AC_DEFINE(HAVE_INET_ATON), ! INET_ATON='inet_aton.o') ! AC_SUBST(INET_ATON) ! AC_CHECK_FUNC(strerror, ! AC_DEFINE(HAVE_STRERROR), ! [STRERROR='strerror.o' STRERROR2='../../backend/port/strerror.o']) ! AC_SUBST(STRERROR) ! AC_SUBST(STRERROR2) ! AC_CHECK_FUNC(strdup, ! AC_DEFINE(HAVE_STRDUP), ! STRDUP='../../utils/strdup.o') ! AC_SUBST(STRDUP) ! AC_CHECK_FUNC(strtol, ! AC_DEFINE(HAVE_STRTOL), ! STRTOL='strtol.o') ! AC_SUBST(STRTOL) ! AC_CHECK_FUNC(strtoul, ! AC_DEFINE(HAVE_STRTOUL), ! STRTOL='strtoul.o') ! AC_SUBST(STRTOUL) ! AC_CHECK_FUNC(strcasecmp, ! AC_DEFINE(HAVE_STRCASECMP), ! STRCASECMP='strcasecmp.o') ! AC_SUBST(STRCASECMP) ! AC_CHECK_FUNC(cbrt, ! AC_DEFINE(HAVE_CBRT), ! AC_CHECK_LIB(m, cbrt, AC_DEFINE(HAVE_CBRT))) ! ! # On HPUX 9, rint() is not in regular libm.a but in /lib/pa1.1/libm.a; ! # this hackery with HPUXMATHLIB allows us to cope. ! HPUXMATHLIB="" ! case "$host_cpu" in ! hppa1.1) ! if [[ -r /lib/pa1.1/libm.a ]] ; then ! HPUXMATHLIB="-L /lib/pa1.1 -lm" ! fi ;; esac - AC_SUBST(HPUXMATHLIB) ! AC_CHECK_FUNC(rint, ! AC_DEFINE(HAVE_RINT), ! AC_CHECK_LIB(m, rint, AC_DEFINE(HAVE_RINT), , $HPUXMATHLIB)) ! ! dnl Some old versions of libreadline don't have rl_completion_append_character ! AC_EGREP_HEADER(rl_completion_append_character, readline.h, ! AC_DEFINE(HAVE_RL_COMPLETION_APPEND_CHARACTER), ! [AC_EGREP_HEADER(rl_completion_append_character, readline/readline.h, ! AC_DEFINE(HAVE_RL_COMPLETION_APPEND_CHARACTER))]) ! AC_SUBST(HAVE_RL_COMPLETION_APPEND_CHARACTER) ! ! dnl Check for readline's filename_completion_function. ! dnl Some versions have it but it's not in the headers, so we have to take ! dnl care of that, too. ! AC_CHECK_FUNCS(filename_completion_function, ! AC_EGREP_HEADER(filename_completion_function, readline.h, ! AC_DEFINE(HAVE_FILENAME_COMPLETION_FUNCTION_DECL), ! [AC_EGREP_HEADER(filename_completion_function, readline/readline.h, ! AC_DEFINE(HAVE_FILENAME_COMPLETION_FUNCTION_DECL))]) ! ) ! AC_SUBST(HAVE_FILENAME_COMPLETION_FUNCTION) ! AC_SUBST(HAVE_FILENAME_COMPLETION_FUNCTION_DECL) ! ! dnl Check for GNU style long options support (getopt_long) ! AC_CHECK_FUNCS(getopt_long) ! ! dnl Cannot use AC_CHECK_FUNC because finite may be a macro ! AC_MSG_CHECKING(for finite) ! AC_TRY_LINK([#include ], ! [int dummy=finite(1.0);], ! [AC_DEFINE(HAVE_FINITE) AC_MSG_RESULT(yes)], ! AC_MSG_RESULT(no)) dnl Cannot use AC_CHECK_FUNC because sigsetjmp may be a macro dnl (especially on GNU libc) ! dnl See also comments in config.h. AC_MSG_CHECKING(for sigsetjmp) AC_TRY_LINK([#include ], ! [sigjmp_buf x; sigsetjmp(x, 1);], ! [AC_DEFINE(HAVE_SIGSETJMP) AC_MSG_RESULT(yes)], ! AC_MSG_RESULT(no)) ! ! AC_ARG_ENABLE(syslog, [ --enable-syslog enable logging to syslog], ! [case $enableval in y|ye|yes) ! AC_CHECK_FUNC(syslog, [AC_DEFINE(ENABLE_SYSLOG)], [AC_MSG_ERROR([no syslog interface found])]) ! ;; ! esac] ! ) dnl Check to see if we have a working 64-bit integer type. dnl This breaks down into two steps: --- 1,1502 ---- dnl Process this file with autoconf to produce a configure script. ! dnl $PostgreSQL: pgsql/configure.in,v 1.612 2009/10/01 01:58:57 tgl 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([PostgreSQL], [8.5alpha2], [pgsql-bugs@postgresql.org]) ! m4_if(m4_defn([m4_PACKAGE_VERSION]), [2.63], [], [m4_fatal([Autoconf version 2.63 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-2009, PostgreSQL Global Development Group]) ! AC_CONFIG_SRCDIR([src/backend/access/common/heaptuple.c]) ! AC_CONFIG_AUX_DIR(config) ! AC_PREFIX_DEFAULT(/usr/local/pgsql) ! AC_SUBST(configure_args, [$ac_configure_args]) ! AC_DEFINE_UNQUOTED(PG_VERSION, "$PACKAGE_VERSION", [PostgreSQL version as a string]) ! [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, [NAME], [override operating system 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 ;; ! 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 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 ! ## ! ! # ! # Add non-standard directories to the include path ! # ! PGAC_ARG_REQ(with, includes, [DIRS], [look for additional header files in DIRS]) ! ! ! # ! # Add non-standard directories to the library search path ! # ! PGAC_ARG_REQ(with, libraries, [DIRS], [look for additional libraries in DIRS], ! [LIBRARY_DIRS=$withval]) ! ! PGAC_ARG_REQ(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, ! [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, [PORTNUM], [set 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, ! [do not build shared libraries]) ! AC_SUBST(enable_shared) ! ! # ! # '-rpath'-like feature can be disabled ! # ! PGAC_ARG_BOOL(enable, rpath, yes, ! [do not embed shared library search path in executables]) ! AC_SUBST(enable_rpath) ! ! # ! # Spinlocks ! # ! PGAC_ARG_BOOL(enable, spinlocks, yes, ! [do not use spinlocks]) ! ! # ! # --enable-debug adds -g to compiler flags ! # ! PGAC_ARG_BOOL(enable, debug, no, ! [build with debugging symbols (-g)]) ! AC_SUBST(enable_debug) ! ! # ! # --enable-profiling enables gcc profiling ! # ! PGAC_ARG_BOOL(enable, profiling, no, ! [build with profiling enabled ]) ! AC_SUBST(enable_profiling) ! ! # ! # --enable-coverage enables generation of code coverage metrics with gcov ! # ! PGAC_ARG_BOOL(enable, coverage, no, ! [build with coverage testing instrumentation], ! [AC_CHECK_PROGS(GCOV, gcov) ! if test -z "$GCOV"; then ! AC_MSG_ERROR([gcov not found]) ! fi ! AC_CHECK_PROGS(LCOV, lcov) ! if test -z "$LCOV"; then ! AC_MSG_ERROR([lcov not found]) ! fi ! AC_CHECK_PROGS(GENHTML, genhtml) ! if test -z "$GENHTML"; then ! AC_MSG_ERROR([genhtml not found]) fi]) + AC_SUBST(enable_coverage) ! # ! # DTrace ! # ! PGAC_ARG_BOOL(enable, dtrace, no, ! [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, [BLOCKSIZE], [set table block size in kB [8]], ! [blocksize=$withval], ! [blocksize=8]) ! case ${blocksize} in ! 1) BLCKSZ=1024;; ! 2) BLCKSZ=2048;; ! 4) BLCKSZ=4096;; ! 8) BLCKSZ=8192;; ! 16) BLCKSZ=16384;; ! 32) BLCKSZ=32768;; ! *) AC_MSG_ERROR([Invalid block size. Allowed values are 1,2,4,8,16,32.]) ! esac ! AC_MSG_RESULT([${blocksize}kB]) ! ! AC_DEFINE_UNQUOTED([BLCKSZ], ${BLCKSZ}, [ ! Size of a disk block --- this also limits the size of a tuple. You ! can set it bigger if you need bigger tuples (although TOAST should ! reduce the need to have large tuples, since fields can be spread ! across multiple tuples). ! ! BLCKSZ must be a power of 2. The maximum possible value of BLCKSZ ! is currently 2^15 (32768). This is determined by the 15-bit widths ! of the lp_off and lp_len fields in ItemIdData (see ! include/storage/itemid.h). ! ! Changing BLCKSZ requires an initdb. ! ]) ! ! # ! # Relation segment size ! # ! AC_MSG_CHECKING([for segment size]) ! PGAC_ARG_REQ(with, segsize, [SEGSIZE], [set table segment size in GB [1]], ! [segsize=$withval], ! [segsize=1]) ! # this expression is set up to avoid unnecessary integer overflow ! # blocksize is already guaranteed to be a factor of 1024 ! RELSEG_SIZE=`expr '(' 1024 / ${blocksize} ')' '*' ${segsize} '*' 1024` ! test $? -eq 0 || exit 1 ! AC_MSG_RESULT([${segsize}GB]) ! ! AC_DEFINE_UNQUOTED([RELSEG_SIZE], ${RELSEG_SIZE}, [ ! RELSEG_SIZE is the maximum number of blocks allowed in one disk file. ! Thus, the maximum size of a single file is RELSEG_SIZE * BLCKSZ; ! relations bigger than that are divided into multiple files. ! ! RELSEG_SIZE * BLCKSZ must be less than your OS' limit on file size. ! This is often 2 GB or 4GB in a 32-bit operating system, unless you ! have large file support enabled. By default, we make the limit 1 GB ! to avoid any possible integer-overflow problems within the OS. ! A limit smaller than necessary only means we divide a large ! relation into more chunks than necessary, so it seems best to err ! in the direction of a small limit. ! ! A power-of-2 value is recommended to save a few cycles in md.c, ! but is not absolutely required. ! ! Changing RELSEG_SIZE requires an initdb. ! ]) ! ! # ! # WAL block size ! # ! AC_MSG_CHECKING([for WAL block size]) ! PGAC_ARG_REQ(with, wal-blocksize, [BLOCKSIZE], [set WAL block size in kB [8]], ! [wal_blocksize=$withval], ! [wal_blocksize=8]) ! case ${wal_blocksize} in ! 1) XLOG_BLCKSZ=1024;; ! 2) XLOG_BLCKSZ=2048;; ! 4) XLOG_BLCKSZ=4096;; ! 8) XLOG_BLCKSZ=8192;; ! 16) XLOG_BLCKSZ=16384;; ! 32) XLOG_BLCKSZ=32768;; ! 64) XLOG_BLCKSZ=65536;; ! *) AC_MSG_ERROR([Invalid WAL block size. Allowed values are 1,2,4,8,16,32,64.]) ! esac ! AC_MSG_RESULT([${wal_blocksize}kB]) ! ! AC_DEFINE_UNQUOTED([XLOG_BLCKSZ], ${XLOG_BLCKSZ}, [ ! Size of a WAL file block. This need have no particular relation to BLCKSZ. ! XLOG_BLCKSZ must be a power of 2, and if your system supports O_DIRECT I/O, ! XLOG_BLCKSZ must be a multiple of the alignment requirement for direct-I/O ! buffers, else direct I/O may fail. ! ! Changing XLOG_BLCKSZ requires an initdb. ! ]) ! ! # ! # WAL segment size ! # ! AC_MSG_CHECKING([for WAL segment size]) ! PGAC_ARG_REQ(with, wal-segsize, [SEGSIZE], [set WAL segment size in MB [16]], ! [wal_segsize=$withval], ! [wal_segsize=16]) ! case ${wal_segsize} in ! 1) ;; ! 2) ;; ! 4) ;; ! 8) ;; ! 16) ;; ! 32) ;; ! 64) ;; ! *) AC_MSG_ERROR([Invalid WAL segment size. Allowed values are 1,2,4,8,16,32,64.]) ! esac ! AC_MSG_RESULT([${wal_segsize}MB]) ! ! AC_DEFINE_UNQUOTED([XLOG_SEG_SIZE], [(${wal_segsize} * 1024 * 1024)], [ ! XLOG_SEG_SIZE is the size of a single WAL file. This must be a power of 2 ! and larger than XLOG_BLCKSZ (preferably, a great deal larger than ! XLOG_BLCKSZ). ! ! Changing XLOG_SEG_SIZE requires an initdb. ! ]) ! ! # ! # C compiler ! # ! ! # 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, [CMD], [set compiler (deprecated)], [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 -O2. ! # 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 ! 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 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([-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 "$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 ! CFLAGS="$CFLAGS -g" ! fi ! ! # enable code coverage if --enable-coverage ! if test "$enable_coverage" = yes; then ! if test "$GCC" = yes; then ! CFLAGS="$CFLAGS -fprofile-arcs -ftest-coverage" else ! AC_MSG_ERROR([--enable-coverage is supported only when using GCC]) fi ! fi + # enable profiling if --enable-profiling + if test "$enable_profiling" = yes && test "$ac_cv_prog_cc_g" = yes; then + if test "$GCC" = yes; then + AC_DEFINE([PROFILE_PID_DIR], 1, + [Define to 1 to 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) + # + # 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, [turn on automatic dependency tracking], ! [autodepend=yes]) ! AC_SUBST(autodepend) ! # ! # Enable assert checks ! # ! PGAC_ARG_BOOL(enable, cassert, no, [enable assertion checks (for debugging)], ! [AC_DEFINE([USE_ASSERT_CHECKING], 1, ! [Define to 1 to build with assertion checks. (--enable-cassert)])]) ! # ! # Include directories ! # ! ac_save_IFS=$IFS ! IFS="${IFS}${PATH_SEPARATOR}" ! # SRCH_INC comes from the template file ! for dir in $with_includes $SRCH_INC; do ! if test -d "$dir"; then ! INCLUDES="$INCLUDES -I$dir" else ! AC_MSG_WARN([*** Include directory $dir does not exist.]) fi ! done ! IFS=$ac_save_IFS ! AC_SUBST(INCLUDES) ! # ! # Library directories ! # ! ac_save_IFS=$IFS ! IFS="${IFS}${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 ! # ! # Enable thread-safe client libraries ! # ! AC_MSG_CHECKING([allow thread-safe client libraries]) ! if test "$PORTNAME" != "win32"; then ! PGAC_ARG_BOOL(enable, thread-safety, no, [make client libraries thread-safe]) ! else ! # Win32 should always use threads ! PGAC_ARG_BOOL(enable, thread-safety, yes, [make client libraries thread-safe]) ! fi + PGAC_ARG_BOOL(enable, thread-safety-force, no, [force thread-safety despite thread test failure]) + if test "$enable_thread_safety" = yes -o \ + "$enable_thread_safety_force" = yes; then + enable_thread_safety="yes" # for 'force' + 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, [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, [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, [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, [build Python modules (PL/Python)]) ! AC_MSG_RESULT([$with_python]) ! AC_SUBST(with_python) ! ! # ! # GSSAPI ! # ! AC_MSG_CHECKING([whether to build with GSSAPI support]) ! PGAC_ARG_BOOL(with, gssapi, no, [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, [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, + [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, + [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, + [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, + [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, [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, + [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, ! [prefer BSD Libedit over GNU Readline]) ! ! ! # ! # OSSP UUID library ! # ! PGAC_ARG_BOOL(with, ossp-uuid, no, [use OSSP UUID library when building contrib/uuid-ossp]) ! AC_SUBST(with_ossp_uuid) ! ! ! # ! # XML ! # ! PGAC_ARG_BOOL(with, libxml, no, [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, [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, ! [DIR], [use system time zone data in DIR]) ! AC_SUBST(with_system_tzdata) ! ! # ! # Zlib ! # ! PGAC_ARG_BOOL(with, zlib, yes, ! [do not use Zlib]) ! AC_SUBST(with_zlib) ! ! # ! # Elf ! # # Assume system is ELF if it predefines __ELF__ as 1, ! # otherwise believe host_os based default. ! 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) ! ! # ! # Assignments ! # ! ! CPPFLAGS="$CPPFLAGS $INCLUDES" ! LDFLAGS="$LDFLAGS $LIBDIRS" ! ! AC_ARG_VAR(LDFLAGS_SL, [linker flags for shared library linking]) ! ! 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_PERL ! if test "$with_perl" = yes; then ! PGAC_CHECK_PERL_CONFIGS([archlibexp,privlibexp,useshrplib]) ! PGAC_CHECK_PERL_EMBED_LDFLAGS ! fi ! ! if test "$with_python" = yes; then ! PGAC_PATH_PYTHON ! PGAC_CHECK_PYTHON_EMBED_SETUP ! fi ! ! 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 ! ! ! ## ! ## 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 "$enable_spinlocks" = yes; then ! AC_DEFINE(HAVE_SPINLOCKS, 1, [Define to 1 if you have spinlocks.]) else ! AC_MSG_WARN([ ! *** Not using spinlocks will cause poor performance.]) ! fi + if test "$with_gssapi" = yes ; then + if test "$PORTNAME" != "win32"; then + AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [], + [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])]) + else + LIBS="$LIBS -lgssapi32" + fi + fi + if test "$with_krb5" = yes ; then + if test "$PORTNAME" != "win32"; then + AC_SEARCH_LIBS(com_err, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken' com_err 'com_err -lssl -lcrypto'], [], + [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])]) + AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [], + [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])]) + else + AC_SEARCH_LIBS(com_err, 'comerr32 -lkrb5_32', [], + [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])]) + fi + fi ! if test "$with_openssl" = yes ; then ! dnl Order matters! ! if test "$PORTNAME" != "win32"; then ! AC_CHECK_LIB(crypto, CRYPTO_new_ex_data, [], [AC_MSG_ERROR([library 'crypto' is required for OpenSSL])]) ! AC_CHECK_LIB(ssl, SSL_library_init, [], [AC_MSG_ERROR([library 'ssl' is required for OpenSSL])]) ! else ! AC_CHECK_LIB(eay32, CRYPTO_new_ex_data, [], [AC_MSG_ERROR([library 'eay32' is required for OpenSSL])]) ! AC_CHECK_LIB(ssleay32, SSL_library_init, [], [AC_MSG_ERROR([library 'ssleay32' is required for OpenSSL])]) ! fi ! fi ! if test "$with_pam" = yes ; then ! AC_CHECK_LIB(pam, pam_start, [], [AC_MSG_ERROR([library 'pam' is required for PAM])]) ! fi ! if test "$with_libxml" = yes ; then ! AC_CHECK_LIB(xml2, xmlSaveToBuffer, [], [AC_MSG_ERROR([library 'xml2' (version >= 2.6.23) is required for XML support])]) ! fi ! if test "$with_libxslt" = yes ; then ! AC_CHECK_LIB(xslt, 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 ! ## ! dnl sys/socket.h is required by AC_FUNC_ACCEPT_ARGTYPES ! AC_CHECK_HEADERS([crypt.h dld.h fp_class.h getopt.h ieeefp.h 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 + #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 ! #endif ! ]) ! if expr x"$pgac_cv_check_readline" : 'x-lreadline' >/dev/null ; then ! AC_CHECK_HEADERS(readline/readline.h, [], ! [AC_CHECK_HEADERS(readline.h, [], ! [AC_MSG_ERROR([readline header not found ! If you have readline already installed, see config.log for details on the ! failure. It is possible the compiler isn't looking in the proper directory. ! Use --without-readline to disable readline support.])])]) ! AC_CHECK_HEADERS(readline/history.h, [], ! [AC_CHECK_HEADERS(history.h, [], ! [AC_MSG_ERROR([history header not found ! If you have readline already installed, see config.log for details on the ! failure. It is possible the compiler isn't looking in the proper directory. ! Use --without-readline to disable readline support.])])]) ! fi ! ! if expr x"$pgac_cv_check_readline" : 'x-ledit' >/dev/null ; then ! # Some installations of libedit usurp /usr/include/readline/, which seems ! # bad practice, since in combined installations readline will have its headers ! # there. We might have to resort to AC_EGREP checks to make sure we found ! # the proper header... ! AC_CHECK_HEADERS(editline/readline.h, [], ! [AC_CHECK_HEADERS(readline.h, [], ! [AC_CHECK_HEADERS(readline/readline.h, [], ! [AC_MSG_ERROR([readline header not found ! If you have libedit already installed, see config.log for details on the ! failure. It is possible the compiler isn't looking in the proper directory. ! Use --without-readline to disable libedit support.])])])]) ! # Note: in a libedit installation, history.h is sometimes a dummy, and may ! # not be there at all. Hence, don't complain if not found. We must check ! # though, since in yet other versions it is an independent header. ! AC_CHECK_HEADERS(editline/history.h, [], ! [AC_CHECK_HEADERS(history.h, [], ! [AC_CHECK_HEADERS(readline/history.h)])]) ! fi ! ! if test "$with_zlib" = yes; then ! AC_CHECK_HEADER(zlib.h, [], [AC_MSG_ERROR([zlib header not found ! If you have zlib already installed, see config.log for details on the ! failure. It is possible the compiler isn't looking in the proper directory. ! Use --without-zlib to disable zlib support.])]) ! fi ! ! if test "$with_gssapi" = yes ; then ! AC_CHECK_HEADERS(gssapi/gssapi.h, [], ! [AC_CHECK_HEADERS(gssapi.h, [], [AC_MSG_ERROR([gssapi.h header file is required for GSSAPI])])]) ! fi ! ! if test "$with_krb5" = yes ; then ! AC_CHECK_HEADER(krb5.h, [], [AC_MSG_ERROR([header file is required for Kerberos 5])]) ! fi ! ! if test "$with_openssl" = yes ; then ! AC_CHECK_HEADER(openssl/ssl.h, [], [AC_MSG_ERROR([header file is required for OpenSSL])]) ! AC_CHECK_HEADER(openssl/err.h, [], [AC_MSG_ERROR([header file is required for OpenSSL])]) ! 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 or is required for PAM.])])]) ! fi ! ! if test "$with_libxml" = yes ; then ! AC_CHECK_HEADER(libxml/parser.h, [], [AC_MSG_ERROR([header file is required for XML support])]) ! fi ! ! if test "$with_libxslt" = yes ; then ! AC_CHECK_HEADER(libxslt/xslt.h, [], [AC_MSG_ERROR([header file is required for XSLT support])]) ! fi ! ! if test "$with_ldap" = yes ; then ! if test "$PORTNAME" != "win32"; then ! AC_CHECK_HEADERS(ldap.h, [], ! [AC_MSG_ERROR([header file is required for LDAP])]) ! else ! AC_CHECK_HEADERS(winldap.h, [], ! [AC_MSG_ERROR([header file is required for LDAP])], ! [AC_INCLUDES_DEFAULT ! #include ! ]) ! fi fi ! if test "$with_bonjour" = yes ; then ! AC_CHECK_HEADER(dns_sd.h, [], [AC_MSG_ERROR([header file is required for Bonjour])]) fi + # for contrib/uuid-ossp + if test "$with_ossp_uuid" = yes ; then + AC_CHECK_HEADERS(ossp/uuid.h, [], [ + AC_CHECK_HEADERS(uuid.h, [], + [AC_MSG_ERROR([header file or is required for OSSP-UUID])])]) + fi + + + ## + ## Types, structures, compiler characteristics + ## ! m4_defun([AC_PROG_CC_STDC], []) dnl We don't want that. ! AC_C_BIGENDIAN AC_C_CONST AC_C_INLINE AC_C_STRINGIZE PGAC_C_SIGNED ! AC_C_VOLATILE ! PGAC_C_FUNCNAME_SUPPORT ! PGAC_STRUCT_TIMEZONE ! PGAC_UNION_SEMUN ! PGAC_STRUCT_SOCKADDR_UN ! PGAC_STRUCT_SOCKADDR_STORAGE ! PGAC_STRUCT_SOCKADDR_STORAGE_MEMBERS ! PGAC_STRUCT_ADDRINFO ! ! AC_CHECK_TYPES([struct cmsgcred, struct fcred, struct sockcred], [], [], ! [#include ! #include ! #include ! #include ]) ! ! AC_CHECK_TYPES([struct option], [], [], ! [#ifdef HAVE_GETOPT_H ! #include ! #endif]) ! ! if test "$with_zlib" = yes; then ! # Check that defines z_streamp (versions before about 1.0.4 ! # did not). While we could work around the lack of z_streamp, it ! # 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 ]) ! 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 ])], ! [#include ]) ! AC_CHECK_MEMBERS(krb5_error.text.data, [], ! [AC_CHECK_MEMBERS(krb5_error.e_data, [], ! [AC_MSG_ERROR([could not determine how to extract Kerberos 5 error messages])], ! [#include ])], ! [#include ]) ! ! # Win32 requires headers to be loaded for __stdcall, so can't use ! # AC_CHECK_FUNCS here. ! AC_MSG_CHECKING(for krb5_free_unparsed_name) ! AC_TRY_LINK([#include ], ! [krb5_free_unparsed_name(NULL,NULL);], ! [AC_DEFINE(HAVE_KRB5_FREE_UNPARSED_NAME, 1, [Define to 1 if you have krb5_free_unparsed_name]) ! AC_MSG_RESULT(yes)], ! [AC_MSG_RESULT(no)]) ! fi ! + ## + ## 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 ]) ! fi ! ! AC_CHECK_DECLS(fdatasync, [], [], [#include ]) ! AC_CHECK_DECLS([strlcat, strlcpy]) ! # This is probably only present on Darwin, but may as well check always ! AC_CHECK_DECLS(F_FULLFSYNC, [], [], [#include ]) ! ! HAVE_IPV6=no ! AC_CHECK_TYPE([struct sockaddr_in6], ! [AC_DEFINE(HAVE_IPV6, 1, [Define to 1 if you have support for IPv6.]) ! HAVE_IPV6=yes], ! [], ! [$ac_includes_default ! #include ]) ! AC_SUBST(HAVE_IPV6) ! AC_CACHE_CHECK([for PS_STRINGS], [pgac_cv_var_PS_STRINGS], ! [AC_TRY_LINK( ! [#include ! #include ! ], [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 . ! # ! # We could use libintl >= 0.13's *printf() if we were sure that we had ! # a litint >= 0.13 at runtime, but seeing that there is no clean way ! # to guarantee that, it is best to just use our own, so we are sure to ! # get %$ support. In include/port.h we disable the *printf() macros ! # that might have been defined by libintl. ! # ! # We do this unconditionally whether NLS is used or not so we are sure ! # that all Win32 libraries and binaries behave the same. ! pgac_need_repl_snprintf=yes ! else ! pgac_need_repl_snprintf=no ! AC_CHECK_FUNCS(snprintf, [], pgac_need_repl_snprintf=yes) ! AC_CHECK_FUNCS(vsnprintf, [], pgac_need_repl_snprintf=yes) ! fi ! ! ! # Check whether declares snprintf() and vsnprintf(); if not, ! # 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 ! double glob_double; ! ], ! [return isinf(glob_double) ? 0 : 1;], ! [ac_cv_func_isinf=yes], ! [ac_cv_func_isinf=no])]) ! ! if test $ac_cv_func_isinf = yes ; then ! AC_DEFINE(HAVE_ISINF, 1, [Define to 1 if you have isinf().]) ! else ! AC_LIBOBJ(isinf) ! # Look for a way to implement a substitute for isinf() ! AC_CHECK_FUNCS([fpclass fp_class fp_class_d class], [break]) ! fi ! ! # Some versions of libedit contain strlcpy(); so disregard that library while ! # checking for these standard libc functions. ! pgac_save_LIBS="$LIBS" ! LIBS=`echo "$LIBS" | sed -e 's/-ledit//g' -e 's/-lreadline//g'` ! ! AC_REPLACE_FUNCS([crypt erand48 getopt getrusage inet_aton random rint srandom strdup strerror strlcat strlcpy strtol strtoul]) ! ! 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 ! ! # Cygwin's erand48() is broken (always returns zero) in some releases, ! # so force use of ours. ! if test "$PORTNAME" = "cygwin"; then ! AC_LIBOBJ(erand48) ! fi ! ! # Win32 support ! if test "$PORTNAME" = "win32"; then ! AC_REPLACE_FUNCS(gettimeofday) ! AC_LIBOBJ(kill) ! AC_LIBOBJ(open) ! 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([append_history history_truncate_file]) ! fi ! dnl Cannot use AC_CHECK_FUNC because sigsetjmp may be a macro dnl (especially on GNU libc) ! dnl See also comments in c.h. AC_MSG_CHECKING(for sigsetjmp) AC_TRY_LINK([#include ], ! [sigjmp_buf x; sigsetjmp(x, 1);], ! [AC_DEFINE(HAVE_SIGSETJMP, 1, [Define to 1 if you have sigsetjmp().]) ! AC_MSG_RESULT(yes)], ! [AC_MSG_RESULT(no)]) ! ! AC_DECL_SYS_SIGLIST ! ! AC_CHECK_FUNC(syslog, ! [AC_CHECK_HEADER(syslog.h, ! [AC_DEFINE(HAVE_SYSLOG, 1, [Define to 1 if you have the syslog interface.])])]) ! ! AC_CACHE_CHECK([for opterr], pgac_cv_var_int_opterr, ! [AC_TRY_LINK([#include ], ! [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 ], ! [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: *************** if test x"$HAVE_LONG_INT_64" = x"no" ; t *** 960,1208 **** fi ! dnl If we found "long int" is 64 bits, assume snprintf handles it. ! dnl If we found we need to use "long long int", better check. ! dnl We cope with snprintfs that use either %lld or %qd as the format. ! dnl If neither works, fall back to our own snprintf emulation (which we ! dnl know uses %lld). ! ! if [[ x"$HAVE_LONG_LONG_INT_64" = xyes ]] ; then ! if [[ x$SNPRINTF = x ]] ; then ! AC_MSG_CHECKING(whether snprintf handles 'long long int' as %lld) ! AC_TRY_RUN([#include ! typedef long long int int64; ! #define INT64_FORMAT "%lld" ! ! int64 a = 20000001; ! int64 b = 40000005; ! ! int does_int64_snprintf_work() ! { ! int64 c; ! char buf[100]; ! ! if (sizeof(int64) != 8) ! return 0; /* doesn't look like the right size */ ! ! c = a * b; ! snprintf(buf, 100, INT64_FORMAT, c); ! if (strcmp(buf, "800000140000005") != 0) ! return 0; /* either multiply or snprintf is busted */ ! return 1; ! } ! main() { ! exit(! does_int64_snprintf_work()); ! }], ! [ AC_MSG_RESULT(yes) ! INT64_FORMAT='"%lld"' ! ], ! [ AC_MSG_RESULT(no) ! AC_MSG_CHECKING(whether snprintf handles 'long long int' as %qd) ! AC_TRY_RUN([#include ! typedef long long int int64; ! #define INT64_FORMAT "%qd" ! ! int64 a = 20000001; ! int64 b = 40000005; ! ! int does_int64_snprintf_work() ! { ! int64 c; ! char buf[100]; ! ! if (sizeof(int64) != 8) ! return 0; /* doesn't look like the right size */ ! ! c = a * b; ! snprintf(buf, 100, INT64_FORMAT, c); ! if (strcmp(buf, "800000140000005") != 0) ! return 0; /* either multiply or snprintf is busted */ ! return 1; ! } ! main() { ! exit(! does_int64_snprintf_work()); ! }], ! [ AC_MSG_RESULT(yes) ! INT64_FORMAT='"%qd"' ! ], ! [ AC_MSG_RESULT(no) ! # Force usage of our own snprintf, since system snprintf is broken ! SNPRINTF='snprintf.o' ! INT64_FORMAT='"%lld"' ! ], ! [ AC_MSG_RESULT(assuming not on target machine) ! # Force usage of our own snprintf, since we cannot test foreign snprintf ! SNPRINTF='snprintf.o' ! INT64_FORMAT='"%lld"' ! ]) ], ! [ AC_MSG_RESULT(assuming not on target machine) ! # Force usage of our own snprintf, since we cannot test foreign snprintf ! SNPRINTF='snprintf.o' ! INT64_FORMAT='"%lld"' ! ]) else ! # here if we previously decided we needed to use our own snprintf ! INT64_FORMAT='"%lld"' fi else # Here if we are not using 'long long int' at all INT64_FORMAT='"%ld"' fi ! AC_DEFINE_UNQUOTED(INT64_FORMAT, $INT64_FORMAT) ! dnl Determine memory alignment requirements for the basic C datatypes. ! PGAC_CHECK_ALIGNOF(short) ! PGAC_CHECK_ALIGNOF(int) ! PGAC_CHECK_ALIGNOF(long) ! if [[ x"$HAVE_LONG_LONG_INT_64" = xyes ]] ; then ! PGAC_CHECK_ALIGNOF(long long int) fi ! PGAC_CHECK_ALIGNOF(double) ! dnl Compute maximum alignment of any basic type. ! dnl We assume long's alignment is at least as strong as char, short, or int; ! dnl but we must check long long (if it exists) and double. ! if test $pgac_cv_alignof_double != 'sizeof(double)' ; then ! MAX_ALIGNOF=$pgac_cv_alignof_long ! if test $MAX_ALIGNOF -lt $pgac_cv_alignof_double ; then ! MAX_ALIGNOF=$pgac_cv_alignof_double ! fi ! if test x"$HAVE_LONG_LONG_INT_64" = xyes && test $MAX_ALIGNOF -lt $pgac_cv_alignof_long_long_int ; then ! MAX_ALIGNOF="$pgac_cv_alignof_long_long_int" ! fi ! else ! dnl cross-compiling: assume that double's alignment is worst case ! MAX_ALIGNOF="$pgac_cv_alignof_double" fi ! AC_DEFINE_UNQUOTED(MAXIMUM_ALIGNOF, $MAX_ALIGNOF, [Define as the maximum alignment requirement of any type]) PGAC_FUNC_POSIX_SIGNALS ! dnl Check for Tcl configuration script tclConfig.sh ! dnl If --with-tclconfig was given, don't check for tclsh, tcl ! if test -z "$TCL_DIRS" then ! AC_PATH_PROG(TCLSH, tclsh) ! if test -z "$TCLSH" ! then ! AC_PATH_PROG(TCLSH, tcl) ! if test -z "$TCLSH" ! then ! AC_MSG_WARN(TCL/TK support disabled; tcl shell is not in your path) ! USE_TCL= ! fi ! fi fi ! ! if test "$USE_TCL" = true then ! AC_MSG_CHECKING(for tclConfig.sh) ! TCL_CONFIG_SH= ! library_dirs= ! if test -z "$TCL_DIRS" ! then ! library_dirs=`echo 'puts $auto_path' | $TCLSH` ! fi ! library_dirs="$TCL_DIRS $TK_DIRS $library_dirs" ! for dir in $library_dirs; do ! if test -d "$dir" -a -r "$dir/tclConfig.sh"; then ! TCL_CONFIG_SH=$dir/tclConfig.sh ! break ! fi ! done ! if test -z "$TCL_CONFIG_SH"; then ! AC_MSG_RESULT(no) ! AC_MSG_WARN(TCL/TK support disabled; Tcl configuration script missing) ! USE_TCL= ! else ! AC_MSG_RESULT($TCL_CONFIG_SH) ! AC_SUBST(TCL_CONFIG_SH) ! fi fi ! USE_TK=$USE_TCL # If TCL is disabled, disable TK ! dnl Check for Tk configuration script tkConfig.sh ! if test "$USE_TK" = true ! then ! AC_MSG_CHECKING(for tkConfig.sh) ! TK_CONFIG_SH= ! # library_dirs are set in the check for TCL ! for dir in $library_dirs ! do ! if test -d "$dir" -a -r "$dir/tkConfig.sh" ! then ! TK_CONFIG_SH=$dir/tkConfig.sh ! break ! fi ! done ! if test -z "$TK_CONFIG_SH" ! then ! AC_MSG_RESULT(no) ! AC_MSG_WARN(TK support disabled; Tk configuration script missing) ! USE_TK= ! else ! AC_MSG_RESULT($TK_CONFIG_SH) ! AC_SUBST(TK_CONFIG_SH) ! AC_PATH_PROG(WISH, wish) ! fi ! fi ! ! USE_X=$USE_TK ! ! dnl Check for X libraries ! ! if test "$USE_X" = true; then ! ! ice_save_LIBS="$LIBS" ! ice_save_CFLAGS="$CFLAGS" ! ice_save_CPPFLAGS="$CPPFLAGS" ! ice_save_LDFLAGS="$LDFLAGS" ! ! AC_PATH_XTRA ! ! LIBS="$LIBS $X_EXTRA_LIBS" ! CFLAGS="$CFLAGS $X_CFLAGS" ! CPPFLAGS="$CPPFLAGS $X_CFLAGS" ! LDFLAGS="$LDFLAGS $X_LIBS" ! ! dnl Check for X library ! ! X11_LIBS="" ! AC_CHECK_LIB(X11, XOpenDisplay, X11_LIBS="-lX11",,${X_PRE_LIBS}) ! if test "$X11_LIBS" = ""; then ! dnl Not having X is bad news for pgtksh. Let the user fix this. ! AC_MSG_WARN([The X11 library '-lX11' could not be found, ! so TK support will be disabled. To enable TK support, ! please use the configure options '--x-includes=DIR' ! and '--x-libraries=DIR' to specify the X location. ! See the file 'config.log' for further diagnostics.]) ! USE_TK= ! fi ! AC_SUBST(X_LIBS) ! AC_SUBST(X11_LIBS) ! AC_SUBST(X_PRE_LIBS) ! ! LIBS="$ice_save_LIBS" ! CFLAGS="$ice_save_CFLAGS" ! CPPFLAGS="$ice_save_CPPFLAGS" ! LDFLAGS="$ice_save_LDFLAGS" ! fi ! ! ! dnl Finally ready to produce output files ... ! ! AC_OUTPUT( ! GNUmakefile ! src/GNUmakefile ! src/Makefile.global ! src/backend/port/Makefile ! src/backend/catalog/genbki.sh ! src/test/regress/GNUmakefile ! ) --- 1518,1901 ---- 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]) ! ! # Decide whether float4 is passed by value: user-selectable, enabled by default ! AC_MSG_CHECKING([whether to build with float4 passed by value]) ! PGAC_ARG_BOOL(enable, float4-byval, yes, [disable float4 passed by value], ! [AC_DEFINE([USE_FLOAT4_BYVAL], 1, ! [Define to 1 if you want float4 values to be passed by value. (--enable-float4-byval)]) ! float4passbyval=true], ! [float4passbyval=false]) ! AC_MSG_RESULT([$enable_float4_byval]) ! AC_DEFINE_UNQUOTED([FLOAT4PASSBYVAL], [$float4passbyval], [float4 values are passed by value if 'true', by reference if 'false']) ! ! # Decide whether float8 is passed by value. ! # Note: this setting also controls int8 and related types such as timestamp. ! # If sizeof(Datum) >= 8, this is user-selectable, enabled by default. ! # If not, trying to select it is an error. ! AC_MSG_CHECKING([whether to build with float8 passed by value]) ! if test $ac_cv_sizeof_unsigned_long -ge 8 ; then ! PGAC_ARG_BOOL(enable, float8-byval, yes, [disable float8 passed by value]) ! else ! PGAC_ARG_BOOL(enable, float8-byval, no, [disable float8 passed by value]) ! if test "$enable_float8_byval" = yes ; then ! AC_MSG_ERROR([--enable-float8-byval is not supported on 32-bit platforms.]) ! fi ! fi ! if test "$enable_float8_byval" = yes ; then ! AC_DEFINE([USE_FLOAT8_BYVAL], 1, ! [Define to 1 if you want float8, int8, etc values to be passed by value. (--enable-float8-byval)]) ! float8passbyval=true ! else ! float8passbyval=false ! fi ! AC_MSG_RESULT([$enable_float8_byval]) ! AC_DEFINE_UNQUOTED([FLOAT8PASSBYVAL], [$float8passbyval], [float8, int8, and related values are passed by value if 'true', by reference if 'false']) ! # Determine memory alignment requirements for the basic C data types. ! ! AC_CHECK_ALIGNOF(short) ! AC_CHECK_ALIGNOF(int) ! AC_CHECK_ALIGNOF(long) ! if test x"$HAVE_LONG_LONG_INT_64" = x"yes" ; then ! AC_CHECK_ALIGNOF(long long int) fi ! AC_CHECK_ALIGNOF(double) ! # Compute maximum alignment of any basic type. ! # We assume long's alignment is at least as strong as char, short, or int; ! # but we must check long long (if it exists) and double. ! MAX_ALIGNOF=$ac_cv_alignof_long ! if test $MAX_ALIGNOF -lt $ac_cv_alignof_double ; then ! MAX_ALIGNOF=$ac_cv_alignof_double ! fi ! if test x"$HAVE_LONG_LONG_INT_64" = xyes && test $MAX_ALIGNOF -lt $ac_cv_alignof_long_long_int ; then ! MAX_ALIGNOF="$ac_cv_alignof_long_long_int" fi ! AC_DEFINE_UNQUOTED(MAXIMUM_ALIGNOF, $MAX_ALIGNOF, [Define as the maximum alignment requirement of any C data type.]) + + # Some platforms predefine the types int8, int16, etc. Only check + # a (hopefully) representative subset. + AC_CHECK_TYPES([int8, uint8, int64, uint64], [], [], + [#include + #ifdef HAVE_SUPPORTDEFS_H + #include + #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 ]) + + + # 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 + 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. + 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 ! ac_save_CPPFLAGS=$CPPFLAGS ! CPPFLAGS="$TCL_INCLUDE_SPEC $CPPFLAGS" ! AC_CHECK_HEADER(tcl.h, [], [AC_MSG_ERROR([header file is required for Tcl])]) ! CPPFLAGS=$ac_save_CPPFLAGS ! fi ! ! # ! # Check for DocBook and tools ! # ! PGAC_PROG_NSGMLS ! PGAC_PROG_JADE ! PGAC_CHECK_DOCBOOK(4.2) ! PGAC_PATH_DOCBOOK_STYLESHEETS ! PGAC_PATH_COLLATEINDEX ! AC_CHECK_PROGS(XSLTPROC, xsltproc) ! AC_CHECK_PROGS(OSX, [osx sgml2xml sx]) ! ! # 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]) ! ! # Create compiler version string ! if test x"$GCC" = x"yes" ; then ! cc_string="GCC `${CC} --version | sed q`" ! elif test x"$SUN_STUDIO_CC" = x"yes" ; then ! cc_string=`${CC} -V 2>&1 | sed q` ! else ! cc_string=$CC ! fi ! ! AC_DEFINE_UNQUOTED(PG_VERSION_STR, ! ["PostgreSQL $PACKAGE_VERSION on $host, compiled by $cc_string, `expr $ac_cv_sizeof_void_p \* 8`-bit"], ! [A string containing the version number, platform, and C compiler]) ! ! # 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]) ! ! ! # 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/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 ! ! 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