1
dnl Process this file with autoconf to produce a configure script.
2
dnl $PostgreSQL: pgsql/configure.in,v 1.398.4.5 2005-05-05 20:07:34 tgl 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.0.3], [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])
307
# Set up TAS assembly code if needed; the template file has now had its
308
# chance to request this.
310
AC_CONFIG_LINKS([src/backend/port/tas.s:src/backend/port/tas/${tas_file}])
312
if test "$need_tas" = yes ; then
321
# Automatic dependency tracking
323
PGAC_ARG_BOOL(enable, depend, no, [ --enable-depend turn on automatic dependency tracking],
329
# Enable assert checks
331
PGAC_ARG_BOOL(enable, cassert, no, [ --enable-cassert enable assertion checks (for debugging)],
332
[AC_DEFINE([USE_ASSERT_CHECKING], 1,
333
[Define to 1 to build with assertion checks. (--enable-cassert)])])
337
# Include directories
340
IFS="${IFS}${PATH_SEPARATOR}"
341
# SRCH_INC comes from the template file
342
for dir in $with_includes $SRCH_INC; do
343
if test -d "$dir"; then
344
INCLUDES="$INCLUDES -I$dir"
346
AC_MSG_WARN([*** Include directory $dir does not exist.])
354
# Library directories
357
IFS="${IFS}${PATH_SEPARATOR}"
358
# LIBRARY_DIRS comes from command line, SRCH_LIB from template file.
359
for dir in $LIBRARY_DIRS $SRCH_LIB; do
360
if test -d "$dir"; then
361
LIBDIRS="$LIBDIRS -L$dir"
363
AC_MSG_WARN([*** Library directory $dir does not exist.])
369
# Enable thread-safe client libraries
371
AC_MSG_CHECKING([allow thread-safe client libraries])
372
PGAC_ARG_BOOL(enable, thread-safety, no, [ --enable-thread-safety make client libraries thread-safe])
373
PGAC_ARG_BOOL(enable, thread-safety-force, no, [ --enable-thread-safety-force force thread-safety in spite of thread test failure])
374
if test "$enable_thread_safety" = yes -o \
375
"$enable_thread_safety_force" = yes; then
376
enable_thread_safety="yes" # for 'force'
377
AC_DEFINE([ENABLE_THREAD_SAFETY], 1,
378
[Define to 1 to build client libraries as thread-safe code. (--enable-thread-safety)])
380
AC_MSG_RESULT([$enable_thread_safety])
381
AC_SUBST(enable_thread_safety)
384
# Optionally build Tcl modules (PL/Tcl)
386
AC_MSG_CHECKING([whether to build with Tcl])
387
PGAC_ARG_BOOL(with, tcl, no, [ --with-tcl build Tcl modules (PL/Tcl)])
388
AC_MSG_RESULT([$with_tcl])
391
# We see if the path to the Tcl/Tk configuration scripts is specified.
392
# This will override the use of tclsh to find the paths to search.
394
PGAC_ARG_REQ(with, tclconfig, [ --with-tclconfig=DIR tclConfig.sh is in DIR])
397
# Optionally build Perl modules (PL/Perl)
399
AC_MSG_CHECKING([whether to build Perl modules])
400
PGAC_ARG_BOOL(with, perl, no, [ --with-perl build Perl modules (PL/Perl)])
401
AC_MSG_RESULT([$with_perl])
405
# Optionally build Python modules (PL/Python)
407
AC_MSG_CHECKING([whether to build Python modules])
408
PGAC_ARG_BOOL(with, python, no, [ --with-python build Python modules (PL/Python)])
409
AC_MSG_RESULT([$with_python])
410
AC_SUBST(with_python)
415
AC_MSG_CHECKING([whether to build with Kerberos 4 support])
416
PGAC_ARG_BOOL(with, krb4, no, [ --with-krb4 build with Kerberos 4 support],
418
AC_DEFINE(KRB4, 1, [Define to build with Kerberos 4 support. (--with-krb4)])
419
krb_srvtab="/etc/srvtab"
421
AC_MSG_RESULT([$with_krb4])
428
AC_MSG_CHECKING([whether to build with Kerberos 5 support])
429
PGAC_ARG_BOOL(with, krb5, no, [ --with-krb5 build with Kerberos 5 support],
431
AC_DEFINE(KRB5, 1, [Define to build with Kerberos 5 support. (--with-krb5)])
432
krb_srvtab="FILE:\$(sysconfdir)/krb5.keytab"
434
AC_MSG_RESULT([$with_krb5])
438
# Using both Kerberos 4 and Kerberos 5 at the same time isn't going to work.
439
if test "$with_krb4" = yes && test "$with_krb5" = yes ; then
440
AC_MSG_ERROR([Kerberos 4 and Kerberos 5 support cannot be combined])
447
# Kerberos configuration parameters
449
PGAC_ARG_REQ(with, krb-srvnam,
450
[ --with-krb-srvnam=NAME name of the service principal in Kerberos [[postgres]]],
452
[with_krb_srvnam="postgres"])
453
AC_DEFINE_UNQUOTED([PG_KRB_SRVNAM], ["$with_krb_srvnam"],
454
[Define to the name of the PostgreSQL service principal in Kerberos. (--with-krb-srvnam=NAME)])
460
AC_MSG_CHECKING([whether to build with PAM support])
461
PGAC_ARG_BOOL(with, pam, no,
462
[ --with-pam build with PAM support],
463
[AC_DEFINE([USE_PAM], 1, [Define to 1 to build with PAM support. (--with-pam)])])
464
AC_MSG_RESULT([$with_pam])
471
AC_MSG_CHECKING([whether to build with Rendezvous support])
472
PGAC_ARG_BOOL(with, rendezvous, no,
473
[ --with-rendezvous build with Rendezvous support],
474
[AC_DEFINE([USE_RENDEZVOUS], 1, [Define to 1 to build with Rendezvous support. (--with-rendezvous)])])
475
AC_MSG_RESULT([$with_rendezvous])
476
AC_SUBST(with_rendezvous)
482
AC_MSG_CHECKING([whether to build with OpenSSL support])
483
PGAC_ARG_BOOL(with, openssl, no, [ --with-openssl build with OpenSSL support],
484
[AC_DEFINE([USE_SSL], 1, [Define to build with (Open)SSL support. (--with-openssl)])])
485
AC_MSG_RESULT([$with_openssl])
486
AC_SUBST(with_openssl)
492
PGAC_ARG_BOOL(with, readline, yes,
493
[ --without-readline do not use Readline])
494
# readline on MinGW has problems with backslashes in psql and other bugs.
495
# This is particularly a problem with non-US code pages.
496
# Therefore disable its use until we understand the cause. 2004-07-20
497
if test "$PORTNAME" = "win32"; then
498
if test "$with_readline" = yes; then
499
AC_MSG_WARN([*** Readline does not work on MinGW --- disabling])
508
PGAC_ARG_BOOL(with, zlib, yes,
509
[ --without-zlib do not use Zlib])
515
# Assume system is ELF if it predefines __ELF__ as 1,
516
# otherwise believe host_os based default.
518
freebsd1*|freebsd2*) elf=no;;
519
freebsd3*|freebsd4*) elf=yes;;
528
[if test "X$elf" = "Xyes" ; then
539
CPPFLAGS="$CPPFLAGS $INCLUDES"
540
LDFLAGS="$LDFLAGS $LIBDIRS"
542
AC_MSG_NOTICE([using CPPFLAGS=$CPPFLAGS])
543
AC_MSG_NOTICE([using LDFLAGS=$LDFLAGS])
545
AC_ARG_VAR(LDFLAGS_SL)
552
AC_SUBST(with_gnu_ld)
553
case $host_os in sysv5*)
554
AC_CACHE_CHECK([whether ld -R works], [pgac_cv_prog_ld_R],
556
pgac_save_LDFLAGS=$LDFLAGS; LDFLAGS="$LDFLAGS -Wl,-R/usr/lib"
557
AC_TRY_LINK([], [], [pgac_cv_prog_ld_R=yes], [pgac_cv_prog_ld_R=no])
558
LDFLAGS=$pgac_save_LDFLAGS
560
ld_R_works=$pgac_cv_prog_ld_R
564
AC_CHECK_PROGS(LORDER, lorder)
565
AC_PATH_PROG(TAR, tar)
568
AC_CHECK_PROGS(YACC, ['bison -y'])
570
if test "$YACC"; then
571
if $YACC --version | sed q | $AWK '{ if ($4 < 1.875) exit 0; else exit 1;}'; then
573
*** If you are going to modify the grammar files or build from CVS, the installed
574
*** version of Bison is too old. Bison version 1.875 or later is required.])
578
if test -z "$YACC"; then
580
*** Without Bison you will not be able to build PostgreSQL from CVS or
581
*** change any of the parser definition files. You can obtain Bison from
582
*** a GNU mirror site. (If you are using the official distribution of
583
*** PostgreSQL then you do not need to worry about this because the Bison
584
*** output is pre-generated.) To use a different yacc program (possible,
585
*** but not recommended), set the environment variable YACC before running
591
if test "$with_perl" = yes; then
592
PGAC_CHECK_PERL_CONFIGS([archlibexp,privlibexp,useshrplib])
593
PGAC_CHECK_PERL_EMBED_LDFLAGS
596
if test "$with_python" = yes; then
598
PGAC_CHECK_PYTHON_EMBED_SETUP
606
if test "$PORTNAME" != "aix" -a "$PORTNAME" != "alpha"
608
AC_CHECK_LIB(bsd, main)
610
AC_CHECK_LIB(util, setproctitle)
611
AC_CHECK_LIB(m, main)
612
AC_CHECK_LIB(dl, main)
613
AC_CHECK_LIB(nsl, main)
614
AC_CHECK_LIB(socket, main)
615
AC_CHECK_LIB(ipc, main)
616
AC_CHECK_LIB(IPC, main)
617
AC_CHECK_LIB(lc, main)
618
AC_CHECK_LIB(dld, main)
619
AC_CHECK_LIB(ld, main)
620
AC_CHECK_LIB(compat, main)
621
AC_CHECK_LIB(BSD, main)
622
AC_CHECK_LIB(gen, main)
623
AC_CHECK_LIB(PW, main)
624
AC_CHECK_LIB(resolv, main)
625
AC_SEARCH_LIBS(getopt_long, [getopt gnugetopt])
627
AC_CHECK_LIB(unix, main)
628
AC_SEARCH_LIBS(crypt, crypt)
630
if test "$PORTNAME" = "beos"
632
AC_CHECK_LIB(bind, __inet_ntoa)
635
AC_SEARCH_LIBS(fdatasync, [rt posix4])
637
AC_CHECK_LIB(cygipc, shmget)
639
if test "$PORTNAME" = "win32"
641
AC_CHECK_LIB(wsock32, main)
644
if test "$with_readline" = yes; then
646
if test x"$pgac_cv_check_readline" = x"no"; then
647
AC_MSG_ERROR([readline library not found
648
If you have readline already installed, see config.log for details on the
649
failure. It is possible the compiler isn't looking in the proper directory.
650
Use --without-readline to disable readline support.])
654
if test "$with_zlib" = yes; then
655
AC_CHECK_LIB(z, inflate, [],
656
[AC_MSG_ERROR([zlib library not found
657
If you have zlib already installed, see config.log for details on the
658
failure. It is possible the compiler isn't looking in the proper directory.
659
Use --without-zlib to disable zlib support.])])
662
if test "$enable_spinlocks" = yes; then
663
AC_DEFINE(HAVE_SPINLOCKS, 1, [Define to 1 if you have spinlocks.])
666
*** Not using spinlocks will cause poor performance.])
669
if test "$with_krb4" = yes ; then
670
AC_CHECK_LIB(des, des_encrypt, [], [AC_MSG_ERROR([library 'des' is required for Kerberos 4])])
671
AC_CHECK_LIB(krb, krb_sendauth, [], [AC_MSG_ERROR([library 'krb' is required for Kerberos 4])])
672
AC_REPLACE_FUNCS([gethostname])
675
if test "$with_krb5" = yes ; then
676
if test "$PORTNAME" != "win32"; then
677
AC_SEARCH_LIBS(com_err, [krb5 'krb5 -ldes -lasn1 -lroken' com_err], [],
678
[AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
679
AC_SEARCH_LIBS(krb5_encrypt, [krb5 'krb5 -ldes -lasn1 -lroken' crypto k5crypto], [],
680
[AC_MSG_ERROR([could not find function 'krb5_encrypt' required for Kerberos 5])])
681
AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -ldes -lasn1 -lroken'], [],
682
[AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
684
AC_SEARCH_LIBS(com_err, 'comerr32 -lkrb5_32', [],
685
[AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
689
if test "$with_openssl" = yes ; then
691
if test "$PORTNAME" != "win32"; then
692
AC_CHECK_LIB(crypto, CRYPTO_new_ex_data, [], [AC_MSG_ERROR([library 'crypto' is required for OpenSSL])])
693
AC_CHECK_LIB(ssl, SSL_library_init, [], [AC_MSG_ERROR([library 'ssl' is required for OpenSSL])])
695
AC_CHECK_LIB(eay32, CRYPTO_new_ex_data, [], [AC_MSG_ERROR([library 'eay32' is required for OpenSSL])])
696
AC_CHECK_LIB(ssleay32, SSL_library_init, [], [AC_MSG_ERROR([library 'ssleay32' is required for OpenSSL])])
700
if test "$with_pam" = yes ; then
701
AC_CHECK_LIB(pam, pam_start, [], [AC_MSG_ERROR([library 'pam' is required for PAM])])
709
dnl sys/socket.h is required by AC_FUNC_ACCEPT_ARGTYPES
710
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])
712
# At least on IRIX, cpp test for netinet/tcp.h will fail unless
713
# netinet/in.h is included first.
714
AC_CHECK_HEADERS(netinet/in.h)
715
AC_CHECK_HEADERS(netinet/tcp.h, [], [],
717
#ifdef HAVE_NETINET_IN_H
718
#include <netinet/in.h>
722
if expr x"$pgac_cv_check_readline" : 'x-lreadline' >/dev/null ; then
723
AC_CHECK_HEADERS(readline/readline.h, [],
724
[AC_CHECK_HEADERS(readline.h, [],
725
[AC_MSG_ERROR([readline header not found
726
If you have readline already installed, see config.log for details on the
727
failure. It is possible the compiler isn't looking in the proper directory.
728
Use --without-readline to disable readline support.])])])
729
AC_CHECK_HEADERS(readline/history.h, [],
730
[AC_CHECK_HEADERS(history.h, [],
731
[AC_MSG_ERROR([history header not found
732
If you have readline already installed, see config.log for details on the
733
failure. It is possible the compiler isn't looking in the proper directory.
734
Use --without-readline to disable readline support.])])])
737
if expr x"$pgac_cv_check_readline" : 'x-ledit' >/dev/null ; then
738
# Some installations of libedit usurp /usr/include/readline/, which seems
739
# bad practice, since in combined installations readline will have its headers
740
# there. We might have to resort to AC_EGREP checks to make sure we found
741
# the proper header...
742
AC_CHECK_HEADERS(editline/readline.h, [],
743
[AC_CHECK_HEADERS(readline.h, [],
744
[AC_CHECK_HEADERS(readline/readline.h, [],
745
[AC_MSG_ERROR([readline header not found
746
If you have libedit already installed, see config.log for details on the
747
failure. It is possible the compiler isn't looking in the proper directory.
748
Use --without-readline to disable libedit support.])])])])
749
AC_CHECK_HEADERS(editline/history.h, [],
750
[AC_CHECK_HEADERS(history.h, [],
751
[AC_CHECK_HEADERS(readline/history.h, [],
752
[AC_MSG_ERROR([history header not found
753
If you have libedit already installed, see config.log for details on the
754
failure. It is possible the compiler isn't looking in the proper directory.
755
Use --without-readline to disable libedit support.])])])])
758
if test "$with_zlib" = yes; then
759
AC_CHECK_HEADER(zlib.h, [], [AC_MSG_ERROR([zlib header not found
760
If you have zlib already installed, see config.log for details on the
761
failure. It is possible the compiler isn't looking in the proper directory.
762
Use --without-zlib to disable zlib support.])])
765
if test "$with_krb4" = yes ; then
766
AC_CHECK_HEADER(krb.h, [], [AC_MSG_ERROR([header file <krb.h> is required for Kerberos 4])])
769
if test "$with_krb5" = yes ; then
770
AC_CHECK_HEADER(krb5.h, [], [AC_MSG_ERROR([header file <krb5.h> is required for Kerberos 5])])
773
if test "$with_openssl" = yes ; then
774
AC_CHECK_HEADER(openssl/ssl.h, [], [AC_MSG_ERROR([header file <openssl/ssl.h> is required for OpenSSL])])
775
AC_CHECK_HEADER(openssl/err.h, [], [AC_MSG_ERROR([header file <openssl/err.h> is required for OpenSSL])])
778
if test "$with_pam" = yes ; then
779
AC_CHECK_HEADERS(security/pam_appl.h, [],
780
[AC_CHECK_HEADERS(pam/pam_appl.h, [],
781
[AC_MSG_ERROR([header file <security/pam_appl.h> or <pam/pam_appl.h> is required for PAM.])])])
784
if test "$with_rendezvous" = yes ; then
785
AC_CHECK_HEADER(DNSServiceDiscovery/DNSServiceDiscovery.h, [], [AC_MSG_ERROR([header file <DNSServiceDiscovery/DNSServiceDiscovery.h> is required for Rendezvous])])
790
## Types, structures, compiler characteristics
793
m4_defun([AC_PROG_CC_STDC], []) dnl We don't want that.
799
PGAC_C_FUNCNAME_SUPPORT
802
PGAC_STRUCT_SOCKADDR_UN
803
PGAC_STRUCT_SOCKADDR_STORAGE
804
PGAC_STRUCT_SOCKADDR_STORAGE_MEMBERS
807
AC_CHECK_TYPES([struct cmsgcred, struct fcred, struct sockcred], [], [],
808
[#include <sys/param.h>
809
#include <sys/types.h>
810
#include <sys/socket.h>
811
#include <sys/ucred.h>])
813
AC_CHECK_TYPES([struct option], [], [],
814
[#ifdef HAVE_GETOPT_H
818
if test "$with_zlib" = yes; then
819
# Check that <zlib.h> defines z_streamp (versions before about 1.0.4
820
# did not). While we could work around the lack of z_streamp, it
821
# seems unwise to encourage people to use such old zlib versions...
822
AC_CHECK_TYPE(z_streamp, [], [AC_MSG_ERROR([zlib version is too old
823
Use --without-zlib to disable zlib support.])],
827
if test "$with_krb5" = yes; then
828
# Check for differences between MIT and Heimdal (KTH) releases
829
AC_CHECK_MEMBERS(krb5_ticket.enc_part2, [],
830
[AC_CHECK_MEMBERS(krb5_ticket.client, [],
831
[AC_MSG_ERROR([could not determine how to get client name from Kerberos 5 ticket])],
832
[#include <krb5.h>])],
834
AC_CHECK_MEMBERS(krb5_error.text.data, [],
835
[AC_CHECK_MEMBERS(krb5_error.e_data, [],
836
[AC_MSG_ERROR([could not determine how to extract Kerberos 5 error messages])],
837
[#include <krb5.h>])],
842
## Functions, global variables
845
PGAC_VAR_INT_TIMEZONE
846
AC_FUNC_ACCEPT_ARGTYPES
847
PGAC_FUNC_GETTIMEOFDAY_1ARG
849
# SunOS doesn't handle negative byte comparisons properly with +/- return
852
AC_CHECK_FUNCS([cbrt dlopen fcvt fdatasync getpeereid memmove poll pstat readlink setproctitle setsid sigprocmask symlink sysconf towlower utime utimes waitpid wcstombs])
854
AC_CHECK_DECLS(fdatasync, [], [], [#include <unistd.h>])
857
AC_CHECK_TYPE([struct sockaddr_in6],
858
[AC_CHECK_FUNC(inet_ntop,
859
[AC_DEFINE(HAVE_IPV6, 1, [Define to 1 if you have support for IPv6.])
862
[$ac_includes_default
863
#include <netinet/in.h>])
866
AC_CACHE_CHECK([for PS_STRINGS], [pgac_cv_var_PS_STRINGS],
868
[#include <machine/vmparam.h>
869
#include <sys/exec.h>
871
[PS_STRINGS->ps_nargvstr = 1;
872
PS_STRINGS->ps_argvstr = "foo";],
873
[pgac_cv_var_PS_STRINGS=yes],
874
[pgac_cv_var_PS_STRINGS=no])])
875
if test "$pgac_cv_var_PS_STRINGS" = yes ; then
876
AC_DEFINE([HAVE_PS_STRINGS], [], [Define to 1 if the PS_STRINGS thing exists.])
880
# We use our snprintf.c emulation if either snprintf() or vsnprintf()
881
# is missing. Yes, there are machines that have only one. We may
882
# also decide to use snprintf.c if snprintf() is present but does not
883
# have working "long long int" support -- see below.
885
pgac_need_repl_snprintf=no
886
AC_CHECK_FUNCS(snprintf, [], pgac_need_repl_snprintf=yes)
887
AC_CHECK_FUNCS(vsnprintf, [], pgac_need_repl_snprintf=yes)
890
# Check whether <stdio.h> declares snprintf() and vsnprintf(); if not,
891
# include/c.h will provide declarations. Note this is a separate test
892
# from whether the functions exist in the C library --- there are
893
# systems that have the functions but don't bother to declare them :-(
895
AC_CHECK_DECLS([snprintf, vsnprintf])
898
# do this one the hard way in case isinf() is a macro
899
AC_CACHE_CHECK([for isinf], ac_cv_func_isinf,
903
[double x = 0.0; int res = isinf(x);],
904
[ac_cv_func_isinf=yes],
905
[ac_cv_func_isinf=no])])
907
if test $ac_cv_func_isinf = yes ; then
908
AC_DEFINE(HAVE_ISINF, 1, [Define to 1 if you have isinf().])
911
# Look for a way to implement a substitute for isinf()
912
AC_CHECK_FUNCS([fpclass fp_class fp_class_d class], [break])
915
AC_REPLACE_FUNCS([crypt fseeko getopt getrusage inet_aton random rint srandom strdup strerror strtol strtoul unsetenv])
917
# system's version of getaddrinfo(), if any, may be used only if we found
918
# a definition for struct addrinfo; see notes in src/include/getaddrinfo.h
919
if test x"$ac_cv_type_struct_addrinfo" = xyes ; then
920
AC_REPLACE_FUNCS([getaddrinfo])
922
AC_LIBOBJ(getaddrinfo)
925
# similarly, use system's getopt_long() only if system provides struct option.
926
if test x"$ac_cv_type_struct_option" = xyes ; then
927
AC_REPLACE_FUNCS([getopt_long])
929
AC_LIBOBJ(getopt_long)
932
# BSD/OS & NetBSD use a custom fseeko/ftello built on fsetpos/fgetpos
933
# We override the previous test that said fseeko/ftello didn't exist
934
# OS tests are also done in include/c.h and port/fseeko.c
935
case $host_os in bsdi*|netbsd*)
936
ac_cv_func_fseeko=yes
939
# Solaris has a very slow qsort in certain cases, so we replace it.
940
if test "$PORTNAME" = "solaris"; then
945
if test "$PORTNAME" = "win32"; then
947
AC_LIBOBJ(gettimeofday)
951
AC_DEFINE([HAVE_SYMLINK], 1,
952
[Define to 1 if you have the `symlink' function.])
955
if test "$with_readline" = yes; then
956
PGAC_VAR_RL_COMPLETION_APPEND_CHARACTER
957
AC_CHECK_FUNCS([rl_completion_matches rl_filename_completion_function])
958
AC_CHECK_FUNCS([replace_history_entry])
962
dnl Cannot use AC_CHECK_FUNC because finite may be a macro
963
AC_MSG_CHECKING(for finite)
964
AC_TRY_LINK([#include <math.h>],
965
[int dummy=finite(1.0);],
966
[AC_DEFINE(HAVE_FINITE, 1, [Define to 1 if you have finite().])
970
dnl Cannot use AC_CHECK_FUNC because sigsetjmp may be a macro
971
dnl (especially on GNU libc)
972
dnl See also comments in c.h.
973
AC_MSG_CHECKING(for sigsetjmp)
974
AC_TRY_LINK([#include <setjmp.h>],
975
[sigjmp_buf x; sigsetjmp(x, 1);],
976
[AC_DEFINE(HAVE_SIGSETJMP, 1, [Define to 1 if you have sigsetjmp().])
980
AC_CHECK_FUNC(syslog,
981
[AC_CHECK_HEADER(syslog.h,
982
[AC_DEFINE(HAVE_SYSLOG, 1, [Define to 1 if you have the syslog interface.])])])
984
AC_CACHE_CHECK([for optreset], pgac_cv_var_int_optreset,
985
[AC_TRY_LINK([#include <unistd.h>],
986
[extern int optreset; optreset = 1;],
987
[pgac_cv_var_int_optreset=yes],
988
[pgac_cv_var_int_optreset=no])])
989
if test x"$pgac_cv_var_int_optreset" = x"yes"; then
990
AC_DEFINE(HAVE_INT_OPTRESET, 1, [Define to 1 if you have the global variable 'int optreset'.])
993
AC_CHECK_FUNCS([strtoll strtoq], [break])
994
AC_CHECK_FUNCS([strtoull strtouq], [break])
996
# Check for one of atexit() or on_exit()
997
AC_CHECK_FUNCS(atexit, [],
998
[AC_CHECK_FUNCS(on_exit, [],
999
[AC_MSG_ERROR([neither atexit() nor on_exit() found])])])
1006
# For each platform, we need to know about any special compile and link
1007
# libraries, and whether the normal C function names are thread-safe.
1008
# See the comment at the top of src/port/thread.c for more information.
1010
if test "$enable_thread_safety" = yes; then
1011
ACX_PTHREAD # set thread flags
1013
# Some platforms use these, so just defineed them. They can't hurt if they
1014
# are not supported.
1015
PTHREAD_CFLAGS="$PTHREAD_CFLAGS -D_REENTRANT -D_THREAD_SAFE -D_POSIX_PTHREAD_SEMANTICS"
1018
# At this point, we don't want to muck with the compiler name for threading.
1019
# Let's see who fails, perhaps AIX. 2004-04-23
1020
if test "$PTHREAD_CC" != "$CC"; then
1022
PostgreSQL does not support platforms that require a special
1023
compiler binary for thread-safety.
1027
if test "$THREAD_SUPPORT" = no; then
1029
Cannot enable threads on your platform.
1030
Your platform is known to not support thread-safe programs.
1031
For details, compile and run src/bin/pg_thread_test.
1035
# Check for *_r functions
1038
CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
1039
LIBS="$LIBS $PTHREAD_LIBS"
1041
AC_CHECK_HEADER(pthread.h, [], [AC_MSG_ERROR([pthread.h not found, required for --enable-thread-safety])])
1043
AC_CHECK_FUNCS([strerror_r getpwuid_r gethostbyname_r])
1045
# Do test here with the proper thread flags
1046
PGAC_FUNC_GETPWUID_R_5ARG
1047
PGAC_FUNC_STRERROR_R_INT
1053
# do not use values from template file
1058
AC_SUBST(PTHREAD_CFLAGS)
1059
AC_SUBST(PTHREAD_LIBS)
1062
# This test makes sure that run tests work at all. Sometimes a shared
1063
# library is found by the linker, but the runtime linker can't find it.
1064
# This check should come after all modifications of compiler or linker
1065
# variables, and before any other run tests.
1066
AC_MSG_CHECKING([test program])
1067
AC_TRY_RUN([int main() { return 0; }],
1068
[AC_MSG_RESULT(ok)],
1069
[AC_MSG_RESULT(failed)
1071
*** Could not execute a simple test program. This may be a problem
1072
*** related to locating shared libraries. Check the file 'config.log'
1073
*** for the exact reason.]])],
1074
[AC_MSG_RESULT([cross-compiling])])
1077
dnl Check to see if we have a working 64-bit integer type.
1078
dnl This breaks down into two steps:
1079
dnl (1) figure out if the compiler has a 64-bit int type with working
1080
dnl arithmetic, and if so
1081
dnl (2) see whether snprintf() can format the type correctly. (Currently,
1082
dnl snprintf is the only library routine we really need for int8 support.)
1083
dnl It's entirely possible to have a compiler that handles a 64-bit type
1084
dnl when the C library doesn't; this is fairly likely when using gcc on
1085
dnl an older platform, for example.
1086
dnl If there is no native snprintf() or it does not handle the 64-bit type,
1087
dnl we force our own version of snprintf() to be used instead.
1088
dnl Note this test must be run after our initial check for snprintf/vsnprintf.
1090
PGAC_TYPE_64BIT_INT([long int])
1092
if test x"$HAVE_LONG_INT_64" = x"no" ; then
1093
PGAC_TYPE_64BIT_INT([long long int])
1097
dnl If we need to use "long long int", figure out whether nnnLL notation works.
1099
if test x"$HAVE_LONG_LONG_INT_64" = xyes ; then
1101
#define INT64CONST(x) x##LL
1102
long long int foo = INT64CONST(0x1234567890123456);
1105
[AC_DEFINE(HAVE_LL_CONSTANTS, 1, [Define to 1 if constants of type 'long long int' should have the suffix LL.])],
1110
# If we found "long int" is 64 bits, assume snprintf handles it. If
1111
# we found we need to use "long long int", better check. We cope with
1112
# snprintfs that use %lld, %qd, or %I64d as the format. If none of these
1113
# work, fall back to our own snprintf emulation (which we know uses %lld).
1115
if test "$HAVE_LONG_LONG_INT_64" = yes ; then
1116
if test $pgac_need_repl_snprintf = no; then
1117
PGAC_FUNC_SNPRINTF_LONG_LONG_INT_FORMAT
1118
if test "$LONG_LONG_INT_FORMAT" = ""; then
1119
# Force usage of our own snprintf, since system snprintf is broken
1120
pgac_need_repl_snprintf=yes
1121
LONG_LONG_INT_FORMAT='%lld'
1124
# Here if we previously decided we needed to use our own snprintf
1125
LONG_LONG_INT_FORMAT='%lld'
1127
LONG_LONG_UINT_FORMAT=`echo "$LONG_LONG_INT_FORMAT" | sed 's/d$/u/'`
1128
INT64_FORMAT="\"$LONG_LONG_INT_FORMAT\""
1129
UINT64_FORMAT="\"$LONG_LONG_UINT_FORMAT\""
1131
# Here if we are not using 'long long int' at all
1132
INT64_FORMAT='"%ld"'
1133
UINT64_FORMAT='"%lu"'
1136
AC_DEFINE_UNQUOTED(INT64_FORMAT, $INT64_FORMAT,
1137
[Define to the appropriate snprintf format for 64-bit ints, if any.])
1139
AC_DEFINE_UNQUOTED(UINT64_FORMAT, $UINT64_FORMAT,
1140
[Define to the appropriate snprintf format for unsigned 64-bit ints, if any.])
1142
if test $pgac_need_repl_snprintf = yes; then
1146
# Need a #define for the size of Datum (unsigned long)
1147
AC_CHECK_SIZEOF([unsigned long])
1149
# Determine memory alignment requirements for the basic C data types.
1151
PGAC_CHECK_ALIGNOF(short)
1152
PGAC_CHECK_ALIGNOF(int)
1153
PGAC_CHECK_ALIGNOF(long)
1154
if test x"$HAVE_LONG_LONG_INT_64" = x"yes" ; then
1155
PGAC_CHECK_ALIGNOF(long long int)
1157
PGAC_CHECK_ALIGNOF(double)
1159
# Compute maximum alignment of any basic type.
1160
# We assume long's alignment is at least as strong as char, short, or int;
1161
# but we must check long long (if it exists) and double.
1163
MAX_ALIGNOF=$pgac_cv_alignof_long
1164
if test $MAX_ALIGNOF -lt $pgac_cv_alignof_double ; then
1165
MAX_ALIGNOF=$pgac_cv_alignof_double
1167
if test x"$HAVE_LONG_LONG_INT_64" = xyes && test $MAX_ALIGNOF -lt $pgac_cv_alignof_long_long_int ; then
1168
MAX_ALIGNOF="$pgac_cv_alignof_long_long_int"
1170
AC_DEFINE_UNQUOTED(MAXIMUM_ALIGNOF, $MAX_ALIGNOF, [Define as the maximum alignment requirement of any C data type.])
1173
# Some platforms predefine the types int8, int16, etc. Only check
1174
# a (hopefully) representative subset.
1175
AC_CHECK_TYPES([int8, uint8, int64, uint64], [], [],
1177
#ifdef HAVE_SUPPORTDEFS_H
1178
#include <SupportDefs.h>
1181
# We also check for sig_atomic_t, which *should* be defined per ANSI
1182
# C, but is missing on some old platforms.
1183
AC_CHECK_TYPES(sig_atomic_t, [], [], [#include <signal.h>])
1186
PGAC_FUNC_POSIX_SIGNALS
1187
if test "$pgac_cv_func_posix_signals" != yes -a "$enable_thread_safety" = yes; then
1189
*** Thread-safety requires POSIX signals, which are not supported by your
1190
*** operating system.
1194
if test $ac_cv_func_fseeko = yes; then
1199
# Select semaphore implementation type.
1200
if test x"$USE_NAMED_POSIX_SEMAPHORES" = x"1" ; then
1201
AC_DEFINE(USE_NAMED_POSIX_SEMAPHORES, 1, [Define to select named POSIX semaphores.])
1202
SEMA_IMPLEMENTATION="src/backend/port/posix_sema.c"
1204
if test x"$USE_UNNAMED_POSIX_SEMAPHORES" = x"1" ; then
1205
AC_DEFINE(USE_UNNAMED_POSIX_SEMAPHORES, 1, [Define to select unnamed POSIX semaphores.])
1206
SEMA_IMPLEMENTATION="src/backend/port/posix_sema.c"
1208
AC_DEFINE(USE_SYSV_SEMAPHORES, 1, [Define to select SysV-style semaphores.])
1209
SEMA_IMPLEMENTATION="src/backend/port/sysv_sema.c"
1214
# Select shared-memory implementation type.
1215
AC_DEFINE(USE_SYSV_SHARED_MEMORY, 1, [Define to select SysV-style shared memory.])
1216
SHMEM_IMPLEMENTATION="src/backend/port/sysv_shmem.c"
1219
if test "$enable_nls" = yes ; then
1223
# Check for Tcl configuration script tclConfig.sh
1224
if test "$with_tcl" = yes; then
1225
PGAC_PATH_TCLCONFIGSH([$with_tclconfig])
1226
PGAC_EVAL_TCLCONFIGSH([$TCL_CONFIG_SH],
1227
[TCL_INCLUDE_SPEC,TCL_LIB_FILE,TCL_LIBS,TCL_LIB_SPEC,TCL_SHARED_BUILD])
1228
AC_SUBST(TCL_SHLIB_LD_LIBS)dnl don't want to double-evaluate that one
1229
# now that we have TCL_INCLUDE_SPEC, we can check for <tcl.h>
1230
ac_save_CPPFLAGS=$CPPFLAGS
1231
CPPFLAGS="$TCL_INCLUDE_SPEC $CPPFLAGS"
1232
AC_CHECK_HEADER(tcl.h, [], [AC_MSG_ERROR([header file <tcl.h> is required for Tcl])])
1233
CPPFLAGS=$ac_save_CPPFLAGS
1237
# Check for DocBook and tools
1241
PGAC_CHECK_DOCBOOK(4.2)
1242
PGAC_PATH_DOCBOOK_STYLESHEETS
1243
PGAC_PATH_COLLATEINDEX
1244
AC_CHECK_PROGS(SGMLSPL, sgmlspl)
1248
# We have to run the thread test near the end so we have all our symbols
1249
# defined. Cross compiling throws a warning.
1251
if test "$enable_thread_safety_force" = yes; then
1253
*** Skipping thread test program. --enable-thread-safety-force was used.
1254
*** Run the program in src/tools/thread on the your machine and add
1255
proper locking function calls to your applications to guarantee thread
1258
elif test "$enable_thread_safety" = yes; then
1259
AC_MSG_CHECKING([thread safety of required library functions])
1263
CFLAGS="$CFLAGS $PTHREAD_CFLAGS -DIN_CONFIGURE"
1264
LIBS="$LIBS $PTHREAD_LIBS"
1265
AC_TRY_RUN([#include "$srcdir/src/tools/thread/thread_test.c"],
1266
[AC_MSG_RESULT(yes)],
1269
*** Thread test program failed. Your platform is not thread-safe.
1270
*** Check the file 'config.log'for the exact reason.
1272
*** You can use the configure option --enable-thread-safety-force
1273
*** to force threads to be enabled. However, you must then run
1274
*** the program in src/tools/thread and add locking function calls
1275
*** to your applications to guarantee thread safety.
1277
[AC_MSG_RESULT(maybe)
1279
*** Skipping thread test program because of cross-compile build.
1280
*** Run the program in src/tools/thread on the target machine.
1286
# prepare build tree if outside source tree
1287
# Note 1: test -ef might not exist, but it's more reliable than `pwd`.
1288
# Note 2: /bin/pwd might be better than shell's built-in at getting
1289
# a symlink-free name.
1290
if ( test "$srcdir" -ef . ) >/dev/null 2>&1 || test "`cd $srcdir && /bin/pwd`" = "`/bin/pwd`"; then
1294
if test "$no_create" != yes; then
1295
_AS_ECHO_N([preparing build tree... ])
1296
pgac_abs_top_srcdir=`cd "$srcdir" && pwd`
1297
$SHELL "$ac_aux_dir/prep_buildtree" "$pgac_abs_top_srcdir" "." \
1298
|| AC_MSG_ERROR(failed)
1302
AC_SUBST(vpath_build)
1305
AC_CONFIG_FILES([GNUmakefile src/Makefile.global])
1308
src/backend/port/dynloader.c:src/backend/port/dynloader/${template}.c
1309
src/backend/port/pg_sema.c:${SEMA_IMPLEMENTATION}
1310
src/backend/port/pg_shmem.c:${SHMEM_IMPLEMENTATION}
1311
src/include/dynloader.h:src/backend/port/dynloader/${template}.h
1312
src/include/pg_config_os.h:src/include/port/${template}.h
1313
src/Makefile.port:src/makefiles/Makefile.${template}
1316
if test "$PORTNAME" = "win32"; then
1317
AC_CONFIG_COMMANDS([check_win32_symlinks],[
1318
# Links sometimes fail undetected on Mingw -
1319
# so here we detect it and warn the user
1320
for FILE in $CONFIG_LINKS
1322
# test -e works for symlinks in the MinGW console
1323
test -e `expr "$FILE" : '\([[^:]]*\)'` || AC_MSG_WARN([*** link for $FILE - please fix by hand])
1328
AC_CONFIG_HEADERS([src/include/pg_config.h],
1330
# Update timestamp for pg_config.h (see Makefile.global)
1331
echo >src/include/stamp-h