configure.in 25.5 KB
Newer Older
B
Bruce Momjian 已提交
1
dnl Process this file with autoconf to produce a configure script.
2
AC_INIT(backend/access/common/heaptuple.c)
3
AC_PREFIX_DEFAULT(/usr/local/pgsql)
4
AC_CONFIG_HEADER(include/config.h)
5

6 7 8 9
dnl Autoconf 2.12, at least, generates a useless relative path to install-sh
dnl unless we do this.
AC_CONFIG_AUX_DIR(`pwd`)

10
AC_CANONICAL_HOST
11

12
tas_file=dummy.s
13
case "$host_os" in
14
 solaris*)
B
Bruce Momjian 已提交
15
	case "$host_cpu" in
B
Bruce Momjian 已提交
16
	  sparc) os=solaris_sparc need_tas=yes tas_file=solaris_sparc.s ;;
B
Bruce Momjian 已提交
17
	   i386) os=solaris_i386 need_tas=yes tas_file=solaris_i386.s ;;
B
Bruce Momjian 已提交
18
	esac ;;
19 20 21 22
   sunos*) os=sunos4 need_tas=no ;;
     aux*) os=aux need_tas=no ;;
   linux*) os=linux need_tas=no ;;
    bsdi*) os=bsdi need_tas=no ;;
M
 
Marc G. Fournier 已提交
23
 freebsd3*|freebsd4*) os=freebsd need_tas=no elf=yes ;;
M
 
Marc G. Fournier 已提交
24
 freebsd1*|freebsd2*) os=freebsd need_tas=no ;;
M
 
Marc G. Fournier 已提交
25
  netbsd*|openbsd*) os=bsd need_tas=no ;;
26 27 28 29 30
    dgux*) os=dgux need_tas=no ;;
     aix*) os=aix need_tas=no ;;
nextstep*) os=nextstep need_tas=no ;;
  ultrix*) os=ultrix4 need_tas=no ;;
    irix*) os=irix5 need_tas=no ;;
31
    hpux*) os=hpux need_tas=yes tas_file=hpux.s ;;
32 33 34 35
     osf*) os=alpha need_tas=no ;;
     sco*) os=sco need_tas=no ;;
 machten*) os=machten need_tas=no ;;
  cygwin*) os=win need_tas=no ;;
B
Bruce Momjian 已提交
36
 sysv4.2*)
37
       case "$host_vendor" in
B
Bruce Momjian 已提交
38 39
	       univel) os=univel need_tas=no ;;
		    *) os=unknown need_tas=no ;;
40
       esac ;;
41
   sysv4*) os=svr4 need_tas=no ;;
42
   sysv5*) os=unixware need_tas=no ;;
43 44 45 46
*) echo ""
   echo "*************************************************************"
   echo "configure does not currently recognize your operating system,"
   echo "therefore you must do a manual configuration of:"
47
   echo "$host_os"
48 49 50 51 52 53
   echo "Please contact scrappy@hub.org to see about rectifying this, "
   echo "including the above 'checking host system type...' line "
   echo "*************************************************************"
   echo ""
   exit;;
esac
54

M
 
Marc G. Fournier 已提交
55 56 57 58
if test "X$elf" = "Xyes"
then
	ELF_SYS=true
else
M
 
Marc G. Fournier 已提交
59
	ELF_SYS=
M
 
Marc G. Fournier 已提交
60 61
fi

62
if test "X$need_tas" = "Xyes"
63
then
64
	AC_LINK_FILES(backend/port/tas/${tas_file}, backend/port/tas.s)
65
	TAS=tas.o
B
Bruce Momjian 已提交
66
	AC_SUBST(TAS)
67
fi
68

69
PORTNAME=${os}
70 71 72
AC_LINK_FILES(backend/port/dynloader/${os}.c, backend/port/dynloader.c)
AC_LINK_FILES(backend/port/dynloader/${os}.h, include/dynloader.h)
AC_LINK_FILES(include/port/${os}.h, include/os.h)
B
Bruce Momjian 已提交
73
AC_LINK_FILES(makefiles/Makefile.${os}, Makefile.port)
74

75 76 77 78 79 80 81 82 83 84
echo "checking echo setting..."
if echo '\c' | grep -s c >/dev/null 2>&1
then
	ECHO_N="echo -n"
	ECHO_C=""
else
	ECHO_N="echo"
	ECHO_C='\c'
fi

85
dnl this part selects the template from the ones in the template directory.
86

87 88 89 90 91
AC_MSG_CHECKING(setting template to)
AC_ARG_WITH(template,
    [  --with-template=TEMPLATE
                          use operating system template file 
                              see template directory],
92
    [  TEMPLATE=$withval ],
93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123
    [
# First, try for a template exactly matching $host
if test -f "template/$host"
then TEMPLATE="$host"
else
    # Next try for an exact match to a .similar entry.
    # There shouldn't be multiple matches, but take the last if there are.
    GUESS=`grep "^$host=" template/.similar | sed 's/^.*=//' | tail -1`
    if test "$GUESS"
    then TEMPLATE="$GUESS"
    else
	# Next look for a .similar entry that is a prefix of $host.
	# If there are multiple matches, take the last one.
	exec 4<template/.similar
	while read LINE <&4
	do
	    SIMHOST=`expr "$LINE" : '\(.*\)='`
	    MATCH=`expr "$host" : "$SIMHOST"`
	    if test "$MATCH" != 0
	    then GUESS=`echo "$LINE" | sed 's/^.*=//'`
	    fi
	done
	exec 4<&-
	if test "$GUESS"
	then TEMPLATE="$GUESS"
	else
	    # Last chance ... maybe uname -s will match an entry.
	    TEMPLATE=`uname -s | tr A-Z a-z` 
	fi
    fi
fi
124
    ])
