configure.in
上传用户:blenddy
上传日期:2007-01-07
资源大小:6495k
文件大小:32k
- dnl Process this file with autoconf to produce a configure script.
- AC_INIT(backend/access/common/heaptuple.c)
- AC_PREFIX_DEFAULT(/usr/local/pgsql)
- AC_CONFIG_HEADER(include/config.h)
- dnl Autoconf 2.12, at least, generates a useless relative path to install-sh
- dnl unless we do this.
- AC_CONFIG_AUX_DIR(`pwd`)
- 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=bsd need_tas=no
- case "$host_cpu" in
- powerpc) elf=yes ;;
- esac ;;
- 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 ;;
- unixware*) os=unixware 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(backend/port/dynloader/${os}.c, backend/port/dynloader.c)
- AC_LINK_FILES(backend/port/dynloader/${os}.h, include/dynloader.h)
- AC_LINK_FILES(include/port/${os}.h, include/os.h)
- AC_LINK_FILES(makefiles/Makefile.${os}, Makefile.port)
- if test "X$need_tas" = "Xyes"
- then
- AC_LINK_FILES(backend/port/tas/${tas_file}, backend/port/tas.s)
- TAS=tas.o
- AC_SUBST(TAS)
- fi
- echo "checking echo setting..."
- if echo 'c' | grep -s c >/dev/null 2>&1
- then
- ECHO_N="echo -n"
- ECHO_C=""
- else
- ECHO_N="echo"
- ECHO_C='c'
- 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 ],
- [
- # First, try for a template exactly matching $host
- if test -f "template/$host"
- then TEMPLATE="$host"
- else
- # Next try for an exact match to a .similar entry.
- # There shouldn't be multiple matches, but take the last if there are.
- GUESS=`grep "^$host=" template/.similar | sed 's/^.*=//' | tail -1`
- if test "$GUESS"
- then TEMPLATE="$GUESS"
- else
- # Next look for a .similar entry that is a prefix of $host.
- # If there are multiple matches, take the last one.
- exec 4<template/.similar
- while read LINE <&4
- do
- SIMHOST=`expr "$LINE" : '(.*)='`
- MATCH=`expr "$host" : "$SIMHOST"`
- if test "$MATCH" != 0
- then GUESS=`echo "$LINE" | sed 's/^.*=//'`
- fi
- done
- exec 4<&-
- if test "$GUESS"
- then TEMPLATE="$GUESS"
- else
- # Last chance ... maybe uname -s will match an entry.
- TEMPLATE=`uname -s | tr A-Z a-z`
- fi
- fi
- fi
- ])
- AC_MSG_RESULT($TEMPLATE)
- export TEMPLATE
- if test ! -f "template/$TEMPLATE"; then
- echo ""
- echo "$TEMPLATE does not exist"
- echo ""
- echo "Available Templates (set using --with-template):"
- echo ""
- ls template
- echo ""
- exit
- fi
- dnl Read the selected template file.
- dnl For reasons of backwards compatibility, lines of the form
- dnl IDENTIFIER: something
- dnl should be treated as variable assignments. However, we also want to
- dnl allow other shell commands in the template file (in case the file
- dnl needs to make conditional tests, etc). So, generate a temp file with
- dnl the IDENTIFIER: lines translated, then source it.
- [
- rm -f conftest.sh
- sed 's/^([A-Za-z_]*):(.*)$/1="2"/' "template/$TEMPLATE" >conftest.sh
- . ./conftest.sh
- rm -f conftest.sh
- ]
- AC_ARG_WITH(includes,
- [ --with-includes=DIR site header files for tk/tcl, etc in DIR],
- [
- case "$withval" in
- "" | y | ye | yes | n | no)
- AC_MSG_ERROR([*** You must supply an argument to the --with-includes option.])
- ;;
- esac
- INCLUDE_DIRS="$withval"
- ])
- if test "$INCLUDE_DIRS" -o "$SRCH_INC"; then
- for dir in $INCLUDE_DIRS $SRCH_INC; do
- if test -d "$dir"; then
- PGSQL_CPPFLAGS="$PGSQL_CPPFLAGS -I$dir"
- else
- AC_MSG_WARN([*** Include directory $dir does not exist.])
- fi
- done
- fi
- AC_ARG_WITH(libs,
- [ --with-libs=DIR also search for libraries in DIR],
- [
- 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"
- ])
- AC_ARG_WITH(libraries,
- [ --with-libraries=DIR also search for libraries in DIR],
- [
- 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"
- ])
- 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
- dnl We have read the default value of USE_LOCALE from the template
- dnl file. We have a further option of using
- dnl --enable-locale to explicitly enable it
- dnl It defaults to disabled
- AC_MSG_CHECKING(setting USE_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(setting CYR_RECODE)
- AC_ARG_ENABLE(
- recode,
- [ --enable-recode enable cyrillic recode support ],
- AC_DEFINE(CYR_RECODE) AC_MSG_RESULT(enabled),
- AC_MSG_RESULT(disabled)
- )
- AC_MSG_CHECKING(setting MULTIBYTE)
- AC_ARG_WITH(mb,
- [ --with-mb=<encoding> enable multi-byte support ],
- [
- case "$withval" in
- EUC_JP|EUC_CN|EUC_KR|EUC_TW|UNICODE|MULE_INTERNAL|LATIN1|LATIN2|LATIN3|LATIN4|LATIN5|KOI8|WIN|ALT)
- AC_MSG_RESULT("enabled with $withval")
- ;;
- *)
- AC_MSG_ERROR([*** You must supply an argument to the --with-mb option one of EUC_JP,EUC_CN,EUC_KR,EUC_TW,UNICODE,MULE_INTERNAL,LATIN1-5,KOI8,WIN,ALT])
- ;;
- esac
- MULTIBYTE="$withval"
- ],
- AC_MSG_RESULT("disabled")
- )
- 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 startup port ],
- AC_DEFINE_UNQUOTED(DEF_PGPORT, "${withval}") AC_MSG_RESULT($with_pgport),
- AC_DEFINE_UNQUOTED(DEF_PGPORT, "5432") AC_MSG_RESULT(5432)
- )
- 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 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 overide 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 overide 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 We exclude perl support unless we override it with --with-perl
- AC_MSG_CHECKING(setting USE_PERL)
- AC_ARG_WITH(
- perl,
- [ --with-perl build Perl interface ],
- [
- case "$withval" in
- y | ye | yes) USE_PERL=true; AC_MSG_RESULT(enabled) ;;
- *) USE_PERL=false; AC_MSG_RESULT(disabled) ;;
- esac
- ],
- [ USE_PERL=false; AC_MSG_RESULT(disabled) ]
- )
- dnl We include odbc support unless we disable it with --with-odbc=false
- AC_MSG_CHECKING(setting USE_ODBC)
- AC_ARG_WITH(
- odbc,
- [ --with-odbc build ODBC driver package ],
- [
- case "$withval" in
- y | ye | yes) USE_ODBC=true; AC_MSG_RESULT(enabled) ;;
- *) USE_ODBC=false; AC_MSG_RESULT(disabled) ;;
- esac
- ],
- [ USE_ODBC=false; AC_MSG_RESULT(disabled) ]
- )
- export USE_ODBC
- dnl Allow for overriding the default location of the odbcinst.ini
- dnl file which is normally ${prefix}/share or ${prefix} if this is
- dnl being compiled inside the postgres distribution.
- dnl Link in the port and template directories
- dnl to help build a "standalone ODBC" tar file
- if test "X$USE_ODBC" = "Xtrue"
- then
- AC_LINK_FILES(include/port, interfaces/odbc/port)
- AC_LINK_FILES(makefiles, interfaces/odbc/makefiles)
- AC_LINK_FILES(template, interfaces/odbc/template)
- AC_LINK_FILES(include/config.h, interfaces/odbc/config.h)
- AC_MSG_CHECKING(setting ODBCINST)
- AC_ARG_WITH(
- odbcinst,
- [ --with-odbcinst=dir change default directory for odbcinst.ini],
- AC_DEFINE_UNQUOTED(ODBCINST, ${with_odbcinst}) AC_MSG_RESULT($with_odbcinst),
- AC_DEFINE_UNQUOTED(ODBCINST, ${ODBCINSTDIR}) AC_MSG_RESULT(${ODBCINSTDIR})
- )
- fi
- if test "X$with_odbcinst" != "X"
- then
- ODBCINSTDIR=$with_odbcinst
- fi
- AC_SUBST(ODBCINSTDIR)
- 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 (debugging) ],
- AC_DEFINE(USE_ASSERT_CHECKING) AC_MSG_RESULT(enabled),
- AC_MSG_RESULT(disabled)
- )
- 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
- if test "$CC" = "gcc"
- then
- CC_VERSION=`${CC} --version`
- else
- CC_VERSION=""
- fi
- AC_SUBST(CC_VERSION)
- CPPFLAGS="$CPPFLAGS $PGSQL_CPPFLAGS"
- echo "- setting CPPFLAGS=$CPPFLAGS"
- LDFLAGS="$LDFLAGS $PGSQL_LDFLAGS"
- echo "- setting LDFLAGS=$LDFLAGS"
- # 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(CPPFLAGS)
- 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(USE_PERL)
- AC_SUBST(USE_ODBC)
- AC_SUBST(MULTIBYTE)
- dnl Check for C++ support (allow override if needed)
- HAVECXX='HAVE_Cplusplus=true'
- AC_ARG_WITH(CXX,
- [ --with-CXX=compiler use specific C++ compiler
- --without-CXX prevent building C++ code ],
- [
- case "$withval" in
- "" | y | ye | yes)
- AC_MSG_ERROR([*** You must supply an argument to the --with-CC option.])
- ;;
- n | no)
- HAVECXX='HAVE_Cplusplus=false'
- ;;
- esac
- CXX="$withval"
- ],
- [ AC_PROG_CXX])
- AC_SUBST(HAVECXX)
- dnl make sure we revert to C compiler, not C++, for subsequent tests
- AC_LANG_C
- 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_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(INSTALL)
- AC_SUBST(INSTLOPTS)
- AC_SUBST(INSTL_LIB_OPTS)
- AC_SUBST(INSTL_SHLIB_OPTS)
- AC_SUBST(INSTL_EXE_OPTS)
- dnl Check the option to echo to inhibit newlines.
- ECHO_N_OUT=`echo -n "" | wc -c`
- ECHO_C_OUT=`echo "c" | wc -c`
- if test "$ECHO_N_OUT" -eq 0; then
- DASH_N='-n'
- BACKSLASH_C=
- else
- if test "ECHO_C_OUT" -eq 0; then
- DASH_N=
- BACKSLASH_C='\\c'
- else
- AC_MSG_ERROR("echo behaviour undetermined")
- fi
- fi
- AC_SUBST(DASH_N)
- AC_SUBST(BACKSLASH_C)
- AC_PROG_LEX
- AC_PROG_LN_S
- AC_PROG_MAKE_SET
- 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_PROG(ipcs, ipcs)
- AC_PATH_PROG(ipcrm, ipcrm)
- AC_PATH_PROGS(TR, trbsd tr, NOT_FOUND)
- AC_PATH_PROGS(GZCAT, gzcat zcat, gzcat)
- dnl Check tr flags to convert from lower to upper case
- TRSTRINGS="`echo ABCdef | $TR '[[a-z]]' '[[A-Z]]' 2>/dev/null | grep ABCDEF`"
- TRCLASS="`echo ABCdef | $TR '[[:lower:]]' '[[:upper:]]' 2>/dev/null | grep ABCDEF`"
- if test "$TRSTRINGS" = "ABCDEF"; then
- TRARGS="'[[a-z]]' '[[A-Z]]'"
- elif test "$TRCLASS" = "ABCDEF"; then
- TRARGS="'[[:lower:]]' '[[:upper:]]'"
- else
- AC_MSG_ERROR("Can't find method to convert from upper to lower case with tr")
- fi
- AC_SUBST(TRARGS)
- dnl Changes to look for YACC. We have three choices (in order of pref.)
- dnl (1) We specify in YACC and YFLAGS what we want
- dnl (2) We have bison and we use bison -y
- dnl (3) We have yacc and use it
- if test -f "$YACC"
- then
- echo "- Using $YACC $YFLAGS"
- else
- AC_PATH_PROG(bison, bison)
- if test -f "$bison"
- then
- echo "- Using $bison -y $YFLAGS"
- YACC="$bison"
- YFLAGS="-y $YFLAGS"
- else
- AC_PATH_PROG(yacc, yacc)
- echo "- Using $yacc $YFLAGS"
- YACC="$yacc"
- fi
- fi
- AC_SUBST(YACC)
- AC_SUBST(YFLAGS)
- AC_CHECK_LIB(sfio, main)
- for curses in ncurses curses ; do
- AC_CHECK_LIB(${curses}, main,
- [LIBS="-l${curses} $LIBS"; break])
- done
- AC_CHECK_LIB(termcap, main)
- AC_CHECK_LIB(history, main)
- AC_CHECK_LIB(readline, main)
- AC_CHECK_LIB(readline, write_history, AC_DEFINE(HAVE_HISTORY))
- if test "$PORTNAME" != "aix" -a "$PORTNAME" != "alpha"
- then
- AC_CHECK_LIB(bsd, main)
- fi
- 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(crypt, main)
- AC_CHECK_LIB(gen, main)
- AC_CHECK_LIB(PW, main)
- 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)
- dnl ODBC headers...
- AC_CHECK_HEADERS(sys/param.h pwd.h)
- dnl
- 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_HEADER_TIME
- AC_STRUCT_TM
- AC_STRUCT_TIMEZONE
- AC_MSG_CHECKING(for signed types)
- AC_TRY_COMPILE([],
- [signed char c; signed short s; signed int i;],
- [AC_MSG_RESULT(yes)],
- [AC_DEFINE(signed, ) AC_MSG_RESULT(no)])
- AC_MSG_CHECKING(for volatile)
- AC_TRY_COMPILE([],
- [extern volatile int i;],
- [AC_MSG_RESULT(yes)],
- [AC_DEFINE(volatile, ) AC_MSG_RESULT(no)])
- AC_MSG_CHECKING(for type of last arg to accept)
- AC_TRY_COMPILE([#include <stdlib.h>
- #include <sys/types.h>
- #include <sys/socket.h>
- ],
- [int a = accept(1, (struct sockaddr *) 0, (size_t *) 0);],
- [AC_DEFINE(SOCKET_SIZE_TYPE, size_t) AC_MSG_RESULT(size_t)],
- [AC_DEFINE(SOCKET_SIZE_TYPE, int) AC_MSG_RESULT(int)])
- dnl Check for any "odd" conditions
- AC_MSG_CHECKING(for int timezone)
- AC_TRY_LINK([#include <time.h>],
- [int res = timezone / 60; ],
- [AC_DEFINE(HAVE_INT_TIMEZONE) AC_MSG_RESULT(yes)],
- AC_MSG_RESULT(no))
- AC_MSG_CHECKING(for gettimeofday args)
- AC_TRY_LINK([#include <sys/time.h>],
- [struct timeval *tp; struct timezone *tzp; gettimeofday(tp,tzp); ],
- [AC_DEFINE(HAVE_GETTIMEOFDAY_2_ARGS) AC_MSG_RESULT(2 args)],
- AC_MSG_RESULT(no))
- AC_MSG_CHECKING(for union semun)
- AC_TRY_LINK([#include <sys/types.h>
- #include <sys/ipc.h>
- #include <sys/sem.h>],
- [union semun semun;],
- [AC_DEFINE(HAVE_UNION_SEMUN) AC_MSG_RESULT(yes)],
- AC_MSG_RESULT(no))
- AC_MSG_CHECKING(for fcntl(F_SETLK))
- AC_TRY_LINK([#include <fcntl.h>],
- [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 sigsetjmp sysconf)
- AC_CHECK_FUNCS(sigprocmask waitpid setsid fcvt)
- 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 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 <math.h>],
- [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 Check to see if we have a working 64-bit integer type.
- dnl This breaks down into two steps:
- dnl (1) figure out if the compiler has a 64-bit int type with working
- dnl arithmetic, and if so
- dnl (2) see whether snprintf() can format the type correctly. (Currently,
- dnl snprintf is the only library routine we really need for int8 support.)
- dnl It's entirely possible to have a compiler that handles a 64-bit type
- dnl when the C library doesn't; this is fairly likely when using gcc on
- dnl an older platform, for example.
- dnl If there is no native snprintf() or it does not handle the 64-bit type,
- dnl we force our own version of snprintf() to be used instead.
- dnl Note this test must be run after our initial check for snprintf/vsnprintf.
- HAVE_LONG_INT_64=0
- AC_MSG_CHECKING(whether 'long int' is 64 bits)
- AC_TRY_RUN([typedef long int int64;
- /* These are globals to discourage the compiler from folding all the
- * arithmetic tests down to compile-time constants.
- */
- int64 a = 20000001;
- int64 b = 40000005;
- int does_int64_work()
- {
- int64 c,d;
- if (sizeof(int64) != 8)
- return 0; /* doesn't look like the right size */
- /* Do perfunctory checks to see if 64-bit arithmetic seems to work */
- c = a * b;
- d = (c + b) / b;
- if (d != a+1)
- return 0;
- return 1;
- }
- main() {
- exit(! does_int64_work());
- }],
- [HAVE_LONG_INT_64=1
- AC_DEFINE(HAVE_LONG_INT_64)
- AC_MSG_RESULT(yes)],
- AC_MSG_RESULT(no),
- AC_MSG_RESULT(assuming not on target machine))
- HAVE_LONG_LONG_INT_64=0
- if [[ $HAVE_LONG_INT_64 -eq 0 ]] ; then
- AC_MSG_CHECKING(whether 'long long int' is 64 bits)
- AC_TRY_RUN([typedef long long int int64;
- /* These are globals to discourage the compiler from folding all the
- * arithmetic tests down to compile-time constants.
- */
- int64 a = 20000001;
- int64 b = 40000005;
- int does_int64_work()
- {
- int64 c,d;
- if (sizeof(int64) != 8)
- return 0; /* doesn't look like the right size */
- /* Do perfunctory checks to see if 64-bit arithmetic seems to work */
- c = a * b;
- d = (c + b) / b;
- if (d != a+1)
- return 0;
- return 1;
- }
- main() {
- exit(! does_int64_work());
- }],
- [HAVE_LONG_LONG_INT_64=1
- AC_DEFINE(HAVE_LONG_LONG_INT_64)
- AC_MSG_RESULT(yes)],
- AC_MSG_RESULT(no),
- AC_MSG_RESULT(assuming not on target machine))
- 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 [[ $HAVE_LONG_LONG_INT_64 -eq 1 ]] ; then
- if [[ x$SNPRINTF = x ]] ; then
- AC_MSG_CHECKING(whether snprintf handles 'long long int' as %lld)
- AC_TRY_RUN([#include <stdio.h>
- 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 <stdio.h>
- 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.
- dnl CHECK_ALIGNOF(TYPE)
- dnl This is modeled on the standard autoconf macro AC_CHECK_SIZEOF,
- dnl except it finds the alignment requirement of the type instead of the size.
- dnl The defined symbol is named ALIGNOF_TYPE, where the type name is
- dnl converted in the same way as for AC_CHECK_SIZEOF.
- dnl If cross-compiling, sizeof(type) is used as a default assumption.
- AC_DEFUN(CHECK_ALIGNOF,
- [changequote(<<, >>)dnl
- dnl The name to #define.
- define(<<AC_TYPE_NAME>>, translit(alignof_$1, [a-z *], [A-Z_P]))dnl
- dnl The cache variable name.
- define(<<AC_CV_NAME>>, translit(ac_cv_alignof_$1, [ *], [_p]))dnl
- changequote([, ])dnl
- AC_MSG_CHECKING(alignment of $1)
- AC_CACHE_VAL(AC_CV_NAME,
- [AC_TRY_RUN([#include <stdio.h>
- struct { char filler; $1 field; } mystruct;
- main()
- {
- FILE *f=fopen("conftestval", "w");
- if (!f) exit(1);
- fprintf(f, "%dn", ((char*) & mystruct.field) - ((char*) & mystruct));
- exit(0);
- }], AC_CV_NAME=`cat conftestval`,
- AC_CV_NAME='sizeof($1)',
- AC_CV_NAME='sizeof($1)')])dnl
- AC_MSG_RESULT($AC_CV_NAME)
- AC_DEFINE_UNQUOTED(AC_TYPE_NAME, $AC_CV_NAME)
- undefine([AC_TYPE_NAME])dnl
- undefine([AC_CV_NAME])dnl
- ])
- CHECK_ALIGNOF(short)
- CHECK_ALIGNOF(int)
- CHECK_ALIGNOF(long)
- if [[ $HAVE_LONG_LONG_INT_64 -eq 1 ]] ; then
- CHECK_ALIGNOF(long long int)
- fi
- 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 [[ $ac_cv_alignof_double != 'sizeof(double)' ]] ; then
- MAX_ALIGNOF="$ac_cv_alignof_long"
- if [[ $MAX_ALIGNOF -lt $ac_cv_alignof_double ]] ; then
- MAX_ALIGNOF="$ac_cv_alignof_double"
- fi
- if [[ $HAVE_LONG_LONG_INT_64 -eq 1 ]] ; then
- if [[ $MAX_ALIGNOF -lt $ac_cv_alignof_long_long_int ]] ; then
- MAX_ALIGNOF="$ac_cv_alignof_long_long_int"
- fi
- fi
- else
- dnl cross-compiling: assume that double's alignment is worst case
- MAX_ALIGNOF="$ac_cv_alignof_double"
- fi
- AC_DEFINE_UNQUOTED(MAXIMUM_ALIGNOF, $MAX_ALIGNOF)
- dnl Check to see if platform has POSIX signal interface.
- dnl NOTE: if this test fails then POSIX signals definitely don't work.
- dnl It could be that the test compiles but the POSIX routines don't
- dnl really work ... in that case the platform-specific port files
- dnl can unset USE_POSIX_SIGNALS and HAVE_POSIX_SIGNALS. (The former
- dnl goes into config.h, the latter into Makefile.global.)
- AC_MSG_CHECKING(for POSIX signal interface)
- AC_TRY_LINK([#include <signal.h>],
- [struct sigaction act, oact;
- sigemptyset(&act.sa_mask);
- act.sa_flags = SA_RESTART;
- sigaction(0, &act, &oact);],
- [AC_DEFINE(USE_POSIX_SIGNALS)
- HAVE_POSIX_SIGNALS="1"
- AC_MSG_RESULT(yes)],
- [HAVE_POSIX_SIGNALS=""
- AC_MSG_RESULT(no)])
- AC_SUBST(HAVE_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)
- 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 cause configure to recurse into subdirectories with their own configure
- dnl Darn, setting AC_CONFIG_SUBDIRS sets a list $subdirs$ in the configure output
- dnl file, but then configure doesn't bother using that list. Probably a bug in
- dnl this version of autoconf.
- dnl So at the moment interfaces/odbc gets configured unconditionally.
- dnl - thomas 1998-10-05
- #if test "X$USE_ODBC" = "Xtrue"
- #then
- # AC_CONFIG_SUBDIRS(interfaces/odbc)
- #fi
- if test "$USE_ODBC" = "true"
- then
- PWD_INCDIR=no
- AC_CHECK_HEADER(pwd.h, PWD_INCDIR=yes)
- if test "$PWD_INCDIR" = "no"; then
- AC_MSG_WARN(odbc support disabled; pwd.h missing)
- USE_ODBC=
- fi
- AC_SUBST(USE_ODBC)
- fi
- dnl Output files that are neither makefiles nor shell scripts probably
- dnl need fully-expanded substitutions, rather than partial expansions
- dnl that include references to other variables. Currently the only
- dnl such item that's needed is an expanded version of libdir, but
- dnl others may be needed someday. NOTE: 'eval' technique only copes
- dnl with one level of indirect reference per expansion; two levels is
- dnl currently enough for libdir, but it's ugly...
- dnl First we have to force 'NONE' prefix to be expanded itself.
- dnl For some reason, autoconf 2.13 doesn't do this until AC_OUTPUT,
- dnl which is too late...
- test "x$prefix" = xNONE && prefix=$ac_default_prefix
- test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
- eval expanded_libdir="$libdir"
- eval expanded_libdir="$expanded_libdir"
- AC_SUBST(expanded_libdir)
- dnl Finally ready to produce output files ...
- AC_OUTPUT(
- GNUmakefile
- Makefile.global
- backend/port/Makefile
- backend/catalog/genbki.sh
- backend/utils/Gen_fmgrtab.sh
- bin/pg_dump/Makefile
- bin/pg_version/Makefile
- bin/psql/Makefile
- bin/pgtclsh/mkMakefile.tcldefs.sh
- bin/pgtclsh/mkMakefile.tkdefs.sh
- include/version.h
- interfaces/libpq/Makefile
- interfaces/ecpg/lib/Makefile
- interfaces/libpq++/Makefile
- interfaces/libpgtcl/Makefile
- interfaces/odbc/GNUmakefile
- interfaces/odbc/Makefile.global
- pl/plpgsql/src/Makefile
- pl/plpgsql/src/mklang.sql
- pl/tcl/mkMakefile.tcldefs.sh
- )