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")
43 AC_MSG_CHECKING([which template to use])
45 PGAC_ARG_REQ(with, template, [],
48 list) echo; ls "$srcdir/src/template"; exit;;
49 *) if test -f "$srcdir/src/template/$with_template" ; then
52 AC_MSG_ERROR(['$withval' is not a valid template name. Use 'list' for a list.])
57 # --with-template not given
61 beos*) template=beos ;;
62 bsdi*) template=bsdi ;;
63 cygwin*) template=win ;;
64 darwin*) template=darwin ;;
65 dgux*) template=dgux ;;
66 freebsd*) template=freebsd ;;
67 hpux*) template=hpux ;;
68 irix*) template=irix5 ;;
69 linux*) template=linux ;;
70 netbsd*) template=netbsd ;;
71 nextstep*) template=nextstep ;;
72 openbsd*) template=openbsd ;;
74 qnx*) template=qnx4 ;;
76 solaris*) template=solaris ;;
77 sunos*) template=sunos4 ;;
80 univel) template=univel ;;
82 sysv4*) template=svr4 ;;
83 sysv5uw*) template=unixware ;;
84 ultrix*) template=ultrix4 ;;
87 if test x"$template" = x"" ; then
89 *******************************************************************
90 PostgreSQL has apparently not been ported to your platform yet.
91 To try a manual configuration, look into the src/template directory
92 for a similar platform and use the '--with-template=' option.
94 Please also contact <pgsql-ports@postgresql.org> to see about
95 rectifying this. Include the above 'checking host system type...'
97 *******************************************************************
103 AC_MSG_RESULT([$template])
108 AC_LINK_FILES([src/backend/port/dynloader/${template}.c], [src/backend/port/dynloader.c])
109 AC_LINK_FILES([src/backend/port/dynloader/${template}.h], [src/include/dynloader.h])
110 AC_LINK_FILES([src/include/port/${template}.h], [src/include/os.h])
111 AC_LINK_FILES([src/makefiles/Makefile.${template}], [src/Makefile.port])
113 # Pick right test-and-set (TAS) code. Most platforms have inline
114 # assembler code in src/include/storage/s_lock.h, so we just use
117 *-*-hpux*) need_tas=yes; tas_file=hpux.s ;;
118 sparc-*-solaris*) need_tas=yes; tas_file=solaris_sparc.s ;;
119 i?86-*-solaris) need_tas=yes; tas_file=solaris_i386.s ;;
120 *) need_tas=no; tas_file=dummy.s ;;
122 AC_LINK_FILES([src/backend/port/tas/${tas_file}], [src/backend/port/tas.s])
124 if test "$need_tas" = yes ; then
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])
203 # Unicode conversion (--enable-unicode-conversion)
205 AC_MSG_CHECKING([whether to build with Unicode conversion support])
206 PGAC_ARG_BOOL(enable, unicode-conversion, no,
207 [ --enable-unicode-conversion enable unicode conversion support],
208 [if test -z "$MULTIBYTE"; then
209 AC_MSG_ERROR([--enable-unicode-conversion only works with --enable-multibyte])
211 AC_DEFINE([UNICODE_CONVERSION], 1,
212 [Set to 1 if you want Unicode conversion support (--enable-unicode-conversion)])])
213 AC_MSG_RESULT([$enable_unicode_conversion])
216 # Default port number (--with-pgport), default 5432
218 AC_MSG_CHECKING([for default port number])
219 PGAC_ARG_REQ(with, pgport, [ --with-pgport=PORTNUM change default port number [5432]],
220 [default_port=$withval],
222 AC_MSG_RESULT([$default_port])
223 # Need both of these because some places want an integer and some a string
224 AC_DEFINE_UNQUOTED(DEF_PGPORT, ${default_port})
225 AC_DEFINE_UNQUOTED(DEF_PGPORT_STR, "${default_port}")
226 AC_SUBST(default_port)
229 # Maximum number of allowed connections (--with-maxbackends), default 32
231 AC_MSG_CHECKING([for default soft limit on number of connections])
232 PGAC_ARG_REQ(with, maxbackends, [ --with-maxbackends=N set default maximum number of connections [32]],
234 [with_maxbackends=32])
235 AC_MSG_RESULT([$with_maxbackends])
236 AC_DEFINE_UNQUOTED([DEF_MAXBACKENDS], [$with_maxbackends],
237 [The default soft limit on the number of concurrent connections, i.e., the default for the postmaster -N switch (--with-maxbackends)])
241 # Option to disable shared libraries
243 PGAC_ARG_BOOL(enable, shared, yes,
244 [ --disable-shared do not build shared libraries])
245 AC_SUBST(enable_shared)
248 # '-rpath'-like feature can be disabled
250 PGAC_ARG_BOOL(enable, rpath, yes,
251 [ --disable-rpath do not embed shared library search path in executables])
252 AC_SUBST(enable_rpath)
256 # --enable-debug adds -g to compiler flags
258 PGAC_ARG_BOOL(enable, debug, no,
259 [ --enable-debug build with debugging symbols (-g)])
266 # For historical reasons you can also use --with-CC to specify the C compiler
267 # to use, although the standard way to do this is to set the CC environment
269 PGAC_ARG_REQ(with, CC, [], [CC=$with_CC])
271 # On AIX, default compiler to xlc.
272 if test "$template" = aix && test -z "$CC" ; then CC=xlc; fi
274 # Save CFLAGS from the environment
275 has_environ_CFLAGS="${CFLAGS+yes}"
280 . "$srcdir/src/template/$template" || exit
282 if test "$has_environ_CFLAGS" = yes; then
285 if test "$enable_debug" = yes && test "$ac_cv_prog_cc_g" = yes; then
288 echo "using CFLAGS=$CFLAGS"
289 # Check if the compiler still works with the template settings
293 AC_PROG_GCC_TRADITIONAL
296 # Create compiler version string
297 if test x"$GCC" = x"yes" ; then
298 cc_string="GCC `${CC} --version`"
302 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])
306 # Automatic dependency tracking
308 PGAC_ARG_BOOL(enable, depend, no, [ --enable-depend turn on automatic dependency tracking],
314 # Enable assert checks
316 PGAC_ARG_BOOL(enable, cassert, no, [ --enable-cassert enable assertion checks (for debugging)],
317 [AC_DEFINE([USE_ASSERT_CHECKING], 1,
318 [Define to 1 to build with assertion checks])])
322 # Include directories
326 # SRCH_INC comes from the template file
327 for dir in $with_includes $SRCH_INC; do
328 if test -d "$dir"; then
329 INCLUDES="$INCLUDES -I$dir"
331 AC_MSG_WARN([*** Include directory $dir does not exist.])
339 # Library directories
343 # LIBRARY_DIRS comes from command line, SRCH_LIB from template file.
344 for dir in $LIBRARY_DIRS $SRCH_LIB; do
345 if test -d "$dir"; then
346 LIBDIRS="$LIBDIRS -L$dir"
348 AC_MSG_WARN([*** Library directory $dir does not exist.])
357 AC_MSG_CHECKING([whether to build with Tcl])
358 PGAC_ARG_BOOL(with, tcl, no, [ --with-tcl build Tcl and Tk interfaces])
359 AC_MSG_RESULT([$with_tcl])
362 # If Tcl is enabled (above) then Tk is also, unless the user disables it using --without-tk
363 AC_MSG_CHECKING([whether to build with Tk])
364 if test "$with_tcl" = yes; then
365 PGAC_ARG_BOOL(with, tk, yes, [ --without-tk do not build Tk interfaces if Tcl is enabled])
369 AC_MSG_RESULT([$with_tk])
373 # We see if the path to the TCL/TK configuration scripts is specified.
374 # This will override the use of tclsh to find the paths to search.
376 PGAC_ARG_REQ(with, tclconfig, [ --with-tclconfig=DIR tclConfig.sh and tkConfig.sh are in DIR])
378 # We see if the path to the TK configuration scripts is specified.
379 # This will override the use of tclsh to find the paths to search.
381 PGAC_ARG_REQ(with, tkconfig, [ --with-tkconfig=DIR tkConfig.sh is in DIR])
385 # Optionally build Perl modules (Pg.pm and PL/Perl)
387 AC_MSG_CHECKING([whether to build Perl modules])
388 PGAC_ARG_BOOL(with, perl, no, [ --with-perl build Perl interface and PL/Perl])
389 AC_MSG_RESULT([$with_perl])
394 # Optionally build Python interface module
396 AC_MSG_CHECKING([whether to build Python modules])
397 PGAC_ARG_BOOL(with, python, no, [ --with-python build Python interface module],
400 PGAC_PATH_PYTHONDIR],
402 AC_SUBST(with_python)
405 # Optionally build the Java/JDBC tools
407 AC_MSG_CHECKING([whether to build Java/JDBC tools])
408 PGAC_ARG_BOOL(with, java, no, [ --with-java build JDBC interface and Java tools],
411 if test -z "$ANT"; then
412 AC_MSG_ERROR([Ant is required to build Java components])
417 dnl A note on the Kerberos and OpenSSL options:
419 dnl The user can give an argument to the option in order the specify
420 dnl the base path of the respective installation (what he specified
421 dnl perhaps as --prefix). If no argument is given ($withval is "yes")
422 dnl then we take the path where the package installs by default. This
423 dnl way the user doesn't have to use redundant --with-includes and
424 dnl --with-libraries options, but he can still use them if the layout
430 PGAC_ARG_OPTARG(with, krb4, [ --with-krb4[=DIR] build with Kerberos 4 support [/usr/athena]],
431 [krb4_prefix=/usr/athena],
432 [krb4_prefix=$withval],
434 AC_MSG_RESULT([building with Kerberos 4 support])
435 AC_DEFINE(KRB4, 1, [Define if you are building with Kerberos 4 support.])
437 if test -d "$krb4_prefix/include"; then
438 INCLUDES="$INCLUDES -I$krb4_prefix/include"
440 if test -d "$krb4_prefix/lib"; then
441 LIBDIRS="$LIBDIRS -L$krb4_prefix/lib"
444 krb_srvtab="/etc/srvtab"
453 PGAC_ARG_OPTARG(with, krb5, [ --with-krb5[=DIR] build with Kerberos 5 support [/usr/athena]],
454 [krb5_prefix=/usr/athena],
455 [krb5_prefix=$withval],
457 AC_MSG_RESULT([building with Kerberos 5 support])
458 AC_DEFINE(KRB5, 1, [Define if you are building with Kerberos 5 support.])
460 if test -d "$krb5_prefix/include"; then
461 INCLUDES="$INCLUDES -I$krb5_prefix/include"
463 if test -d "$krb5_prefix/lib"; then
464 LIBDIRS="$LIBDIRS -L$krb5_prefix/lib"
467 krb_srvtab="FILE:\$(sysconfdir)/krb5.keytab"
473 # Using both Kerberos 4 and Kerberos 5 at the same time isn't going to work.
474 if test "$with_krb4" = yes && test "$with_krb5" = yes ; then
475 AC_MSG_ERROR([Kerberos 4 and Kerberos 5 support cannot be combined])
482 # Kerberos configuration parameters
484 PGAC_ARG_REQ(with, krb-srvnam,
485 [ --with-krb-srvnam=NAME name of the service principal in Kerberos [postgres]],
487 [with_krb_srvnam="postgres"])
488 AC_DEFINE_UNQUOTED([PG_KRB_SRVNAM], ["$with_krb_srvnam"],
489 [The name of the PostgreSQL service principal in Kerberos])
496 PGAC_ARG_OPTARG(with, openssl,
497 [ --with-openssl[=DIR] build with OpenSSL support [/usr/local/ssl]],
498 [openssl_prefix=/usr/local/ssl],
499 [openssl_prefix=$withval],
501 AC_MSG_RESULT([building with OpenSSL support])
502 AC_DEFINE([USE_SSL], 1, [Define to build with (Open)SSL support])
504 if test -d "${openssl_prefix}/include" ; then
505 INCLUDES="$INCLUDES -I${openssl_prefix}/include"
507 if test -d "${openssl_prefix}/lib" ; then
508 LIBDIRS="$LIBDIRS -L${openssl_prefix}/lib"
512 AC_SUBST(with_openssl)
517 # Optionally enable the building of the ODBC driver
521 if test "${with_odbc+set}" = set && test "${enable_odbc+set}" != set; then
522 enable_odbc=$with_odbc
525 AC_MSG_CHECKING([whether to build the ODBC driver])
526 PGAC_ARG_BOOL(enable, odbc, no, [ --enable-odbc build the ODBC driver package])
527 AC_MSG_RESULT([$enable_odbc])
528 AC_SUBST([enable_odbc])
531 # Allow for overriding the default location of the odbcinst.ini
532 # file which is normally ${sysconfdir} (i.e., ${prefix}/etc).
533 PGAC_ARG_REQ(with, odbcinst,
534 [ --with-odbcinst=DIR default directory for odbcinst.ini [sysconfdir]],
535 [odbcinst_ini_dir=$withval],
536 [odbcinst_ini_dir="\${sysconfdir}"])
537 AC_SUBST([odbcinst_ini_dir])
541 # Assume system is ELF if it predefines __ELF__ as 1,
542 # otherwise believe host_os based default.
544 freebsd1*|freebsd2*) elf=yes;;
553 [if test "X$elf" = "Xyes" ; then
563 # Optionally build C++ code (i.e., libpq++)
565 AC_MSG_CHECKING([whether to build C++ modules])
566 PGAC_ARG_OPTARG(with, CXX, [ --with-CXX build C++ modules (libpq++)],
572 # If the user has specified CXXFLAGS in the environment, leave it
573 # alone, else use a default.
575 has_environ_CXXFLAGS="${CXXFLAGS+yes}"
577 if test "$has_environ_CXXFLAGS" != yes; then
578 if test "$GXX" = yes; then
582 osf) CXXFLAGS='-O4 -Olimit 2000' ;;
583 unixware) CXXFLAGS='-O' ;;
588 if test "$enable_debug" = yes && test "$ac_cv_prog_cxx_g" = yes; then
589 CXXFLAGS="$CXXFLAGS -g"
591 echo "using CXXFLAGS=$CXXFLAGS"
596 PGAC_CXX_NAMESPACE_STD
601 CPPFLAGS="$CPPFLAGS $INCLUDES"
602 LDFLAGS="$LDFLAGS $LIBDIRS"
604 echo "using CPPFLAGS=$CPPFLAGS"
605 echo "using LDFLAGS=$LDFLAGS"
613 AC_SUBST(with_gnu_ld)
614 case $host_os in sysv5uw*)
615 AC_CACHE_CHECK([whether ld -R works], [pgac_cv_prog_ld_R],
617 pgac_save_LDFLAGS=$LDFLAGS; LDFLAGS="$LDFLAGS -Wl,-R/usr/lib"
618 AC_TRY_LINK([], [], [pgac_cv_prog_ld_R=yes], [pgac_cv_prog_ld_R=no])
619 LDFLAGS=$pgac_save_LDFLAGS
621 ld_R_works=$pgac_cv_prog_ld_R
625 AC_CHECK_PROGS(LORDER, lorder)
626 AC_PATH_PROG(TAR, tar)
627 AC_CHECK_PROGS(PERL, perl)
629 AC_CHECK_PROGS(YACC, ['bison -y'])
630 if test -z "$YACC"; then
632 *** Without Bison you will not be able to build PostgreSQL from CVS or
633 *** change any of the parser definition files. You can obtain Bison from
634 *** a GNU mirror site. (If you are using the official distribution of
635 *** PostgreSQL then you do not need to worry about this because the Bison
636 *** output is pre-generated.) To use a different yacc program (possible,
637 *** but not recommended), set the environment variable YACC before running
642 if test "$with_tk" = yes; then
643 AC_PATH_PROG(WISH, wish)
644 test -z "$WISH" && AC_MSG_ERROR(['wish' is required for Tk support])
653 AC_SEARCH_LIBS(using_history, history, [AC_DEFINE(HAVE_HISTORY_FUNCTIONS)])
655 if test "$PORTNAME" != "aix" -a "$PORTNAME" != "alpha"
657 AC_CHECK_LIB(bsd, main)
659 AC_CHECK_LIB(util, setproctitle)
660 AC_CHECK_LIB(m, main)
661 AC_CHECK_LIB(dl, main)
662 AC_CHECK_LIB(socket, main)
663 AC_CHECK_LIB(nsl, main)
664 AC_CHECK_LIB(ipc, main)
665 AC_CHECK_LIB(IPC, main)
666 AC_CHECK_LIB(lc, main)
667 AC_CHECK_LIB(dld, main)
668 AC_CHECK_LIB(ld, main)
669 AC_CHECK_LIB(compat, main)
670 AC_CHECK_LIB(BSD, main)
671 AC_CHECK_LIB(gen, main)
672 AC_CHECK_LIB(PW, main)
673 AC_CHECK_LIB(resolv, main)
674 AC_CHECK_LIB([[unix]], main)
675 AC_SEARCH_LIBS(crypt, crypt)
676 AC_CHECK_LIB(bind, __inet_ntoa)
677 dnl Only consider libz to be present if we find <zlib.h> as well;
678 dnl furthermore, check that <zlib.h> defines z_streamp (versions before
679 dnl about 1.0.4 did not). While we could work around the lack of z_streamp,
680 dnl it seems unwise to encourage people to use such old zlib versions...
681 AC_EGREP_HEADER(z_streamp, zlib.h, [
682 AC_CHECK_LIB(z, inflate)
686 if test "$with_krb4" = yes ; then
687 AC_CHECK_LIB(des, [des_encrypt], [], [AC_MSG_ERROR([library 'des' is required for Kerberos 4])])
688 AC_CHECK_LIB(krb, [krb_sendauth], [], [AC_MSG_ERROR([library 'krb' is required for Kerberos 4])])
691 if test "$with_krb5" = yes ; then
692 AC_CHECK_LIB(com_err, [com_err], [], [AC_MSG_ERROR([library 'com_err' is required for Kerberos 5])])
693 AC_CHECK_LIB(crypto, [krb5_encrypt], [],
694 [AC_CHECK_LIB(k5crypto, [krb5_encrypt], [], [AC_MSG_ERROR([library 'crypto' or 'k5crypto' is required for Kerberos 5])])])
695 AC_CHECK_LIB(krb5, [krb5_sendauth], [], [AC_MSG_ERROR([library 'krb5' is required for Kerberos 5])])
698 if test "$with_openssl" = yes ; then
700 AC_CHECK_LIB(crypto, [CRYPTO_new_ex_data], [], [AC_MSG_ERROR([library 'crypto' is required for OpenSSL])])
701 AC_CHECK_LIB(ssl, [SSL_library_init], [], [AC_MSG_ERROR([library 'ssl' is required for OpenSSL])])
708 dnl sys/socket.h and sys/types.h are required by AC_FUNC_ACCEPT_ARGTYPES
709 AC_CHECK_HEADERS([crypt.h dld.h endian.h fp_class.h getopt.h ieeefp.h pwd.h sys/ipc.h sys/pstat.h sys/select.h sys/sem.h sys/socket.h sys/shm.h sys/types.h sys/un.h termios.h kernel/OS.h kernel/image.h SupportDefs.h])
711 dnl At least on IRIX, cpp test for netinet/tcp.h will fail unless netinet/in.h
712 dnl is included first. So can't just use AC_CHECK_HEADERS; do it this way:
713 AC_CHECK_HEADERS([netinet/in.h])
714 AC_MSG_CHECKING([for netinet/tcp.h])
716 #ifdef HAVE_NETINET_IN_H
717 #include <netinet/in.h>
719 #include <netinet/tcp.h>
720 ], [AC_DEFINE(HAVE_NETINET_TCP_H) AC_MSG_RESULT(yes)],
725 AC_CHECK_HEADERS([readline/readline.h readline.h], [break])
726 AC_CHECK_HEADERS([readline/history.h history.h], [break])
728 if test "$with_krb4" = yes ; then
729 AC_CHECK_HEADER(krb.h, [], [AC_MSG_ERROR([header file <krb.h> is required for Kerberos 4])])
732 if test "$with_krb5" = yes ; then
733 AC_CHECK_HEADER(krb5.h, [], [AC_MSG_ERROR([header file <krb5.h> is required for Kerberos 5])])
734 AC_CHECK_HEADER(com_err.h, [], [AC_MSG_ERROR([header file <com_err.h> is required for Kerberos 5])])
737 if test "$with_openssl" = yes ; then
738 AC_CHECK_HEADER([openssl/ssl.h], [], [AC_MSG_ERROR([header file <openssl/ssl.h> is required for OpenSSL])])
739 AC_CHECK_HEADER([openssl/err.h], [], [AC_MSG_ERROR([header file <openssl/err.h> is required for OpenSSL])])
744 ## Types, structures, compiler characteristics
753 PGAC_STRUCT_SOCKADDR_UN
756 ## Functions, global variables
758 PGAC_VAR_INT_TIMEZONE
759 AC_FUNC_ACCEPT_ARGTYPES
760 PGAC_FUNC_GETTIMEOFDAY_1ARG
762 AC_CHECK_FUNCS([fcvt getopt_long memmove pstat setproctitle setsid sigprocmask sysconf waitpid dlopen fdatasync])
764 dnl Check whether <unistd.h> declares fdatasync().
765 AC_EGREP_HEADER(fdatasync, unistd.h, AC_DEFINE(HAVE_FDATASYNC_DECL))
767 AC_CACHE_CHECK([for PS_STRINGS], [pgac_cv_var_PS_STRINGS],
769 [#include <machine/vmparam.h>
770 #include <sys/exec.h>
772 [PS_STRINGS->ps_nargvstr = 1;
773 PS_STRINGS->ps_argvstr = "foo";],
774 [pgac_cv_var_PS_STRINGS=yes],
775 [pgac_cv_var_PS_STRINGS=no])])
776 if test "$pgac_cv_var_PS_STRINGS" = yes ; then
777 AC_DEFINE([HAVE_PS_STRINGS], [], [Define if the PS_STRINGS thing exists.])
780 dnl We use our snprintf.c emulation if either snprintf() or vsnprintf()
781 dnl is missing. Yes, there are machines that have only one.
782 dnl We may also decide to use snprintf.c if snprintf() is present but does
783 dnl not have working "long long int" support -- see below.
785 AC_CHECK_FUNC(snprintf,
786 AC_DEFINE(HAVE_SNPRINTF),
787 SNPRINTF='snprintf.o')
788 AC_CHECK_FUNC(vsnprintf,
789 AC_DEFINE(HAVE_VSNPRINTF),
790 SNPRINTF='snprintf.o')
792 dnl Check whether <stdio.h> declares snprintf() and vsnprintf(); if not,
793 dnl include/c.h will provide declarations. Note this is a separate test
794 dnl from whether the functions exist in the C library --- there are systems
795 dnl that have the functions but don't bother to declare them :-(
796 dnl Note: simple-minded pattern here will do wrong thing if stdio.h
797 dnl declares vsnprintf() but not snprintf(). Hopefully there are no
798 dnl systems that are *that* brain-damaged...
799 AC_EGREP_HEADER(snprintf, stdio.h, AC_DEFINE(HAVE_SNPRINTF_DECL))
800 AC_EGREP_HEADER(vsnprintf, stdio.h, AC_DEFINE(HAVE_VSNPRINTF_DECL))
802 # do this one the hard way in case isinf() is a macro
803 AC_CACHE_CHECK([for isinf], ac_cv_func_isinf,
807 [double x = 0.0; int res = isinf(x);],
808 [ac_cv_func_isinf=yes],
809 [ac_cv_func_isinf=no])])
811 if test $ac_cv_func_isinf = yes ; then
812 AC_DEFINE(HAVE_ISINF)
816 # Look for a way to implement a substitute for isinf()
817 AC_CHECK_FUNCS([fpclass fp_class fp_class_d class], [break])
821 AC_CHECK_FUNC(getrusage,
822 AC_DEFINE(HAVE_GETRUSAGE),
823 GETRUSAGE='getrusage.o')
825 AC_CHECK_FUNC(srandom,
826 AC_DEFINE(HAVE_SRANDOM),
829 AC_CHECK_FUNC(gethostname,
830 AC_DEFINE(HAVE_GETHOSTNAME),
831 GETHOSTNAME='gethostname.o')
832 AC_SUBST(GETHOSTNAME)
833 AC_CHECK_FUNC(random,
834 AC_DEFINE(HAVE_RANDOM),
835 MISSING_RANDOM='random.o')
836 AC_SUBST(MISSING_RANDOM)
837 AC_CHECK_FUNC(inet_aton,
838 AC_DEFINE(HAVE_INET_ATON),
839 INET_ATON='inet_aton.o')
841 AC_CHECK_FUNC(strerror,
842 AC_DEFINE(HAVE_STRERROR),
843 STRERROR='strerror.o')
845 AC_CHECK_FUNC(strdup,
846 AC_DEFINE(HAVE_STRDUP),
847 STRDUP='../../utils/strdup.o')
849 AC_CHECK_FUNC(strtol,
850 AC_DEFINE(HAVE_STRTOL),
853 AC_CHECK_FUNC(strtoul,
854 AC_DEFINE(HAVE_STRTOUL),
857 AC_CHECK_FUNC(strcasecmp,
858 AC_DEFINE(HAVE_STRCASECMP),
859 STRCASECMP='strcasecmp.o')
862 AC_DEFINE(HAVE_CBRT),
863 AC_CHECK_LIB(m, cbrt, AC_DEFINE(HAVE_CBRT)))
865 # On HPUX 9, rint() is not in regular libm.a but in /lib/pa1.1/libm.a;
866 # this hackery with HPUXMATHLIB allows us to cope.
870 if [[ -r /lib/pa1.1/libm.a ]] ; then
871 HPUXMATHLIB="-L /lib/pa1.1 -lm"
874 AC_SUBST(HPUXMATHLIB)
877 AC_DEFINE(HAVE_RINT),
878 AC_CHECK_LIB(m, rint, AC_DEFINE(HAVE_RINT), , $HPUXMATHLIB))
881 # Readline versions < 2.1 don't have rl_completion_append_character
882 AC_MSG_CHECKING([for rl_completion_append_character])
883 AC_TRY_LINK([#include <stdio.h>
884 #ifdef HAVE_READLINE_READLINE_H
885 # include <readline/readline.h>
886 #elif defined(HAVE_READLINE_H)
887 # include <readline.h>
890 [rl_completion_append_character = 'x';],
892 AC_DEFINE(HAVE_RL_COMPLETION_APPEND_CHARACTER)],
895 AC_CHECK_FUNCS([rl_completion_matches])
898 dnl Cannot use AC_CHECK_FUNC because finite may be a macro
899 AC_MSG_CHECKING(for finite)
900 AC_TRY_LINK([#include <math.h>],
901 [int dummy=finite(1.0);],
902 [AC_DEFINE(HAVE_FINITE) AC_MSG_RESULT(yes)],
905 dnl Cannot use AC_CHECK_FUNC because sigsetjmp may be a macro
906 dnl (especially on GNU libc)
907 dnl See also comments in config.h.
908 AC_MSG_CHECKING(for sigsetjmp)
909 AC_TRY_LINK([#include <setjmp.h>],
910 [sigjmp_buf x; sigsetjmp(x, 1);],
911 [AC_DEFINE(HAVE_SIGSETJMP) AC_MSG_RESULT(yes)],
915 PGAC_ARG_BOOL(enable, syslog, no, [ --enable-syslog enable logging to syslog],
916 [AC_CHECK_FUNC(syslog,
917 [AC_DEFINE([ENABLE_SYSLOG], 1,
918 [Define to 1 if to enable the syslogging code])],
919 [AC_MSG_ERROR([no syslog interface found])])])
922 AC_CACHE_CHECK([for optreset], pgac_cv_var_int_optreset,
923 [AC_TRY_LINK([#include <unistd.h>],
924 [extern int optreset; optreset = 1;],
925 [pgac_cv_var_int_optreset=yes],
926 [pgac_cv_var_int_optreset=no])])
927 if test x"$pgac_cv_var_int_optreset" = x"yes"; then
928 AC_DEFINE(HAVE_INT_OPTRESET, 1)
932 # This test makes sure that run tests work at all. Sometimes a shared
933 # library is found by the linker, but the runtime linker can't find it.
934 # This check should come after all modifications of compiler or linker
935 # variables, and before any other run tests.
936 AC_MSG_CHECKING([test program])
937 AC_TRY_RUN([int main() { return 0; }],
939 [AC_MSG_RESULT(failed)
941 *** Could not execute a simple test program. This may be a problem
942 *** related to locating shared libraries. Check the file 'config.log'
943 *** for the exact reason.]])],
944 [AC_MSG_RESULT([cross-compiling])])
947 dnl Check to see if we have a working 64-bit integer type.
948 dnl This breaks down into two steps:
949 dnl (1) figure out if the compiler has a 64-bit int type with working
950 dnl arithmetic, and if so
951 dnl (2) see whether snprintf() can format the type correctly. (Currently,
952 dnl snprintf is the only library routine we really need for int8 support.)
953 dnl It's entirely possible to have a compiler that handles a 64-bit type
954 dnl when the C library doesn't; this is fairly likely when using gcc on
955 dnl an older platform, for example.
956 dnl If there is no native snprintf() or it does not handle the 64-bit type,
957 dnl we force our own version of snprintf() to be used instead.
958 dnl Note this test must be run after our initial check for snprintf/vsnprintf.
960 PGAC_TYPE_64BIT_INT([long int])
962 if test x"$HAVE_LONG_INT_64" = x"no" ; then
963 PGAC_TYPE_64BIT_INT([long long int])
967 dnl If we need to use "long long int", figure out whether nnnLL notation works.
969 if [[ x"$HAVE_LONG_LONG_INT_64" = xyes ]] ; then
971 #define INT64CONST(x) x##LL
972 long long int foo = INT64CONST(0x1234567890123456);
975 [AC_DEFINE(HAVE_LL_CONSTANTS)],
980 dnl If we found "long int" is 64 bits, assume snprintf handles it.
981 dnl If we found we need to use "long long int", better check.
982 dnl We cope with snprintfs that use either %lld or %qd as the format.
983 dnl If neither works, fall back to our own snprintf emulation (which we
986 if [[ x"$HAVE_LONG_LONG_INT_64" = xyes ]] ; then
987 if [[ x$SNPRINTF = x ]] ; then
988 AC_MSG_CHECKING(whether snprintf handles 'long long int' as %lld)
989 AC_TRY_RUN([#include <stdio.h>
990 typedef long long int int64;
991 #define INT64_FORMAT "%lld"
996 int does_int64_snprintf_work()
1001 if (sizeof(int64) != 8)
1002 return 0; /* doesn't look like the right size */
1005 snprintf(buf, 100, INT64_FORMAT, c);
1006 if (strcmp(buf, "800000140000005") != 0)
1007 return 0; /* either multiply or snprintf is busted */
1011 exit(! does_int64_snprintf_work());
1013 [ AC_MSG_RESULT(yes)
1014 INT64_FORMAT='"%lld"'
1017 AC_MSG_CHECKING(whether snprintf handles 'long long int' as %qd)
1018 AC_TRY_RUN([#include <stdio.h>
1019 typedef long long int int64;
1020 #define INT64_FORMAT "%qd"
1025 int does_int64_snprintf_work()
1030 if (sizeof(int64) != 8)
1031 return 0; /* doesn't look like the right size */
1034 snprintf(buf, 100, INT64_FORMAT, c);
1035 if (strcmp(buf, "800000140000005") != 0)
1036 return 0; /* either multiply or snprintf is busted */
1040 exit(! does_int64_snprintf_work());
1042 [ AC_MSG_RESULT(yes)
1043 INT64_FORMAT='"%qd"'
1046 # Force usage of our own snprintf, since system snprintf is broken
1047 SNPRINTF='snprintf.o'
1048 INT64_FORMAT='"%lld"'
1050 [ AC_MSG_RESULT(assuming not on target machine)
1051 # Force usage of our own snprintf, since we cannot test foreign snprintf
1052 SNPRINTF='snprintf.o'
1053 INT64_FORMAT='"%lld"'
1055 [ AC_MSG_RESULT(assuming not on target machine)
1056 # Force usage of our own snprintf, since we cannot test foreign snprintf
1057 SNPRINTF='snprintf.o'
1058 INT64_FORMAT='"%lld"'
1061 # here if we previously decided we needed to use our own snprintf
1062 INT64_FORMAT='"%lld"'
1065 # Here if we are not using 'long long int' at all
1066 INT64_FORMAT='"%ld"'
1069 AC_DEFINE_UNQUOTED(INT64_FORMAT, $INT64_FORMAT)
1072 AC_CHECK_FUNCS([strtoll strtoq], [break])
1073 AC_CHECK_FUNCS([strtoull strtouq], [break])
1075 dnl psql needs atexit() or on_exit()
1076 AC_CHECK_FUNC(atexit,
1077 [AC_DEFINE(HAVE_ATEXIT)],
1078 [AC_CHECK_FUNCS(on_exit,
1079 [AC_DEFINE(HAVE_ON_EXIT)],
1080 [AC_MSG_ERROR([atexi() nor on_exit() found])])])
1082 dnl Need a #define for the size of Datum (unsigned long)
1084 AC_CHECK_SIZEOF(unsigned long, 4)
1085 AC_DEFINE_UNQUOTED(SIZEOF_DATUM, $ac_cv_sizeof_unsigned_long)
1087 dnl Determine memory alignment requirements for the basic C datatypes.
1089 PGAC_CHECK_ALIGNOF(short)
1090 PGAC_CHECK_ALIGNOF(int)
1091 PGAC_CHECK_ALIGNOF(long)
1092 if [[ x"$HAVE_LONG_LONG_INT_64" = xyes ]] ; then
1093 PGAC_CHECK_ALIGNOF(long long int)
1095 PGAC_CHECK_ALIGNOF(double)
1097 dnl Compute maximum alignment of any basic type.
1098 dnl We assume long's alignment is at least as strong as char, short, or int;
1099 dnl but we must check long long (if it exists) and double.
1101 if test $pgac_cv_alignof_double != 'sizeof(double)' ; then
1102 MAX_ALIGNOF=$pgac_cv_alignof_long
1103 if test $MAX_ALIGNOF -lt $pgac_cv_alignof_double ; then
1104 MAX_ALIGNOF=$pgac_cv_alignof_double
1106 if test x"$HAVE_LONG_LONG_INT_64" = xyes && test $MAX_ALIGNOF -lt $pgac_cv_alignof_long_long_int ; then
1107 MAX_ALIGNOF="$pgac_cv_alignof_long_long_int"
1110 dnl cross-compiling: assume that double's alignment is worst case
1111 MAX_ALIGNOF="$pgac_cv_alignof_double"
1113 AC_DEFINE_UNQUOTED(MAXIMUM_ALIGNOF, $MAX_ALIGNOF, [Define as the maximum alignment requirement of any type])
1115 PGAC_FUNC_POSIX_SIGNALS
1118 # Check for Tcl configuration script tclConfig.sh
1119 if test "$with_tcl" = yes; then
1120 PGAC_PATH_TCLCONFIGSH([$with_tclconfig])
1123 # Check for Tk configuration script tkConfig.sh
1124 if test "$with_tk" = yes; then
1125 PGAC_PATH_TKCONFIGSH([$with_tkconfig $with_tclconfig])
1130 # Check for DocBook and tools
1133 # If you don't have nsgmls you won't get very far, so save the cycles.
1134 if test -n "$NSGMLS"; then
1136 PGAC_CHECK_DOCBOOK([3.1])
1137 PGAC_PATH_DOCBOOK_STYLESHEETS
1138 AC_CHECK_PROGS(SGMLSPL, sgmlspl)
1141 # check whether 'test -ef' works
1142 if (test "$srcdir" -ef "$srcdir") >/dev/null 2>&1 ; then
1149 AC_SUBST(abs_top_srcdir)
1151 if test "$test_ef_works" = yes ; then
1152 # prepare build tree if outside source tree
1153 if test "$srcdir" -ef . ; then : ; else
1154 abs_top_srcdir=`cd $srcdir && pwd`
1155 echo $ac_n "preparing build tree... $ac_c" 1>&6
1156 /bin/sh "$srcdir/config/prep_buildtree" "$abs_top_srcdir" "." \
1157 || AC_MSG_ERROR(failed)
1167 src/backend/port/Makefile
1170 # Update timestamp for config.h (see Makefile.global)
1171 test x"$CONFIG_HEADERS" != x"" && echo >src/include/stamp-h