125
AC_MSG_RESULT($TEMPLATE)
126

127
export TEMPLATE
128
if test ! -f "template/$TEMPLATE"; then
129 130 131 132 133
	echo ""
	echo "$TEMPLATE does not exist"
	echo ""
	echo "Available Templates (set using --with-template):"
	echo ""
134
	ls template
135 136
	echo ""
	exit
137 138
fi

139 140 141 142 143 144 145 146 147 148 149
dnl Read the selected template file.
dnl For reasons of backwards compatibility, lines of the form
dnl     IDENTIFIER: something
dnl should be treated as variable assignments.  However, we also want to
dnl allow other shell commands in the template file (in case the file
dnl needs to make conditional tests, etc).  So, generate a temp file with
dnl the IDENTIFIER: lines translated, then source it.

[
rm -f conftest.sh
sed 's/^\([A-Za-z_]*\):\(.*\)$/\1="\2"/' "template/$TEMPLATE" >conftest.sh
150
. ./conftest.sh
151 152
rm -f conftest.sh
]
153 154


155
AC_ARG_WITH(includes,
B
Bruce Momjian 已提交
156
    [  --with-includes=DIR     site header files for tk/tcl, etc in DIR],
157 158 159 160 161 162 163 164 165 166
    [
	case "$withval" in
	"" | y | ye | yes | n | no)
	    AC_MSG_ERROR([*** You must supply an argument to the --with-includes option.])
	  ;;
	esac
	INCLUDE_DIRS="$withval"
    ])

if test "$INCLUDE_DIRS"; then
167
	for dir in $INCLUDE_DIRS $SRCH_INC; do
B
Bruce Momjian 已提交
168 169 170 171 172
		if test -d "$dir"; then
			PGSQL_CPPFLAGS="$PGSQL_CPPFLAGS -I$dir"
		else
			AC_MSG_WARN([*** Include directory $dir does not exist.])
		fi
173
	done
174 175
fi

176
AC_ARG_WITH(libs,
177
    [  --with-libs=DIR         also search for libraries in DIR],
178 179 180 181 182 183 184 185 186
    [
	case "$withval" in
	"" | y | ye | yes | n | no)
	    AC_MSG_ERROR([*** You must supply an argument to the --with-libs option.])
	  ;;
	esac
	LIBRARY_DIRS="$withval"
    ])

187
AC_ARG_WITH(libraries,
188
    [  --with-libraries=DIR    also search for libraries in DIR],
189 190 191 192 193 194 195 196 197 198
    [
	case "$withval" in
	"" | y | ye | yes | n | no)
	    AC_MSG_ERROR([*** You must supply an argument to the --with-libraries option.])
	  ;;
	esac
	LIBRARY_DIRS="$withval"
    ])

if test "$LIBRARY_DIRS"; then
199
	for dir in $LIBRARY_DIRS $SRCH_LIB; do
B
Bruce Momjian 已提交
200 201 202 203 204
		if test -d "$dir"; then
			PGSQL_LDFLAGS="$PGSQL_LDFLAGS -L$dir"
		else
			AC_MSG_WARN([*** Library directory $dir does not exist.])
		fi
205
	done
206
fi
207

B
Bruce Momjian 已提交
208 209
dnl We have read the default value of USE_LOCALE from the template
dnl file.  We have a further option of using
210
dnl	--enable-locale to explicitly enable it
211
dnl It defaults to disabled
212 213 214
AC_MSG_CHECKING(setting USE_LOCALE)
AC_ARG_ENABLE(
   locale,
215
   [  --enable-locale         enable locale support ],
216 217 218
   AC_DEFINE(USE_LOCALE) AC_MSG_RESULT(enabled),
   AC_MSG_RESULT(disabled)
)
219

220
dnl We exclude cyrillic recode support unless we override it with
221
dnl	--enable-recode to explicitly enable it
222
dnl It defaults to disabled
223 224 225
AC_MSG_CHECKING(setting CYR_RECODE)
AC_ARG_ENABLE(
   recode,
226
   [  --enable-recode         enable cyrillic recode support ],
227 228 229
   AC_DEFINE(CYR_RECODE) AC_MSG_RESULT(enabled),
   AC_MSG_RESULT(disabled)
)
230

B
Bruce Momjian 已提交
231
AC_MSG_CHECKING(setting MULTIBYTE)
M
Marc G. Fournier 已提交
232
AC_ARG_WITH(mb,
233
    [  --with-mb=<encoding>    enable multi-byte support ], 
M
Marc G. Fournier 已提交
234 235
    [
	case "$withval" in
M
 
Marc G. Fournier 已提交
236
	EUC_JP|EHC_CN|EUC_KR|EUC_TW|UNICODE|MULE_INTERNAL|LATIN1|LATIN2|LATIN3|LATIN4|LATIN5)
M
Marc G. Fournier 已提交
237 238 239
	    AC_MSG_RESULT("enabled with $withval")
            ;;
	*)
M
 
Marc G. Fournier 已提交
240
	    AC_MSG_ERROR([*** You must supply an argument to the --with-mb option one of EUC_JP,EHC_CN,EUC_KR,EUC_TW,UNICODE,MULE_INTERNAL,LATIN1-5])
M
Marc G. Fournier 已提交
241 242
	  ;;
	esac
B
Bruce Momjian 已提交
243
	MULTIBYTE="$withval"
M
Marc G. Fournier 已提交
244 245 246 247
    ],
    AC_MSG_RESULT("disabled")
)

