1 dnl Process this file with autoconf to produce a configure script.
3 dnl Developers, please strive to achieve this order:
5 dnl 0. Initialization and options processing
11 dnl 6. Compiler characteristics
12 dnl 7. Functions, global variables
13 dnl 8. System services
15 dnl Read the Autoconf manual for details.
17 dnl The GNU folks apparently haven't heard that some people don't use
18 dnl Texinfo. Use this sorcery to use "docdir" instead of "infodir".
20 define([infodir], [docdir])
21 AC_INIT(src/backend/access/common/heaptuple.c)
25 AC_PREFIX_DEFAULT(/usr/local/pgsql)
26 AC_CONFIG_HEADER(src/include/config.h)
29 AC_CONFIG_AUX_DIR(config)
33 AC_DEFINE_UNQUOTED(PG_VERSION, "$VERSION")
38 AC_MSG_CHECKING([which template to use])
40 PGAC_ARG_REQ(with, template, [],
43 list) echo; ls "$srcdir/src/template"; exit;;
44 *) if test -f "$srcdir/src/template/$with_template" ; then
47 AC_MSG_ERROR([\`$withval' is not a valid template name. Use \`list' for a list.])
52 # --with-template not given
56 bsdi*) template=bsdi ;;
57 cygwin*) template=win ;;
58 dgux*) template=dgux ;;
59 freebsd*) template=freebsd ;;
60 hpux*) template=hpux ;;
61 irix*) template=irix5 ;;
62 linux*) template=linux ;;
63 netbsd*) template=netbsd ;;
64 nextstep*) template=nextstep ;;
65 openbsd*) template=openbsd ;;
67 qnx*) template=qnx4 ;;
71 sparc) template=solaris_sparc ;;
72 i?86) template=solaris_i386 ;;
74 sunos*) template=sunos4 ;;
77 univel) template=univel ;;
79 sysv4*) template=svr4 ;;
80 sysv5uw*) template=unixware ;;
81 ultrix*) template=ultrix4 ;;
84 if test x"$template" = x"" ; then
86 *******************************************************************
87 PostgreSQL has apparently not been ported to your platform yet.
88 To try a manual configuration, look into the src/template directory
89 for a similar platform and use the \`--with-template=' option.
91 Please also contact <pgsql-ports@postgresql.org> to see about
92 rectifying this. Include the above \`checking host system type...'
94 *******************************************************************
100 AC_MSG_RESULT([$template])
107 AC_LINK_FILES([src/backend/port/dynloader/${template}.c], [src/backend/port/dynloader.c])
108 AC_LINK_FILES([src/backend/port/dynloader/${template}.h], [src/include/dynloader.h])
109 AC_LINK_FILES([src/include/port/${template}.h], [src/include/os.h])
110 AC_LINK_FILES([src/makefiles/Makefile.${template}], [src/Makefile.port])
112 # Pick right test-and-set (TAS) code. Most platforms have inline
113 # assembler code in their port include file, so we just use a dummy
118 hpux) need_tas=yes; tas_file=hpux.s ;;
119 solaris_sparc) need_tas=yes; tas_file=solaris_sparc.s ;;
120 solaris_i386) need_tas=yes; tas_file=solaris_i386.s ;;
123 if test "$need_tas" = yes ; then
124 AC_LINK_FILES([src/backend/port/tas/${tas_file}], [src/backend/port/tas.s])
132 ## Command line options
137 # Add non-standard directories to the include path
139 PGAC_ARG_REQ(with, includes, [ --with-includes=DIRS look for additional header files in DIRS])
143 # Add non-standard directories to the library search path
145 PGAC_ARG_REQ(with, libraries, [ --with-libraries=DIRS look for additional libraries in DIRS],
146 [LIBRARY_DIRS=$withval])
148 PGAC_ARG_REQ(with, libs, [ --with-libs=DIRS alternative spelling of --with-libraries],
149 [LIBRARY_DIRS=$withval])
153 # Locale (--enable-locale)
155 AC_MSG_CHECKING([whether to build with locale support])
156 PGAC_ARG_BOOL(enable, locale, no, [ --enable-locale enable locale support],
157 [AC_DEFINE([USE_LOCALE], 1,
158 [Set to 1 if you want LOCALE support (--enable-locale)])])
159 AC_MSG_RESULT([$enable_locale])
163 # Character set recode (--enable-recode)
165 AC_MSG_CHECKING([whether to build with recode support])
166 PGAC_ARG_BOOL(enable, recode, no, [ --enable-recode enable character set recode support],
167 [AC_DEFINE([CYR_RECODE], 1,
168 [Set to 1 if you want cyrillic recode support (--enable-recode)])])
169 AC_MSG_RESULT([$enable_recode])
176 AC_MSG_CHECKING([whether to build with multibyte character support])
178 PGAC_ARG_OPTARG(enable, multibyte, [ --enable-multibyte enable multibyte character support],
179 [MULTIBYTE=SQL_ASCII],
182 SQL_ASCII|EUC_JP|EUC_CN|EUC_KR|EUC_TW|UNICODE|MULE_INTERNAL|LATIN1|LATIN2|LATIN3|LATIN4|LATIN5|KOI8|WIN|ALT)
183 MULTIBYTE=$enableval;;
186 [argument to --enable-multibyte must be one of:
187 SQL_ASCII, EUC_JP, EUC_CN, EUC_KR, EUC_TW,
188 UNICODE, MULE_INTERNAL,
189 LATIN1, LATIN2, LATIN3, LATIN4, LATIN5,
191 Or do not specify an argument to the option to use the default.]);;
195 AC_DEFINE(MULTIBYTE, 1, [Set to 1 if you want to use multibyte characters (--enable-multibyte)])
196 AC_MSG_RESULT([yes, default $MULTIBYTE])
204 # Default port number (--with-pgport), default 5432
206 AC_MSG_CHECKING([for default port number])
207 PGAC_ARG_REQ(with, pgport, [ --with-pgport=PORTNUM change default port number [5432]],
208 [default_port=$withval],
210 # Need both of these because backend wants an integer and frontend a string
211 AC_DEFINE_UNQUOTED(DEF_PGPORT, ${default_port})
212 AC_DEFINE_UNQUOTED(DEF_PGPORT_STR, "${default_port}")
213 AC_MSG_RESULT([$default_port])
217 # Maximum number of allowed connections (--with-maxbackends), default 32
219 AC_MSG_CHECKING([for default soft limit on number of connections])
220 PGAC_ARG_REQ(with, maxbackends, [ --with-maxbackends=N set default maximum number of connections [32]],
222 [with_maxbackends=32])
223 AC_MSG_RESULT([$with_maxbackends])
224 AC_DEFINE_UNQUOTED([DEF_MAXBACKENDS], [$with_maxbackends],
225 [The default soft limit on the number of concurrent connections, i.e., the default for the postmaster -N switch (--with-maxbackends)])
232 # For historical reasons you can also use --with-CC to specify the C compiler
233 # to use, although the standard way to do this is to set the CC environment
235 PGAC_ARG_REQ(with, CC, [], [CC=$with_CC])
237 # On AIX, default compiler to xlc.
238 if test "$template" = aix && test -z "$CC" ; then CC=xlc; fi
242 . "$srcdir/src/template/$template" || exit
243 echo "using CFLAGS=$CFLAGS"
244 # Check if the compiler still works with the template settings
248 AC_PROG_GCC_TRADITIONAL
256 # Create compiler version string
257 if test x"$GCC" = x"yes" ; then
258 cc_string="GCC `${CC} --version`"
262 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])
266 # Automatic dependency tracking
268 PGAC_ARG_BOOL(enable, depend, no, [ --enable-depend turn on automatic dependency tracking],
274 # --enable-debug adds -g to compiler flags
276 PGAC_ARG_BOOL(enable, debug, no, [ --enable-debug build with debugging symbols (-g)],
277 [CFLAGS="$CFLAGS -g"])
281 # Enable assert checks
283 PGAC_ARG_BOOL(enable, cassert, no, [ --enable-cassert enable assertion checks (for debugging)],
284 [AC_DEFINE([USE_ASSERT_CHECKING], 1,
285 [Define to 1 to build with assertion checks])])
289 # Include directories
293 # SRCH_INC comes from the template file
294 for dir in $with_includes $SRCH_INC; do
295 if test -d "$dir"; then
296 INCLUDES="$INCLUDES -I$dir"
298 AC_MSG_WARN([*** Include directory $dir does not exist.])
306 # Library directories
310 # LIBRARY_DIRS comes from command line, SRCH_LIB from template file.
311 for dir in $LIBRARY_DIRS $SRCH_LIB; do
312 if test -d "$dir"; then
313 PGSQL_LDFLAGS="$PGSQL_LDFLAGS -L$dir"
315 AC_MSG_WARN([*** Library directory $dir does not exist.])
324 AC_MSG_CHECKING([whether to build with Tcl])
325 PGAC_ARG_BOOL(with, tcl, no, [ --with-tcl build Tcl and Tk interfaces])
326 AC_MSG_RESULT([$with_tcl])
329 # If Tcl is enabled (above) then Tk is also, unless the user disables it using --without-tk
330 AC_MSG_CHECKING([whether to build with Tk])
331 if test "$with_tcl" = yes; then
332 PGAC_ARG_BOOL(with, tk, yes, [ --without-tk do not build Tk interfaces if Tcl is enabled])
336 AC_MSG_RESULT([$with_tk])
340 # We see if the path to the TCL/TK configuration scripts is specified.
341 # This will override the use of tclsh to find the paths to search.
343 PGAC_ARG_REQ(with, tclconfig, [ --with-tclconfig=DIR tclConfig.sh and tkConfig.sh are in DIR])
345 # We see if the path to the TK configuration scripts is specified.
346 # This will override the use of tclsh to find the paths to search.
348 PGAC_ARG_REQ(with, tkconfig, [ --with-tkconfig=DIR tkConfig.sh is in DIR])
352 # Optionally build Perl modules (Pg.pm and PL/Perl)
354 AC_MSG_CHECKING([whether to build Perl modules])
355 PGAC_ARG_BOOL(with, perl, no, [ --with-perl build Perl interface and PL/Perl])
356 AC_MSG_RESULT([$with_perl])
361 # Optionally build Python interface module
363 AC_MSG_CHECKING([whether to build Python modules])
364 PGAC_ARG_BOOL(with, python, no, [ --with-python build Python interface module],
367 PGAC_PATH_PYTHONDIR],
369 AC_SUBST(with_python)
372 dnl A note on the Kerberos and OpenSSL options:
374 dnl The user can give an argument to the option in order the specify
375 dnl the base path of the respective installation (what he specified
376 dnl perhaps as --prefix). If no argument is given ($withval is "yes")
377 dnl then we take the path where the package installs by default. This
378 dnl way the user doesn't have to use redundant --with-includes and
379 dnl --with-libraries options, but he can still use them if the layout
385 PGAC_ARG_OPTARG(with, krb4, [ --with-krb4[=DIR] build with Kerberos 4 support [/usr/athena]],
386 [krb4_prefix=/usr/athena],
387 [krb4_prefix=$withval],
389 AC_MSG_RESULT([building with Kerberos 4 support])
390 AC_DEFINE(KRB4, 1, [Define if you are building with Kerberos 4 support.])
392 if test -d "$krb4_prefix"; then
393 if test -d "$krb4_prefix/include"; then
394 INCLUDES="$INCLUDES -I$krb4_prefix/include"
396 if test -d "$krb4_prefix/lib"; then
397 krb_libdir="-L$krb4_prefix/lib"
398 LIBS="$krb_libdir $LIBS"
401 # Test for these libraries is below
402 KRB_LIBS="$krb_libdir -lkrb -ldes"
404 krb_srvtab="/etc/srvtab"
413 PGAC_ARG_OPTARG(with, krb5, [ --with-krb5[=DIR] build with Kerberos 5 support [/usr/athena]],
414 [krb5_prefix=/usr/athena],
415 [krb5_prefix=$withval],
417 AC_MSG_RESULT([building with Kerberos 5 support])
418 AC_DEFINE(KRB5, 1, [Define if you are building with Kerberos 5 support.])
420 if test -d "$krb5_prefix"; then
421 if test -d "$krb5_prefix/include"; then
422 INCLUDES="$INCLUDES -I$krb5_prefix/include"
424 if test -d "$krb5_prefix/lib"; then
425 krb_libdir="-L$krb5_prefix/lib"
426 LIBS="$krb_libdir $LIBS"
430 # Test for these libraries is below
431 KRB_LIBS="$krb_libdir -lkrb5 -lcrypto -lcom_err"
433 krb_srvtab="FILE:\$(sysconfdir)/krb5.keytab"
439 # Using both Kerberos 4 and Kerberos 5 at the same time isn't going to work.
440 if test "$with_krb4" = yes && test "$with_krb5" = yes ; then
441 AC_MSG_ERROR([Kerberos 4 and Kerberos 5 support cannot be combined])
445 dnl Necessary for special libpq link
450 # Kerberos configuration parameters
452 PGAC_ARG_REQ(with, krb-srvnam,
453 [ --with-krb-srvnam=NAME name of the PostgreSQL service principal in Kerberos [postgres]],
455 [with_krb_srvnam="postgres"])
456 AC_DEFINE_UNQUOTED([PG_KRB_SRVNAM], ["$with_krb_srvnam"],
457 [The name of the PostgreSQL service principal in Kerberos])
464 PGAC_ARG_OPTARG(with, openssl,
465 [ --with-openssl[=DIR] build with OpenSSL support [/usr/local/ssl]],
466 [openssl_prefix=/usr/local/ssl],
467 [openssl_prefix=$withval],
469 AC_MSG_RESULT([building with OpenSSL support])
470 AC_DEFINE([USE_SSL], 1, [Define to build with (Open)SSL support])
472 if test -d "${openssl_prefix}/include" ; then
473 INCLUDES="$INCLUDES -I${openssl_prefix}/include"
475 if test -d "${openssl_prefix}/lib" ; then
476 openssl_libdir="${openssl_prefix}/lib"
477 LIBS="$LIBS -L${openssl_prefix}/lib"
479 openssl_libdir="${openssl_prefix}"
480 LIBS="$LIBS -L${openssl_prefix}"
484 AC_SUBST(with_openssl)
487 # OpenSSL and Kerberos 5 both have a `crypto' library, so if you want to
488 # use both of them you'll have to figure it out yourself.
489 if test "$with_openssl" = yes && test "$with_krb5" = yes ; then
490 AC_MSG_ERROR([OpenSSL and Kerberos 5 support cannot be combined])
495 # Optionally enable the building of the ODBC driver
499 if test "${with_odbc+set}" = set && test "${enable_odbc+set}" != set; then
500 enable_odbc=$with_odbc
503 AC_MSG_CHECKING([whether to build the ODBC driver])
504 PGAC_ARG_BOOL(enable, odbc, no, [ --enable-odbc build the ODBC driver package])
505 AC_MSG_RESULT([$enable_odbc])
506 AC_SUBST([enable_odbc])
509 # Allow for overriding the default location of the odbcinst.ini
510 # file which is normally ${sysconfdir} (i.e., ${prefix}/etc).
511 PGAC_ARG_REQ(with, odbcinst,
512 [ --with-odbcinst=DIR default directory for odbcinst.ini [sysconfdir]],
513 [odbcinst_ini_dir=$withval],
514 [odbcinst_ini_dir="\${sysconfdir}"])
515 AC_SUBST([odbcinst_ini_dir])
519 # Assume system is ELF if it predefines __ELF__ as 1,
520 # otherwise believe host_os based default.
522 freebsd1*|freebsd2*) elf=yes;;
531 [if test "X$elf" = "Xyes" ; then
541 # Optionally build C++ code (i.e., libpq++)
543 AC_MSG_CHECKING([whether to build C++ modules])
544 PGAC_ARG_OPTARG(with, CXX, [ --with-CXX build C++ modules (libpq++)],
552 PGAC_CXX_NAMESPACE_STD
558 CPPFLAGS="$CPPFLAGS $INCLUDES"
559 LDFLAGS="$LDFLAGS $PGSQL_LDFLAGS"
561 echo "using CPPFLAGS=$CPPFLAGS"
562 echo "using LDFLAGS=$LDFLAGS"
565 # Figure out how to invoke "install" and what install options to use.
568 # When Autoconf chooses install-sh as install program it tries to generate
569 # a relative path to it in each makefile where it subsitutes it. This clashes
570 # with our Makefile.global concept. This workaround helps.
572 *install-sh*) INSTALL='\${SHELL} \${top_srcdir}/config/install-sh -c';;
575 # Fix Autoconf's brain-dead defaults for script installs.
576 INSTALL_SCRIPT="\${INSTALL} -m 755"
578 # HPUX wants shared libs to be mode 555. Add your platform's special
579 # needs here if necessary.
581 hpux*) INSTL_SHLIB_OPTS="-m 555" ;;
582 *) INSTL_SHLIB_OPTS="-m 644" ;;
585 INSTALL_SHLIB="\${INSTALL} $INSTL_SHLIB_OPTS"
586 AC_SUBST(INSTALL_SHLIB)
589 mkinstalldirs="\$(SHELL) \$(top_srcdir)/config/mkinstalldirs"
590 AC_SUBST(mkinstalldirs)
597 AC_PATH_PROG(tar, tar)
598 AC_CHECK_PROGS(PERL, perl,)
601 if test "$with_tk" = yes; then
602 AC_PATH_PROG(WISH, wish)
603 test -z "$WISH" && AC_MSG_ERROR([\`wish' is required for Tk support])
611 AC_CHECK_LIB(sfio, main)
612 AC_CHECK_LIB(ncurses, main, [], [AC_CHECK_LIB(curses, main)])
613 AC_CHECK_LIB(termcap, main)
614 AC_CHECK_LIB(readline, main)
615 AC_CHECK_LIB(readline, using_history, AC_DEFINE(HAVE_HISTORY_IN_READLINE),
616 AC_CHECK_LIB(history, main) )
618 if test "$PORTNAME" != "aix" -a "$PORTNAME" != "alpha"
620 AC_CHECK_LIB(bsd, main)
622 AC_CHECK_LIB(util, setproctitle)
623 AC_CHECK_LIB(m, main)
624 AC_CHECK_LIB(dl, main)
625 AC_CHECK_LIB(socket, main)
626 AC_CHECK_LIB(nsl, main)
627 AC_CHECK_LIB(ipc, main)
628 AC_CHECK_LIB(IPC, main)
629 AC_CHECK_LIB(lc, main)
630 AC_CHECK_LIB(dld, main)
631 AC_CHECK_LIB(ln, main)
632 AC_CHECK_LIB(ld, main)
633 AC_CHECK_LIB(compat, main)
634 AC_CHECK_LIB(BSD, main)
635 AC_CHECK_LIB(gen, main)
636 AC_CHECK_LIB(PW, main)
637 AC_SEARCH_LIBS(crypt, crypt)
638 AC_CHECK_LIB(z, inflate)
640 if test "$with_krb4" = yes ; then
641 AC_CHECK_LIB(des, [des_encrypt], [], [AC_MSG_ERROR([library \`des' is required for Kerberos 4])])
642 AC_CHECK_LIB(krb, [krb_sendauth], [], [AC_MSG_ERROR([library \`krb' is required for Kerberos 4])])
645 if test "$with_krb5" = yes ; then
646 AC_CHECK_LIB(com_err, main, [], [AC_MSG_ERROR([library \`com_err' is required for Kerberos 5])])
647 AC_CHECK_LIB(crypto, main, [], [AC_MSG_ERROR([library \`crypto' is required for Kerberos 5])])
648 AC_CHECK_LIB(krb5, main, [], [AC_MSG_ERROR([library \`krb5' is required for Kerberos 5])])
651 if test "$with_openssl" = yes ; then
653 AC_CHECK_LIB(crypto, [CRYPTO_new_ex_data], [], [AC_MSG_ERROR([library \`ssl' is required for OpenSSL])])
654 AC_CHECK_LIB(ssl, [SSL_library_init], [], [AC_MSG_ERROR([library \`ssl' is required for OpenSSL])])
661 dnl sys/socket.h and sys/types.h are required by AC_FUNC_ACCEPT_ARGTYPES
662 AC_CHECK_HEADERS([crypt.h dld.h endian.h fp_class.h getopt.h ieeefp.h netinet/tcp.h pwd.h sys/pstat.h sys/select.h sys/socket.h sys/types.h sys/un.h termios.h])
664 AC_CHECK_HEADERS([readline/readline.h readline.h], [break])
665 AC_CHECK_HEADERS([readline/history.h history.h], [break])
667 if test "$with_krb4" = yes ; then
668 AC_CHECK_HEADER(krb.h, [], [AC_MSG_ERROR([header file <krb.h> is required for Kerberos 4])])
671 if test "$with_krb5" = yes ; then
672 AC_CHECK_HEADER(krb5.h, [], [AC_MSG_ERROR([header file <krb5.h> is required for Kerberos 5])])
673 AC_CHECK_HEADER(com_err.h, [], [AC_MSG_ERROR([header file <com_err.h> is required for Kerberos 5])])
676 if test "$with_openssl" = yes ; then
677 AC_CHECK_HEADER([openssl/ssl.h], [], [AC_MSG_ERROR([header file <openssl/ssl.h> is required for OpenSSL])])
678 AC_CHECK_HEADER([openssl/err.h], [], [AC_MSG_ERROR([header file <openssl/err.h> is required for OpenSSL])])
683 ## Types, structures, compiler characteristics
692 PGAC_STRUCT_SOCKADDR_UN
695 ## Functions, global variables
697 PGAC_VAR_INT_TIMEZONE
698 AC_FUNC_ACCEPT_ARGTYPES
699 PGAC_FUNC_GETTIMEOFDAY_1ARG
701 AC_MSG_CHECKING([for fcntl(F_SETLK)])
703 linux*) AC_MSG_RESULT([broken on Linux]) ;;
710 lck.l_whence = SEEK_SET; lck.l_start = lck.l_len = 0;
711 lck.l_type = F_WRLCK;
712 fcntl(0, F_SETLK, &lck);],
713 [AC_DEFINE(HAVE_FCNTL_SETLK) AC_MSG_RESULT(yes)],
718 AC_CHECK_FUNCS([fcvt getopt_long memmove pstat setproctitle setsid sigprocmask sysconf waitpid])
720 AC_CACHE_CHECK([for PS_STRINGS], [pgac_cv_var_PS_STRINGS],
722 [#include <machine/vmparam.h>
723 #include <sys/exec.h>
725 [PS_STRINGS->ps_nargvstr = 1;
726 PS_STRINGS->ps_argvstr = "foo";],
727 [pgac_cv_var_PS_STRINGS=yes],
728 [pgac_cv_var_PS_STRINGS=no])])
729 if test "$pgac_cv_var_PS_STRINGS" = yes ; then
730 AC_DEFINE([HAVE_PS_STRINGS], [], [Define if the PS_STRINGS thing exists.])
733 dnl We use our snprintf.c emulation if either snprintf() or vsnprintf()
734 dnl is missing. Yes, there are machines that have only one.
735 dnl We may also decide to use snprintf.c if snprintf() is present but does
736 dnl not have working "long long int" support -- see below.
738 AC_CHECK_FUNC(snprintf,
739 AC_DEFINE(HAVE_SNPRINTF),
740 SNPRINTF='snprintf.o')
741 AC_CHECK_FUNC(vsnprintf,
742 AC_DEFINE(HAVE_VSNPRINTF),
743 SNPRINTF='snprintf.o')
745 dnl Check whether <stdio.h> declares snprintf() and vsnprintf(); if not,
746 dnl include/c.h will provide declarations. Note this is a separate test
747 dnl from whether the functions exist in the C library --- there are systems
748 dnl that have the functions but don't bother to declare them :-(
749 dnl Note: simple-minded pattern here will do wrong thing if stdio.h
750 dnl declares vsnprintf() but not snprintf(). Hopefully there are no
751 dnl systems that are *that* brain-damaged...
752 AC_EGREP_HEADER(snprintf, stdio.h, AC_DEFINE(HAVE_SNPRINTF_DECL))
753 AC_EGREP_HEADER(vsnprintf, stdio.h, AC_DEFINE(HAVE_VSNPRINTF_DECL))
755 # do this one the hard way in case isinf() is a macro
756 AC_CACHE_CHECK([for isinf], ac_cv_func_isinf,
760 [double x = 0.0; int res = isinf(x);],
761 [ac_cv_func_isinf=yes],
762 [ac_cv_func_isinf=no])])
764 if test $ac_cv_func_isinf = yes ; then
765 AC_DEFINE(HAVE_ISINF)
769 # Look for a way to implement a substitute for isinf()
770 AC_CHECK_FUNCS([fpclass fp_class fp_class_d class], [break])
774 AC_CHECK_FUNC(getrusage,
775 AC_DEFINE(HAVE_GETRUSAGE),
776 GETRUSAGE='getrusage.o')
778 AC_CHECK_FUNC(srandom,
779 AC_DEFINE(HAVE_SRANDOM),
782 AC_CHECK_FUNC(gethostname,
783 AC_DEFINE(HAVE_GETHOSTNAME),
784 GETHOSTNAME='gethostname.o')
785 AC_SUBST(GETHOSTNAME)
786 AC_CHECK_FUNC(random,
787 AC_DEFINE(HAVE_RANDOM),
788 MISSING_RANDOM='random.o')
789 AC_SUBST(MISSING_RANDOM)
790 AC_CHECK_FUNC(inet_aton,
791 AC_DEFINE(HAVE_INET_ATON),
792 INET_ATON='inet_aton.o')
794 AC_CHECK_FUNC(strerror,
795 AC_DEFINE(HAVE_STRERROR),
796 [STRERROR='strerror.o' STRERROR2='../../backend/port/strerror.o'])
799 AC_CHECK_FUNC(strdup,
800 AC_DEFINE(HAVE_STRDUP),
801 STRDUP='../../utils/strdup.o')
803 AC_CHECK_FUNC(strtol,
804 AC_DEFINE(HAVE_STRTOL),
807 AC_CHECK_FUNC(strtoul,
808 AC_DEFINE(HAVE_STRTOUL),
811 AC_CHECK_FUNC(strcasecmp,
812 AC_DEFINE(HAVE_STRCASECMP),
813 STRCASECMP='strcasecmp.o')
816 AC_DEFINE(HAVE_CBRT),
817 AC_CHECK_LIB(m, cbrt, AC_DEFINE(HAVE_CBRT)))
819 # On HPUX 9, rint() is not in regular libm.a but in /lib/pa1.1/libm.a;
820 # this hackery with HPUXMATHLIB allows us to cope.
824 if [[ -r /lib/pa1.1/libm.a ]] ; then
825 HPUXMATHLIB="-L /lib/pa1.1 -lm"
828 AC_SUBST(HPUXMATHLIB)
831 AC_DEFINE(HAVE_RINT),
832 AC_CHECK_LIB(m, rint, AC_DEFINE(HAVE_RINT), , $HPUXMATHLIB))
834 dnl Some old versions of libreadline don't have rl_completion_append_character
835 AC_EGREP_HEADER(rl_completion_append_character, readline.h,
836 AC_DEFINE(HAVE_RL_COMPLETION_APPEND_CHARACTER),
837 [AC_EGREP_HEADER(rl_completion_append_character, readline/readline.h,
838 AC_DEFINE(HAVE_RL_COMPLETION_APPEND_CHARACTER))])
839 AC_SUBST(HAVE_RL_COMPLETION_APPEND_CHARACTER)
841 dnl Check for readline's filename_completion_function.
842 dnl Some versions have it but it's not in the headers, so we have to take
843 dnl care of that, too.
844 AC_CHECK_FUNCS(filename_completion_function,
845 AC_EGREP_HEADER(filename_completion_function, readline.h,
846 AC_DEFINE(HAVE_FILENAME_COMPLETION_FUNCTION_DECL),
847 [AC_EGREP_HEADER(filename_completion_function, readline/readline.h,
848 AC_DEFINE(HAVE_FILENAME_COMPLETION_FUNCTION_DECL))])
850 AC_SUBST(HAVE_FILENAME_COMPLETION_FUNCTION)
851 AC_SUBST(HAVE_FILENAME_COMPLETION_FUNCTION_DECL)
854 dnl Cannot use AC_CHECK_FUNC because finite may be a macro
855 AC_MSG_CHECKING(for finite)
856 AC_TRY_LINK([#include <math.h>],
857 [int dummy=finite(1.0);],
858 [AC_DEFINE(HAVE_FINITE) AC_MSG_RESULT(yes)],
861 dnl Cannot use AC_CHECK_FUNC because sigsetjmp may be a macro
862 dnl (especially on GNU libc)
863 dnl See also comments in config.h.
864 AC_MSG_CHECKING(for sigsetjmp)
865 AC_TRY_LINK([#include <setjmp.h>],
866 [sigjmp_buf x; sigsetjmp(x, 1);],
867 [AC_DEFINE(HAVE_SIGSETJMP) AC_MSG_RESULT(yes)],
871 PGAC_ARG_BOOL(enable, syslog, no, [ --enable-syslog enable logging to syslog],
872 [AC_CHECK_FUNC(syslog,
873 [AC_DEFINE([ENABLE_SYSLOG], 1,
874 [Define to 1 if to enable the syslogging code])],
875 [AC_MSG_ERROR([no syslog interface found])])])
878 dnl Check to see if we have a working 64-bit integer type.
879 dnl This breaks down into two steps:
880 dnl (1) figure out if the compiler has a 64-bit int type with working
881 dnl arithmetic, and if so
882 dnl (2) see whether snprintf() can format the type correctly. (Currently,
883 dnl snprintf is the only library routine we really need for int8 support.)
884 dnl It's entirely possible to have a compiler that handles a 64-bit type
885 dnl when the C library doesn't; this is fairly likely when using gcc on
886 dnl an older platform, for example.
887 dnl If there is no native snprintf() or it does not handle the 64-bit type,
888 dnl we force our own version of snprintf() to be used instead.
889 dnl Note this test must be run after our initial check for snprintf/vsnprintf.
891 PGAC_TYPE_64BIT_INT([long int])
893 if test x"$HAVE_LONG_INT_64" = x"no" ; then
894 PGAC_TYPE_64BIT_INT([long long int])
898 dnl If we found "long int" is 64 bits, assume snprintf handles it.
899 dnl If we found we need to use "long long int", better check.
900 dnl We cope with snprintfs that use either %lld or %qd as the format.
901 dnl If neither works, fall back to our own snprintf emulation (which we
904 if [[ x"$HAVE_LONG_LONG_INT_64" = xyes ]] ; then
905 if [[ x$SNPRINTF = x ]] ; then
906 AC_MSG_CHECKING(whether snprintf handles 'long long int' as %lld)
907 AC_TRY_RUN([#include <stdio.h>
908 typedef long long int int64;
909 #define INT64_FORMAT "%lld"
914 int does_int64_snprintf_work()
919 if (sizeof(int64) != 8)
920 return 0; /* doesn't look like the right size */
923 snprintf(buf, 100, INT64_FORMAT, c);
924 if (strcmp(buf, "800000140000005") != 0)
925 return 0; /* either multiply or snprintf is busted */
929 exit(! does_int64_snprintf_work());
932 INT64_FORMAT='"%lld"'
935 AC_MSG_CHECKING(whether snprintf handles 'long long int' as %qd)
936 AC_TRY_RUN([#include <stdio.h>
937 typedef long long int int64;
938 #define INT64_FORMAT "%qd"
943 int does_int64_snprintf_work()
948 if (sizeof(int64) != 8)
949 return 0; /* doesn't look like the right size */
952 snprintf(buf, 100, INT64_FORMAT, c);
953 if (strcmp(buf, "800000140000005") != 0)
954 return 0; /* either multiply or snprintf is busted */
958 exit(! does_int64_snprintf_work());
964 # Force usage of our own snprintf, since system snprintf is broken
965 SNPRINTF='snprintf.o'
966 INT64_FORMAT='"%lld"'
968 [ AC_MSG_RESULT(assuming not on target machine)
969 # Force usage of our own snprintf, since we cannot test foreign snprintf
970 SNPRINTF='snprintf.o'
971 INT64_FORMAT='"%lld"'
973 [ AC_MSG_RESULT(assuming not on target machine)
974 # Force usage of our own snprintf, since we cannot test foreign snprintf
975 SNPRINTF='snprintf.o'
976 INT64_FORMAT='"%lld"'
979 # here if we previously decided we needed to use our own snprintf
980 INT64_FORMAT='"%lld"'
983 # Here if we are not using 'long long int' at all
987 AC_DEFINE_UNQUOTED(INT64_FORMAT, $INT64_FORMAT)
990 dnl Determine memory alignment requirements for the basic C datatypes.
992 PGAC_CHECK_ALIGNOF(short)
993 PGAC_CHECK_ALIGNOF(int)
994 PGAC_CHECK_ALIGNOF(long)
995 if [[ x"$HAVE_LONG_LONG_INT_64" = xyes ]] ; then
996 PGAC_CHECK_ALIGNOF(long long int)
998 PGAC_CHECK_ALIGNOF(double)
1000 dnl Compute maximum alignment of any basic type.
1001 dnl We assume long's alignment is at least as strong as char, short, or int;
1002 dnl but we must check long long (if it exists) and double.
1004 if test $pgac_cv_alignof_double != 'sizeof(double)' ; then
1005 MAX_ALIGNOF=$pgac_cv_alignof_long
1006 if test $MAX_ALIGNOF -lt $pgac_cv_alignof_double ; then
1007 MAX_ALIGNOF=$pgac_cv_alignof_double
1009 if test x"$HAVE_LONG_LONG_INT_64" = xyes && test $MAX_ALIGNOF -lt $pgac_cv_alignof_long_long_int ; then
1010 MAX_ALIGNOF="$pgac_cv_alignof_long_long_int"
1013 dnl cross-compiling: assume that double's alignment is worst case
1014 MAX_ALIGNOF="$pgac_cv_alignof_double"
1016 AC_DEFINE_UNQUOTED(MAXIMUM_ALIGNOF, $MAX_ALIGNOF, [Define as the maximum alignment requirement of any type])
1018 PGAC_FUNC_POSIX_SIGNALS
1021 # Check for Tcl configuration script tclConfig.sh
1022 if test "$with_tcl" = yes; then
1023 PGAC_PATH_TCLCONFIGSH([$with_tclconfig])
1026 # Check for Tk configuration script tkConfig.sh
1027 if test "$with_tk" = yes; then
1028 PGAC_PATH_TKCONFIGSH([$with_tkconfig $with_tclconfig])
1032 # Finally ready to produce output files ...
1039 src/backend/port/Makefile
1041 [echo "timestamp file" > src/include/stamp-h]