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