B
Bruce Momjian 已提交
248
dnl We use the default value of 5432 for the DEF_PGPORT value.	If
249
dnl we over-ride it with --with-pgport=port then we bypass this piece
250 251 252
AC_MSG_CHECKING(setting DEF_PGPORT)
AC_ARG_WITH(
   pgport,
B
Bruce Momjian 已提交
253
   [  --with-pgport=<portnum> change default startup port ],
254
   AC_DEFINE_UNQUOTED(DEF_PGPORT, "${withval}") AC_MSG_RESULT($with_pgport),
255 256
   AC_DEFINE_UNQUOTED(DEF_PGPORT, "5432") AC_MSG_RESULT(5432)
)
257

258
dnl DEF_MAXBACKENDS can be set by --with-maxbackends.  Default value is 32.
259
AC_MSG_CHECKING(setting DEF_MAXBACKENDS)
260 261
AC_ARG_WITH(
   maxbackends,
262 263
   [  --with-maxbackends=<n>  set default maximum number of server processes ],
   AC_DEFINE_UNQUOTED(DEF_MAXBACKENDS, ${withval}) AC_MSG_RESULT($with_maxbackends),
264
   AC_DEFINE_UNQUOTED(DEF_MAXBACKENDS, 32) AC_MSG_RESULT(32)
265 266 267
)

dnl We exclude tcl support unless user says --with-tcl
268 269 270
AC_MSG_CHECKING(setting USE_TCL)
AC_ARG_WITH(
   tcl,
271
   [  --with-tcl              build Tcl interfaces and pgtclsh ],
B
Bruce Momjian 已提交
272 273
   [
	case "$withval" in
B
Bruce Momjian 已提交
274 275
	y | ye | yes)		USE_TCL=true; USE_TK=true; AC_MSG_RESULT(enabled) ;;
	*)			USE_TCL=; USE_TK=; AC_MSG_RESULT(disabled) ;;
B
Bruce Momjian 已提交
276 277
	esac
   ],
B
Bruce Momjian 已提交
278
   [ USE_TCL=; USE_TK=; AC_MSG_RESULT(disabled) ]
279
)
280

281
export USE_TCL
B
Bruce Momjian 已提交
282
export USE_TK
283

284 285 286 287 288 289 290 291 292 293 294 295 296 297 298
dnl We see if the path to the TCL/TK configuration scripts is specified.
dnl This will overide the use of tclsh to find the paths to search.

AC_ARG_WITH(tclconfig,
    [  --with-tclconfig=DIR    tclConfig.sh and tkConfig.sh are in DIR],
    [
	case "$withval" in
	"" | y | ye | yes | n | no)
	    AC_MSG_ERROR([*** You must supply an argument to the --with-tclconfig option.])
	  ;;
	esac
	TCL_DIRS="$withval"
    ]
)

299
dnl We exclude perl support unless we override it with --with-perl
300 301 302
AC_MSG_CHECKING(setting USE_PERL)
AC_ARG_WITH(
   perl,
303
   [  --with-perl             build Perl interface ],
B
Bruce Momjian 已提交
304 305
   [
	case "$withval" in
M
 
Marc G. Fournier 已提交
306 307
	y | ye | yes)	USE_PERL=true; AC_MSG_RESULT(enabled) ;;
	*)		USE_PERL=false; AC_MSG_RESULT(disabled) ;;
B
Bruce Momjian 已提交
308 309 310
	esac
   ],
   [ USE_PERL=false; AC_MSG_RESULT(disabled) ]
311
)
312

313
dnl We include odbc support unless we disable it with --with-odbc=false
314 315 316
AC_MSG_CHECKING(setting USE_ODBC)
AC_ARG_WITH(
   odbc,
317
   [  --with-odbc             build ODBC driver package ],
318 319 320 321 322 323 324 325 326 327
   [
	case "$withval" in
	y | ye | yes)		USE_ODBC=true; AC_MSG_RESULT(enabled) ;;
	*)			USE_ODBC=false; AC_MSG_RESULT(disabled) ;;
	esac
   ],
   [ USE_ODBC=false; AC_MSG_RESULT(disabled) ]
)
export USE_ODBC

328 329 330
dnl Allow for overriding the default location of the odbcinst.ini
dnl file which is normally ${prefix}/share or ${prefix} if this is
dnl being compiled inside the postgres distribution.
331 332
dnl Link in the port and template directories
dnl to help build a "standalone ODBC" tar file
333 334
if test "X$USE_ODBC" = "Xtrue"
then
335 336 337
   AC_LINK_FILES(include/port, interfaces/odbc/port)
   AC_LINK_FILES(makefiles, interfaces/odbc/makefiles)
   AC_LINK_FILES(template, interfaces/odbc/template)
338 339 340 341 342
   AC_LINK_FILES(include/config.h, interfaces/odbc/config.h)

   AC_MSG_CHECKING(setting ODBCINST)
   AC_ARG_WITH(
      odbcinst,
343
      [  --with-odbcinst=dir     change default directory for odbcinst.ini],
344 345 346 347 348 349 350 351 352 353
      AC_DEFINE_UNQUOTED(ODBCINST, ${with_odbcinst}) AC_MSG_RESULT($with_odbcinst),
      AC_DEFINE_UNQUOTED(ODBCINST, ${ODBCINSTDIR}) AC_MSG_RESULT(${ODBCINSTDIR})
   )
fi
if test "X$with_odbcinst" != "X"
then
    ODBCINSTDIR=$with_odbcinst
fi
AC_SUBST(ODBCINSTDIR)

354
dnl Unless we specify the command line options
B
Bruce Momjian 已提交
355
dnl	--enable cassert	to explicitly enable it
356
dnl If you do not explicitly do it, it defaults to disabled
357 358 359
AC_MSG_CHECKING(setting ASSERT CHECKING)
AC_ARG_ENABLE(
   cassert,
360
   [  --enable-cassert        enable assertion checks (debugging) ],
B
Bruce Momjian 已提交
361
   AC_DEFINE(USE_ASSERT_CHECKING) AC_MSG_RESULT(enabled),
362 363
   AC_MSG_RESULT(disabled)
)
364

