]> granicus.if.org Git - postgresql/blob - configure.in
Fix CFLAGS selection to actually work. Add test to detect whether gcc's
[postgresql] / configure.in
1 dnl Process this file with autoconf to produce a configure script.
2 dnl $Header: /cvsroot/pgsql/configure.in,v 1.298 2003/10/25 15:32:11 petere Exp $
3 dnl
4 dnl Developers, please strive to achieve this order:
5 dnl
6 dnl 0. Initialization and options processing
7 dnl 1. Programs
8 dnl 2. Libraries
9 dnl 3. Header files
10 dnl 4. Types
11 dnl 5. Structures
12 dnl 6. Compiler characteristics
13 dnl 7. Functions, global variables
14 dnl 8. System services
15 dnl
16 dnl Read the Autoconf manual for details.
17 dnl
18 m4_pattern_forbid(^PGAC_)dnl to catch undefined macros
19 dnl
20 dnl The GNU folks apparently haven't heard that some people don't use
21 dnl Texinfo. Use this sorcery to use "docdir" instead of "infodir".
22 m4_define([info], [doc])
23 m4_define([infodir], [docdir])
24 AC_INIT([PostgreSQL], [7.4beta5], [pgsql-bugs@postgresql.org])
25 m4_undefine([infodir])
26 m4_undefine([info])
27 AC_SUBST(docdir)
28
29 AC_PREREQ(2.53)
30 AC_COPYRIGHT([Copyright 2003 PostgreSQL Global Development Group])
31 AC_CONFIG_SRCDIR([src/backend/access/common/heaptuple.c])
32 AC_CONFIG_AUX_DIR(config)
33 AC_PREFIX_DEFAULT(/usr/local/pgsql)
34 AC_SUBST(configure_args, [$ac_configure_args])
35
36 AC_DEFINE_UNQUOTED(PG_VERSION, "$PACKAGE_VERSION", [PostgreSQL version])
37
38 AC_CANONICAL_HOST
39
40 template=
41 AC_MSG_CHECKING([which template to use])
42
43 PGAC_ARG_REQ(with, template, [],
44 [
45   case $withval in
46     list)   echo; ls "$srcdir/src/template"; exit;;
47     *)      if test -f "$srcdir/src/template/$with_template" ; then
48               template=$withval
49             else
50               AC_MSG_ERROR(['$withval' is not a valid template name. Use 'list' for a list.])
51             fi;;
52   esac
53 ],
54 [
55 # --with-template not given
56
57 case $host_os in
58      aix*) template=aix ;;
59     beos*) template=beos ;;
60     bsdi*) template=bsdi ;;
61   cygwin*) template=cygwin ;;
62   darwin*) template=darwin ;;
63     dgux*) template=dgux ;;
64  freebsd*) template=freebsd ;;
65     hpux*) template=hpux ;;
66     irix*) template=irix5 ;;
67    linux*) template=linux ;;
68    mingw*) template=win32 ;;
69   netbsd*) template=netbsd ;;
70 nextstep*) template=nextstep ;;
71  openbsd*) template=openbsd ;;
72      osf*) template=osf ;;
73      qnx*) template=qnx4 ;;
74      sco*) template=sco ;;
75  solaris*) template=solaris ;;
76    sunos*) template=sunos4 ;;
77  sysv4.2*)
78         case $host_vendor in
79           univel) template=univel ;;
80         esac ;;
81    sysv4*) template=svr4 ;;
82    sysv5*) template=unixware ;;
83   ultrix*) template=ultrix4 ;;
84 esac
85
86   if test x"$template" = x"" ; then
87     AC_MSG_ERROR([[
88 *******************************************************************
89 PostgreSQL has apparently not been ported to your platform yet.
90 To try a manual configuration, look into the src/template directory
91 for a similar platform and use the '--with-template=' option.
92
93 Please also contact <pgsql-ports@postgresql.org> to see about
94 rectifying this.  Include the above 'checking host system type...'
95 line.
96 *******************************************************************
97 ]])
98   fi
99
100 ])
101
102 AC_MSG_RESULT([$template])
103
104 PORTNAME=$template
105 AC_SUBST(PORTNAME)
106
107 # Pick right test-and-set (TAS) code.  Most platforms have inline
108 # assembler code in src/include/storage/s_lock.h, so we just use
109 # a dummy file here.
110 case $host in
111   hppa*-*-hpux*)        need_tas=yes; tas_file=hpux_hppa.s ;;
112   sparc-*-solaris*) need_tas=yes; tas_file=solaris_sparc.s ;;
113   i?86-*-solaris*)   need_tas=yes; tas_file=solaris_i386.s ;;
114   *)                need_tas=no;  tas_file=dummy.s ;;
115 esac
116 AC_CONFIG_LINKS([src/backend/port/tas.s:src/backend/port/tas/${tas_file}])
117
118 if test "$need_tas" = yes ; then
119   TAS=tas.o
120 fi
121 AC_SUBST(TAS)
122
123
124
125 ##
126 ## Command line options
127 ##
128
129
130 #
131 # Add non-standard directories to the include path
132 #
133 PGAC_ARG_REQ(with, includes, [  --with-includes=DIRS    look for additional header files in DIRS])
134
135
136 #
137 # Add non-standard directories to the library search path
138 #
139 PGAC_ARG_REQ(with, libraries, [  --with-libraries=DIRS   look for additional libraries in DIRS],
140              [LIBRARY_DIRS=$withval])
141
142 PGAC_ARG_REQ(with, libs,      [  --with-libs=DIRS        alternative spelling of --with-libraries],
143              [LIBRARY_DIRS=$withval])
144
145
146 #
147 # 64-bit integer date/time storage (--enable-integer-datetimes)
148 #
149 AC_MSG_CHECKING([whether to build with 64-bit integer date/time support])
150 PGAC_ARG_BOOL(enable, integer-datetimes, no, [  --enable-integer-datetimes  enable 64-bit integer date/time support],
151               [AC_DEFINE([USE_INTEGER_DATETIMES], 1,
152                          [Define to 1 if you want 64-bit integer timestamp and interval support. (--enable-integer-datetimes)])])
153 AC_MSG_RESULT([$enable_integer_datetimes])
154
155
156 #
157 # NLS
158 #
159 AC_MSG_CHECKING([whether NLS is wanted])
160 PGAC_ARG_OPTARG(enable, nls,
161                 [[  --enable-nls[=LANGUAGES]  enable Native Language Support]],
162                 [],
163                 [WANTED_LANGUAGES=$enableval],
164                 [AC_DEFINE(ENABLE_NLS, 1,
165                            [Define to 1 if you want National Language Support. (--enable-nls)])])
166 AC_MSG_RESULT([$enable_nls])
167 AC_SUBST(enable_nls)
168 AC_SUBST(WANTED_LANGUAGES)
169
170 #
171 # Default port number (--with-pgport), default 5432
172 #
173 AC_MSG_CHECKING([for default port number])
174 PGAC_ARG_REQ(with, pgport, [  --with-pgport=PORTNUM   change default port number [5432]],
175              [default_port=$withval],
176              [default_port=5432])
177 AC_MSG_RESULT([$default_port])
178 # Need both of these because some places want an integer and some a string
179 AC_DEFINE_UNQUOTED(DEF_PGPORT, ${default_port},
180 [Define to the default TCP port number on which the server listens and
181 to which clients will try to connect.  This can be overridden at run-time,
182 but it's convenient if your clients have the right default compiled in.
183 (--with-pgport=PORTNUM)])
184 AC_DEFINE_UNQUOTED(DEF_PGPORT_STR, "${default_port}",
185                    [Define to the default TCP port number as a string constant.])
186 AC_SUBST(default_port)
187
188 #
189 # Option to disable shared libraries
190 #
191 PGAC_ARG_BOOL(enable, shared, yes,
192               [  --disable-shared        do not build shared libraries])
193 AC_SUBST(enable_shared)
194
195 #
196 # '-rpath'-like feature can be disabled
197 #
198 PGAC_ARG_BOOL(enable, rpath, yes,
199               [  --disable-rpath         do not embed shared library search path in executables])
200 AC_SUBST(enable_rpath)
201
202 #
203 # Spinlocks
204 #
205 PGAC_ARG_BOOL(enable, spinlocks, yes,
206               [  --disable-spinlocks     do not use spinlocks])
207
208 #
209 # --enable-debug adds -g to compiler flags
210 #
211 PGAC_ARG_BOOL(enable, debug, no,
212               [  --enable-debug          build with debugging symbols (-g)])
213 AC_SUBST(enable_debug)
214
215 #
216 # C compiler
217 #
218
219 # For historical reasons you can also use --with-CC to specify the C compiler
220 # to use, although the standard way to do this is to set the CC environment
221 # variable.
222 PGAC_ARG_REQ(with, CC, [], [CC=$with_CC])
223
224 case $template in
225   aix) pgac_cc_list="gcc xlc";;
226  irix) pgac_cc_list="cc";; # no gcc
227     *) pgac_cc_list="gcc cc";;
228 esac
229
230 AC_PROG_CC([$pgac_cc_list])
231
232 pgac_CFLAGS_before_template=$CFLAGS
233
234 #
235 # Read the template
236 #
237 . "$srcdir/src/template/$template" || exit
238
239 # CFLAGS are selected so:
240 # If the user specifies something in the environment, that is used.
241 # else:  If the template file set something, that is used.
242 # else:  If the compiler is GCC, then we use -O2.
243 # else:  If the compiler is something else, then we use -0.
244
245 if test "$ac_env_CFLAGS_set" = set; then
246   CFLAGS=$ac_env_CFLAGS_value
247 elif test "$pgac_CFLAGS_before_template" != "$CFLAGS"; then
248   : # (keep what template set)
249 elif test "$GCC" = yes; then
250   CFLAGS="-O2"
251 else
252   CFLAGS="-O"
253 fi
254
255 # Need to specify -fno-strict-aliasing too in case it's gcc 3.3 or later.
256 PGAC_PROG_CC_NO_STRICT_ALIASING
257
258 # supply -g if --enable-debug
259 if test "$enable_debug" = yes -a "$ac_cv_prog_cc_g" = yes; then
260   CFLAGS="$CFLAGS -g"
261 fi
262
263 AC_MSG_NOTICE([using CFLAGS=$CFLAGS])
264
265 # We already have this in Makefile.win32, but configure needs it too
266 if test "$PORTNAME" = "win32"; then
267   CPPFLAGS="$CPPFLAGS -I$srcdir/src/include/port/win32"
268 fi
269
270 # Check if the compiler still works with the template settings
271 AC_MSG_CHECKING([whether the C compiler still works])
272 AC_TRY_LINK([], [return 0;],
273   [AC_MSG_RESULT(yes)],
274   [AC_MSG_RESULT(no)
275    AC_MSG_ERROR([cannot proceed])])
276
277 # Defend against gcc -ffast-math
278 if test "$GCC" = yes; then
279 AC_TRY_COMPILE([], [@%:@ifdef __FAST_MATH__
280 choke me
281 @%:@endif], [], [AC_MSG_ERROR([do not put -ffast-math in CFLAGS])])
282 fi
283
284 AC_PROG_CPP
285 AC_SUBST(GCC)
286
287 # Create compiler version string
288 if test x"$GCC" = x"yes" ; then
289   cc_string="GCC `${CC} --version | sed q`"
290 else
291   cc_string=$CC
292 fi
293 AC_DEFINE_UNQUOTED(PG_VERSION_STR,
294                    ["PostgreSQL $PACKAGE_VERSION on $host, compiled by $cc_string"],
295                    [A string containing the version number, platform, and C compiler])
296
297
298 #
299 # Automatic dependency tracking
300 #
301 PGAC_ARG_BOOL(enable, depend, no, [  --enable-depend         turn on automatic dependency tracking],
302               [autodepend=yes])
303 AC_SUBST(autodepend)
304
305
306 #
307 # Enable assert checks
308 #
309 PGAC_ARG_BOOL(enable, cassert, no, [  --enable-cassert        enable assertion checks (for debugging)],
310               [AC_DEFINE([USE_ASSERT_CHECKING], 1,
311                          [Define to 1 to build with assertion checks. (--enable-cassert)])])
312
313
314 #
315 # Include directories
316 #
317 ac_save_IFS=$IFS
318 IFS="${IFS}:"
319 # SRCH_INC comes from the template file
320 for dir in $with_includes $SRCH_INC; do
321   if test -d "$dir"; then
322     INCLUDES="$INCLUDES -I$dir"
323   else
324     AC_MSG_WARN([*** Include directory $dir does not exist.])
325   fi
326 done
327 IFS=$ac_save_IFS
328 AC_SUBST(INCLUDES)
329
330
331 #
332 # Library directories
333 #
334 ac_save_IFS=$IFS
335 IFS="${IFS}:"
336 # LIBRARY_DIRS comes from command line, SRCH_LIB from template file.
337 for dir in $LIBRARY_DIRS $SRCH_LIB; do
338   if test -d "$dir"; then
339     LIBDIRS="$LIBDIRS -L$dir"
340   else
341     AC_MSG_WARN([*** Library directory $dir does not exist.])
342   fi
343 done
344 IFS=$ac_save_IFS
345
346 #
347 # Enable thread-safe client libraries
348 #
349 AC_MSG_CHECKING([allow thread-safe client libraries])
350 PGAC_ARG_BOOL(enable, thread-safety, no, [  --enable-thread-safety  make client libraries thread-safe],
351               [AC_DEFINE([USE_THREADS], 1,
352                          [Define to 1 to build client libraries as thread-safe code. (--enable-thread-safety)])])
353 AC_MSG_RESULT([$enable_thread_safety])
354 AC_SUBST(enable_thread_safety)
355
356 #
357 # Tcl/Tk
358 #
359 AC_MSG_CHECKING([whether to build with Tcl])
360 PGAC_ARG_BOOL(with, tcl, no, [  --with-tcl              build Tcl and Tk interfaces])
361 AC_MSG_RESULT([$with_tcl])
362 AC_SUBST([with_tcl])
363
364 # If Tcl is enabled (above) then Tk is also, unless the user disables it using --without-tk
365 AC_MSG_CHECKING([whether to build with Tk])
366 if test "$with_tcl" = yes; then
367   PGAC_ARG_BOOL(with, tk, yes, [  --without-tk            do not build Tk interfaces if Tcl is enabled])
368 else
369   with_tk=no
370 fi
371 AC_MSG_RESULT([$with_tk])
372 AC_SUBST([with_tk])
373
374
375 # We see if the path to the Tcl/Tk configuration scripts is specified.
376 # This will override the use of tclsh to find the paths to search.
377
378 PGAC_ARG_REQ(with, tclconfig, [  --with-tclconfig=DIR    tclConfig.sh and tkConfig.sh are in DIR])
379
380 # We see if the path to the Tk configuration scripts is specified.
381 # This will override the use of tclsh to find the paths to search.
382
383 PGAC_ARG_REQ(with, tkconfig,  [  --with-tkconfig=DIR     tkConfig.sh is in DIR])
384
385 #
386 # Optionally build Perl modules (PL/Perl)
387 #
388 AC_MSG_CHECKING([whether to build Perl modules])
389 PGAC_ARG_BOOL(with, perl, no, [  --with-perl             build Perl modules (PL/Perl)])
390 AC_MSG_RESULT([$with_perl])
391 AC_SUBST(with_perl)
392
393 #
394 # Optionally build Python modules (PL/Python)
395 #
396 AC_MSG_CHECKING([whether to build Python modules])
397 PGAC_ARG_BOOL(with, python, no, [  --with-python           build Python modules (PL/Python)])
398 AC_MSG_RESULT([$with_python])
399 AC_SUBST(with_python)
400
401 #
402 # Optionally build the Java/JDBC tools
403 #
404 AC_MSG_CHECKING([whether to build Java/JDBC tools])
405 PGAC_ARG_BOOL(with, java, no, [  --with-java             build JDBC interface and Java tools],
406 [AC_MSG_RESULT(yes)
407 PGAC_PATH_ANT
408 if test -z "$ANT"; then
409   AC_MSG_ERROR([Ant is required to build Java components
410 If you have Ant already installed, see config.log for details on the failure.])
411 fi
412 if "$ANT" -version | sed q | egrep -v ' 1\.[[5-9]]| [[2-9]]\.' >/dev/null ; then
413   AC_MSG_ERROR([Ant version >= 1.5 is required to build Java components])
414 fi],
415 [AC_MSG_RESULT(no)])
416 AC_SUBST(with_java)
417
418 dnl A note on the Kerberos and OpenSSL options:
419 dnl
420 dnl The user can give an argument to the option in order the specify
421 dnl the base path of the respective installation (what he specified
422 dnl perhaps as --prefix). If no argument is given ($withval is "yes")
423 dnl then we take the path where the package installs by default. This
424 dnl way the user doesn't have to use redundant --with-includes and
425 dnl --with-libraries options, but he can still use them if the layout
426 dnl is non-standard.
427
428 #
429 # Kerberos 4
430 #
431 AC_MSG_CHECKING([whether to build with Kerberos 4 support])
432 PGAC_ARG_OPTARG(with, krb4, [[  --with-krb4[=DIR]       build with Kerberos 4 support [/usr/athena]]],
433                 [krb4_prefix=/usr/athena],
434                 [krb4_prefix=$withval],
435 [
436   AC_MSG_RESULT(yes)
437   AC_DEFINE(KRB4, 1, [Define to build with Kerberos 4 support. (--with-krb4)])
438
439   if test -d "$krb4_prefix/include"; then
440     INCLUDES="$INCLUDES -I$krb4_prefix/include"
441   fi
442   if test -d "$krb4_prefix/lib"; then
443     LIBDIRS="$LIBDIRS -L$krb4_prefix/lib"
444   fi
445
446   krb_srvtab="/etc/srvtab"
447 ],
448 [AC_MSG_RESULT(no)])
449
450 AC_SUBST(with_krb4)
451
452
453 #
454 # Kerberos 5
455 #
456 AC_MSG_CHECKING([whether to build with Kerberos 5 support])
457 PGAC_ARG_OPTARG(with, krb5, [[  --with-krb5[=DIR]       build with Kerberos 5 support [/usr/athena]]],
458               [krb5_prefix=/usr/athena],
459               [krb5_prefix=$withval],
460 [
461   AC_MSG_RESULT([yes])
462   AC_DEFINE(KRB5, 1, [Define to build with Kerberos 5 support. (--with-krb5)])
463
464   if test -d "$krb5_prefix/include"; then
465     INCLUDES="$INCLUDES -I$krb5_prefix/include"
466   fi
467   if test -d "$krb5_prefix/lib"; then
468     LIBDIRS="$LIBDIRS -L$krb5_prefix/lib"
469   fi
470
471   krb_srvtab="FILE:\$(sysconfdir)/krb5.keytab"
472 ],
473 [AC_MSG_RESULT(no)])
474
475 AC_SUBST(with_krb5)
476
477
478 # Using both Kerberos 4 and Kerberos 5 at the same time isn't going to work.
479 if test "$with_krb4" = yes && test "$with_krb5" = yes ; then
480   AC_MSG_ERROR([Kerberos 4 and Kerberos 5 support cannot be combined])
481 fi
482
483 AC_SUBST(krb_srvtab)
484
485
486 #
487 # Kerberos configuration parameters
488 #
489 PGAC_ARG_REQ(with, krb-srvnam,
490              [  --with-krb-srvnam=NAME  name of the service principal in Kerberos [postgres]],
491              [],
492              [with_krb_srvnam="postgres"])
493 AC_DEFINE_UNQUOTED([PG_KRB_SRVNAM], ["$with_krb_srvnam"],
494                    [Define to the name of the PostgreSQL service principal in Kerberos. (--with-krb-srvnam=NAME)])
495
496
497 #
498 # PAM
499 #
500 AC_MSG_CHECKING([whether to build with PAM support])
501 PGAC_ARG_BOOL(with, pam, no,
502               [  --with-pam              build with PAM support],
503               [AC_DEFINE([USE_PAM], 1, [Define to 1 to build with PAM support. (--with-pam)])])
504 AC_MSG_RESULT([$with_pam])
505 AC_SUBST(with_pam)
506
507
508 #
509 # Rendezvous
510 #
511 AC_MSG_CHECKING([whether to build with Rendezvous support])
512 PGAC_ARG_BOOL(with, rendezvous, no,
513               [  --with-rendezvous       build with Rendezvous support],
514               [AC_DEFINE([USE_RENDEZVOUS], 1, [Define to 1 to build with Rendezvous support. (--with-rendezvous)])])
515 AC_MSG_RESULT([$with_rendezvous])
516 AC_SUBST(with_rendezvous)
517
518
519 #
520 # OpenSSL
521 #
522 PGAC_ARG_OPTARG(with, openssl,
523                 [[  --with-openssl[=DIR]    build with OpenSSL support [/usr/local/ssl]]],
524                 [openssl_prefix=/usr/local/ssl],
525                 [openssl_prefix=$withval],
526 [
527   AC_MSG_RESULT([building with OpenSSL support])
528   AC_DEFINE([USE_SSL], 1, [Define to build with (Open)SSL support. (--with-openssl)])
529
530   if test -d "${openssl_prefix}/include" ; then
531     INCLUDES="$INCLUDES -I${openssl_prefix}/include"
532   fi
533   if test -d "${openssl_prefix}/lib" ; then
534     LIBDIRS="$LIBDIRS -L${openssl_prefix}/lib"
535   fi
536 ])
537
538 AC_SUBST(with_openssl)
539
540
541 #
542 # Readline
543 #
544 PGAC_ARG_BOOL(with, readline, yes,
545               [  --without-readline      do not use Readline])
546
547 #
548 # Zlib
549 #
550 PGAC_ARG_BOOL(with, zlib, yes,
551               [  --without-zlib          do not use Zlib])
552
553 #
554 # Elf
555 #
556
557 # Assume system is ELF if it predefines __ELF__ as 1,
558 # otherwise believe host_os based default.
559 case $host_os in
560     freebsd1*|freebsd2*) elf=no;;
561     freebsd3*|freebsd4*) elf=yes;;
562 esac
563
564 AC_EGREP_CPP(yes,
565 [#if __ELF__
566   yes
567 #endif
568 ],
569 [ELF_SYS=true],
570 [if test "X$elf" = "Xyes" ; then
571   ELF_SYS=true
572 else
573   ELF_SYS=
574 fi])
575 AC_SUBST(ELF_SYS)
576
577 #
578 # Assignments
579 #
580
581 CPPFLAGS="$CPPFLAGS $INCLUDES"
582 LDFLAGS="$LDFLAGS $LIBDIRS"
583
584 AC_MSG_NOTICE([using CPPFLAGS=$CPPFLAGS])
585 AC_MSG_NOTICE([using LDFLAGS=$LDFLAGS])
586
587
588 AC_PROG_AWK
589 PGAC_PATH_FLEX
590 AC_PROG_LN_S
591 AC_PROG_LD
592 AC_SUBST(LD)
593 AC_SUBST(with_gnu_ld)
594 case $host_os in sysv5*)
595   AC_CACHE_CHECK([whether ld -R works], [pgac_cv_prog_ld_R],
596   [
597     pgac_save_LDFLAGS=$LDFLAGS; LDFLAGS="$LDFLAGS -Wl,-R/usr/lib"
598     AC_TRY_LINK([], [], [pgac_cv_prog_ld_R=yes], [pgac_cv_prog_ld_R=no])
599     LDFLAGS=$pgac_save_LDFLAGS
600   ])
601   ld_R_works=$pgac_cv_prog_ld_R
602   AC_SUBST(ld_R_works)
603 esac
604 AC_PROG_RANLIB
605 AC_CHECK_PROGS(LORDER, lorder)
606 AC_PATH_PROG(TAR, tar)
607 PGAC_CHECK_STRIP
608
609 AC_CHECK_PROGS(YACC, ['bison -y'])
610
611 if test "$YACC"; then
612   if $YACC --version | sed q | $AWK '{ if ($4 < 1.875) exit 0; else exit 1;}'; then
613     AC_MSG_WARN([
614 *** The installed version of Bison is too old.  PostgreSQL needs
615 *** Bison version 1.875 or later.])
616   fi
617 fi
618
619 if test -z "$YACC"; then
620   AC_MSG_WARN([
621 *** Without Bison you will not be able to build PostgreSQL from CVS or
622 *** change any of the parser definition files.  You can obtain Bison from
623 *** a GNU mirror site.  (If you are using the official distribution of
624 *** PostgreSQL then you do not need to worry about this because the Bison
625 *** output is pre-generated.)  To use a different yacc program (possible,
626 *** but not recommended), set the environment variable YACC before running
627 *** 'configure'.])
628 fi
629 AC_SUBST(YFLAGS)
630
631 PGAC_PATH_PERL
632 if test "$with_perl" = yes; then
633   PGAC_CHECK_PERL_CONFIGS([archlibexp,privlibexp,useshrplib])
634   PGAC_CHECK_PERL_EMBED_LDFLAGS
635 fi
636
637 if test "$with_python" = yes; then
638   PGAC_PATH_PYTHON
639   PGAC_CHECK_PYTHON_EMBED_SETUP
640 fi
641
642
643 ##
644 ## Libraries
645 ##
646
647 if test "$PORTNAME" != "aix" -a "$PORTNAME" != "alpha"
648 then
649         AC_CHECK_LIB(bsd,      main)
650 fi
651 AC_CHECK_LIB(util,     setproctitle)
652 AC_CHECK_LIB(m,        main)
653 AC_CHECK_LIB(dl,       main)
654 AC_CHECK_LIB(nsl,      main)
655 AC_CHECK_LIB(socket,   main)
656 AC_CHECK_LIB(ipc,      main)
657 AC_CHECK_LIB(IPC,      main)
658 AC_CHECK_LIB(lc,       main)
659 AC_CHECK_LIB(dld,      main)
660 AC_CHECK_LIB(ld,       main)
661 AC_CHECK_LIB(compat,   main)
662 AC_CHECK_LIB(BSD,      main)
663 AC_CHECK_LIB(gen,      main)
664 AC_CHECK_LIB(PW,       main)
665 AC_CHECK_LIB(resolv,   main)
666 AC_SEARCH_LIBS(getopt_long, [getopt gnugetopt])
667 # QNX:
668 AC_CHECK_LIB(unix, main)
669 AC_SEARCH_LIBS(crypt,  crypt)
670 # BeOS:
671 if test "$PORTNAME" = "beos"
672 then
673         AC_CHECK_LIB(bind, __inet_ntoa)
674 fi
675 # Solaris:
676 AC_SEARCH_LIBS(fdatasync, [rt posix4])
677 # Cygwin:
678 AC_CHECK_LIB(cygipc, shmget)
679 # WIN32:
680 if test "$PORTNAME" = "win32"
681 then
682         AC_CHECK_LIB(wsock32, main)
683 fi
684
685 if test "$with_readline" = yes; then
686   PGAC_CHECK_READLINE
687   if test x"$pgac_cv_check_readline" = x"no"; then
688     AC_MSG_ERROR([readline library not found
689 If you have readline already installed, see config.log for details on the
690 failure.  It is possible the compiler isn't looking in the proper directory.
691 Use --without-readline to disable readline support.])
692   fi
693 fi
694
695 if test "$with_zlib" = yes; then
696   AC_CHECK_LIB(z, inflate, [],
697                [AC_MSG_ERROR([zlib library not found
698 If you have zlib already installed, see config.log for details on the
699 failure.  It is possible the compiler isn't looking in the proper directory.
700 Use --without-zlib to disable zlib support.])])
701 fi
702
703 if test "$enable_spinlocks" = yes; then
704   AC_DEFINE(HAVE_SPINLOCKS, 1, [Define to 1 if you have spinlocks.])
705 else
706   AC_MSG_WARN([
707 *** Not using spinlocks will cause poor performance.])
708 fi
709
710 if test "$with_krb4" = yes ; then
711   AC_CHECK_LIB(des, des_encrypt, [], [AC_MSG_ERROR([library 'des' is required for Kerberos 4])])
712   AC_CHECK_LIB(krb, krb_sendauth, [], [AC_MSG_ERROR([library 'krb' is required for Kerberos 4])])
713   AC_REPLACE_FUNCS([gethostname])
714 fi
715
716 if test "$with_krb5" = yes ; then
717   AC_SEARCH_LIBS(com_err, [krb5 'krb5 -ldes -lasn1 -lroken' com_err], [],
718                  [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
719   AC_SEARCH_LIBS(krb5_encrypt, [krb5 'krb5 -ldes -lasn1 -lroken' crypto k5crypto], [],
720                  [AC_MSG_ERROR([could not find function 'krb5_encrypt' required for Kerberos 5])])
721   AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -ldes -lasn1 -lroken'], [],
722                  [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
723 fi
724
725 if test "$with_openssl" = yes ; then
726   dnl Order matters!
727   AC_CHECK_LIB(crypto, CRYPTO_new_ex_data, [], [AC_MSG_ERROR([library 'crypto' is required for OpenSSL])])
728   AC_CHECK_LIB(ssl,    SSL_library_init, [], [AC_MSG_ERROR([library 'ssl' is required for OpenSSL])])
729 fi
730
731 if test "$with_pam" = yes ; then
732   AC_CHECK_LIB(pam,    pam_start, [], [AC_MSG_ERROR([library 'pam' is required for PAM])])
733 fi
734
735
736 ##
737 ## Header files
738 ##
739
740 dnl sys/socket.h is required by AC_FUNC_ACCEPT_ARGTYPES
741 AC_CHECK_HEADERS([crypt.h dld.h endian.h fp_class.h getopt.h ieeefp.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/un.h termios.h utime.h kernel/OS.h kernel/image.h SupportDefs.h])
742
743 # At least on IRIX, cpp test for netinet/tcp.h will fail unless
744 # netinet/in.h is included first.
745 AC_CHECK_HEADERS(netinet/in.h)
746 AC_CHECK_HEADERS(netinet/tcp.h, [], [],
747 [AC_INCLUDES_DEFAULT
748 #ifdef HAVE_NETINET_IN_H
749 #include <netinet/in.h>
750 #endif
751 ])
752
753 if test "$with_readline" = yes; then
754   AC_CHECK_HEADERS(readline/readline.h, [],
755                    [AC_CHECK_HEADERS(editline/readline.h, [],
756                          [AC_CHECK_HEADERS(readline.h, [],
757                                      [AC_MSG_ERROR([readline header not found
758 If you have readline already installed, see config.log for details on the
759 failure.  It is possible the compiler isn't looking in the proper directory.
760 Use --without-readline to disable readline support.])])])])
761   AC_CHECK_HEADERS(readline/history.h, [],
762                    [AC_CHECK_HEADERS(editline/history.h, [],
763                          [AC_CHECK_HEADERS(history.h, [],
764                                      [AC_MSG_ERROR([history header not found
765 If you have readline already installed, see config.log for details on the
766 failure.  It is possible the compiler isn't looking in the proper directory.
767 Use --without-readline to disable readline support.])])])])
768 fi
769
770 if test "$with_zlib" = yes; then
771   AC_CHECK_HEADER(zlib.h, [], [AC_MSG_ERROR([zlib header not found
772 If you have zlib already installed, see config.log for details on the
773 failure.  It is possible the compiler isn't looking in the proper directory.
774 Use --without-zlib to disable zlib support.])])
775 fi
776
777 if test "$with_krb4" = yes ; then
778   AC_CHECK_HEADER(krb.h, [], [AC_MSG_ERROR([header file <krb.h> is required for Kerberos 4])])
779 fi
780
781 if test "$with_krb5" = yes ; then
782   AC_CHECK_HEADER(krb5.h, [], [AC_MSG_ERROR([header file <krb5.h> is required for Kerberos 5])])
783   AC_CHECK_HEADER(com_err.h, [], [AC_MSG_ERROR([header file <com_err.h> is required for Kerberos 5])])
784 fi
785
786 if test "$with_openssl" = yes ; then
787   AC_CHECK_HEADER(openssl/ssl.h, [], [AC_MSG_ERROR([header file <openssl/ssl.h> is required for OpenSSL])])
788   AC_CHECK_HEADER(openssl/err.h, [], [AC_MSG_ERROR([header file <openssl/err.h> is required for OpenSSL])])
789 fi
790
791 if test "$with_pam" = yes ; then
792   AC_CHECK_HEADERS(security/pam_appl.h, [],
793                    [AC_CHECK_HEADERS(pam/pam_appl.h, [],
794                                      [AC_MSG_ERROR([header file <security/pam_appl.h> or <pam/pam_appl.h> is required for PAM.])])])
795 fi
796
797 if test "$with_rendezvous" = yes ; then
798   AC_CHECK_HEADER(DNSServiceDiscovery/DNSServiceDiscovery.h, [], [AC_MSG_ERROR([header file <DNSServiceDiscovery/DNSServiceDiscovery.h> is required for Rendezvous])])
799 fi
800
801
802 ##
803 ## Types, structures, compiler characteristics
804 ##
805
806 m4_defun([AC_PROG_CC_STDC], []) dnl We don't want that.
807 AC_C_CONST
808 AC_C_INLINE
809 AC_C_STRINGIZE
810 PGAC_C_SIGNED
811 AC_C_VOLATILE
812 PGAC_C_FUNCNAME_SUPPORT
813 PGAC_STRUCT_TIMEZONE
814 PGAC_UNION_SEMUN
815 PGAC_STRUCT_SOCKADDR_UN
816 PGAC_STRUCT_SOCKADDR_STORAGE
817 PGAC_STRUCT_SOCKADDR_STORAGE_MEMBERS
818 PGAC_STRUCT_ADDRINFO
819
820 AC_CHECK_TYPES([struct cmsgcred, struct fcred, struct sockcred], [], [],
821 [#include <sys/param.h>
822 #include <sys/types.h>
823 #include <sys/socket.h>
824 #include <sys/ucred.h>])
825
826 AC_CHECK_TYPES([struct option], [], [],
827 [#ifdef HAVE_GETOPT_H
828 #include <getopt.h>
829 #endif])
830
831 if test "$with_zlib" = yes; then
832   # Check that <zlib.h> defines z_streamp (versions before about 1.0.4
833   # did not).  While we could work around the lack of z_streamp, it
834   # seems unwise to encourage people to use such old zlib versions...
835   AC_CHECK_TYPE(z_streamp, [], [AC_MSG_ERROR([zlib version is too old
836 Use --without-zlib to disable zlib support.])],
837                 [#include <zlib.h>])
838 fi
839
840 if test "$with_krb5" = yes; then
841 # Check for differences between MIT and Heimdal (KTH) releases
842   AC_CHECK_MEMBERS(krb5_ticket.enc_part2, [],
843                    [AC_CHECK_MEMBERS(krb5_ticket.client, [],
844                                      [AC_MSG_ERROR([could not determine how to get client name from Kerberos 5 ticket])],
845                                      [#include <krb5.h>])],
846                    [#include <krb5.h>])
847   AC_CHECK_MEMBERS(krb5_error.text.data, [],
848                    [AC_CHECK_MEMBERS(krb5_error.e_data, [],
849                                      [AC_MSG_ERROR([could not determine how to extract Kerberos 5 error messages])],
850                                      [#include <krb5.h>])],
851                    [#include <krb5.h>])
852 fi
853
854
855 ##
856 ## Functions, global variables
857 ##
858
859 PGAC_VAR_INT_TIMEZONE
860 AC_FUNC_ACCEPT_ARGTYPES
861 PGAC_FUNC_GETTIMEOFDAY_1ARG
862
863 # SunOS doesn't handle negative byte comparisons properly with +/- return
864 AC_FUNC_MEMCMP
865
866 AC_CHECK_FUNCS([cbrt dlopen fcvt fdatasync getpeereid memmove poll pstat setproctitle setsid sigprocmask symlink sysconf utime utimes waitpid])
867
868 AC_CHECK_DECLS(fdatasync, [], [], [#include <unistd.h>])
869
870 HAVE_IPV6=no
871 AC_CHECK_TYPE([struct sockaddr_in6],
872               [AC_CHECK_FUNC(inet_ntop,
873                              [AC_DEFINE(HAVE_IPV6, 1, [Define to 1 if you have support for IPv6.])
874                                                           HAVE_IPV6=yes])],
875               [],
876 [$ac_includes_default
877 #include <netinet/in.h>])
878 AC_SUBST(HAVE_IPV6)
879
880 AC_CACHE_CHECK([for PS_STRINGS], [pgac_cv_var_PS_STRINGS],
881 [AC_TRY_LINK(
882 [#include <machine/vmparam.h>
883 #include <sys/exec.h>
884 ],
885 [PS_STRINGS->ps_nargvstr = 1;
886 PS_STRINGS->ps_argvstr = "foo";],
887 [pgac_cv_var_PS_STRINGS=yes],
888 [pgac_cv_var_PS_STRINGS=no])])
889 if test "$pgac_cv_var_PS_STRINGS" = yes ; then
890   AC_DEFINE([HAVE_PS_STRINGS], [], [Define to 1 if the PS_STRINGS thing exists.])
891 fi
892
893
894 # We use our snprintf.c emulation if either snprintf() or vsnprintf()
895 # is missing.  Yes, there are machines that have only one.  We may
896 # also decide to use snprintf.c if snprintf() is present but does not
897 # have working "long long int" support -- see below.
898
899 pgac_need_repl_snprintf=no
900 AC_CHECK_FUNCS(snprintf, [], pgac_need_repl_snprintf=yes)
901 AC_CHECK_FUNCS(vsnprintf, [], pgac_need_repl_snprintf=yes)
902
903
904 # Check whether <stdio.h> declares snprintf() and vsnprintf(); if not,
905 # include/c.h will provide declarations.  Note this is a separate test
906 # from whether the functions exist in the C library --- there are
907 # systems that have the functions but don't bother to declare them :-(
908
909 AC_CHECK_DECLS([snprintf, vsnprintf])
910
911
912 # do this one the hard way in case isinf() is a macro
913 AC_CACHE_CHECK([for isinf], ac_cv_func_isinf,
914 [AC_TRY_LINK(
915 [#include <math.h>
916 ],
917 [double x = 0.0; int res = isinf(x);],
918 [ac_cv_func_isinf=yes],
919 [ac_cv_func_isinf=no])])
920
921 if test $ac_cv_func_isinf = yes ; then
922   AC_DEFINE(HAVE_ISINF, 1, [Define to 1 if you have isinf().])
923 else
924   AC_LIBOBJ(isinf)
925   # Look for a way to implement a substitute for isinf()
926   AC_CHECK_FUNCS([fpclass fp_class fp_class_d class], [break])
927 fi
928
929 AC_REPLACE_FUNCS([crypt fseeko getopt getrusage inet_aton random rint srandom strcasecmp strdup strerror strtol strtoul])
930
931 # system's version of getaddrinfo(), if any, may be used only if we found
932 # a definition for struct addrinfo; see notes in src/include/getaddrinfo.h
933 if test x"$ac_cv_type_struct_addrinfo" = xyes ; then
934   AC_REPLACE_FUNCS([getaddrinfo])
935 else
936   AC_LIBOBJ(getaddrinfo)
937 fi
938
939 # similarly, use system's getopt_long() only if system provides struct option.
940 if test x"$ac_cv_type_struct_option" = xyes ; then
941   AC_REPLACE_FUNCS([getopt_long])
942 else
943   AC_LIBOBJ(getopt_long)
944 fi
945
946 # BSD/OS & NetBSD use a custom fseeko/ftello built on fsetpos/fgetpos
947 # We override the previous test that said fseeko/ftello didn't exist
948 # OS tests are also done in include/c.h and port/fseeko.c
949 case $host_os in bsdi*|netbsd*)
950 ac_cv_func_fseeko=yes
951 esac
952
953 # Solaris has a very slow qsort in certain cases, so we replace it.
954 case $host_os in solaris*) 
955 AC_LIBOBJ(qsort) ;;
956 esac
957
958 # Win32 can't to rename or unlink on an open file
959 case $host_os in mingw*)
960 AC_LIBOBJ(dirmod)
961 AC_LIBOBJ(copydir)
962 AC_LIBOBJ(gettimeofday) ;;
963 esac
964
965 if test "$with_readline" = yes; then
966   PGAC_VAR_RL_COMPLETION_APPEND_CHARACTER
967   AC_CHECK_FUNCS([rl_completion_matches rl_filename_completion_function])
968   AC_CHECK_FUNCS([replace_history_entry])
969 fi
970
971
972 dnl Cannot use AC_CHECK_FUNC because finite may be a macro
973 AC_MSG_CHECKING(for finite)
974 AC_TRY_LINK([#include <math.h>],
975             [int dummy=finite(1.0);],
976             [AC_DEFINE(HAVE_FINITE, 1, [Define to 1 if you have finite().])
977 AC_MSG_RESULT(yes)],
978             [AC_MSG_RESULT(no)])
979
980 dnl Cannot use AC_CHECK_FUNC because sigsetjmp may be a macro
981 dnl (especially on GNU libc)
982 dnl See also comments in c.h.
983 AC_MSG_CHECKING(for sigsetjmp)
984 AC_TRY_LINK([#include <setjmp.h>],
985             [sigjmp_buf x; sigsetjmp(x, 1);],
986             [AC_DEFINE(HAVE_SIGSETJMP, 1, [Define to 1 if you have sigsetjmp().])
987 AC_MSG_RESULT(yes)],
988             [AC_MSG_RESULT(no)])
989
990 AC_CHECK_FUNC(syslog,
991               [AC_CHECK_HEADER(syslog.h,
992                                [AC_DEFINE(HAVE_SYSLOG, 1, [Define to 1 if you have the syslog interface.])])])
993
994 AC_CACHE_CHECK([for optreset], pgac_cv_var_int_optreset,
995 [AC_TRY_LINK([#include <unistd.h>],
996   [extern int optreset; optreset = 1;],
997   [pgac_cv_var_int_optreset=yes],
998   [pgac_cv_var_int_optreset=no])])
999 if test x"$pgac_cv_var_int_optreset" = x"yes"; then
1000   AC_DEFINE(HAVE_INT_OPTRESET, 1, [Define to 1 if you have the global variable 'int optreset'.])
1001 fi
1002
1003 AC_CHECK_FUNCS([strtoll strtoq], [break])
1004 AC_CHECK_FUNCS([strtoull strtouq], [break])
1005
1006 # Check for one of atexit() or on_exit()
1007 AC_CHECK_FUNCS(atexit, [],
1008                [AC_CHECK_FUNCS(on_exit, [],
1009                [AC_MSG_ERROR([neither atexit() nor on_exit() found])])])
1010
1011 AC_FUNC_FSEEKO
1012
1013 #
1014 # Pthreads
1015 #
1016 # For each platform, we need to know about any special compile and link
1017 # libraries, and whether the normal C function names are thread-safe.
1018 # See the comment at the top of src/port/thread.c for more information.
1019 #
1020 if test "$enable_thread_safety" = yes; then
1021 AC_CHECK_HEADER(pthread.h, [], [AC_MSG_ERROR([pthread.h not found, required for --enable-thread-safetys])])
1022
1023 if test "$THREAD_SUPPORT" != yes; then
1024 AC_MSG_ERROR([
1025 Cannot enable threads on your platform.
1026 Please report your platform threading info to the PostgreSQL mailing lists
1027 so it can be added to the next release.  Report all compile flags, link flags,
1028 functions, or libraries required for threading support.
1029 See the comment at the top of src/port/thread.c for more information.
1030 ])
1031 fi
1032 else
1033 # do not use values from template file
1034 THREAD_CPPFLAGS=
1035 THREAD_LIBS=
1036 fi
1037 AC_SUBST(THREAD_SUPPORT)
1038 AC_SUBST(THREAD_CPPFLAGS)
1039 AC_SUBST(THREAD_LIBS)
1040
1041
1042 #
1043 # Check for re-entrant versions of certain functions
1044 #
1045 # Include special flags if threads are enabled _and_ if required for 
1046 # threading on this platform.  Some platforms have *_r functions but
1047 # their natively named funcs are threadsafe, and should be used instead.
1048 #
1049 # One trick here is that if we don't call AC_CHECK_FUNCS, the
1050 # functions are marked "not found", which is perfect.
1051 #
1052 if test "$enable_thread_safety" = yes -a "$NEED_REENTRANT_FUNCS" = yes ; then
1053 _CFLAGS="$CFLAGS"
1054 _LIBS="$LIBS"
1055 CFLAGS="$CFLAGS $THREAD_CPPFLAGS"
1056 LIBS="$LIBS $THREAD_LIBS"
1057 AC_CHECK_FUNCS([strerror_r getpwuid_r gethostbyname_r])
1058 CFLAGS="$_CFLAGS"
1059 LIBS="$_LIBS"
1060 fi
1061
1062
1063 # This test makes sure that run tests work at all.  Sometimes a shared
1064 # library is found by the linker, but the runtime linker can't find it.
1065 # This check should come after all modifications of compiler or linker
1066 # variables, and before any other run tests.
1067 AC_MSG_CHECKING([test program])
1068 AC_TRY_RUN([int main() { return 0; }],
1069 [AC_MSG_RESULT(ok)],
1070 [AC_MSG_RESULT(failed)
1071 AC_MSG_ERROR([[
1072 *** Could not execute a simple test program.  This may be a problem
1073 *** related to locating shared libraries.  Check the file 'config.log'
1074 *** for the exact reason.]])],
1075 [AC_MSG_RESULT([cross-compiling])])
1076
1077
1078 dnl Check to see if we have a working 64-bit integer type.
1079 dnl This breaks down into two steps:
1080 dnl (1) figure out if the compiler has a 64-bit int type with working
1081 dnl arithmetic, and if so
1082 dnl (2) see whether snprintf() can format the type correctly.  (Currently,
1083 dnl snprintf is the only library routine we really need for int8 support.)
1084 dnl It's entirely possible to have a compiler that handles a 64-bit type
1085 dnl when the C library doesn't; this is fairly likely when using gcc on
1086 dnl an older platform, for example.
1087 dnl If there is no native snprintf() or it does not handle the 64-bit type,
1088 dnl we force our own version of snprintf() to be used instead.
1089 dnl Note this test must be run after our initial check for snprintf/vsnprintf.
1090
1091 PGAC_TYPE_64BIT_INT([long int])
1092
1093 if test x"$HAVE_LONG_INT_64" = x"no" ; then
1094   PGAC_TYPE_64BIT_INT([long long int])
1095 fi
1096
1097
1098 dnl If we need to use "long long int", figure out whether nnnLL notation works.
1099
1100 if test x"$HAVE_LONG_LONG_INT_64" = xyes ; then
1101   AC_TRY_COMPILE([
1102 #define INT64CONST(x)  x##LL
1103 long long int foo = INT64CONST(0x1234567890123456);
1104 ],
1105         [],
1106         [AC_DEFINE(HAVE_LL_CONSTANTS, 1, [Define to 1 if constants of type 'long long int' should have the suffix LL.])],
1107         [])
1108 fi
1109
1110
1111 # If we found "long int" is 64 bits, assume snprintf handles it.  If
1112 # we found we need to use "long long int", better check.  We cope with
1113 # snprintfs that use either %lld, %qd, or %I64d as the format.  If
1114 # neither works, fall back to our own snprintf emulation (which we
1115 # know uses %lld).
1116
1117 if test "$HAVE_LONG_LONG_INT_64" = yes ; then
1118   if test $pgac_need_repl_snprintf = no; then
1119     PGAC_FUNC_SNPRINTF_LONG_LONG_INT_FORMAT
1120     if test "$LONG_LONG_INT_FORMAT" = ""; then
1121       # Force usage of our own snprintf, since system snprintf is broken
1122       pgac_need_repl_snprintf=yes
1123       LONG_LONG_INT_FORMAT='%lld'
1124     fi
1125   else
1126     # Here if we previously decided we needed to use our own snprintf
1127     LONG_LONG_INT_FORMAT='%lld'
1128   fi
1129   INT64_FORMAT="\"$LONG_LONG_INT_FORMAT\""
1130 else
1131   # Here if we are not using 'long long int' at all
1132   INT64_FORMAT='"%ld"'
1133 fi
1134
1135 AC_DEFINE_UNQUOTED(INT64_FORMAT, $INT64_FORMAT,
1136                    [Define to the appropriate snprintf format for 64-bit ints, if any.])
1137
1138 if test $pgac_need_repl_snprintf = yes; then
1139   AC_LIBOBJ(snprintf)
1140 fi
1141
1142 # Need a #define for the size of Datum (unsigned long)
1143 AC_CHECK_SIZEOF([unsigned long])
1144
1145 # Determine memory alignment requirements for the basic C data types.
1146
1147 PGAC_CHECK_ALIGNOF(short)
1148 PGAC_CHECK_ALIGNOF(int)
1149 PGAC_CHECK_ALIGNOF(long)
1150 if test x"$HAVE_LONG_LONG_INT_64" = x"yes" ; then
1151   PGAC_CHECK_ALIGNOF(long long int)
1152 fi
1153 PGAC_CHECK_ALIGNOF(double)
1154
1155 # Compute maximum alignment of any basic type.
1156 # We assume long's alignment is at least as strong as char, short, or int;
1157 # but we must check long long (if it exists) and double.
1158
1159 MAX_ALIGNOF=$pgac_cv_alignof_long
1160 if test $MAX_ALIGNOF -lt $pgac_cv_alignof_double ; then
1161   MAX_ALIGNOF=$pgac_cv_alignof_double
1162 fi
1163 if test x"$HAVE_LONG_LONG_INT_64" = xyes && test $MAX_ALIGNOF -lt $pgac_cv_alignof_long_long_int ; then
1164   MAX_ALIGNOF="$pgac_cv_alignof_long_long_int"
1165 fi
1166 AC_DEFINE_UNQUOTED(MAXIMUM_ALIGNOF, $MAX_ALIGNOF, [Define as the maximum alignment requirement of any C data type.])
1167
1168
1169 # Some platforms predefine the types int8, int16, etc.  Only check
1170 # a (hopefully) representative subset.
1171 AC_CHECK_TYPES([int8, uint8, int64, uint64], [], [],
1172 [#include <stdio.h>
1173 #ifdef HAVE_SUPPORTDEFS_H
1174 #include <SupportDefs.h>
1175 #endif])
1176
1177 # We also check for sig_atomic_t, which *should* be defined per ANSI
1178 # C, but is missing on some old platforms.
1179 AC_CHECK_TYPES(sig_atomic_t, [], [], [#include <signal.h>])
1180
1181
1182 PGAC_FUNC_POSIX_SIGNALS
1183 if test $ac_cv_func_fseeko = yes; then
1184 AC_SYS_LARGEFILE
1185 fi
1186
1187
1188 # Select semaphore implementation type.
1189 if test x"$USE_NAMED_POSIX_SEMAPHORES" = x"1" ; then
1190   AC_DEFINE(USE_NAMED_POSIX_SEMAPHORES, 1, [Define to select named POSIX semaphores.])
1191   SEMA_IMPLEMENTATION="src/backend/port/posix_sema.c"
1192 else
1193   if test x"$USE_UNNAMED_POSIX_SEMAPHORES" = x"1" ; then
1194     AC_DEFINE(USE_UNNAMED_POSIX_SEMAPHORES, 1, [Define to select unnamed POSIX semaphores.])
1195     SEMA_IMPLEMENTATION="src/backend/port/posix_sema.c"
1196   else
1197     AC_DEFINE(USE_SYSV_SEMAPHORES, 1, [Define to select SysV-style semaphores.])
1198     SEMA_IMPLEMENTATION="src/backend/port/sysv_sema.c"
1199   fi
1200 fi
1201
1202
1203 # Select shared-memory implementation type.
1204 AC_DEFINE(USE_SYSV_SHARED_MEMORY, 1, [Define to select SysV-style shared memory.])
1205 SHMEM_IMPLEMENTATION="src/backend/port/sysv_shmem.c"
1206
1207
1208 if test "$enable_nls" = yes ; then
1209   PGAC_CHECK_GETTEXT
1210 fi
1211
1212 # Check for Tcl configuration script tclConfig.sh
1213 if test "$with_tcl" = yes; then
1214     PGAC_PATH_TCLCONFIGSH([$with_tclconfig])
1215     PGAC_EVAL_TCLCONFIGSH([$TCL_CONFIG_SH],
1216                           [TCL_INCLUDE_SPEC,TCL_LIB_FILE,TCL_LIBS,TCL_LIB_SPEC,TCL_SHARED_BUILD])
1217     AC_SUBST(TCL_SHLIB_LD_LIBS)dnl don't want to double-evaluate that one
1218 fi
1219
1220 # Check for Tk configuration script tkConfig.sh
1221 if test "$with_tk" = yes; then
1222     PGAC_PATH_TKCONFIGSH([$with_tkconfig $with_tclconfig])
1223     PGAC_EVAL_TCLCONFIGSH([$TK_CONFIG_SH], [TK_LIBS,TK_LIB_SPEC,TK_XINCLUDES])
1224 fi
1225
1226
1227 #
1228 # Check for DocBook and tools
1229 #
1230 PGAC_PROG_NSGMLS
1231 PGAC_PROG_JADE
1232 PGAC_CHECK_DOCBOOK(3.1)
1233 PGAC_PATH_DOCBOOK_STYLESHEETS
1234 PGAC_PATH_COLLATEINDEX
1235 AC_CHECK_PROGS(SGMLSPL, sgmlspl)
1236
1237
1238 # prepare build tree if outside source tree
1239 # Note 1: test -ef might not exist, but it's more reliable than `pwd`.
1240 # Note 2: /bin/pwd might be better than shell's built-in at getting
1241 #         a symlink-free name.
1242 if test "$no_create" != yes; then
1243   if ( test "$srcdir" -ef . ) >/dev/null 2>&1 || test "`cd $srcdir && /bin/pwd`" = "`/bin/pwd`"; then
1244     :
1245   else
1246     AC_SUBST(vpath_build, yes)
1247     _AS_ECHO_N([preparing build tree... ])
1248     pgac_abs_top_srcdir=`cd "$srcdir" && pwd`
1249     $SHELL "$ac_aux_dir/prep_buildtree" "$pgac_abs_top_srcdir" "." \
1250       || AC_MSG_ERROR(failed)
1251     AC_MSG_RESULT(done)
1252   fi
1253 fi
1254
1255
1256 AC_CONFIG_FILES([GNUmakefile src/Makefile.global])
1257
1258 AC_CONFIG_LINKS([
1259   src/backend/port/dynloader.c:src/backend/port/dynloader/${template}.c
1260   src/backend/port/pg_sema.c:${SEMA_IMPLEMENTATION}
1261   src/backend/port/pg_shmem.c:${SHMEM_IMPLEMENTATION}
1262   src/include/dynloader.h:src/backend/port/dynloader/${template}.h
1263   src/include/pg_config_os.h:src/include/port/${template}.h
1264   src/Makefile.port:src/makefiles/Makefile.${template}
1265 ])
1266
1267 AC_CONFIG_HEADERS([src/include/pg_config.h],
1268 [
1269 # Update timestamp for pg_config.h (see Makefile.global)
1270 echo >src/include/stamp-h
1271 ])
1272
1273 AC_OUTPUT