~vcs-imports/mammoth-replicator/trunk

« back to all changes in this revision

Viewing changes to configure.in

  • Committer: alvherre
  • Date: 2005-12-16 21:24:52 UTC
  • Revision ID: svn-v4:db760fc0-0f08-0410-9d63-cc6633f64896:trunk:1
Initial import of the REL8_0_3 sources from the Pgsql CVS repository.

Show diffs side-by-side

added added

removed removed

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