1 dnl Process this file with autoconf to produce a configure script.
2 dnl $PostgreSQL: pgsql/configure.in,v 1.415 2005/07/03 18:54:26 petere Exp $
4 dnl Developers, please strive to achieve this order:
6 dnl 0. Initialization and options processing
12 dnl 6. Compiler characteristics
13 dnl 7. Functions, global variables
14 dnl 8. System services
16 dnl Read the Autoconf manual for details.
18 m4_pattern_forbid(^PGAC_)dnl to catch undefined macros
20 AC_INIT([PostgreSQL], [8.1devel], [pgsql-bugs@postgresql.org])
23 AC_COPYRIGHT([Copyright (c) 1996-2005, PostgreSQL Global Development Group])
24 AC_CONFIG_SRCDIR([src/backend/access/common/heaptuple.c])
25 AC_CONFIG_AUX_DIR(config)
26 AC_PREFIX_DEFAULT(/usr/local/pgsql)
27 AC_SUBST(configure_args, [$ac_configure_args])
29 AC_DEFINE_UNQUOTED(PG_VERSION, "$PACKAGE_VERSION", [PostgreSQL version])
34 AC_MSG_CHECKING([which template to use])
36 PGAC_ARG_REQ(with, template, [],
39 list) echo; ls "$srcdir/src/template"; exit;;
40 *) if test -f "$srcdir/src/template/$with_template" ; then
43 AC_MSG_ERROR(['$withval' is not a valid template name. Use 'list' for a list.])
48 # --with-template not given
52 beos*) template=beos ;;
53 bsdi*) template=bsdi ;;
54 cygwin*) template=cygwin ;;
55 darwin*) template=darwin ;;
56 dgux*) template=dgux ;;
57 freebsd*) template=freebsd ;;
58 hpux*) template=hpux ;;
59 irix*) template=irix ;;
60 linux*|gnu*|k*bsd*-gnu)
62 mingw*) template=win32 ;;
63 netbsd*) template=netbsd ;;
64 nextstep*) template=nextstep ;;
65 openbsd*) template=openbsd ;;
67 qnx*) template=qnx4 ;;
69 solaris*) template=solaris ;;
70 sunos*) template=sunos4 ;;
73 univel) template=univel ;;
75 sysv4*) template=svr4 ;;
76 sysv5*) template=unixware ;;
77 ultrix*) template=ultrix4 ;;
80 if test x"$template" = x"" ; then
82 *******************************************************************
83 PostgreSQL has apparently not been ported to your platform yet.
84 To try a manual configuration, look into the src/template directory
85 for a similar platform and use the '--with-template=' option.
87 Please also contact <pgsql-ports@postgresql.org> to see about
88 rectifying this. Include the above 'checking host system type...'
90 *******************************************************************
96 AC_MSG_RESULT([$template])
101 # Initialize default assumption that we do not need separate assembly code
102 # for TAS (test-and-set). This can be overridden by the template file
103 # when it's executed.
110 ## Command line options
114 # Installation directory for documentation
116 PGAC_ARG(with, docdir, [ --with-docdir=DIR install the documentation in DIR [[PREFIX/doc]]
117 --without-docdir do not install the documentation],
118 [AC_MSG_ERROR([option --with-docdir requires an argument])],
121 [docdir='${prefix}/doc'])
126 # Add non-standard directories to the include path
128 PGAC_ARG_REQ(with, includes, [ --with-includes=DIRS look for additional header files in DIRS])
132 # Add non-standard directories to the library search path
134 PGAC_ARG_REQ(with, libraries, [ --with-libraries=DIRS look for additional libraries in DIRS],
135 [LIBRARY_DIRS=$withval])
137 PGAC_ARG_REQ(with, libs, [ --with-libs=DIRS alternative spelling of --with-libraries],
138 [LIBRARY_DIRS=$withval])
142 # 64-bit integer date/time storage (--enable-integer-datetimes)
144 AC_MSG_CHECKING([whether to build with 64-bit integer date/time support])
145 PGAC_ARG_BOOL(enable, integer-datetimes, no, [ --enable-integer-datetimes enable 64-bit integer date/time support],
146 [AC_DEFINE([USE_INTEGER_DATETIMES], 1,
147 [Define to 1 if you want 64-bit integer timestamp and interval support. (--enable-integer-datetimes)])])
148 AC_MSG_RESULT([$enable_integer_datetimes])
154 AC_MSG_CHECKING([whether NLS is wanted])
155 PGAC_ARG_OPTARG(enable, nls,
156 [[ --enable-nls[=LANGUAGES] enable Native Language Support]],
158 [WANTED_LANGUAGES=$enableval],
159 [AC_DEFINE(ENABLE_NLS, 1,
160 [Define to 1 if you want National Language Support. (--enable-nls)])])
161 AC_MSG_RESULT([$enable_nls])
163 AC_SUBST(WANTED_LANGUAGES)
166 # Default port number (--with-pgport), default 5432
168 AC_MSG_CHECKING([for default port number])
169 PGAC_ARG_REQ(with, pgport, [ --with-pgport=PORTNUM change default port number [5432]],
170 [default_port=$withval],
172 AC_MSG_RESULT([$default_port])
173 # Need both of these because some places want an integer and some a string
174 AC_DEFINE_UNQUOTED(DEF_PGPORT, ${default_port},
175 [Define to the default TCP port number on which the server listens and
176 to which clients will try to connect. This can be overridden at run-time,
177 but it's convenient if your clients have the right default compiled in.
178 (--with-pgport=PORTNUM)])
179 AC_DEFINE_UNQUOTED(DEF_PGPORT_STR, "${default_port}",
180 [Define to the default TCP port number as a string constant.])
181 AC_SUBST(default_port)
184 # Option to disable shared libraries
186 PGAC_ARG_BOOL(enable, shared, yes,
187 [ --disable-shared do not build shared libraries])
188 AC_SUBST(enable_shared)
191 # '-rpath'-like feature can be disabled
193 PGAC_ARG_BOOL(enable, rpath, yes,
194 [ --disable-rpath do not embed shared library search path in executables])
195 AC_SUBST(enable_rpath)
200 PGAC_ARG_BOOL(enable, spinlocks, yes,
201 [ --disable-spinlocks do not use spinlocks])
204 # --enable-debug adds -g to compiler flags
206 PGAC_ARG_BOOL(enable, debug, no,
207 [ --enable-debug build with debugging symbols (-g)])
208 AC_SUBST(enable_debug)
214 # For historical reasons you can also use --with-CC to specify the C compiler
215 # to use, although the standard way to do this is to set the CC environment
217 PGAC_ARG_REQ(with, CC, [], [CC=$with_CC])
220 aix) pgac_cc_list="gcc xlc";;
221 irix) pgac_cc_list="cc";; # no gcc
222 *) pgac_cc_list="gcc cc";;
225 AC_PROG_CC([$pgac_cc_list])
232 . "$srcdir/src/template/$template" || exit
234 # CFLAGS are selected so:
235 # If the user specifies something in the environment, that is used.
236 # else: If the template file set something, that is used.
237 # else: If the compiler is GCC, then we use -O2.
238 # else: If the compiler is something else, then we use -0.
240 if test "$ac_env_CFLAGS_set" = set; then
241 CFLAGS=$ac_env_CFLAGS_value
242 elif test "${CFLAGS+set}" = set; then
243 : # (keep what template set)
244 elif test "$GCC" = yes; then
247 # if the user selected debug mode, don't use -O
248 if test "$enable_debug" != yes; then
253 if test "$GCC" = yes; then
254 CFLAGS="$CFLAGS -Wall -Wmissing-prototypes -Wpointer-arith"
256 # Some versions of GCC support some additional useful warning flags.
257 # Check whether they are supported, and add them to CFLAGS if so.
258 PGAC_PROG_CC_CFLAGS_OPT([-Wdeclaration-after-statement])
259 PGAC_PROG_CC_CFLAGS_OPT([-Wold-style-definition])
260 PGAC_PROG_CC_CFLAGS_OPT([-Wendif-labels])
262 # Disable strict-aliasing rules; needed for gcc 3.3+
263 PGAC_PROG_CC_CFLAGS_OPT([-fno-strict-aliasing])
266 # supply -g if --enable-debug
267 if test "$enable_debug" = yes && test "$ac_cv_prog_cc_g" = yes; then
271 AC_MSG_NOTICE([using CFLAGS=$CFLAGS])
273 # We already have this in Makefile.win32, but configure needs it too
274 if test "$PORTNAME" = "win32"; then
275 CPPFLAGS="$CPPFLAGS -I$srcdir/src/include/port/win32 -DEXEC_BACKEND"
278 # Check if the compiler still works with the template settings
279 AC_MSG_CHECKING([whether the C compiler still works])
280 AC_TRY_LINK([], [return 0;],
281 [AC_MSG_RESULT(yes)],
283 AC_MSG_ERROR([cannot proceed])])
285 # Defend against gcc -ffast-math
286 if test "$GCC" = yes; then
287 AC_TRY_COMPILE([], [@%:@ifdef __FAST_MATH__
289 @%:@endif], [], [AC_MSG_ERROR([do not put -ffast-math in CFLAGS])])
295 # Create compiler version string
296 if test x"$GCC" = x"yes" ; then
297 cc_string="GCC `${CC} --version | sed q`"
301 AC_DEFINE_UNQUOTED(PG_VERSION_STR,
302 ["PostgreSQL $PACKAGE_VERSION on $host, compiled by $cc_string"],
303 [A string containing the version number, platform, and C compiler])
310 if test -z "$CC_FOR_BUILD"; then
314 AC_SUBST(CC_FOR_BUILD)
318 # Set up TAS assembly code if needed; the template file has now had its
319 # chance to request this.
321 AC_CONFIG_LINKS([src/backend/port/tas.s:src/backend/port/tas/${tas_file}])
323 if test "$need_tas" = yes ; then
332 # Automatic dependency tracking
334 PGAC_ARG_BOOL(enable, depend, no, [ --enable-depend turn on automatic dependency tracking],
340 # Enable assert checks
342 PGAC_ARG_BOOL(enable, cassert, no, [ --enable-cassert enable assertion checks (for debugging)],
343 [AC_DEFINE([USE_ASSERT_CHECKING], 1,
344 [Define to 1 to build with assertion checks. (--enable-cassert)])])
348 # Include directories
351 IFS="${IFS}${PATH_SEPARATOR}"
352 # SRCH_INC comes from the template file
353 for dir in $with_includes $SRCH_INC; do
354 if test -d "$dir"; then
355 INCLUDES="$INCLUDES -I$dir"
357 AC_MSG_WARN([*** Include directory $dir does not exist.])
365 # Library directories
368 IFS="${IFS}${PATH_SEPARATOR}"
369 # LIBRARY_DIRS comes from command line, SRCH_LIB from template file.
370 for dir in $LIBRARY_DIRS $SRCH_LIB; do
371 if test -d "$dir"; then
372 LIBDIRS="$LIBDIRS -L$dir"
374 AC_MSG_WARN([*** Library directory $dir does not exist.])
380 # Enable thread-safe client libraries
382 AC_MSG_CHECKING([allow thread-safe client libraries])
383 PGAC_ARG_BOOL(enable, thread-safety, no, [ --enable-thread-safety make client libraries thread-safe])
384 PGAC_ARG_BOOL(enable, thread-safety-force, no, [ --enable-thread-safety-force force thread-safety in spite of thread test failure])
385 if test "$enable_thread_safety" = yes -o \
386 "$enable_thread_safety_force" = yes; then
387 enable_thread_safety="yes" # for 'force'
388 AC_DEFINE([ENABLE_THREAD_SAFETY], 1,
389 [Define to 1 to build client libraries as thread-safe code. (--enable-thread-safety)])
391 AC_MSG_RESULT([$enable_thread_safety])
392 AC_SUBST(enable_thread_safety)
395 # Optionally build Tcl modules (PL/Tcl)
397 AC_MSG_CHECKING([whether to build with Tcl])
398 PGAC_ARG_BOOL(with, tcl, no, [ --with-tcl build Tcl modules (PL/Tcl)])
399 AC_MSG_RESULT([$with_tcl])
402 # We see if the path to the Tcl/Tk configuration scripts is specified.
403 # This will override the use of tclsh to find the paths to search.
405 PGAC_ARG_REQ(with, tclconfig, [ --with-tclconfig=DIR tclConfig.sh is in DIR])
408 # Optionally build Perl modules (PL/Perl)
410 AC_MSG_CHECKING([whether to build Perl modules])
411 PGAC_ARG_BOOL(with, perl, no, [ --with-perl build Perl modules (PL/Perl)])
412 AC_MSG_RESULT([$with_perl])
416 # Optionally build Python modules (PL/Python)
418 AC_MSG_CHECKING([whether to build Python modules])
419 PGAC_ARG_BOOL(with, python, no, [ --with-python build Python modules (PL/Python)])
420 AC_MSG_RESULT([$with_python])
421 AC_SUBST(with_python)
426 AC_MSG_CHECKING([whether to build with Kerberos 5 support])
427 PGAC_ARG_BOOL(with, krb5, no, [ --with-krb5 build with Kerberos 5 support],
429 AC_DEFINE(KRB5, 1, [Define to build with Kerberos 5 support. (--with-krb5)])
430 krb_srvtab="FILE:\$(sysconfdir)/krb5.keytab"
432 AC_MSG_RESULT([$with_krb5])
440 # Kerberos configuration parameters
442 PGAC_ARG_REQ(with, krb-srvnam,
443 [ --with-krb-srvnam=NAME name of the default service principal in Kerberos [[postgres]]],
445 [with_krb_srvnam="postgres"])
446 AC_DEFINE_UNQUOTED([PG_KRB_SRVNAM], ["$with_krb_srvnam"],
447 [Define to the name of the default PostgreSQL service principal in Kerberos. (--with-krb-srvnam=NAME)])
453 AC_MSG_CHECKING([whether to build with PAM support])
454 PGAC_ARG_BOOL(with, pam, no,
455 [ --with-pam build with PAM support],
456 [AC_DEFINE([USE_PAM], 1, [Define to 1 to build with PAM support. (--with-pam)])])
457 AC_MSG_RESULT([$with_pam])
464 AC_MSG_CHECKING([whether to build with Bonjour support])
465 PGAC_ARG_BOOL(with, bonjour, no,
466 [ --with-bonjour build with Bonjour support],
467 [AC_DEFINE([USE_BONJOUR], 1, [Define to 1 to build with Bonjour support. (--with-bonjour)])])
468 AC_MSG_RESULT([$with_bonjour])
469 AC_SUBST(with_bonjour)
475 AC_MSG_CHECKING([whether to build with OpenSSL support])
476 PGAC_ARG_BOOL(with, openssl, no, [ --with-openssl build with OpenSSL support],
477 [AC_DEFINE([USE_SSL], 1, [Define to build with (Open)SSL support. (--with-openssl)])])
478 AC_MSG_RESULT([$with_openssl])
479 AC_SUBST(with_openssl)
485 PGAC_ARG_BOOL(with, readline, yes,
486 [ --without-readline do not use Readline])
487 # readline on MinGW has problems with backslashes in psql and other bugs.
488 # This is particularly a problem with non-US code pages.
489 # Therefore disable its use until we understand the cause. 2004-07-20
490 if test "$PORTNAME" = "win32"; then
491 if test "$with_readline" = yes; then
492 AC_MSG_WARN([*** Readline does not work on MinGW --- disabling])
501 PGAC_ARG_BOOL(with, zlib, yes,
502 [ --without-zlib do not use Zlib])
508 # Assume system is ELF if it predefines __ELF__ as 1,
509 # otherwise believe host_os based default.
511 freebsd1*|freebsd2*) elf=no;;
512 freebsd3*|freebsd4*) elf=yes;;
521 [if test "X$elf" = "Xyes" ; then
532 CPPFLAGS="$CPPFLAGS $INCLUDES"
533 LDFLAGS="$LDFLAGS $LIBDIRS"
535 AC_MSG_NOTICE([using CPPFLAGS=$CPPFLAGS])
536 AC_MSG_NOTICE([using LDFLAGS=$LDFLAGS])
538 AC_ARG_VAR(LDFLAGS_SL)
545 AC_SUBST(with_gnu_ld)
546 case $host_os in sysv5*)
547 AC_CACHE_CHECK([whether ld -R works], [pgac_cv_prog_ld_R],
549 pgac_save_LDFLAGS=$LDFLAGS; LDFLAGS="$LDFLAGS -Wl,-R/usr/lib"
550 AC_TRY_LINK([], [], [pgac_cv_prog_ld_R=yes], [pgac_cv_prog_ld_R=no])
551 LDFLAGS=$pgac_save_LDFLAGS
553 ld_R_works=$pgac_cv_prog_ld_R
557 AC_CHECK_PROGS(LORDER, lorder)
558 AC_PATH_PROG(TAR, tar)
561 AC_CHECK_PROGS(YACC, ['bison -y'])
563 if test "$YACC"; then
564 if $YACC --version | sed q | $AWK '{ if ($4 < 1.875) exit 0; else exit 1;}'; then
566 *** If you are going to modify the grammar files or build from CVS, the installed
567 *** version of Bison is too old. Bison version 1.875 or later is required.])
571 if test -z "$YACC"; then
573 *** Without Bison you will not be able to build PostgreSQL from CVS or
574 *** change any of the parser definition files. You can obtain Bison from
575 *** a GNU mirror site. (If you are using the official distribution of
576 *** PostgreSQL then you do not need to worry about this because the Bison
577 *** output is pre-generated.) To use a different yacc program (possible,
578 *** but not recommended), set the environment variable YACC before running
584 if test "$with_perl" = yes; then
585 PGAC_CHECK_PERL_CONFIGS([archlibexp,privlibexp,useshrplib])
586 PGAC_CHECK_PERL_EMBED_LDFLAGS
589 if test "$with_python" = yes; then
591 PGAC_CHECK_PYTHON_EMBED_SETUP
599 if test "$PORTNAME" != "aix" -a "$PORTNAME" != "alpha"
601 AC_CHECK_LIB(bsd, main)
603 AC_CHECK_LIB(util, setproctitle)
604 AC_CHECK_LIB(m, main)
605 AC_CHECK_LIB(dl, main)
606 AC_CHECK_LIB(nsl, main)
607 AC_CHECK_LIB(socket, main)
608 AC_CHECK_LIB(ipc, main)
609 AC_CHECK_LIB(IPC, main)
610 AC_CHECK_LIB(lc, main)
611 AC_CHECK_LIB(dld, main)
612 AC_CHECK_LIB(ld, main)
613 AC_CHECK_LIB(compat, main)
614 AC_CHECK_LIB(BSD, main)
615 AC_CHECK_LIB(gen, main)
616 AC_CHECK_LIB(PW, main)
617 AC_CHECK_LIB(resolv, main)
618 AC_SEARCH_LIBS(getopt_long, [getopt gnugetopt])
620 AC_CHECK_LIB(unix, main)
621 AC_SEARCH_LIBS(crypt, crypt)
623 if test "$PORTNAME" = "beos"
625 AC_CHECK_LIB(bind, __inet_ntoa)
628 AC_SEARCH_LIBS(fdatasync, [rt posix4])
630 AC_CHECK_LIB(cygipc, shmget)
632 if test "$PORTNAME" = "win32"
634 AC_CHECK_LIB(wsock32, main)
637 if test "$with_readline" = yes; then
639 if test x"$pgac_cv_check_readline" = x"no"; then
640 AC_MSG_ERROR([readline library not found
641 If you have readline already installed, see config.log for details on the
642 failure. It is possible the compiler isn't looking in the proper directory.
643 Use --without-readline to disable readline support.])
647 if test "$with_zlib" = yes; then
648 AC_CHECK_LIB(z, inflate, [],
649 [AC_MSG_ERROR([zlib library not found
650 If you have zlib already installed, see config.log for details on the
651 failure. It is possible the compiler isn't looking in the proper directory.
652 Use --without-zlib to disable zlib support.])])
655 if test "$enable_spinlocks" = yes; then
656 AC_DEFINE(HAVE_SPINLOCKS, 1, [Define to 1 if you have spinlocks.])
659 *** Not using spinlocks will cause poor performance.])
662 if test "$with_krb5" = yes ; then
663 if test "$PORTNAME" != "win32"; then
664 AC_SEARCH_LIBS(com_err, [krb5 'krb5 -ldes -lasn1 -lroken' com_err], [],
665 [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
666 AC_SEARCH_LIBS(krb5_encrypt, [krb5 'krb5 -ldes -lasn1 -lroken' crypto k5crypto], [],
667 [AC_MSG_ERROR([could not find function 'krb5_encrypt' required for Kerberos 5])])
668 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -ldes -lasn1 -lroken'], [],
669 [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
671 AC_SEARCH_LIBS(com_err, 'comerr32 -lkrb5_32', [],
672 [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
676 if test "$with_openssl" = yes ; then
678 if test "$PORTNAME" != "win32"; then
679 AC_CHECK_LIB(crypto, CRYPTO_new_ex_data, [], [AC_MSG_ERROR([library 'crypto' is required for OpenSSL])])
680 AC_CHECK_LIB(ssl, SSL_library_init, [], [AC_MSG_ERROR([library 'ssl' is required for OpenSSL])])
682 AC_CHECK_LIB(eay32, CRYPTO_new_ex_data, [], [AC_MSG_ERROR([library 'eay32' is required for OpenSSL])])
683 AC_CHECK_LIB(ssleay32, SSL_library_init, [], [AC_MSG_ERROR([library 'ssleay32' is required for OpenSSL])])
687 if test "$with_pam" = yes ; then
688 AC_CHECK_LIB(pam, pam_start, [], [AC_MSG_ERROR([library 'pam' is required for PAM])])
696 dnl sys/socket.h is required by AC_FUNC_ACCEPT_ARGTYPES
697 AC_CHECK_HEADERS([crypt.h dld.h endian.h fp_class.h getopt.h ieeefp.h langinfo.h poll.h pwd.h sys/ipc.h sys/poll.h sys/pstat.h sys/select.h sys/sem.h sys/socket.h sys/shm.h sys/time.h sys/un.h termios.h utime.h wchar.h wctype.h kernel/OS.h kernel/image.h SupportDefs.h])
699 # At least on IRIX, cpp test for netinet/tcp.h will fail unless
700 # netinet/in.h is included first.
701 AC_CHECK_HEADERS(netinet/in.h)
702 AC_CHECK_HEADERS(netinet/tcp.h, [], [],
704 #ifdef HAVE_NETINET_IN_H
705 #include <netinet/in.h>
709 if expr x"$pgac_cv_check_readline" : 'x-lreadline' >/dev/null ; then
710 AC_CHECK_HEADERS(readline/readline.h, [],
711 [AC_CHECK_HEADERS(readline.h, [],
712 [AC_MSG_ERROR([readline header not found
713 If you have readline already installed, see config.log for details on the
714 failure. It is possible the compiler isn't looking in the proper directory.
715 Use --without-readline to disable readline support.])])])
716 AC_CHECK_HEADERS(readline/history.h, [],
717 [AC_CHECK_HEADERS(history.h, [],
718 [AC_MSG_ERROR([history header not found
719 If you have readline already installed, see config.log for details on the
720 failure. It is possible the compiler isn't looking in the proper directory.
721 Use --without-readline to disable readline support.])])])
724 if expr x"$pgac_cv_check_readline" : 'x-ledit' >/dev/null ; then
725 # Some installations of libedit usurp /usr/include/readline/, which seems
726 # bad practice, since in combined installations readline will have its headers
727 # there. We might have to resort to AC_EGREP checks to make sure we found
728 # the proper header...
729 AC_CHECK_HEADERS(editline/readline.h, [],
730 [AC_CHECK_HEADERS(readline.h, [],
731 [AC_CHECK_HEADERS(readline/readline.h, [],
732 [AC_MSG_ERROR([readline header not found
733 If you have libedit already installed, see config.log for details on the
734 failure. It is possible the compiler isn't looking in the proper directory.
735 Use --without-readline to disable libedit support.])])])])
736 AC_CHECK_HEADERS(editline/history.h, [],
737 [AC_CHECK_HEADERS(history.h, [],
738 [AC_CHECK_HEADERS(readline/history.h, [],
739 [AC_MSG_ERROR([history header not found
740 If you have libedit already installed, see config.log for details on the
741 failure. It is possible the compiler isn't looking in the proper directory.
742 Use --without-readline to disable libedit support.])])])])
745 if test "$with_zlib" = yes; then
746 AC_CHECK_HEADER(zlib.h, [], [AC_MSG_ERROR([zlib header not found
747 If you have zlib already installed, see config.log for details on the
748 failure. It is possible the compiler isn't looking in the proper directory.
749 Use --without-zlib to disable zlib support.])])
752 if test "$with_krb5" = yes ; then
753 AC_CHECK_HEADER(krb5.h, [], [AC_MSG_ERROR([header file <krb5.h> is required for Kerberos 5])])
756 if test "$with_openssl" = yes ; then
757 AC_CHECK_HEADER(openssl/ssl.h, [], [AC_MSG_ERROR([header file <openssl/ssl.h> is required for OpenSSL])])
758 AC_CHECK_HEADER(openssl/err.h, [], [AC_MSG_ERROR([header file <openssl/err.h> is required for OpenSSL])])
761 if test "$with_pam" = yes ; then
762 AC_CHECK_HEADERS(security/pam_appl.h, [],
763 [AC_CHECK_HEADERS(pam/pam_appl.h, [],
764 [AC_MSG_ERROR([header file <security/pam_appl.h> or <pam/pam_appl.h> is required for PAM.])])])
767 if test "$with_bonjour" = yes ; then
768 AC_CHECK_HEADER(DNSServiceDiscovery/DNSServiceDiscovery.h, [], [AC_MSG_ERROR([header file <DNSServiceDiscovery/DNSServiceDiscovery.h> is required for Bonjour])])
773 ## Types, structures, compiler characteristics
776 m4_defun([AC_PROG_CC_STDC], []) dnl We don't want that.
782 PGAC_C_FUNCNAME_SUPPORT
785 PGAC_STRUCT_SOCKADDR_UN
786 PGAC_STRUCT_SOCKADDR_STORAGE
787 PGAC_STRUCT_SOCKADDR_STORAGE_MEMBERS
790 AC_CHECK_TYPES([struct cmsgcred, struct fcred, struct sockcred], [], [],
791 [#include <sys/param.h>
792 #include <sys/types.h>
793 #include <sys/socket.h>
794 #include <sys/ucred.h>])
796 AC_CHECK_TYPES([struct option], [], [],
797 [#ifdef HAVE_GETOPT_H
801 if test "$with_zlib" = yes; then
802 # Check that <zlib.h> defines z_streamp (versions before about 1.0.4
803 # did not). While we could work around the lack of z_streamp, it
804 # seems unwise to encourage people to use such old zlib versions...
805 AC_CHECK_TYPE(z_streamp, [], [AC_MSG_ERROR([zlib version is too old
806 Use --without-zlib to disable zlib support.])],
810 if test "$with_krb5" = yes; then
811 # Check for differences between MIT and Heimdal (KTH) releases
812 AC_CHECK_MEMBERS(krb5_ticket.enc_part2, [],
813 [AC_CHECK_MEMBERS(krb5_ticket.client, [],
814 [AC_MSG_ERROR([could not determine how to get client name from Kerberos 5 ticket])],
815 [#include <krb5.h>])],
817 AC_CHECK_MEMBERS(krb5_error.text.data, [],
818 [AC_CHECK_MEMBERS(krb5_error.e_data, [],
819 [AC_MSG_ERROR([could not determine how to extract Kerberos 5 error messages])],
820 [#include <krb5.h>])],
825 ## Functions, global variables
828 PGAC_VAR_INT_TIMEZONE
829 AC_FUNC_ACCEPT_ARGTYPES
830 PGAC_FUNC_GETTIMEOFDAY_1ARG
832 AC_CHECK_FUNCS([cbrt dlopen fcvt fdatasync getpeereid memmove poll pstat readlink setproctitle setsid sigprocmask symlink sysconf towlower utime utimes waitpid wcstombs])
834 AC_CHECK_DECLS(fdatasync, [], [], [#include <unistd.h>])
837 AC_CHECK_TYPE([struct sockaddr_in6],
838 [AC_CHECK_FUNC(inet_ntop,
839 [AC_DEFINE(HAVE_IPV6, 1, [Define to 1 if you have support for IPv6.])
842 [$ac_includes_default
843 #include <netinet/in.h>])
846 AC_CACHE_CHECK([for PS_STRINGS], [pgac_cv_var_PS_STRINGS],
848 [#include <machine/vmparam.h>
849 #include <sys/exec.h>
851 [PS_STRINGS->ps_nargvstr = 1;
852 PS_STRINGS->ps_argvstr = "foo";],
853 [pgac_cv_var_PS_STRINGS=yes],
854 [pgac_cv_var_PS_STRINGS=no])])
855 if test "$pgac_cv_var_PS_STRINGS" = yes ; then
856 AC_DEFINE([HAVE_PS_STRINGS], [], [Define to 1 if the PS_STRINGS thing exists.])
860 # We use our snprintf.c emulation if either snprintf() or vsnprintf()
861 # is missing. Yes, there are machines that have only one. We may
862 # also decide to use snprintf.c if snprintf() is present but does not
863 # have all the features we need --- see below.
865 pgac_need_repl_snprintf=no
866 AC_CHECK_FUNCS(snprintf, [], pgac_need_repl_snprintf=yes)
867 AC_CHECK_FUNCS(vsnprintf, [], pgac_need_repl_snprintf=yes)
870 # Check whether <stdio.h> declares snprintf() and vsnprintf(); if not,
871 # include/c.h will provide declarations. Note this is a separate test
872 # from whether the functions exist in the C library --- there are
873 # systems that have the functions but don't bother to declare them :-(
875 AC_CHECK_DECLS([snprintf, vsnprintf])
878 # do this one the hard way in case isinf() is a macro
879 AC_CACHE_CHECK([for isinf], ac_cv_func_isinf,
883 [double x = 0.0; int res = isinf(x);],
884 [ac_cv_func_isinf=yes],
885 [ac_cv_func_isinf=no])])
887 if test $ac_cv_func_isinf = yes ; then
888 AC_DEFINE(HAVE_ISINF, 1, [Define to 1 if you have isinf().])
891 # Look for a way to implement a substitute for isinf()
892 AC_CHECK_FUNCS([fpclass fp_class fp_class_d class], [break])
895 AC_REPLACE_FUNCS([crypt fseeko getopt getrusage inet_aton random rint srandom strdup strerror strtol strtoul unsetenv])
897 # system's version of getaddrinfo(), if any, may be used only if we found
898 # a definition for struct addrinfo; see notes in src/include/getaddrinfo.h
899 if test x"$ac_cv_type_struct_addrinfo" = xyes ; then
900 AC_REPLACE_FUNCS([getaddrinfo])
902 AC_LIBOBJ(getaddrinfo)
905 # similarly, use system's getopt_long() only if system provides struct option.
906 if test x"$ac_cv_type_struct_option" = xyes ; then
907 AC_REPLACE_FUNCS([getopt_long])
909 AC_LIBOBJ(getopt_long)
912 # BSD/OS & NetBSD use a custom fseeko/ftello built on fsetpos/fgetpos
913 # We override the previous test that said fseeko/ftello didn't exist
914 # OS tests are also done in include/c.h and port/fseeko.c
915 case $host_os in bsdi*|netbsd*)
916 ac_cv_func_fseeko=yes
919 # Solaris has a very slow qsort in certain cases, so we replace it.
920 if test "$PORTNAME" = "solaris"; then
925 if test "$PORTNAME" = "win32"; then
927 AC_LIBOBJ(gettimeofday)
931 AC_DEFINE([HAVE_SYMLINK], 1,
932 [Define to 1 if you have the `symlink' function.])
935 if test "$with_readline" = yes; then
936 PGAC_VAR_RL_COMPLETION_APPEND_CHARACTER
937 AC_CHECK_FUNCS([rl_completion_matches rl_filename_completion_function])
938 AC_CHECK_FUNCS([replace_history_entry])
942 dnl Cannot use AC_CHECK_FUNC because finite may be a macro
943 AC_MSG_CHECKING(for finite)
944 AC_TRY_LINK([#include <math.h>],
945 [int dummy=finite(1.0);],
946 [AC_DEFINE(HAVE_FINITE, 1, [Define to 1 if you have finite().])
950 dnl Cannot use AC_CHECK_FUNC because sigsetjmp may be a macro
951 dnl (especially on GNU libc)
952 dnl See also comments in c.h.
953 AC_MSG_CHECKING(for sigsetjmp)
954 AC_TRY_LINK([#include <setjmp.h>],
955 [sigjmp_buf x; sigsetjmp(x, 1);],
956 [AC_DEFINE(HAVE_SIGSETJMP, 1, [Define to 1 if you have sigsetjmp().])
960 AC_CHECK_FUNC(syslog,
961 [AC_CHECK_HEADER(syslog.h,
962 [AC_DEFINE(HAVE_SYSLOG, 1, [Define to 1 if you have the syslog interface.])])])
964 AC_CACHE_CHECK([for optreset], pgac_cv_var_int_optreset,
965 [AC_TRY_LINK([#include <unistd.h>],
966 [extern int optreset; optreset = 1;],
967 [pgac_cv_var_int_optreset=yes],
968 [pgac_cv_var_int_optreset=no])])
969 if test x"$pgac_cv_var_int_optreset" = x"yes"; then
970 AC_DEFINE(HAVE_INT_OPTRESET, 1, [Define to 1 if you have the global variable 'int optreset'.])
973 AC_CHECK_FUNCS([strtoll strtoq], [break])
974 AC_CHECK_FUNCS([strtoull strtouq], [break])
976 # Check for one of atexit() or on_exit()
977 AC_CHECK_FUNCS(atexit, [],
978 [AC_CHECK_FUNCS(on_exit, [],
979 [AC_MSG_ERROR([neither atexit() nor on_exit() found])])])
986 # For each platform, we need to know about any special compile and link
987 # libraries, and whether the normal C function names are thread-safe.
988 # See the comment at the top of src/port/thread.c for more information.
990 if test "$enable_thread_safety" = yes; then
991 ACX_PTHREAD # set thread flags
993 # Some platforms use these, so just defineed them. They can't hurt if they
995 PTHREAD_CFLAGS="$PTHREAD_CFLAGS -D_REENTRANT -D_THREAD_SAFE -D_POSIX_PTHREAD_SEMANTICS"
998 # At this point, we don't want to muck with the compiler name for threading.
999 # Let's see who fails, perhaps AIX. 2004-04-23
1000 if test "$PTHREAD_CC" != "$CC"; then
1002 PostgreSQL does not support platforms that require a special
1003 compiler binary for thread-safety.
1007 if test "$THREAD_SUPPORT" = no; then
1009 Cannot enable threads on your platform.
1010 Your platform is known to not support thread-safe programs.
1011 For details, compile and run src/bin/pg_thread_test.
1015 # Check for *_r functions
1018 CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
1019 LIBS="$LIBS $PTHREAD_LIBS"
1021 AC_CHECK_HEADER(pthread.h, [], [AC_MSG_ERROR([pthread.h not found, required for --enable-thread-safety])])
1023 AC_CHECK_FUNCS([strerror_r getpwuid_r gethostbyname_r])
1025 # Do test here with the proper thread flags
1026 PGAC_FUNC_GETPWUID_R_5ARG
1027 PGAC_FUNC_STRERROR_R_INT
1033 # do not use values from template file
1038 AC_SUBST(PTHREAD_CFLAGS)
1039 AC_SUBST(PTHREAD_LIBS)
1042 # This test makes sure that run tests work at all. Sometimes a shared
1043 # library is found by the linker, but the runtime linker can't find it.
1044 # This check should come after all modifications of compiler or linker
1045 # variables, and before any other run tests.
1046 AC_MSG_CHECKING([test program])
1047 AC_TRY_RUN([int main() { return 0; }],
1048 [AC_MSG_RESULT(ok)],
1049 [AC_MSG_RESULT(failed)
1051 *** Could not execute a simple test program. This may be a problem
1052 *** related to locating shared libraries. Check the file 'config.log'
1053 *** for the exact reason.]])],
1054 [AC_MSG_RESULT([cross-compiling])])
1057 # Force use of our snprintf if system's doesn't do arg control
1058 # This feature is used by NLS
1059 if test "$enable_nls" = yes &&
1060 test $pgac_need_repl_snprintf = no &&
1061 # On Win32, libintl replaces snprintf() with its own version that
1062 # understands arg control, so we don't need our own. In fact, it
1063 # also uses macros that conflict with ours, so we _can't_ use
1065 test "$PORTNAME" != "win32"; then
1066 PGAC_FUNC_PRINTF_ARG_CONTROL
1067 if test $pgac_cv_printf_arg_control != yes ; then
1068 pgac_need_repl_snprintf=yes
1073 dnl Check to see if we have a working 64-bit integer type.
1074 dnl This breaks down into two steps:
1075 dnl (1) figure out if the compiler has a 64-bit int type with working
1076 dnl arithmetic, and if so
1077 dnl (2) see whether snprintf() can format the type correctly. (Currently,
1078 dnl snprintf is the only library routine we really need for int8 support.)
1079 dnl It's entirely possible to have a compiler that handles a 64-bit type
1080 dnl when the C library doesn't; this is fairly likely when using gcc on
1081 dnl an older platform, for example.
1082 dnl If there is no native snprintf() or it does not handle the 64-bit type,
1083 dnl we force our own version of snprintf() to be used instead.
1084 dnl Note this test must be run after our initial check for snprintf/vsnprintf.
1086 PGAC_TYPE_64BIT_INT([long int])
1088 if test x"$HAVE_LONG_INT_64" = x"no" ; then
1089 PGAC_TYPE_64BIT_INT([long long int])
1093 dnl If we need to use "long long int", figure out whether nnnLL notation works.
1095 if test x"$HAVE_LONG_LONG_INT_64" = xyes ; then
1097 #define INT64CONST(x) x##LL
1098 long long int foo = INT64CONST(0x1234567890123456);
1101 [AC_DEFINE(HAVE_LL_CONSTANTS, 1, [Define to 1 if constants of type 'long long int' should have the suffix LL.])],
1106 # If we found "long int" is 64 bits, assume snprintf handles it. If
1107 # we found we need to use "long long int", better check. We cope with
1108 # snprintfs that use %lld, %qd, or %I64d as the format. If none of these
1109 # work, fall back to our own snprintf emulation (which we know uses %lld).
1111 if test "$HAVE_LONG_LONG_INT_64" = yes ; then
1112 if test $pgac_need_repl_snprintf = no; then
1113 PGAC_FUNC_SNPRINTF_LONG_LONG_INT_FORMAT
1114 if test "$LONG_LONG_INT_FORMAT" = ""; then
1115 # Force usage of our own snprintf, since system snprintf is broken
1116 pgac_need_repl_snprintf=yes
1117 LONG_LONG_INT_FORMAT='%lld'
1120 # Here if we previously decided we needed to use our own snprintf
1121 LONG_LONG_INT_FORMAT='%lld'
1123 LONG_LONG_UINT_FORMAT=`echo "$LONG_LONG_INT_FORMAT" | sed 's/d$/u/'`
1124 INT64_FORMAT="\"$LONG_LONG_INT_FORMAT\""
1125 UINT64_FORMAT="\"$LONG_LONG_UINT_FORMAT\""
1127 # Here if we are not using 'long long int' at all
1128 INT64_FORMAT='"%ld"'
1129 UINT64_FORMAT='"%lu"'
1132 AC_DEFINE_UNQUOTED(INT64_FORMAT, $INT64_FORMAT,
1133 [Define to the appropriate snprintf format for 64-bit ints, if any.])
1135 AC_DEFINE_UNQUOTED(UINT64_FORMAT, $UINT64_FORMAT,
1136 [Define to the appropriate snprintf format for unsigned 64-bit ints, if any.])
1138 # Now we have checked all the reasons to replace snprintf
1139 if test $pgac_need_repl_snprintf = yes; then
1140 AC_DEFINE(USE_SNPRINTF, 1, [Use replacement snprintf() functions.])
1144 # Need a #define for the size of Datum (unsigned long)
1145 AC_CHECK_SIZEOF([unsigned long])
1147 # Determine memory alignment requirements for the basic C data types.
1149 PGAC_CHECK_ALIGNOF(short)
1150 PGAC_CHECK_ALIGNOF(int)
1151 PGAC_CHECK_ALIGNOF(long)
1152 if test x"$HAVE_LONG_LONG_INT_64" = x"yes" ; then
1153 PGAC_CHECK_ALIGNOF(long long int)
1155 PGAC_CHECK_ALIGNOF(double)
1157 # Compute maximum alignment of any basic type.
1158 # We assume long's alignment is at least as strong as char, short, or int;
1159 # but we must check long long (if it exists) and double.
1161 MAX_ALIGNOF=$pgac_cv_alignof_long
1162 if test $MAX_ALIGNOF -lt $pgac_cv_alignof_double ; then
1163 MAX_ALIGNOF=$pgac_cv_alignof_double
1165 if test x"$HAVE_LONG_LONG_INT_64" = xyes && test $MAX_ALIGNOF -lt $pgac_cv_alignof_long_long_int ; then
1166 MAX_ALIGNOF="$pgac_cv_alignof_long_long_int"
1168 AC_DEFINE_UNQUOTED(MAXIMUM_ALIGNOF, $MAX_ALIGNOF, [Define as the maximum alignment requirement of any C data type.])
1171 # Some platforms predefine the types int8, int16, etc. Only check
1172 # a (hopefully) representative subset.
1173 AC_CHECK_TYPES([int8, uint8, int64, uint64], [], [],
1175 #ifdef HAVE_SUPPORTDEFS_H
1176 #include <SupportDefs.h>
1179 # We also check for sig_atomic_t, which *should* be defined per ANSI
1180 # C, but is missing on some old platforms.
1181 AC_CHECK_TYPES(sig_atomic_t, [], [], [#include <signal.h>])
1184 PGAC_FUNC_POSIX_SIGNALS
1185 if test "$pgac_cv_func_posix_signals" != yes -a "$enable_thread_safety" = yes; then
1187 *** Thread-safety requires POSIX signals, which are not supported by your
1188 *** operating system.
1192 if test $ac_cv_func_fseeko = yes; then
1196 # SunOS doesn't handle negative byte comparisons properly with +/- return
1200 # Select semaphore implementation type.
1201 if test x"$USE_NAMED_POSIX_SEMAPHORES" = x"1" ; then
1202 AC_DEFINE(USE_NAMED_POSIX_SEMAPHORES, 1, [Define to select named POSIX semaphores.])
1203 SEMA_IMPLEMENTATION="src/backend/port/posix_sema.c"
1205 if test x"$USE_UNNAMED_POSIX_SEMAPHORES" = x"1" ; then
1206 AC_DEFINE(USE_UNNAMED_POSIX_SEMAPHORES, 1, [Define to select unnamed POSIX semaphores.])
1207 SEMA_IMPLEMENTATION="src/backend/port/posix_sema.c"
1209 AC_DEFINE(USE_SYSV_SEMAPHORES, 1, [Define to select SysV-style semaphores.])
1210 SEMA_IMPLEMENTATION="src/backend/port/sysv_sema.c"
1215 # Select shared-memory implementation type.
1216 AC_DEFINE(USE_SYSV_SHARED_MEMORY, 1, [Define to select SysV-style shared memory.])
1217 SHMEM_IMPLEMENTATION="src/backend/port/sysv_shmem.c"
1220 if test "$enable_nls" = yes ; then
1224 # Check for Tcl configuration script tclConfig.sh
1225 if test "$with_tcl" = yes; then
1226 PGAC_PATH_TCLCONFIGSH([$with_tclconfig])
1227 PGAC_EVAL_TCLCONFIGSH([$TCL_CONFIG_SH],
1228 [TCL_INCLUDE_SPEC,TCL_LIB_FILE,TCL_LIBS,TCL_LIB_SPEC,TCL_SHARED_BUILD])
1229 AC_SUBST(TCL_SHLIB_LD_LIBS)dnl don't want to double-evaluate that one
1230 # now that we have TCL_INCLUDE_SPEC, we can check for <tcl.h>
1231 ac_save_CPPFLAGS=$CPPFLAGS
1232 CPPFLAGS="$TCL_INCLUDE_SPEC $CPPFLAGS"
1233 AC_CHECK_HEADER(tcl.h, [], [AC_MSG_ERROR([header file <tcl.h> is required for Tcl])])
1234 CPPFLAGS=$ac_save_CPPFLAGS
1238 # Check for DocBook and tools
1242 PGAC_CHECK_DOCBOOK(4.2)
1243 PGAC_PATH_DOCBOOK_STYLESHEETS
1244 PGAC_PATH_COLLATEINDEX
1245 AC_CHECK_PROGS(SGMLSPL, sgmlspl)
1249 # We have to run the thread test near the end so we have all our symbols
1250 # defined. Cross compiling throws a warning.
1252 if test "$enable_thread_safety_force" = yes; then
1254 *** Skipping thread test program. --enable-thread-safety-force was used.
1255 *** Run the program in src/tools/thread on the your machine and add
1256 proper locking function calls to your applications to guarantee thread
1259 elif test "$enable_thread_safety" = yes; then
1260 AC_MSG_CHECKING([thread safety of required library functions])
1264 CFLAGS="$CFLAGS $PTHREAD_CFLAGS -DIN_CONFIGURE"
1265 LIBS="$LIBS $PTHREAD_LIBS"
1266 AC_TRY_RUN([#include "$srcdir/src/tools/thread/thread_test.c"],
1267 [AC_MSG_RESULT(yes)],
1270 *** Thread test program failed. Your platform is not thread-safe.
1271 *** Check the file 'config.log'for the exact reason.
1273 *** You can use the configure option --enable-thread-safety-force
1274 *** to force threads to be enabled. However, you must then run
1275 *** the program in src/tools/thread and add locking function calls
1276 *** to your applications to guarantee thread safety.
1278 [AC_MSG_RESULT(maybe)
1280 *** Skipping thread test program because of cross-compile build.
1281 *** Run the program in src/tools/thread on the target machine.
1287 # prepare build tree if outside source tree
1288 # Note 1: test -ef might not exist, but it's more reliable than `pwd`.
1289 # Note 2: /bin/pwd might be better than shell's built-in at getting
1290 # a symlink-free name.
1291 if ( test "$srcdir" -ef . ) >/dev/null 2>&1 || test "`cd $srcdir && /bin/pwd`" = "`/bin/pwd`"; then
1295 if test "$no_create" != yes; then
1296 _AS_ECHO_N([preparing build tree... ])
1297 pgac_abs_top_srcdir=`cd "$srcdir" && pwd`
1298 $SHELL "$ac_aux_dir/prep_buildtree" "$pgac_abs_top_srcdir" "." \
1299 || AC_MSG_ERROR(failed)
1303 AC_SUBST(vpath_build)
1306 AC_CONFIG_FILES([GNUmakefile src/Makefile.global])
1309 src/backend/port/dynloader.c:src/backend/port/dynloader/${template}.c
1310 src/backend/port/pg_sema.c:${SEMA_IMPLEMENTATION}
1311 src/backend/port/pg_shmem.c:${SHMEM_IMPLEMENTATION}
1312 src/include/dynloader.h:src/backend/port/dynloader/${template}.h
1313 src/include/pg_config_os.h:src/include/port/${template}.h
1314 src/Makefile.port:src/makefiles/Makefile.${template}
1317 if test "$PORTNAME" = "win32"; then
1318 AC_CONFIG_COMMANDS([check_win32_symlinks],[
1319 # Links sometimes fail undetected on Mingw -
1320 # so here we detect it and warn the user
1321 for FILE in $CONFIG_LINKS
1323 # test -e works for symlinks in the MinGW console
1324 test -e `expr "$FILE" : '\([[^:]]*\)'` || AC_MSG_WARN([*** link for $FILE - please fix by hand])
1329 AC_CONFIG_HEADERS([src/include/pg_config.h],
1331 # Update timestamp for pg_config.h (see Makefile.global)
1332 echo >src/include/stamp-h