365
dnl Check for C support (allow override if needed)
366
dnl Note: actually, setting CC environment variable works just as well.
367
AC_ARG_WITH(CC,
368
    [  --with-CC=compiler      use specific C compiler],
369 370 371 372 373 374 375
    [
	case "$withval" in
	"" | y | ye | yes | n | no)
	    AC_MSG_ERROR([*** You must supply an argument to the --with-CC option.])
	  ;;
	esac
	CC="$withval"
376 377 378 379 380 381 382 383
    ])

dnl Find a compiler if CC is not already set.
AC_PROG_CC
dnl Find CPP, then check traditional.
dnl Caution: these macros must be called in this order...
AC_PROG_CPP
AC_PROG_GCC_TRADITIONAL
384

385 386 387 388 389 390 391 392
if test "$CC" = "gcc"
then
	CC_VERSION=`${CC} --version`
else
	CC_VERSION=""
fi
AC_SUBST(CC_VERSION)

393 394 395 396 397
CPPFLAGS="$CPPFLAGS $PGSQL_CPPFLAGS"
echo "- setting CPPFLAGS=$CPPFLAGS"

LDFLAGS="$LDFLAGS $PGSQL_LDFLAGS"
echo "- setting LDFLAGS=$LDFLAGS"
398

M
 
Marc G. Fournier 已提交
399
AC_SUBST(ELF_SYS)
400
AC_SUBST(PORTNAME)
401
AC_SUBST(SRCDIR)
402 403
AC_SUBST(LDFLAGS)
AC_SUBST(CPPFLAGS)
M
Marc G. Fournier 已提交
404
AC_SUBST(AROPT)
405 406 407 408
AC_SUBST(SHARED_LIB)
AC_SUBST(CFLAGS)
AC_SUBST(DLSUFFIX)
AC_SUBST(DL_LIB)
409
AC_SUBST(USE_TCL)
B
Bruce Momjian 已提交
410
AC_SUBST(USE_TK)
411
AC_SUBST(USE_PERL)
412
AC_SUBST(USE_ODBC)
M
 
Marc G. Fournier 已提交
413
AC_SUBST(MULTIBYTE)
414

415 416 417
dnl Check for C++ support (allow override if needed)
HAVECXX='HAVE_Cplusplus=true'
AC_ARG_WITH(CXX,
418 419
    [  --with-CXX=compiler     use specific C++ compiler
  --without-CXX           prevent building C++ code ],
420 421 422 423 424 425 426 427 428 429 430 431
    [
	case "$withval" in
	"" | y | ye | yes)
	    AC_MSG_ERROR([*** You must supply an argument to the --with-CC option.])
	  ;;
	n | no)
	    HAVECXX='HAVE_Cplusplus=false'
	  ;;
	esac
	CXX="$withval"
    ],
    [   AC_PROG_CXX])
432
AC_SUBST(HAVECXX)
433

434 435 436
dnl Figure out how to invoke "install" and what install options to use.

AC_PROG_INSTALL
437 438 439

INSTLOPTS="-m 444"
INSTL_EXE_OPTS="-m 555"
B
Bruce Momjian 已提交
440
INSTL_LIB_OPTS="-m 644"
441 442 443 444 445 446 447
INSTL_SHLIB_OPTS="-m 644"

dnl HPUX wants shared libs to be mode 555.
case "$host_os" in
 hpux*)
	INSTL_SHLIB_OPTS="-m 555" ;;
esac
448

449 450 451
AC_SUBST(INSTALL)
AC_SUBST(INSTLOPTS)
AC_SUBST(INSTL_LIB_OPTS)
452
AC_SUBST(INSTL_SHLIB_OPTS)
453 454 455 456 457 458
AC_SUBST(INSTL_EXE_OPTS)

dnl Check the option to echo to inhibit newlines.
ECHO_N_OUT=`echo -n "" | wc -c`
ECHO_C_OUT=`echo "\c" | wc -c`
if test "$ECHO_N_OUT" -eq 0; then
B
Bruce Momjian 已提交
459 460
	DASH_N='-n'
	BACKSLASH_C=
461
else
B
Bruce Momjian 已提交
462 463 464 465 466 467
	if test "ECHO_C_OUT" -eq 0; then
		DASH_N=
		BACKSLASH_C='\\\\c'
	else
		AC_MSG_ERROR("echo behaviour undetermined")
	fi
468 469 470 471 472 473 474 475 476 477 478 479 480 481 482
fi
AC_SUBST(DASH_N)
AC_SUBST(BACKSLASH_C)

AC_PROG_LEX
AC_PROG_LN_S
AC_PROG_MAKE_SET
AC_PROG_RANLIB
AC_PATH_PROG(find, find)
AC_PATH_PROG(tar, tar)
AC_PATH_PROG(split, split)
AC_PATH_PROG(etags, etags)
AC_PATH_PROG(xargs, xargs)
AC_PATH_PROG(ipcs, ipcs)
AC_PATH_PROG(ipcrm, ipcrm)
483
AC_PATH_PROGS(TR, trbsd tr, NOT_FOUND)
484
AC_PATH_PROGS(GZCAT, gzcat zcat, gzcat)
485

486
dnl Check tr flags to convert from lower to upper case
B
Bruce Momjian 已提交
487 488
TRSTRINGS="`echo ABCdef | $TR '[[a-z]]' '[[A-Z]]' 2>/dev/null | grep ABCDEF`"
TRCLASS="`echo ABCdef | $TR '[[:lower:]]' '[[:upper:]]' 2>/dev/null | grep ABCDEF`"
489 490

