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")
36 abs_top_srcdir=`cd $srcdir && pwd`
37 AC_SUBST(abs_top_srcdir)
38 abs_top_builddir=`pwd`
39 AC_SUBST(abs_top_builddir)
47 AC_MSG_CHECKING([which template to use])
49 PGAC_ARG_REQ(with, template, [],
52 list) echo; ls "$srcdir/src/template"; exit;;
53 *) if test -f "$srcdir/src/template/$with_template" ; then
56 AC_MSG_ERROR(['$withval' is not a valid template name. Use 'list' for a list.])
61 # --with-template not given
65 beos*) template=beos ;;
66 bsdi*) template=bsdi ;;
67 cygwin*) template=win ;;
68 darwin*) template=darwin ;;
69 dgux*) template=dgux ;;
70 freebsd*) template=freebsd ;;
71 hpux*) template=hpux ;;
72 irix*) template=irix5 ;;
73 linux*) template=linux ;;
74 netbsd*) template=netbsd ;;
75 nextstep*) template=nextstep ;;
76 openbsd*) template=openbsd ;;
78 qnx*) template=qnx4 ;;
80 solaris*) template=solaris ;;
81 sunos*) template=sunos4 ;;
84 univel) template=univel ;;
86 sysv4*) template=svr4 ;;
87 sysv5uw*) template=unixware ;;
88 ultrix*) template=ultrix4 ;;
91 if test x"$template" = x"" ; then
93 *******************************************************************
94 PostgreSQL has apparently not been ported to your platform yet.
95 To try a manual configuration, look into the src/template directory
96 for a similar platform and use the '--with-template=' option.
98 Please also contact <pgsql-ports@postgresql.org> to see about
99 rectifying this. Include the above 'checking host system type...'
101 *******************************************************************
107 AC_MSG_RESULT([$template])
112 AC_LINK_FILES([src/backend/port/dynloader/${template}.c], [src/backend/port/dynloader.c])
113 AC_LINK_FILES([src/backend/port/dynloader/${template}.h], [src/include/dynloader.h])
114 AC_LINK_FILES([src/include/port/${template}.h], [src/include/os.h])
115 AC_LINK_FILES([src/makefiles/Makefile.${template}], [src/Makefile.port])
117 # Pick right test-and-set (TAS) code. Most platforms have inline
118 # assembler code in src/include/storage/s_lock.h, so we just use
121 *-*-hpux*) need_tas=yes; tas_file=hpux.s ;;
122 sparc-*-solaris*) need_tas=yes; tas_file=solaris_sparc.s ;;
123 i?86-*-solaris) need_tas=yes; tas_file=solaris_i386.s ;;
124 *) need_tas=no; tas_file=dummy.s ;;
126 AC_LINK_FILES([src/backend/port/tas/${tas_file}], [src/backend/port/tas.s])
128 if test "$need_tas" = yes ; then
136 ## Command line options
141 # Add non-standard directories to the include path
143 PGAC_ARG_REQ(with, includes, [ --with-includes=DIRS look for additional header files in DIRS])
147 # Add non-standard directories to the library search path
149 PGAC_ARG_REQ(with, libraries, [ --with-libraries=DIRS look for additional libraries in DIRS],
150 [LIBRARY_DIRS=$withval])
152 PGAC_ARG_REQ(with, libs, [ --with-libs=DIRS alternative spelling of --with-libraries],
153 [LIBRARY_DIRS=$withval])
157 # Locale (--enable-locale)
159 AC_MSG_CHECKING([whether to build with locale support])
160 PGAC_ARG_BOOL(enable, locale, no, [ --enable-locale enable locale support],
161 [AC_DEFINE([USE_LOCALE], 1,
162 [Set to 1 if you want LOCALE support (--enable-locale)])])
163 AC_MSG_RESULT([$enable_locale])
167 # Character set recode (--enable-recode)
169 AC_MSG_CHECKING([whether to build with recode support])
170 PGAC_ARG_BOOL(enable, recode, no, [ --enable-recode enable character set recode support],
171 [AC_DEFINE([CYR_RECODE], 1,
172 [Set to 1 if you want cyrillic recode support (--enable-recode)])])
173 AC_MSG_RESULT([$enable_recode])
180 AC_MSG_CHECKING([whether to build with multibyte character support])
182 PGAC_ARG_OPTARG(enable, multibyte, [ --enable-multibyte enable multibyte character support],
183 [MULTIBYTE=SQL_ASCII],
186 SQL_ASCII|EUC_JP|EUC_CN|EUC_KR|EUC_TW|UNICODE|MULE_INTERNAL|LATIN1|LATIN2|LATIN3|LATIN4|LATIN5|KOI8|WIN|ALT)
187 MULTIBYTE=$enableval;;
190 [argument to --enable-multibyte must be one of:
191 SQL_ASCII, EUC_JP, EUC_CN, EUC_KR, EUC_TW,
192 UNICODE, MULE_INTERNAL,
193 LATIN1, LATIN2, LATIN3, LATIN4, LATIN5,
195 Or do not specify an argument to the option to use the default.]);;
199 AC_DEFINE(MULTIBYTE, 1, [Set to 1 if you want to use multibyte characters (--enable-multibyte)])
200 AC_MSG_RESULT([yes, default $MULTIBYTE])
207 # Unicode conversion (--enable-unicode-conversion)
209 AC_MSG_CHECKING([whether to build with Unicode conversion support])
210 PGAC_ARG_BOOL(enable, unicode-conversion, no,
211 [ --enable-unicode-conversion enable unicode conversion support],
212 [if test -z "$MULTIBYTE"; then
213 AC_MSG_ERROR([--enable-unicode-conversion only works with --enable-multibyte])
215 AC_DEFINE([UNICODE_CONVERSION], 1,
216 [Set to 1 if you want Unicode conversion support (--enable-unicode-conversion)])])
217 AC_MSG_RESULT([$enable_unicode_conversion])
220 # Default port number (--with-pgport), default 5432
222 AC_MSG_CHECKING([for default port number])
223 PGAC_ARG_REQ(with, pgport, [ --with-pgport=PORTNUM change default port number [5432]],
224 [default_port=$withval],
226 AC_MSG_RESULT([$default_port])
227 # Need both of these because some places want an integer and some a string
228 AC_DEFINE_UNQUOTED(DEF_PGPORT, ${default_port})
229 AC_DEFINE_UNQUOTED(DEF_PGPORT_STR, "${default_port}")
230 AC_SUBST(default_port)
233 # Maximum number of allowed connections (--with-maxbackends), default 32
235 AC_MSG_CHECKING([for default soft limit on number of connections])
236 PGAC_ARG_REQ(with, maxbackends, [ --with-maxbackends=N set default maximum number of connections [32]],
238 [with_maxbackends=32])
239 AC_MSG_RESULT([$with_maxbackends])
240 AC_DEFINE_UNQUOTED([DEF_MAXBACKENDS], [$with_maxbackends],
241 [The default soft limit on the number of concurrent connections, i.e., the default for the postmaster -N switch (--with-maxbackends)])
245 # Option to disable shared libraries
247 PGAC_ARG_BOOL(enable, shared, yes,
248 [ --disable-shared do not build shared libraries])
249 AC_SUBST(enable_shared)
252 # '-rpath'-like feature can be disabled
254 PGAC_ARG_BOOL(enable, rpath, yes,
255 [ --disable-rpath do not embed shared library search path in executables])
256 AC_SUBST(enable_rpath)
260 # --enable-debug adds -g to compiler flags
262 PGAC_ARG_BOOL(enable, debug, no,
263 [ --enable-debug build with debugging symbols (-g)])
270 # For historical reasons you can also use --with-CC to specify the C compiler
271 # to use, although the standard way to do this is to set the CC environment
273 PGAC_ARG_REQ(with, CC, [], [CC=$with_CC])
275 # On AIX, default compiler to xlc.
276 if test "$template" = aix && test -z "$CC" ; then CC=xlc; fi
278 # Save CFLAGS from the environment
279 has_environ_CFLAGS="${CFLAGS+yes}"
284 . "$srcdir/src/template/$template" || exit
286 if test "$has_environ_CFLAGS" = yes; then
289 if test "$enable_debug" = yes && test "$ac_cv_prog_cc_g" = yes; then
292 echo "using CFLAGS=$CFLAGS"
293 # Check if the compiler still works with the template settings
297 AC_PROG_GCC_TRADITIONAL
300 # Create compiler version string
301 if test x"$GCC" = x"yes" ; then
302 cc_string="GCC `${CC} --version`"
306 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])
310 # Automatic dependency tracking
312 PGAC_ARG_BOOL(enable, depend, no, [ --enable-depend turn on automatic dependency tracking],
318 # Enable assert checks
320 PGAC_ARG_BOOL(enable, cassert, no, [ --enable-cassert enable assertion checks (for debugging)],
321 [AC_DEFINE([USE_ASSERT_CHECKING], 1,
322 [Define to 1 to build with assertion checks])])
326 # Include directories
330 # SRCH_INC comes from the template file
331 for dir in $with_includes $SRCH_INC; do
332 if test -d "$dir"; then
333 INCLUDES="$INCLUDES -I$dir"
335 AC_MSG_WARN([*** Include directory $dir does not exist.])
343 # Library directories
347 # LIBRARY_DIRS comes from command line, SRCH_LIB from template file.
348 for dir in $LIBRARY_DIRS $SRCH_LIB; do
349 if test -d "$dir"; then
350 LIBDIRS="$LIBDIRS -L$dir"
352 AC_MSG_WARN([*** Library directory $dir does not exist.])
361 AC_MSG_CHECKING([whether to build with Tcl])
362 PGAC_ARG_BOOL(with, tcl, no, [ --with-tcl build Tcl and Tk interfaces])
363 AC_MSG_RESULT([$with_tcl])
366 # If Tcl is enabled (above) then Tk is also, unless the user disables it using --without-tk
367 AC_MSG_CHECKING([whether to build with Tk])
368 if test "$with_tcl" = yes; then
369 PGAC_ARG_BOOL(with, tk, yes, [ --without-tk do not build Tk interfaces if Tcl is enabled])
373 AC_MSG_RESULT([$with_tk])
377 # We see if the path to the TCL/TK configuration scripts is specified.
378 # This will override the use of tclsh to find the paths to search.
380 PGAC_ARG_REQ(with, tclconfig, [ --with-tclconfig=DIR tclConfig.sh and tkConfig.sh are in DIR])
382 # We see if the path to the TK configuration scripts is specified.
383 # This will override the use of tclsh to find the paths to search.
385 PGAC_ARG_REQ(with, tkconfig, [ --with-tkconfig=DIR tkConfig.sh is in DIR])
389 # Optionally build Perl modules (Pg.pm and PL/Perl)
391 AC_MSG_CHECKING([whether to build Perl modules])
392 PGAC_ARG_BOOL(with, perl, no, [ --with-perl build Perl interface and PL/Perl])
393 AC_MSG_RESULT([$with_perl])
398 # Optionally build Python interface module
400 AC_MSG_CHECKING([whether to build Python modules])
401 PGAC_ARG_BOOL(with, python, no, [ --with-python build Python interface module],
404 PGAC_PATH_PYTHONDIR],
406 AC_SUBST(with_python)
409 dnl A note on the Kerberos and OpenSSL options:
411 dnl The user can give an argument to the option in order the specify
412 dnl the base path of the respective installation (what he specified
413 dnl perhaps as --prefix). If no argument is given ($withval is "yes")
414 dnl then we take the path where the package installs by default. This
415 dnl way the user doesn't have to use redundant --with-includes and
416 dnl --with-libraries options, but he can still use them if the layout
422 PGAC_ARG_OPTARG(with, krb4, [ --with-krb4[=DIR] build with Kerberos 4 support [/usr/athena]],
423 [krb4_prefix=/usr/athena],
424 [krb4_prefix=$withval],
426 AC_MSG_RESULT([building with Kerberos 4 support])
427 AC_DEFINE(KRB4, 1, [Define if you are building with Kerberos 4 support.])
429 if test -d "$krb4_prefix/include"; then
430 INCLUDES="$INCLUDES -I$krb4_prefix/include"
432 if test -d "$krb4_prefix/lib"; then
433 LIBDIRS="$LIBDIRS -L$krb4_prefix/lib"
436 krb_srvtab="/etc/srvtab"
445 PGAC_ARG_OPTARG(with, krb5, [ --with-krb5[=DIR] build with Kerberos 5 support [/usr/athena]],
446 [krb5_prefix=/usr/athena],
447 [krb5_prefix=$withval],
449 AC_MSG_RESULT([building with Kerberos 5 support])
450 AC_DEFINE(KRB5, 1, [Define if you are building with Kerberos 5 support.])
452 if test -d "$krb5_prefix/include"; then
453 INCLUDES="$INCLUDES -I$krb5_prefix/include"
455 if test -d "$krb5_prefix/lib"; then
456 LIBDIRS="$LIBDIRS -L$krb5_prefix/lib"
459 krb_srvtab="FILE:\$(sysconfdir)/krb5.keytab"
465 # Using both Kerberos 4 and Kerberos 5 at the same time isn't going to work.
466 if test "$with_krb4" = yes && test "$with_krb5" = yes ; then
467 AC_MSG_ERROR([Kerberos 4 and Kerberos 5 support cannot be combined])
474 # Kerberos configuration parameters
476 PGAC_ARG_REQ(with, krb-srvnam,
477 [ --with-krb-srvnam=NAME name of the service principal in Kerberos [postgres]],
479 [with_krb_srvnam="postgres"])
480 AC_DEFINE_UNQUOTED([PG_KRB_SRVNAM], ["$with_krb_srvnam"],
481 [The name of the PostgreSQL service principal in Kerberos])
488 PGAC_ARG_OPTARG(with, openssl,
489 [ --with-openssl[=DIR] build with OpenSSL support [/usr/local/ssl]],
490 [openssl_prefix=/usr/local/ssl],
491 [openssl_prefix=$withval],
493 AC_MSG_RESULT([building with OpenSSL support])
494 AC_DEFINE([USE_SSL], 1, [Define to build with (Open)SSL support])
496 if test -d "${openssl_prefix}/include" ; then
497 INCLUDES="$INCLUDES -I${openssl_prefix}/include"
499 if test -d "${openssl_prefix}/lib" ; then
500 LIBDIRS="$LIBDIRS -L${openssl_prefix}/lib"
504 AC_SUBST(with_openssl)
509 # Optionally enable the building of the ODBC driver
513 if test "${with_odbc+set}" = set && test "${enable_odbc+set}" != set; then
514 enable_odbc=$with_odbc
517 AC_MSG_CHECKING([whether to build the ODBC driver])
518 PGAC_ARG_BOOL(enable, odbc, no, [ --enable-odbc build the ODBC driver package])
519 AC_MSG_RESULT([$enable_odbc])
520 AC_SUBST([enable_odbc])
523 # Allow for overriding the default location of the odbcinst.ini
524 # file which is normally ${sysconfdir} (i.e., ${prefix}/etc).
525 PGAC_ARG_REQ(with, odbcinst,
526 [ --with-odbcinst=DIR default directory for odbcinst.ini [sysconfdir]],
527 [odbcinst_ini_dir=$withval],
528 [odbcinst_ini_dir="\${sysconfdir}"])
529 AC_SUBST([odbcinst_ini_dir])
533 # Assume system is ELF if it predefines __ELF__ as 1,
534 # otherwise believe host_os based default.
536 freebsd1*|freebsd2*) elf=yes;;
545 [if test "X$elf" = "Xyes" ; then
555 # Optionally build C++ code (i.e., libpq++)
557 AC_MSG_CHECKING([whether to build C++ modules])
558 PGAC_ARG_OPTARG(with, CXX, [ --with-CXX build C++ modules (libpq++)],
564 # If the user has specified CXXFLAGS in the environment, leave it
565 # alone, else use a default.
567 has_environ_CXXFLAGS="${CXXFLAGS+yes}"
569 if test "$has_environ_CXXFLAGS" != yes; then
570 if test "$GXX" = yes; then
574 osf) CXXFLAGS='-O4 -Olimit 2000' ;;
575 unixware) CXXFLAGS='-O' ;;
580 if test "$enable_debug" = yes && test "$ac_cv_prog_cxx_g" = yes; then
581 CXXFLAGS="$CXXFLAGS -g"
583 echo "using CXXFLAGS=$CXXFLAGS"
588 PGAC_CXX_NAMESPACE_STD
593 CPPFLAGS="$CPPFLAGS $INCLUDES"
594 LDFLAGS="$LDFLAGS $LIBDIRS"
596 echo "using CPPFLAGS=$CPPFLAGS"
597 echo "using LDFLAGS=$LDFLAGS"
600 # Figure out how to invoke "install" and what install options to use.
603 # When Autoconf chooses install-sh as install program it tries to generate
604 # a relative path to it in each makefile where it subsitutes it. This clashes
605 # with our Makefile.global concept. This workaround helps.
607 *install-sh*) INSTALL='\${SHELL} \${top_srcdir}/config/install-sh -c';;
610 # Fix Autoconf's brain-dead defaults for script installs.
611 INSTALL_SCRIPT="\${INSTALL} -m 755"
613 # HPUX wants shared libs to be mode 555. Add your platform's special
614 # needs here if necessary.
616 hpux*) INSTL_SHLIB_OPTS="-m 555" ;;
617 *) INSTL_SHLIB_OPTS="-m 755" ;;
620 INSTALL_SHLIB="\${INSTALL} $INSTL_SHLIB_OPTS"
621 AC_SUBST(INSTALL_SHLIB)
629 AC_SUBST(with_gnu_ld)
630 case $host_os in sysv5uw*)
631 AC_CACHE_CHECK([whether ld -R works], [pgac_cv_prog_ld_R],
633 pgac_save_LDFLAGS=$LDFLAGS; LDFLAGS="$LDFLAGS -Wl,-R/usr/lib"
634 AC_TRY_LINK([], [], [pgac_cv_prog_ld_R=yes], [pgac_cv_prog_ld_R=no])
635 LDFLAGS=$pgac_save_LDFLAGS
637 ld_R_works=$pgac_cv_prog_ld_R
641 AC_CHECK_PROGS(LORDER, lorder)
642 AC_PATH_PROG(TAR, tar)
643 AC_CHECK_PROGS(PERL, perl)
645 AC_CHECK_PROGS(YACC, ['bison -y'])
646 if test -z "$YACC"; then
648 *** Without Bison you will not be able to build PostgreSQL from CVS or
649 *** change any of the parser definition files. You can obtain Bison from
650 *** a GNU mirror site. (If you are using the official distribution of
651 *** PostgreSQL then you do not need to worry about this because the Bison
652 *** output is pre-generated.) To use a different yacc program (possible,
653 *** but not recommended), set the environment variable YACC before running
658 if test "$with_tk" = yes; then
659 AC_PATH_PROG(WISH, wish)
660 test -z "$WISH" && AC_MSG_ERROR(['wish' is required for Tk support])
668 AC_CHECK_LIB(sfio, main)
670 AC_SEARCH_LIBS(using_history, history, [AC_DEFINE(HAVE_HISTORY_FUNCTIONS)])
672 if test "$PORTNAME" != "aix" -a "$PORTNAME" != "alpha"
674 AC_CHECK_LIB(bsd, main)
676 AC_CHECK_LIB(util, setproctitle)
677 AC_CHECK_LIB(m, main)
678 AC_CHECK_LIB(dl, main)
679 AC_CHECK_LIB(socket, main)
680 AC_CHECK_LIB(nsl, main)
681 AC_CHECK_LIB(ipc, main)
682 AC_CHECK_LIB(IPC, main)
683 AC_CHECK_LIB(lc, main)
684 AC_CHECK_LIB(dld, main)
685 AC_CHECK_LIB(ld, main)
686 AC_CHECK_LIB(compat, main)
687 AC_CHECK_LIB(BSD, main)
688 AC_CHECK_LIB(gen, main)
689 AC_CHECK_LIB(PW, main)
690 AC_CHECK_LIB(resolv, main)
691 AC_SEARCH_LIBS(crypt, crypt)
692 AC_CHECK_LIB(bind, __inet_ntoa)
693 dnl only consider libz to be present if we find <zlib.h> as well
694 AC_CHECK_HEADER(zlib.h, [
695 AC_CHECK_LIB(z, inflate)
699 if test "$with_krb4" = yes ; then
700 AC_CHECK_LIB(des, [des_encrypt], [], [AC_MSG_ERROR([library 'des' is required for Kerberos 4])])
701 AC_CHECK_LIB(krb, [krb_sendauth], [], [AC_MSG_ERROR([library 'krb' is required for Kerberos 4])])
704 if test "$with_krb5" = yes ; then
705 AC_CHECK_LIB(com_err, [com_err], [], [AC_MSG_ERROR([library 'com_err' is required for Kerberos 5])])
706 AC_CHECK_LIB(crypto, [krb5_encrypt], [],
707 [AC_CHECK_LIB(k5crypto, [krb5_encrypt], [], [AC_MSG_ERROR([library 'crypto' or 'k5crypto' is required for Kerberos 5])])])
708 AC_CHECK_LIB(krb5, [krb5_sendauth], [], [AC_MSG_ERROR([library 'krb5' is required for Kerberos 5])])
711 if test "$with_openssl" = yes ; then
713 AC_CHECK_LIB(crypto, [CRYPTO_new_ex_data], [], [AC_MSG_ERROR([library 'crypto' is required for OpenSSL])])
714 AC_CHECK_LIB(ssl, [SSL_library_init], [], [AC_MSG_ERROR([library 'ssl' is required for OpenSSL])])
721 dnl sys/socket.h and sys/types.h are required by AC_FUNC_ACCEPT_ARGTYPES
722 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])
724 dnl At least on IRIX, cpp test for netinet/tcp.h will fail unless netinet/in.h
725 dnl is included first. So can't just use AC_CHECK_HEADERS; do it this way:
726 AC_CHECK_HEADERS([netinet/in.h])
727 AC_MSG_CHECKING([for netinet/tcp.h])
729 #ifdef HAVE_NETINET_IN_H
730 #include <netinet/in.h>
732 #include <netinet/tcp.h>
733 ], [AC_DEFINE(HAVE_NETINET_TCP_H) AC_MSG_RESULT(yes)],
738 AC_CHECK_HEADERS([readline/readline.h readline.h], [break])
739 AC_CHECK_HEADERS([readline/history.h history.h], [break])
741 if test "$with_krb4" = yes ; then
742 AC_CHECK_HEADER(krb.h, [], [AC_MSG_ERROR([header file <krb.h> is required for Kerberos 4])])
745 if test "$with_krb5" = yes ; then
746 AC_CHECK_HEADER(krb5.h, [], [AC_MSG_ERROR([header file <krb5.h> is required for Kerberos 5])])
747 AC_CHECK_HEADER(com_err.h, [], [AC_MSG_ERROR([header file <com_err.h> is required for Kerberos 5])])
750 if test "$with_openssl" = yes ; then
751 AC_CHECK_HEADER([openssl/ssl.h], [], [AC_MSG_ERROR([header file <openssl/ssl.h> is required for OpenSSL])])
752 AC_CHECK_HEADER([openssl/err.h], [], [AC_MSG_ERROR([header file <openssl/err.h> is required for OpenSSL])])
757 ## Types, structures, compiler characteristics
766 PGAC_STRUCT_SOCKADDR_UN
769 ## Functions, global variables
771 PGAC_VAR_INT_TIMEZONE
772 AC_FUNC_ACCEPT_ARGTYPES
773 PGAC_FUNC_GETTIMEOFDAY_1ARG
775 AC_CHECK_FUNCS([fcvt getopt_long memmove pstat setproctitle setsid sigprocmask sysconf waitpid dlopen fdatasync])
777 dnl Check whether <unistd.h> declares fdatasync().
778 AC_EGREP_HEADER(fdatasync, unistd.h, AC_DEFINE(HAVE_FDATASYNC_DECL))
780 AC_CACHE_CHECK([for PS_STRINGS], [pgac_cv_var_PS_STRINGS],
782 [#include <machine/vmparam.h>
783 #include <sys/exec.h>
785 [PS_STRINGS->ps_nargvstr = 1;
786 PS_STRINGS->ps_argvstr = "foo";],
787 [pgac_cv_var_PS_STRINGS=yes],
788 [pgac_cv_var_PS_STRINGS=no])])
789 if test "$pgac_cv_var_PS_STRINGS" = yes ; then
790 AC_DEFINE([HAVE_PS_STRINGS], [], [Define if the PS_STRINGS thing exists.])
793 dnl We use our snprintf.c emulation if either snprintf() or vsnprintf()
794 dnl is missing. Yes, there are machines that have only one.
795 dnl We may also decide to use snprintf.c if snprintf() is present but does
796 dnl not have working "long long int" support -- see below.
798 AC_CHECK_FUNC(snprintf,
799 AC_DEFINE(HAVE_SNPRINTF),
800 SNPRINTF='snprintf.o')
801 AC_CHECK_FUNC(vsnprintf,
802 AC_DEFINE(HAVE_VSNPRINTF),
803 SNPRINTF='snprintf.o')
805 dnl Check whether <stdio.h> declares snprintf() and vsnprintf(); if not,
806 dnl include/c.h will provide declarations. Note this is a separate test
807 dnl from whether the functions exist in the C library --- there are systems
808 dnl that have the functions but don't bother to declare them :-(
809 dnl Note: simple-minded pattern here will do wrong thing if stdio.h
810 dnl declares vsnprintf() but not snprintf(). Hopefully there are no
811 dnl systems that are *that* brain-damaged...
812 AC_EGREP_HEADER(snprintf, stdio.h, AC_DEFINE(HAVE_SNPRINTF_DECL))
813 AC_EGREP_HEADER(vsnprintf, stdio.h, AC_DEFINE(HAVE_VSNPRINTF_DECL))
815 # do this one the hard way in case isinf() is a macro
816 AC_CACHE_CHECK([for isinf], ac_cv_func_isinf,
820 [double x = 0.0; int res = isinf(x);],
821 [ac_cv_func_isinf=yes],
822 [ac_cv_func_isinf=no])])
824 if test $ac_cv_func_isinf = yes ; then
825 AC_DEFINE(HAVE_ISINF)
829 # Look for a way to implement a substitute for isinf()
830 AC_CHECK_FUNCS([fpclass fp_class fp_class_d class], [break])
834 AC_CHECK_FUNC(getrusage,
835 AC_DEFINE(HAVE_GETRUSAGE),
836 GETRUSAGE='getrusage.o')
838 AC_CHECK_FUNC(srandom,
839 AC_DEFINE(HAVE_SRANDOM),
842 AC_CHECK_FUNC(gethostname,
843 AC_DEFINE(HAVE_GETHOSTNAME),
844 GETHOSTNAME='gethostname.o')
845 AC_SUBST(GETHOSTNAME)
846 AC_CHECK_FUNC(random,
847 AC_DEFINE(HAVE_RANDOM),
848 MISSING_RANDOM='random.o')
849 AC_SUBST(MISSING_RANDOM)
850 AC_CHECK_FUNC(inet_aton,
851 AC_DEFINE(HAVE_INET_ATON),
852 INET_ATON='inet_aton.o')
854 AC_CHECK_FUNC(strerror,
855 AC_DEFINE(HAVE_STRERROR),
856 STRERROR='strerror.o')
858 AC_CHECK_FUNC(strdup,
859 AC_DEFINE(HAVE_STRDUP),
860 STRDUP='../../utils/strdup.o')
862 AC_CHECK_FUNC(strtol,
863 AC_DEFINE(HAVE_STRTOL),
866 AC_CHECK_FUNC(strtoul,
867 AC_DEFINE(HAVE_STRTOUL),
870 AC_CHECK_FUNC(strcasecmp,
871 AC_DEFINE(HAVE_STRCASECMP),
872 STRCASECMP='strcasecmp.o')
875 AC_DEFINE(HAVE_CBRT),
876 AC_CHECK_LIB(m, cbrt, AC_DEFINE(HAVE_CBRT)))
878 # On HPUX 9, rint() is not in regular libm.a but in /lib/pa1.1/libm.a;
879 # this hackery with HPUXMATHLIB allows us to cope.
883 if [[ -r /lib/pa1.1/libm.a ]] ; then
884 HPUXMATHLIB="-L /lib/pa1.1 -lm"
887 AC_SUBST(HPUXMATHLIB)
890 AC_DEFINE(HAVE_RINT),
891 AC_CHECK_LIB(m, rint, AC_DEFINE(HAVE_RINT), , $HPUXMATHLIB))
894 # Readline versions < 2.1 don't have rl_completion_append_character
895 AC_MSG_CHECKING([for rl_completion_append_character])
896 AC_TRY_LINK([#include <stdio.h>
897 #ifdef HAVE_READLINE_H
898 # include <readline.h>
900 #ifdef HAVE_READLINE_READLINE_H
901 # include <readline/readline.h>
903 [rl_completion_append_character = 'x';],
905 AC_DEFINE(HAVE_RL_COMPLETION_APPEND_CHARACTER)],
909 # Check whether readline's filename_completion_function is declared.
910 # Some prehistoric versions of readline, in particular those shipped
911 # with earlier Cygwins don't have this declared, although it's in the
913 AC_MSG_CHECKING([whether filename_completion_function is declared])
914 if test "$ac_cv_header_readline_h" = yes; then
915 _readline_header='readline.h'
916 elif test "$ac_cv_header_readline_readline_h" = yes; then
917 _readline_header='readline/readline.h'
919 _readline_header='xxx'
921 AC_EGREP_HEADER([filename_completion_function], [$_readline_header],
922 [AC_DEFINE(HAVE_FILENAME_COMPLETION_FUNCTION_DECL)
928 dnl Cannot use AC_CHECK_FUNC because finite may be a macro
929 AC_MSG_CHECKING(for finite)
930 AC_TRY_LINK([#include <math.h>],
931 [int dummy=finite(1.0);],
932 [AC_DEFINE(HAVE_FINITE) AC_MSG_RESULT(yes)],
935 dnl Cannot use AC_CHECK_FUNC because sigsetjmp may be a macro
936 dnl (especially on GNU libc)
937 dnl See also comments in config.h.
938 AC_MSG_CHECKING(for sigsetjmp)
939 AC_TRY_LINK([#include <setjmp.h>],
940 [sigjmp_buf x; sigsetjmp(x, 1);],
941 [AC_DEFINE(HAVE_SIGSETJMP) AC_MSG_RESULT(yes)],
945 PGAC_ARG_BOOL(enable, syslog, no, [ --enable-syslog enable logging to syslog],
946 [AC_CHECK_FUNC(syslog,
947 [AC_DEFINE([ENABLE_SYSLOG], 1,
948 [Define to 1 if to enable the syslogging code])],
949 [AC_MSG_ERROR([no syslog interface found])])])
952 AC_CACHE_CHECK([for optreset], pgac_cv_var_int_optreset,
953 [AC_TRY_LINK([#include <unistd.h>],
954 [extern int optreset; optreset = 1;],
955 [pgac_cv_var_int_optreset=yes],
956 [pgac_cv_var_int_optreset=no])])
957 if test x"$pgac_cv_var_int_optreset" = x"yes"; then
958 AC_DEFINE(HAVE_INT_OPTRESET, 1)
961 dnl Check to see if we have a working 64-bit integer type.
962 dnl This breaks down into two steps:
963 dnl (1) figure out if the compiler has a 64-bit int type with working
964 dnl arithmetic, and if so
965 dnl (2) see whether snprintf() can format the type correctly. (Currently,
966 dnl snprintf is the only library routine we really need for int8 support.)
967 dnl It's entirely possible to have a compiler that handles a 64-bit type
968 dnl when the C library doesn't; this is fairly likely when using gcc on
969 dnl an older platform, for example.
970 dnl If there is no native snprintf() or it does not handle the 64-bit type,
971 dnl we force our own version of snprintf() to be used instead.
972 dnl Note this test must be run after our initial check for snprintf/vsnprintf.
974 PGAC_TYPE_64BIT_INT([long int])
976 if test x"$HAVE_LONG_INT_64" = x"no" ; then
977 PGAC_TYPE_64BIT_INT([long long int])
981 dnl If we found "long int" is 64 bits, assume snprintf handles it.
982 dnl If we found we need to use "long long int", better check.
983 dnl We cope with snprintfs that use either %lld or %qd as the format.
984 dnl If neither works, fall back to our own snprintf emulation (which we
987 if [[ x"$HAVE_LONG_LONG_INT_64" = xyes ]] ; then
988 if [[ x$SNPRINTF = x ]] ; then
989 AC_MSG_CHECKING(whether snprintf handles 'long long int' as %lld)
990 AC_TRY_RUN([#include <stdio.h>
991 typedef long long int int64;
992 #define INT64_FORMAT "%lld"
997 int does_int64_snprintf_work()
1002 if (sizeof(int64) != 8)
1003 return 0; /* doesn't look like the right size */
1006 snprintf(buf, 100, INT64_FORMAT, c);
1007 if (strcmp(buf, "800000140000005") != 0)
1008 return 0; /* either multiply or snprintf is busted */
1012 exit(! does_int64_snprintf_work());
1014 [ AC_MSG_RESULT(yes)
1015 INT64_FORMAT='"%lld"'
1018 AC_MSG_CHECKING(whether snprintf handles 'long long int' as %qd)
1019 AC_TRY_RUN([#include <stdio.h>
1020 typedef long long int int64;
1021 #define INT64_FORMAT "%qd"
1026 int does_int64_snprintf_work()
1031 if (sizeof(int64) != 8)
1032 return 0; /* doesn't look like the right size */
1035 snprintf(buf, 100, INT64_FORMAT, c);
1036 if (strcmp(buf, "800000140000005") != 0)
1037 return 0; /* either multiply or snprintf is busted */
1041 exit(! does_int64_snprintf_work());
1043 [ AC_MSG_RESULT(yes)
1044 INT64_FORMAT='"%qd"'
1047 # Force usage of our own snprintf, since system snprintf is broken
1048 SNPRINTF='snprintf.o'
1049 INT64_FORMAT='"%lld"'
1051 [ AC_MSG_RESULT(assuming not on target machine)
1052 # Force usage of our own snprintf, since we cannot test foreign snprintf
1053 SNPRINTF='snprintf.o'
1054 INT64_FORMAT='"%lld"'
1056 [ AC_MSG_RESULT(assuming not on target machine)
1057 # Force usage of our own snprintf, since we cannot test foreign snprintf
1058 SNPRINTF='snprintf.o'
1059 INT64_FORMAT='"%lld"'
1062 # here if we previously decided we needed to use our own snprintf
1063 INT64_FORMAT='"%lld"'
1066 # Here if we are not using 'long long int' at all
1067 INT64_FORMAT='"%ld"'
1070 AC_DEFINE_UNQUOTED(INT64_FORMAT, $INT64_FORMAT)
1073 AC_CHECK_FUNCS([strtoll strtoq], [break])
1074 AC_CHECK_FUNCS([strtoull strtouq], [break])
1077 dnl Need a #define for the size of Datum (unsigned long)
1079 AC_CHECK_SIZEOF(unsigned long, 4)
1080 AC_DEFINE_UNQUOTED(SIZEOF_DATUM, $ac_cv_sizeof_unsigned_long)
1082 dnl Determine memory alignment requirements for the basic C datatypes.
1084 PGAC_CHECK_ALIGNOF(short)
1085 PGAC_CHECK_ALIGNOF(int)
1086 PGAC_CHECK_ALIGNOF(long)
1087 if [[ x"$HAVE_LONG_LONG_INT_64" = xyes ]] ; then
1088 PGAC_CHECK_ALIGNOF(long long int)
1090 PGAC_CHECK_ALIGNOF(double)
1092 dnl Compute maximum alignment of any basic type.
1093 dnl We assume long's alignment is at least as strong as char, short, or int;
1094 dnl but we must check long long (if it exists) and double.
1096 if test $pgac_cv_alignof_double != 'sizeof(double)' ; then
1097 MAX_ALIGNOF=$pgac_cv_alignof_long
1098 if test $MAX_ALIGNOF -lt $pgac_cv_alignof_double ; then
1099 MAX_ALIGNOF=$pgac_cv_alignof_double
1101 if test x"$HAVE_LONG_LONG_INT_64" = xyes && test $MAX_ALIGNOF -lt $pgac_cv_alignof_long_long_int ; then
1102 MAX_ALIGNOF="$pgac_cv_alignof_long_long_int"
1105 dnl cross-compiling: assume that double's alignment is worst case
1106 MAX_ALIGNOF="$pgac_cv_alignof_double"
1108 AC_DEFINE_UNQUOTED(MAXIMUM_ALIGNOF, $MAX_ALIGNOF, [Define as the maximum alignment requirement of any type])
1110 PGAC_FUNC_POSIX_SIGNALS
1113 # Check for Tcl configuration script tclConfig.sh
1114 if test "$with_tcl" = yes; then
1115 PGAC_PATH_TCLCONFIGSH([$with_tclconfig])
1118 # Check for Tk configuration script tkConfig.sh
1119 if test "$with_tk" = yes; then
1120 PGAC_PATH_TKCONFIGSH([$with_tkconfig $with_tclconfig])
1125 # Check for DocBook and tools
1128 # If you don't have nsgmls you won't get very far, so save the cycles.
1129 if test -n "$NSGMLS"; then
1131 PGAC_CHECK_DOCBOOK([3.1])
1132 PGAC_PATH_DOCBOOK_STYLESHEETS
1133 AC_CHECK_PROGS(SGMLSPL, sgmlspl)
1137 # Finally ready to produce output files ...
1139 if test x"$abs_top_srcdir" != x"$abs_top_builddir"; then
1140 echo $ac_n "preparing build tree... $ac_c" 1>&6
1141 /bin/sh "$srcdir/config/prep_buildtree" "$abs_top_srcdir" "$abs_top_builddir" \
1142 || AC_MSG_ERROR(failed)
1151 src/backend/port/Makefile
1154 # Update timestamp for config.h (see Makefile.global)
1155 test x"$CONFIG_HEADERS" != x"" && echo >src/include/stamp-h