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 AC_CHECK_HEADER(zlib.h, [
679 AC_CHECK_LIB(z, inflate)
683 if test "$with_krb4" = yes ; then
684 AC_CHECK_LIB(des, [des_encrypt], [], [AC_MSG_ERROR([library 'des' is required for Kerberos 4])])
685 AC_CHECK_LIB(krb, [krb_sendauth], [], [AC_MSG_ERROR([library 'krb' is required for Kerberos 4])])
688 if test "$with_krb5" = yes ; then
689 AC_CHECK_LIB(com_err, [com_err], [], [AC_MSG_ERROR([library 'com_err' is required for Kerberos 5])])
690 AC_CHECK_LIB(crypto, [krb5_encrypt], [],
691 [AC_CHECK_LIB(k5crypto, [krb5_encrypt], [], [AC_MSG_ERROR([library 'crypto' or 'k5crypto' is required for Kerberos 5])])])
692 AC_CHECK_LIB(krb5, [krb5_sendauth], [], [AC_MSG_ERROR([library 'krb5' is required for Kerberos 5])])
695 if test "$with_openssl" = yes ; then
697 AC_CHECK_LIB(crypto, [CRYPTO_new_ex_data], [], [AC_MSG_ERROR([library 'crypto' is required for OpenSSL])])
698 AC_CHECK_LIB(ssl, [SSL_library_init], [], [AC_MSG_ERROR([library 'ssl' is required for OpenSSL])])
705 dnl sys/socket.h and sys/types.h are required by AC_FUNC_ACCEPT_ARGTYPES
706 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])
708 dnl At least on IRIX, cpp test for netinet/tcp.h will fail unless netinet/in.h
709 dnl is included first. So can't just use AC_CHECK_HEADERS; do it this way:
710 AC_CHECK_HEADERS([netinet/in.h])
711 AC_MSG_CHECKING([for netinet/tcp.h])
713 #ifdef HAVE_NETINET_IN_H
714 #include <netinet/in.h>
716 #include <netinet/tcp.h>
717 ], [AC_DEFINE(HAVE_NETINET_TCP_H) AC_MSG_RESULT(yes)],
722 AC_CHECK_HEADERS([readline/readline.h readline.h], [break])
723 AC_CHECK_HEADERS([readline/history.h history.h], [break])
725 if test "$with_krb4" = yes ; then
726 AC_CHECK_HEADER(krb.h, [], [AC_MSG_ERROR([header file <krb.h> is required for Kerberos 4])])
729 if test "$with_krb5" = yes ; then
730 AC_CHECK_HEADER(krb5.h, [], [AC_MSG_ERROR([header file <krb5.h> is required for Kerberos 5])])
731 AC_CHECK_HEADER(com_err.h, [], [AC_MSG_ERROR([header file <com_err.h> is required for Kerberos 5])])
734 if test "$with_openssl" = yes ; then
735 AC_CHECK_HEADER([openssl/ssl.h], [], [AC_MSG_ERROR([header file <openssl/ssl.h> is required for OpenSSL])])
736 AC_CHECK_HEADER([openssl/err.h], [], [AC_MSG_ERROR([header file <openssl/err.h> is required for OpenSSL])])
741 ## Types, structures, compiler characteristics
750 PGAC_STRUCT_SOCKADDR_UN
753 ## Functions, global variables
755 PGAC_VAR_INT_TIMEZONE
756 AC_FUNC_ACCEPT_ARGTYPES
757 PGAC_FUNC_GETTIMEOFDAY_1ARG
759 AC_CHECK_FUNCS([fcvt getopt_long memmove pstat setproctitle setsid sigprocmask sysconf waitpid dlopen fdatasync])
761 dnl Check whether <unistd.h> declares fdatasync().
762 AC_EGREP_HEADER(fdatasync, unistd.h, AC_DEFINE(HAVE_FDATASYNC_DECL))
764 AC_CACHE_CHECK([for PS_STRINGS], [pgac_cv_var_PS_STRINGS],
766 [#include <machine/vmparam.h>
767 #include <sys/exec.h>
769 [PS_STRINGS->ps_nargvstr = 1;
770 PS_STRINGS->ps_argvstr = "foo";],
771 [pgac_cv_var_PS_STRINGS=yes],
772 [pgac_cv_var_PS_STRINGS=no])])
773 if test "$pgac_cv_var_PS_STRINGS" = yes ; then
774 AC_DEFINE([HAVE_PS_STRINGS], [], [Define if the PS_STRINGS thing exists.])
777 dnl We use our snprintf.c emulation if either snprintf() or vsnprintf()
778 dnl is missing. Yes, there are machines that have only one.
779 dnl We may also decide to use snprintf.c if snprintf() is present but does
780 dnl not have working "long long int" support -- see below.
782 AC_CHECK_FUNC(snprintf,
783 AC_DEFINE(HAVE_SNPRINTF),
784 SNPRINTF='snprintf.o')
785 AC_CHECK_FUNC(vsnprintf,
786 AC_DEFINE(HAVE_VSNPRINTF),
787 SNPRINTF='snprintf.o')
789 dnl Check whether <stdio.h> declares snprintf() and vsnprintf(); if not,
790 dnl include/c.h will provide declarations. Note this is a separate test
791 dnl from whether the functions exist in the C library --- there are systems
792 dnl that have the functions but don't bother to declare them :-(
793 dnl Note: simple-minded pattern here will do wrong thing if stdio.h
794 dnl declares vsnprintf() but not snprintf(). Hopefully there are no
795 dnl systems that are *that* brain-damaged...
796 AC_EGREP_HEADER(snprintf, stdio.h, AC_DEFINE(HAVE_SNPRINTF_DECL))
797 AC_EGREP_HEADER(vsnprintf, stdio.h, AC_DEFINE(HAVE_VSNPRINTF_DECL))
799 # do this one the hard way in case isinf() is a macro
800 AC_CACHE_CHECK([for isinf], ac_cv_func_isinf,
804 [double x = 0.0; int res = isinf(x);],
805 [ac_cv_func_isinf=yes],
806 [ac_cv_func_isinf=no])])
808 if test $ac_cv_func_isinf = yes ; then
809 AC_DEFINE(HAVE_ISINF)
813 # Look for a way to implement a substitute for isinf()
814 AC_CHECK_FUNCS([fpclass fp_class fp_class_d class], [break])
818 AC_CHECK_FUNC(getrusage,
819 AC_DEFINE(HAVE_GETRUSAGE),
820 GETRUSAGE='getrusage.o')
822 AC_CHECK_FUNC(srandom,
823 AC_DEFINE(HAVE_SRANDOM),
826 AC_CHECK_FUNC(gethostname,
827 AC_DEFINE(HAVE_GETHOSTNAME),
828 GETHOSTNAME='gethostname.o')
829 AC_SUBST(GETHOSTNAME)
830 AC_CHECK_FUNC(random,
831 AC_DEFINE(HAVE_RANDOM),
832 MISSING_RANDOM='random.o')
833 AC_SUBST(MISSING_RANDOM)
834 AC_CHECK_FUNC(inet_aton,
835 AC_DEFINE(HAVE_INET_ATON),
836 INET_ATON='inet_aton.o')
838 AC_CHECK_FUNC(strerror,
839 AC_DEFINE(HAVE_STRERROR),
840 STRERROR='strerror.o')
842 AC_CHECK_FUNC(strdup,
843 AC_DEFINE(HAVE_STRDUP),
844 STRDUP='../../utils/strdup.o')
846 AC_CHECK_FUNC(strtol,
847 AC_DEFINE(HAVE_STRTOL),
850 AC_CHECK_FUNC(strtoul,
851 AC_DEFINE(HAVE_STRTOUL),
854 AC_CHECK_FUNC(strcasecmp,
855 AC_DEFINE(HAVE_STRCASECMP),
856 STRCASECMP='strcasecmp.o')
859 AC_DEFINE(HAVE_CBRT),
860 AC_CHECK_LIB(m, cbrt, AC_DEFINE(HAVE_CBRT)))
862 # On HPUX 9, rint() is not in regular libm.a but in /lib/pa1.1/libm.a;
863 # this hackery with HPUXMATHLIB allows us to cope.
867 if [[ -r /lib/pa1.1/libm.a ]] ; then
868 HPUXMATHLIB="-L /lib/pa1.1 -lm"
871 AC_SUBST(HPUXMATHLIB)
874 AC_DEFINE(HAVE_RINT),
875 AC_CHECK_LIB(m, rint, AC_DEFINE(HAVE_RINT), , $HPUXMATHLIB))
878 # Readline versions < 2.1 don't have rl_completion_append_character
879 AC_MSG_CHECKING([for rl_completion_append_character])
880 AC_TRY_LINK([#include <stdio.h>
881 #ifdef HAVE_READLINE_READLINE_H
882 # include <readline/readline.h>
883 #elif defined(HAVE_READLINE_H)
884 # include <readline.h>
887 [rl_completion_append_character = 'x';],
889 AC_DEFINE(HAVE_RL_COMPLETION_APPEND_CHARACTER)],
892 AC_CHECK_FUNCS([rl_completion_matches])
895 dnl Cannot use AC_CHECK_FUNC because finite may be a macro
896 AC_MSG_CHECKING(for finite)
897 AC_TRY_LINK([#include <math.h>],
898 [int dummy=finite(1.0);],
899 [AC_DEFINE(HAVE_FINITE) AC_MSG_RESULT(yes)],
902 dnl Cannot use AC_CHECK_FUNC because sigsetjmp may be a macro
903 dnl (especially on GNU libc)
904 dnl See also comments in config.h.
905 AC_MSG_CHECKING(for sigsetjmp)
906 AC_TRY_LINK([#include <setjmp.h>],
907 [sigjmp_buf x; sigsetjmp(x, 1);],
908 [AC_DEFINE(HAVE_SIGSETJMP) AC_MSG_RESULT(yes)],
912 PGAC_ARG_BOOL(enable, syslog, no, [ --enable-syslog enable logging to syslog],
913 [AC_CHECK_FUNC(syslog,
914 [AC_DEFINE([ENABLE_SYSLOG], 1,
915 [Define to 1 if to enable the syslogging code])],
916 [AC_MSG_ERROR([no syslog interface found])])])
919 AC_CACHE_CHECK([for optreset], pgac_cv_var_int_optreset,
920 [AC_TRY_LINK([#include <unistd.h>],
921 [extern int optreset; optreset = 1;],
922 [pgac_cv_var_int_optreset=yes],
923 [pgac_cv_var_int_optreset=no])])
924 if test x"$pgac_cv_var_int_optreset" = x"yes"; then
925 AC_DEFINE(HAVE_INT_OPTRESET, 1)
929 # This test makes sure that run tests work at all. Sometimes a shared
930 # library is found by the linker, but the runtime linker can't find it.
931 # This check should come after all modifications of compiler or linker
932 # variables, and before any other run tests.
933 AC_MSG_CHECKING([test program])
934 AC_TRY_RUN([int main() { return 0; }],
936 [AC_MSG_RESULT(failed)
938 *** Could not execute a simple test program. This may be a problem
939 *** related to locating shared libraries. Check the file 'config.log'
940 *** for the exact reason.]])],
941 [AC_MSG_RESULT([cross-compiling])])
944 dnl Check to see if we have a working 64-bit integer type.
945 dnl This breaks down into two steps:
946 dnl (1) figure out if the compiler has a 64-bit int type with working
947 dnl arithmetic, and if so
948 dnl (2) see whether snprintf() can format the type correctly. (Currently,
949 dnl snprintf is the only library routine we really need for int8 support.)
950 dnl It's entirely possible to have a compiler that handles a 64-bit type
951 dnl when the C library doesn't; this is fairly likely when using gcc on
952 dnl an older platform, for example.
953 dnl If there is no native snprintf() or it does not handle the 64-bit type,
954 dnl we force our own version of snprintf() to be used instead.
955 dnl Note this test must be run after our initial check for snprintf/vsnprintf.
957 PGAC_TYPE_64BIT_INT([long int])
959 if test x"$HAVE_LONG_INT_64" = x"no" ; then
960 PGAC_TYPE_64BIT_INT([long long int])
964 dnl If we need to use "long long int", figure out whether nnnLL notation works.
966 if [[ x"$HAVE_LONG_LONG_INT_64" = xyes ]] ; then
968 #define INT64CONST(x) x##LL
969 long long int foo = INT64CONST(0x1234567890123456);
972 [AC_DEFINE(HAVE_LL_CONSTANTS)],
977 dnl If we found "long int" is 64 bits, assume snprintf handles it.
978 dnl If we found we need to use "long long int", better check.
979 dnl We cope with snprintfs that use either %lld or %qd as the format.
980 dnl If neither works, fall back to our own snprintf emulation (which we
983 if [[ x"$HAVE_LONG_LONG_INT_64" = xyes ]] ; then
984 if [[ x$SNPRINTF = x ]] ; then
985 AC_MSG_CHECKING(whether snprintf handles 'long long int' as %lld)
986 AC_TRY_RUN([#include <stdio.h>
987 typedef long long int int64;
988 #define INT64_FORMAT "%lld"
993 int does_int64_snprintf_work()
998 if (sizeof(int64) != 8)
999 return 0; /* doesn't look like the right size */
1002 snprintf(buf, 100, INT64_FORMAT, c);
1003 if (strcmp(buf, "800000140000005") != 0)
1004 return 0; /* either multiply or snprintf is busted */
1008 exit(! does_int64_snprintf_work());
1010 [ AC_MSG_RESULT(yes)
1011 INT64_FORMAT='"%lld"'
1014 AC_MSG_CHECKING(whether snprintf handles 'long long int' as %qd)
1015 AC_TRY_RUN([#include <stdio.h>
1016 typedef long long int int64;
1017 #define INT64_FORMAT "%qd"
1022 int does_int64_snprintf_work()
1027 if (sizeof(int64) != 8)
1028 return 0; /* doesn't look like the right size */
1031 snprintf(buf, 100, INT64_FORMAT, c);
1032 if (strcmp(buf, "800000140000005") != 0)
1033 return 0; /* either multiply or snprintf is busted */
1037 exit(! does_int64_snprintf_work());
1039 [ AC_MSG_RESULT(yes)
1040 INT64_FORMAT='"%qd"'
1043 # Force usage of our own snprintf, since system snprintf is broken
1044 SNPRINTF='snprintf.o'
1045 INT64_FORMAT='"%lld"'
1047 [ AC_MSG_RESULT(assuming not on target machine)
1048 # Force usage of our own snprintf, since we cannot test foreign snprintf
1049 SNPRINTF='snprintf.o'
1050 INT64_FORMAT='"%lld"'
1052 [ AC_MSG_RESULT(assuming not on target machine)
1053 # Force usage of our own snprintf, since we cannot test foreign snprintf
1054 SNPRINTF='snprintf.o'
1055 INT64_FORMAT='"%lld"'
1058 # here if we previously decided we needed to use our own snprintf
1059 INT64_FORMAT='"%lld"'
1062 # Here if we are not using 'long long int' at all
1063 INT64_FORMAT='"%ld"'
1066 AC_DEFINE_UNQUOTED(INT64_FORMAT, $INT64_FORMAT)
1069 AC_CHECK_FUNCS([strtoll strtoq], [break])
1070 AC_CHECK_FUNCS([strtoull strtouq], [break])
1072 dnl psql needs atexit() or on_exit()
1073 AC_CHECK_FUNC(atexit,
1074 [AC_DEFINE(HAVE_ATEXIT)],
1075 [AC_CHECK_FUNCS(on_exit,
1076 [AC_DEFINE(HAVE_ON_EXIT)],
1077 [AC_MSG_ERROR([atexi() nor on_exit() found])])])
1079 dnl Need a #define for the size of Datum (unsigned long)
1081 AC_CHECK_SIZEOF(unsigned long, 4)
1082 AC_DEFINE_UNQUOTED(SIZEOF_DATUM, $ac_cv_sizeof_unsigned_long)
1084 dnl Determine memory alignment requirements for the basic C datatypes.
1086 PGAC_CHECK_ALIGNOF(short)
1087 PGAC_CHECK_ALIGNOF(int)
1088 PGAC_CHECK_ALIGNOF(long)
1089 if [[ x"$HAVE_LONG_LONG_INT_64" = xyes ]] ; then
1090 PGAC_CHECK_ALIGNOF(long long int)
1092 PGAC_CHECK_ALIGNOF(double)
1094 dnl Compute maximum alignment of any basic type.
1095 dnl We assume long's alignment is at least as strong as char, short, or int;
1096 dnl but we must check long long (if it exists) and double.
1098 if test $pgac_cv_alignof_double != 'sizeof(double)' ; then
1099 MAX_ALIGNOF=$pgac_cv_alignof_long
1100 if test $MAX_ALIGNOF -lt $pgac_cv_alignof_double ; then
1101 MAX_ALIGNOF=$pgac_cv_alignof_double
1103 if test x"$HAVE_LONG_LONG_INT_64" = xyes && test $MAX_ALIGNOF -lt $pgac_cv_alignof_long_long_int ; then
1104 MAX_ALIGNOF="$pgac_cv_alignof_long_long_int"
1107 dnl cross-compiling: assume that double's alignment is worst case
1108 MAX_ALIGNOF="$pgac_cv_alignof_double"
1110 AC_DEFINE_UNQUOTED(MAXIMUM_ALIGNOF, $MAX_ALIGNOF, [Define as the maximum alignment requirement of any type])
1112 PGAC_FUNC_POSIX_SIGNALS
1115 # Check for Tcl configuration script tclConfig.sh
1116 if test "$with_tcl" = yes; then
1117 PGAC_PATH_TCLCONFIGSH([$with_tclconfig])
1120 # Check for Tk configuration script tkConfig.sh
1121 if test "$with_tk" = yes; then
1122 PGAC_PATH_TKCONFIGSH([$with_tkconfig $with_tclconfig])
1127 # Check for DocBook and tools
1130 # If you don't have nsgmls you won't get very far, so save the cycles.
1131 if test -n "$NSGMLS"; then
1133 PGAC_CHECK_DOCBOOK([3.1])
1134 PGAC_PATH_DOCBOOK_STYLESHEETS
1135 AC_CHECK_PROGS(SGMLSPL, sgmlspl)
1138 # check whether 'test -ef' works
1139 if (test "$srcdir" -ef "$srcdir") >/dev/null 2>&1 ; then
1146 AC_SUBST(abs_top_srcdir)
1148 if test "$test_ef_works" = yes ; then
1149 # prepare build tree if outside source tree
1150 if test "$srcdir" -ef . ; then : ; else
1151 abs_top_srcdir=`cd $srcdir && pwd`
1152 echo $ac_n "preparing build tree... $ac_c" 1>&6
1153 /bin/sh "$srcdir/config/prep_buildtree" "$abs_top_srcdir" "." \
1154 || AC_MSG_ERROR(failed)
1164 src/backend/port/Makefile
1167 # Update timestamp for config.h (see Makefile.global)
1168 test x"$CONFIG_HEADERS" != x"" && echo >src/include/stamp-h