if test "$TRSTRINGS" = "ABCDEF"; then
B
Bruce Momjian 已提交
491
	TRARGS="'[[a-z]]' '[[A-Z]]'"
492
elif test "$TRCLASS" = "ABCDEF"; then
B
Bruce Momjian 已提交
493
	TRARGS="'[[:lower:]]' '[[:upper:]]'"
494
else
495
	AC_MSG_ERROR("Can\'t find method to convert from upper to lower case with tr")
496 497 498
fi
AC_SUBST(TRARGS)

499 500 501 502 503
dnl Changes to look for YACC.  We have three choices (in order of pref.)
dnl (1) We specify in YACC and YFLAGS what we want
dnl (2) We have bison and we use bison -y
dnl (3) We have yacc and use it

B
Bruce Momjian 已提交
504
if test -f "$YACC"
505 506
then
	echo "- Using $YACC $YFLAGS"
507 508 509 510
else
    AC_PATH_PROG(bison, bison)
    if test -f "$bison"
    then
511 512 513
	echo "- Using $bison -y $YFLAGS"
	YACC="$bison"
	YFLAGS="-y $YFLAGS"
514 515
    else
	AC_PATH_PROG(yacc, yacc)
516 517
	echo "- Using $yacc $YFLAGS"
	YACC="$yacc"
518
    fi
519
fi
520 521
AC_SUBST(YACC)
AC_SUBST(YFLAGS)
522

M
Marc G. Fournier 已提交
523
AC_CHECK_LIB(sfio,     main)
M
 
Marc G. Fournier 已提交
524 525 526 527
for curses in ncurses curses ; do
	AC_CHECK_LIB(${curses}, main,
		[LIBS="-l${curses} $LIBS"; break])
done
528
AC_CHECK_LIB(termcap,  main)
M
Marc G. Fournier 已提交
529 530 531
AC_CHECK_LIB(history,  main)
AC_CHECK_LIB(readline, main)
AC_CHECK_LIB(readline, write_history, AC_DEFINE(HAVE_HISTORY))
B
Bruce Momjian 已提交
532
if test "$PORTNAME" != "aix" -a "$PORTNAME" != "alpha"
533 534 535
then
	AC_CHECK_LIB(bsd,      main)
fi
536 537 538 539 540 541 542 543 544 545 546 547
AC_CHECK_LIB(m,        main)
AC_CHECK_LIB(dl,       main)
AC_CHECK_LIB(socket,   main)
AC_CHECK_LIB(nsl,      main)
AC_CHECK_LIB(ipc,      main)
AC_CHECK_LIB(IPC,      main)
AC_CHECK_LIB(lc,       main)
AC_CHECK_LIB(dld,      main)
AC_CHECK_LIB(ln,       main)
AC_CHECK_LIB(ld,       main)
AC_CHECK_LIB(compat,   main)
AC_CHECK_LIB(BSD,      main)
B
Bruce Momjian 已提交
548
AC_CHECK_LIB(crypt,    main)
549
AC_CHECK_LIB(gen,      main)
B
Bruce Momjian 已提交
550
AC_CHECK_LIB(PW,       main)
551 552 553 554 555

dnl Checks for header files.
AC_HEADER_STDC
AC_HEADER_SYS_WAIT
AC_CHECK_HEADERS(limits.h unistd.h termios.h values.h sys/select.h)
556
AC_CHECK_HEADERS(sys/resource.h netdb.h arpa/inet.h getopt.h)
M
Marc G. Fournier 已提交
557
AC_CHECK_HEADERS(readline.h history.h dld.h crypt.h endian.h float.h)
B
Bruce Momjian 已提交
558 559
AC_CHECK_HEADERS(readline/readline.h readline/history.h ieeefp.h fp_class.h)
AC_CHECK_HEADERS(netinet/in.h string.h strings.h)
560 561
dnl ODBC headers...
AC_CHECK_HEADERS(sys/param.h pwd.h)
M
 
Marc G. Fournier 已提交
562
dnl
563 564 565 566 567 568 569 570 571 572

dnl Checks for typedefs, structures, and compiler characteristics.
AC_C_CONST
AC_TYPE_UID_T
AC_C_INLINE
AC_TYPE_MODE_T
AC_TYPE_OFF_T
AC_TYPE_SIZE_T
AC_HEADER_TIME
AC_STRUCT_TM
573
AC_STRUCT_TIMEZONE
574

M
 
Marc G. Fournier 已提交
575 576 577 578 579 580 581 582 583
AC_MSG_CHECKING(for type of last arg to accept)
AC_TRY_COMPILE([#include <stdlib.h>
#include <sys/types.h>
#include <sys/socket.h>
],
[int a = accept(1, (struct sockaddr *) 0, (size_t *) 0);],
[AC_DEFINE(SOCKET_SIZE_TYPE, size_t) AC_MSG_RESULT(size_t)],
[AC_DEFINE(SOCKET_SIZE_TYPE, int) AC_MSG_RESULT(int)])

584
dnl Check for any "odd" conditions
585
AC_MSG_CHECKING(for int timezone)
B
Bruce Momjian 已提交
586 587 588 589
AC_TRY_LINK([#include <time.h>],
	    [int res = timezone / 60; ],
	    [AC_DEFINE(HAVE_INT_TIMEZONE) AC_MSG_RESULT(yes)],
	    AC_MSG_RESULT(no))
590

591
AC_MSG_CHECKING(for gettimeofday args)
B
Bruce Momjian 已提交
592 593 594 595
AC_TRY_LINK([#include <sys/time.h>],
	    [struct timeval *tp; struct timezone *tzp; gettimeofday(tp,tzp); ],
	    [AC_DEFINE(HAVE_GETTIMEOFDAY_2_ARGS) AC_MSG_RESULT(2 args)],
	    AC_MSG_RESULT(no))
596

597 598
AC_MSG_CHECKING(for union semun)
AC_TRY_LINK([#include <sys/types.h>
599
#include <sys/ipc.h>
600
#include <sys/sem.h>],
B
Bruce Momjian 已提交
601 602 603
	    [union semun semun;],
	    [AC_DEFINE(HAVE_UNION_SEMUN) AC_MSG_RESULT(yes)],
	    AC_MSG_RESULT(no))
604

605 606 607 608 609 610 611 612 613
AC_MSG_CHECKING(for fcntl(F_SETLK))
AC_TRY_LINK([#include <fcntl.h>],
	    [struct flock lck;
	     lck.l_whence = SEEK_SET; lck.l_start = lck.l_len = 0;
	     lck.l_type = F_WRLCK;
	     fcntl(0, F_SETLK, &lck);],
	    [AC_DEFINE(HAVE_FCNTL_SETLK) AC_MSG_RESULT(yes)],
	    AC_MSG_RESULT(no))

M
 
Marc G. Fournier 已提交
614 615 616 617 618 619 620
AC_MSG_CHECKING(for good DBL_MIN)
AC_TRY_RUN([#include <stdlib.h>
#include <math.h>
#ifdef HAVE_FLOAT_H
# include <float.h>
#endif
main() { double d = DBL_MIN; if (d != DBL_MIN) exit(-1); else exit(0); }],
M
 
Marc G. Fournier 已提交
621
	AC_MSG_RESULT(yes),
B
 
Bruce Momjian 已提交
622
	[AC_DEFINE(HAVE_DBL_MIN_PROBLEM) AC_MSG_RESULT(no)],
623 624
	AC_MSG_RESULT(assuming ok on target machine))

625 626 627 628
dnl Checks for library functions.
AC_FUNC_MEMCMP
AC_TYPE_SIGNAL
AC_FUNC_VPRINTF
B
cleanup  
Bruce Momjian 已提交
629
AC_CHECK_FUNCS(tzset memmove sigsetjmp kill sysconf fpclass)
630
AC_CHECK_FUNCS(fp_class fp_class_d class)
631
AC_CHECK_FUNCS(sigprocmask waitpid setsid fcvt)
632 633
dnl We use our snprintf.c emulation if either snprintf() or vsnprintf()
dnl is missing.  Yes, there are machines that have only one.
M
 
Marc G. Fournier 已提交
634 635
AC_CHECK_FUNC(snprintf,
	      AC_DEFINE(HAVE_SNPRINTF),
M
 
Marc G. Fournier 已提交
636
	      SNPRINTF='snprintf.o')
637 638 639
AC_CHECK_FUNC(vsnprintf,
	      AC_DEFINE(HAVE_VSNPRINTF),
	      SNPRINTF='snprintf.o')
M
 
Marc G. Fournier 已提交
640
AC_SUBST(SNPRINTF)
B
Bruce Momjian 已提交
641 642 643
AC_CHECK_FUNC(isinf,
	      AC_DEFINE(HAVE_ISINF),
	      ISINF='isinf.o')
644
AC_SUBST(ISINF)
B
Bruce Momjian 已提交
645 646 647
AC_CHECK_FUNC(getrusage,
	      AC_DEFINE(HAVE_GETRUSAGE),
	      GETRUSAGE='getrusage.o')
648
AC_SUBST(GETRUSAGE)
B
Bruce Momjian 已提交
649 650 651
AC_CHECK_FUNC(srandom,
	      AC_DEFINE(HAVE_SRANDOM),
	      SRANDOM='srandom.o')
652
AC_SUBST(SRANDOM)
B
Bruce Momjian 已提交
653 654 655
AC_CHECK_FUNC(gethostname,
	      AC_DEFINE(HAVE_GETHOSTNAME),
	      GETHOSTNAME='gethostname.o')
656
AC_SUBST(GETHOSTNAME)
B
Bruce Momjian 已提交
657 658 659
AC_CHECK_FUNC(random,
	      AC_DEFINE(HAVE_RANDOM),
	      MISSING_RANDOM='random.o')
660
AC_SUBST(MISSING_RANDOM)
B
Bruce Momjian 已提交
661 662 663
AC_CHECK_FUNC(inet_aton,
	      AC_DEFINE(HAVE_INET_ATON),
	      INET_ATON='inet_aton.o')
664
AC_SUBST(INET_ATON)
B
Bruce Momjian 已提交
665 666 667
AC_CHECK_FUNC(strerror,
	      AC_DEFINE(HAVE_STRERROR),
	      [STRERROR='strerror.o' STRERROR2='../../backend/port/strerror.o'])
668 669
AC_SUBST(STRERROR)
AC_SUBST(STRERROR2)
B
Bruce Momjian 已提交
670 671 672
AC_CHECK_FUNC(strdup,
	      AC_DEFINE(HAVE_STRDUP),
	      STRDUP='../../utils/strdup.o')
673
AC_SUBST(STRDUP)
B
Bruce Momjian 已提交
674 675 676
AC_CHECK_FUNC(strtol,
	      AC_DEFINE(HAVE_STRTOL),
	      STRTOL='strtol.o')
M
Marc G. Fournier 已提交
677
AC_SUBST(STRTOL)
B
Bruce Momjian 已提交
678 679 680
AC_CHECK_FUNC(strtoul,
	      AC_DEFINE(HAVE_STRTOUL),
	      STRTOL='strtoul.o')
M
Marc G. Fournier 已提交
681
AC_SUBST(STRTOUL)
B
Bruce Momjian 已提交
682 683 684
AC_CHECK_FUNC(strcasecmp,
	      AC_DEFINE(HAVE_STRCASECMP),
	      STRCASECMP='strcasecmp.o')
685
AC_SUBST(STRCASECMP)
B
Bruce Momjian 已提交
686 687 688
AC_CHECK_FUNC(cbrt,
	      AC_DEFINE(HAVE_CBRT),
	      AC_CHECK_LIB(m, cbrt, AC_DEFINE(HAVE_CBRT)))
689 690 691 692

# On HPUX 9, rint() is not in regular libm.a but in /lib/pa1.1/libm.a;
# this hackery with HPUXMATHLIB allows us to cope.
HPUXMATHLIB=""
B
Bruce Momjian 已提交
693 694
AC_CHECK_FUNC(rint,
	      AC_DEFINE(HAVE_RINT),
B
Bruce Momjian 已提交
695 696
[
if [[ -r /lib/pa1.1/libm.a ]] ; then
697
    HPUXMATHLIB="-L /lib/pa1.1 -lm"
B
Bruce Momjian 已提交
698
fi
699
	      AC_CHECK_LIB(m, rint, AC_DEFINE(HAVE_RINT), , $HPUXMATHLIB)
B
Bruce Momjian 已提交
700
])
701 702
AC_SUBST(HPUXMATHLIB)

703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784
dnl Check to see if we have a working 64-bit integer type.
dnl This has to be done after checking for snprintf, because
dnl if the platform has snprintf then we need to know if snprintf
dnl works with 64-bit ints.  However, if we are supplying our own
dnl snprintf then we expect that it will work as long as the basic
dnl 64-bit math operations work.  NOTE that we will supply our own
dnl snprintf if either snprintf or vsnprintf is missing.

AC_MSG_CHECKING(whether 'long int' is 64 bits)
AC_TRY_RUN([#include <stdio.h>
typedef long int int64;
#define INT64_FORMAT "%ld"

int64 a = 20000001;
int64 b = 40000005;

int does_int64_work()
{
  int64 c,d;
  char buf[100];

  if (sizeof(int64) != 8)
    return 0;			/* doesn't look like the right size */

  /* we do perfunctory checks on multiply and divide,
   * and also test snprintf if the platform provides snprintf.
   */
  c = a * b;
#if defined(HAVE_SNPRINTF) && defined(HAVE_VSNPRINTF)
  snprintf(buf, 100, INT64_FORMAT, c);
  if (strcmp(buf, "800000140000005") != 0)
    return 0;			/* either multiply or snprintf is busted */
#endif
  d = (c + b) / b;
  if (d != a+1)
    return 0;
  return 1;
}
main() {
  exit(! does_int64_work());
}],
	[AC_DEFINE(HAVE_LONG_INT_64) AC_MSG_RESULT(yes)],
	AC_MSG_RESULT(no),
	AC_MSG_RESULT(assuming not on target machine))

AC_MSG_CHECKING(whether 'long long int' is 64 bits)
AC_TRY_RUN([#include <stdio.h>
typedef long long int int64;
#define INT64_FORMAT "%lld"

int64 a = 20000001;
int64 b = 40000005;

int does_int64_work()
{
  int64 c,d;
  char buf[100];

  if (sizeof(int64) != 8)
    return 0;			/* doesn't look like the right size */

  /* we do perfunctory checks on multiply and divide,
   * and also test snprintf if the platform provides snprintf.
   */
  c = a * b;
#if defined(HAVE_SNPRINTF) && defined(HAVE_VSNPRINTF)
  snprintf(buf, 100, INT64_FORMAT, c);
  if (strcmp(buf, "800000140000005") != 0)
    return 0;			/* either multiply or snprintf is busted */
#endif
  d = (c + b) / b;
  if (d != a+1)
    return 0;
  return 1;
}
main() {
  exit(! does_int64_work());
}],
	[AC_DEFINE(HAVE_LONG_LONG_INT_64) AC_MSG_RESULT(yes)],
	AC_MSG_RESULT(no),
	AC_MSG_RESULT(assuming not on target machine))

785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803
dnl Check to see if platform has POSIX signal interface.
dnl NOTE: if this test fails then POSIX signals definitely don't work.
dnl It could be that the test compiles but the POSIX routines don't
dnl really work ... in that case the platform-specific port files
dnl can unset USE_POSIX_SIGNALS and HAVE_POSIX_SIGNALS.  (The former
dnl goes into config.h, the latter into Makefile.global.)

AC_MSG_CHECKING(for POSIX signal interface)
AC_TRY_LINK([#include <signal.h>],
[struct sigaction act, oact;
sigemptyset(&act.sa_mask);
act.sa_flags = SA_RESTART;
sigaction(0, &act, &oact);],
[AC_DEFINE(USE_POSIX_SIGNALS)
HAVE_POSIX_SIGNALS="1"
AC_MSG_RESULT(yes)],
[HAVE_POSIX_SIGNALS=""
AC_MSG_RESULT(no)])
AC_SUBST(HAVE_POSIX_SIGNALS)
804

B
Bruce Momjian 已提交
805 806
dnl Check for Tcl configuration script tclConfig.sh

807 808
dnl If --with-tclconfig was given, don't check for tclsh, tcl
if test -z "$TCL_DIRS"
B
Bruce Momjian 已提交
809
then
810 811 812 813 814 815 816 817 818 819
	AC_PATH_PROG(TCLSH, tclsh)
	if test -z "$TCLSH"
	then
		AC_PATH_PROG(TCLSH, tcl)
		if test -z "$TCLSH"
		then
			AC_MSG_WARN(TCL/TK support disabled; tcl shell is not in your path)
			USE_TCL=
		fi
	fi
B
Bruce Momjian 已提交
820 821 822 823 824 825
fi
	
if test "$USE_TCL" = true
then
	AC_MSG_CHECKING(for tclConfig.sh)
	TCL_CONFIG_SH=
826 827 828 829 830 831
	library_dirs=
	if test -z "$TCL_DIRS"
	then
		library_dirs=`echo 'puts $auto_path' | $TCLSH`
	fi
	library_dirs="$TCL_DIRS $library_dirs"
B
Bruce Momjian 已提交
832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876
	for dir in $library_dirs; do
		if test -d "$dir" -a -r "$dir/tclConfig.sh"; then
			TCL_CONFIG_SH=$dir/tclConfig.sh
			break
		fi
	done
	if test -z "$TCL_CONFIG_SH"; then
		AC_MSG_RESULT(no)
		AC_MSG_WARN(TCL/TK support disabled; Tcl configuration script missing)
		USE_TCL=
	else
		AC_MSG_RESULT($TCL_CONFIG_SH)
		AC_SUBST(TCL_CONFIG_SH)
	fi
fi

USE_TK=$USE_TCL		# If TCL is disabled, disable TK

dnl Check for Tk configuration script tkConfig.sh
if test "$USE_TK" = true
then
	AC_MSG_CHECKING(for tkConfig.sh)
	TK_CONFIG_SH=
	# library_dirs are set in the check for TCL
	for dir in $library_dirs
	do
		if test -d "$dir" -a -r "$dir/tkConfig.sh"
		then
			TK_CONFIG_SH=$dir/tkConfig.sh
			break
		fi
	done
	if test -z "$TK_CONFIG_SH"
	then
		AC_MSG_RESULT(no)
		AC_MSG_WARN(TK support disabled; Tk configuration script missing)
		USE_TK=
	else
		AC_MSG_RESULT($TK_CONFIG_SH)
		AC_SUBST(TK_CONFIG_SH)
	fi
fi

USE_X=$USE_TK

877 878 879 880
dnl Check for X libraries

if test "$USE_X" = true; then

B
Bruce Momjian 已提交
881 882 883 884
	ice_save_LIBS="$LIBS"
	ice_save_CFLAGS="$CFLAGS"
	ice_save_CPPFLAGS="$CPPFLAGS"
	ice_save_LDFLAGS="$LDFLAGS"
885

B
Bruce Momjian 已提交
886
	AC_PATH_XTRA
887

B
Bruce Momjian 已提交
888 889 890 891
	LIBS="$LIBS $X_EXTRA_LIBS"
	CFLAGS="$CFLAGS $X_CFLAGS"
	CPPFLAGS="$CPPFLAGS $X_CFLAGS"
	LDFLAGS="$LDFLAGS $X_LIBS"
892

B
Bruce Momjian 已提交
893
	dnl Check for X library
894

B
Bruce Momjian 已提交
895 896 897
	X11_LIBS=""
	AC_CHECK_LIB(X11, XOpenDisplay, X11_LIBS="-lX11",,${X_PRE_LIBS})
	if test "$X11_LIBS" = ""; then
898 899 900 901 902 903 904
		dnl Not having X is bad news for pgtksh. Let the user fix this.
		AC_MSG_WARN([The X11 library '-lX11' could not be found,
so TK support will be disabled.  To enable TK support,
please use the configure options '--x-includes=DIR'
and '--x-libraries=DIR' to specify the X location.
See the file 'config.log' for further diagnostics.])
		USE_TK=
B
Bruce Momjian 已提交
905 906 907 908 909 910 911 912 913
	fi
	AC_SUBST(X_LIBS)
	AC_SUBST(X11_LIBS)
	AC_SUBST(X_PRE_LIBS)

	LIBS="$ice_save_LIBS"
	CFLAGS="$ice_save_CFLAGS"
	CPPFLAGS="$ice_save_CPPFLAGS"
	LDFLAGS="$ice_save_LDFLAGS"
914 915
fi

916 917 918 919 920 921 922 923 924 925
dnl cause configure to recurse into subdirectories with their own configure
dnl Darn, setting AC_CONFIG_SUBDIRS sets a list $subdirs$ in the configure output
dnl  file, but then configure doesn't bother using that list. Probably a bug in
dnl  this version of autoconf.
dnl So at the moment interfaces/odbc gets configured unconditionally.
dnl - thomas 1998-10-05
#if test "X$USE_ODBC" = "Xtrue"
#then
#	AC_CONFIG_SUBDIRS(interfaces/odbc)
#fi
926 927 928 929 930 931 932 933 934 935 936
if test "$USE_ODBC" = "true"
then
	PWD_INCDIR=no
	AC_CHECK_HEADER(pwd.h, PWD_INCDIR=yes)
	if test "$PWD_INCDIR" = "no"; then
		AC_MSG_WARN(odbc support disabled; pwd.h missing)
		USE_ODBC=
	fi
	AC_SUBST(USE_ODBC)
fi

937
AC_OUTPUT(
938 939
	GNUmakefile
	Makefile.global
940 941
	backend/port/Makefile
	backend/catalog/genbki.sh
942 943 944 945
	backend/utils/Gen_fmgrtab.sh
	bin/pg_dump/Makefile
	bin/pg_version/Makefile
	bin/psql/Makefile
B
Bruce Momjian 已提交
946 947
	bin/pgtclsh/mkMakefile.tcldefs.sh
	bin/pgtclsh/mkMakefile.tkdefs.sh
948 949 950 951 952 953 954 955
	include/version.h
	interfaces/libpq/Makefile
	interfaces/ecpg/lib/Makefile
	interfaces/libpq++/Makefile
	interfaces/libpgtcl/Makefile
	interfaces/odbc/GNUmakefile
	interfaces/odbc/Makefile.global
	pl/plpgsql/src/Makefile
B
Bruce Momjian 已提交
956
	pl/plpgsql/src/mklang.sql
957 958
	pl/tcl/mkMakefile.tcldefs.sh
)