configure.in 23.9 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

AC_CANONICAL_HOST
7

8
tas_file=dummy.s
9
case "$host_os" in
10
 solaris*)
B
Bruce Momjian 已提交
11
	case "$host_cpu" in
B
Bruce Momjian 已提交
12
	  sparc) os=solaris_sparc need_tas=yes tas_file=solaris_sparc.s ;;
B
Bruce Momjian 已提交
13
	   i386) os=solaris_i386 need_tas=yes tas_file=solaris_i386.s ;;
B
Bruce Momjian 已提交
14
	esac ;;
15 16 17 18
   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 已提交
19
 freebsd3*) os=freebsd need_tas=no elf=yes ;;
M
 
Marc G. Fournier 已提交
20
 freebsd[12]*) os=freebsd need_tas=no ;;
M
 
Marc G. Fournier 已提交
21
  netbsd*|openbsd*) os=bsd need_tas=no ;;
22 23 24 25 26
    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 ;;
27
    hpux*) os=hpux need_tas=yes tas_file=hpux.s ;;
28 29 30 31
     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 已提交
32
 sysv4.2*)
33
       case "$host_vendor" in
B
Bruce Momjian 已提交
34 35
	       univel) os=univel need_tas=no ;;
		    *) os=unknown need_tas=no ;;
36
       esac ;;
37
   sysv4*) os=svr4 need_tas=no ;;
38
   sysv5*) os=unixware need_tas=no ;;
39 40 41 42
*) echo ""
   echo "*************************************************************"
   echo "configure does not currently recognize your operating system,"
   echo "therefore you must do a manual configuration of:"
43
   echo "$host_os"
44 45 46 47 48 49
   echo "Please contact scrappy@hub.org to see about rectifying this, "
   echo "including the above 'checking host system type...' line "
   echo "*************************************************************"
   echo ""
   exit;;
esac
50

M
 
Marc G. Fournier 已提交
51 52 53 54
if test "X$elf" = "Xyes"
then
	ELF_SYS=true
else
M
 
Marc G. Fournier 已提交
55
	ELF_SYS=
M
 
Marc G. Fournier 已提交
56 57
fi

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

65
PORTNAME=${os}
66 67 68
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 已提交
69
AC_LINK_FILES(makefiles/Makefile.${os}, Makefile.port)
70

71 72 73 74 75 76 77 78 79 80 81
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

dnl this part selects the template from the one in the
B
Bruce Momjian 已提交
82
dnl template directory.
83

84 85 86
dnl LOOK FOR EXACT MATCH FIRST,
dnl then try an OS without a version

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
    [  
       GUESS=`grep "^$host=" template/.similar | sed 's/.*=//' | tail -1`
95
       if test "$GUESS"
96 97 98 99 100 101 102 103
       then TEMPLATE="$GUESS"
       else
           host_no_ver=`echo "$host" | sed 's/[[0-9.]]*$//'`
           GUESS=`grep "^$host_no_ver" template/.similar | sed 's/.*=//' | tail -1`
           if test "$GUESS"
           then	TEMPLATE="$GUESS"
           else	TEMPLATE=`uname -s | tr A-Z a-z` 
           fi
104 105
       fi
    ])
106
AC_MSG_RESULT($TEMPLATE)
107

108
export TEMPLATE
109
if test ! -f "template/$TEMPLATE"; then
110 111 112 113 114
	echo ""
	echo "$TEMPLATE does not exist"
	echo ""
	echo "Available Templates (set using --with-template):"
	echo ""
115
	ls template
116 117
	echo ""
	exit
118 119
fi

120 121 122 123 124 125 126 127 128 129 130 131
AROPT=`grep '^AROPT:' template/$TEMPLATE | awk -F: '{print $2}'`
SHARED_LIB=`grep '^SHARED_LIB:' template/$TEMPLATE | awk -F: '{print $2}'`
CFLAGS=`grep '^CFLAGS:' template/$TEMPLATE | awk -F: '{print $2}'`
SRCH_INC=`grep '^SRCH_INC:' template/$TEMPLATE | awk -F: '{print $2}'`
SRCH_LIB=`grep '^SRCH_LIB:' template/$TEMPLATE | awk -F: '{print $2}'`
USE_LOCALE=`grep '^USE_LOCALE:' template/$TEMPLATE | awk -F: '{print $2}'`
DLSUFFIX=`grep '^DLSUFFIX:' template/$TEMPLATE | awk -F: '{print $2}'`
DL_LIB=`grep '^DL_LIB:' template/$TEMPLATE | awk -F: '{print $2}'`
YACC=`grep '^YACC:' template/$TEMPLATE | awk -F: '{print $2}'`
YFLAGS=`grep '^YFLAGS:' template/$TEMPLATE | awk -F: '{print $2}'`
CC=`grep '^CC:' template/$TEMPLATE | awk -F: '{print $2}'`
LIBS=`grep '^LIBS:' template/$TEMPLATE | awk -F: '{print $2}'`
132 133


134
AC_ARG_WITH(includes,
B
Bruce Momjian 已提交
135
    [  --with-includes=DIR     site header files for tk/tcl, etc in DIR],
136 137 138 139 140 141 142 143 144 145 146
    [
	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
	for dir in $INCLUDE_DIRS; do
B
Bruce Momjian 已提交
147 148 149 150 151
		if test -d "$dir"; then
			PGSQL_CPPFLAGS="$PGSQL_CPPFLAGS -I$dir"
		else
			AC_MSG_WARN([*** Include directory $dir does not exist.])
		fi
152
	done
153 154
fi

155
AC_ARG_WITH(libs,
156
    [  --with-libs=DIR         also search for libraries in DIR],
157 158 159 160 161 162 163 164 165
    [
	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"
    ])

166
AC_ARG_WITH(libraries,
167
    [  --with-libraries=DIR    also search for libraries in DIR],
168 169 170 171 172 173 174 175 176 177
    [
	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
178
	for dir in $LIBRARY_DIRS; do
B
Bruce Momjian 已提交
179 180 181 182 183
		if test -d "$dir"; then
			PGSQL_LDFLAGS="$PGSQL_LDFLAGS -L$dir"
		else
			AC_MSG_WARN([*** Library directory $dir does not exist.])
		fi
184
	done
185
fi
186

B
Bruce Momjian 已提交
187 188
dnl We have read the default value of USE_LOCALE from the template
dnl file.  We have a further option of using
189
dnl	--enable-locale to explicitly enable it
190
dnl It defaults to disabled
191 192 193
AC_MSG_CHECKING(setting USE_LOCALE)
AC_ARG_ENABLE(
   locale,
194
   [  --enable-locale         enable locale support ],
195 196 197
   AC_DEFINE(USE_LOCALE) AC_MSG_RESULT(enabled),
   AC_MSG_RESULT(disabled)
)
198

199
dnl We exclude cyrillic recode support unless we override it with
200
dnl	--enable-recode to explicitly enable it
201
dnl It defaults to disabled
202 203 204
AC_MSG_CHECKING(setting CYR_RECODE)
AC_ARG_ENABLE(
   recode,
205
   [  --enable-recode         enable cyrillic recode support ],
206 207 208
   AC_DEFINE(CYR_RECODE) AC_MSG_RESULT(enabled),
   AC_MSG_RESULT(disabled)
)
209

B
Bruce Momjian 已提交
210
AC_MSG_CHECKING(setting MULTIBYTE)
M
Marc G. Fournier 已提交
211
AC_ARG_WITH(mb,
212
    [  --with-mb=<encoding>    enable multi-byte support ], 
M
Marc G. Fournier 已提交
213 214
    [
	case "$withval" in
M
 
Marc G. Fournier 已提交
215
	EUC_JP|EHC_CN|EUC_KR|EUC_TW|UNICODE|MULE_INTERNAL|LATIN1|LATIN2|LATIN3|LATIN4|LATIN5)
M
Marc G. Fournier 已提交
216 217 218
	    AC_MSG_RESULT("enabled with $withval")
            ;;
	*)
M
 
Marc G. Fournier 已提交
219
	    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 已提交
220 221
	  ;;
	esac
B
Bruce Momjian 已提交
222
	MULTIBYTE="$withval"
M
Marc G. Fournier 已提交
223 224 225 226
    ],
    AC_MSG_RESULT("disabled")
)

B
Bruce Momjian 已提交
227
dnl We use the default value of 5432 for the DEF_PGPORT value.	If
228
dnl we over-ride it with --with-pgport=port then we bypass this piece
229 230 231
AC_MSG_CHECKING(setting DEF_PGPORT)
AC_ARG_WITH(
   pgport,
B
Bruce Momjian 已提交
232
   [  --with-pgport=<portnum> change default startup port ],
233
   AC_DEFINE_UNQUOTED(DEF_PGPORT, "${withval}") AC_MSG_RESULT($with_pgport),
234 235
   AC_DEFINE_UNQUOTED(DEF_PGPORT, "5432") AC_MSG_RESULT(5432)
)
236

237
dnl We exclude tcl support unless we override it with --with-tcl
238 239 240
AC_MSG_CHECKING(setting USE_TCL)
AC_ARG_WITH(
   tcl,
241
   [  --with-tcl              build Tcl interfaces and pgtclsh ],
B
Bruce Momjian 已提交
242 243
   [
	case "$withval" in
B
Bruce Momjian 已提交
244 245
	y | ye | yes)		USE_TCL=true; USE_TK=true; AC_MSG_RESULT(enabled) ;;
	*)			USE_TCL=; USE_TK=; AC_MSG_RESULT(disabled) ;;
B
Bruce Momjian 已提交
246 247
	esac
   ],
B
Bruce Momjian 已提交
248
   [ USE_TCL=; USE_TK=; AC_MSG_RESULT(disabled) ]
249
)
250

251
export USE_TCL
B
Bruce Momjian 已提交
252
export USE_TK
253

254 255 256 257 258 259 260 261 262 263 264 265 266 267 268
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"
    ]
)

269
dnl We exclude perl support unless we override it with --with-perl
270 271 272
AC_MSG_CHECKING(setting USE_PERL)
AC_ARG_WITH(
   perl,
273
   [  --with-perl             build Perl interface ],
B
Bruce Momjian 已提交
274 275
   [
	case "$withval" in
M
 
Marc G. Fournier 已提交
276 277
	y | ye | yes)	USE_PERL=true; AC_MSG_RESULT(enabled) ;;
	*)		USE_PERL=false; AC_MSG_RESULT(disabled) ;;
B
Bruce Momjian 已提交
278 279 280
	esac
   ],
   [ USE_PERL=false; AC_MSG_RESULT(disabled) ]
281
)
282

283
dnl We include odbc support unless we disable it with --with-odbc=false
284 285 286
AC_MSG_CHECKING(setting USE_ODBC)
AC_ARG_WITH(
   odbc,
287
   [  --with-odbc             build ODBC driver package ],
288 289 290 291 292 293 294 295 296 297
   [
	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

298 299 300
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.
301 302
dnl Link in the port and template directories
dnl to help build a "standalone ODBC" tar file
303 304
if test "X$USE_ODBC" = "Xtrue"
then
305 306 307
   AC_LINK_FILES(include/port, interfaces/odbc/port)
   AC_LINK_FILES(makefiles, interfaces/odbc/makefiles)
   AC_LINK_FILES(template, interfaces/odbc/template)
308 309 310 311 312
   AC_LINK_FILES(include/config.h, interfaces/odbc/config.h)

   AC_MSG_CHECKING(setting ODBCINST)
   AC_ARG_WITH(
      odbcinst,
313
      [  --with-odbcinst=dir     change default directory for odbcinst.ini],
314 315 316 317 318 319 320 321 322 323
      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)

324
dnl Unless we specify the command line options
B
Bruce Momjian 已提交
325
dnl	--enable cassert	to explicitly enable it
326
dnl If you do not explicitly do it, it defaults to disabled
327 328 329
AC_MSG_CHECKING(setting ASSERT CHECKING)
AC_ARG_ENABLE(
   cassert,
330
   [  --enable-cassert        enable assertion checks (debugging) ],
B
Bruce Momjian 已提交
331
   AC_DEFINE(USE_ASSERT_CHECKING) AC_MSG_RESULT(enabled),
332 333
   AC_MSG_RESULT(disabled)
)
334

335
dnl Check for C support (allow override if needed)
336
dnl Note: actually, setting CC environment variable works just as well.
337
AC_ARG_WITH(CC,
338
    [  --with-CC=compiler      use specific C compiler],
339 340 341 342 343 344 345
    [
	case "$withval" in
	"" | y | ye | yes | n | no)
	    AC_MSG_ERROR([*** You must supply an argument to the --with-CC option.])
	  ;;
	esac
	CC="$withval"
346 347 348 349 350 351 352 353
    ])

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
354

355 356 357 358 359 360 361 362
if test "$CC" = "gcc"
then
	CC_VERSION=`${CC} --version`
else
	CC_VERSION=""
fi
AC_SUBST(CC_VERSION)

363 364 365 366 367
CPPFLAGS="$CPPFLAGS $PGSQL_CPPFLAGS"
echo "- setting CPPFLAGS=$CPPFLAGS"

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

M
 
Marc G. Fournier 已提交
369
AC_SUBST(ELF_SYS)
370
AC_SUBST(PORTNAME)
371
AC_SUBST(SRCDIR)
372 373
AC_SUBST(LDFLAGS)
AC_SUBST(CPPFLAGS)
M
Marc G. Fournier 已提交
374
AC_SUBST(AROPT)
375 376 377 378
AC_SUBST(SHARED_LIB)
AC_SUBST(CFLAGS)
AC_SUBST(DLSUFFIX)
AC_SUBST(DL_LIB)
379
AC_SUBST(USE_TCL)
B
Bruce Momjian 已提交
380
AC_SUBST(USE_TK)
381
AC_SUBST(USE_PERL)
382
AC_SUBST(USE_ODBC)
M
 
Marc G. Fournier 已提交
383
AC_SUBST(MULTIBYTE)
384

385 386 387
dnl Check for C++ support (allow override if needed)
HAVECXX='HAVE_Cplusplus=true'
AC_ARG_WITH(CXX,
388 389
    [  --with-CXX=compiler     use specific C++ compiler
  --without-CXX           prevent building C++ code ],
390 391 392 393 394 395 396 397 398 399 400 401
    [
	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])
402
AC_SUBST(HAVECXX)
403

404 405
INSTALLPATH="`echo /usr/ucb:$PATH | sed 's/:/ /g'`"
AC_PATH_PROGS(INSTALL, ginstall installbsd bsdinst scoinst install, NONE, $INSTALLPATH )
406
if test "$INSTALL" = "NONE"
407
then
408 409
	# fall back on our own script
	INSTALL=`pwd`/install-sh
410
fi
411 412 413

INSTLOPTS="-m 444"
INSTL_EXE_OPTS="-m 555"
B
Bruce Momjian 已提交
414
INSTL_LIB_OPTS="-m 644"
415 416 417 418 419 420 421
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
422

423 424
dnl These flavors of install need -c to install by copy rather than move.
dnl install by move is fatal because it removes stuff from the source tree!
425
case "`basename $INSTALL`" in
426
 install|installbsd|scoinst|install-sh)
427 428
	INSTLOPTS="-c $INSTLOPTS"
	INSTL_EXE_OPTS="-c $INSTL_EXE_OPTS"
429 430
	INSTL_LIB_OPTS="-c $INSTL_LIB_OPTS"
	INSTL_SHLIB_OPTS="-c $INSTL_SHLIB_OPTS";;
431
esac
432

433
echo "- Using $INSTALL"
434 435 436
AC_SUBST(INSTALL)
AC_SUBST(INSTLOPTS)
AC_SUBST(INSTL_LIB_OPTS)
437
AC_SUBST(INSTL_SHLIB_OPTS)
438 439 440 441 442 443
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 已提交
444 445
	DASH_N='-n'
	BACKSLASH_C=
446
else
B
Bruce Momjian 已提交
447 448 449 450 451 452
	if test "ECHO_C_OUT" -eq 0; then
		DASH_N=
		BACKSLASH_C='\\\\c'
	else
		AC_MSG_ERROR("echo behaviour undetermined")
	fi
453 454 455 456 457 458 459 460 461 462 463 464 465 466 467
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)
468
AC_PATH_PROGS(TR, trbsd tr, NOT_FOUND)
469

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

if test "$TRSTRINGS" = "ABCDEF"; then
B
Bruce Momjian 已提交
475
	TRARGS="'[[a-z]]' '[[A-Z]]'"
476
elif test "$TRCLASS" = "ABCDEF"; then
B
Bruce Momjian 已提交
477
	TRARGS="'[[:lower:]]' '[[:upper:]]'"
478
else
479
	AC_MSG_ERROR("Can\'t find method to convert from upper to lower case with tr")
480 481 482
fi
AC_SUBST(TRARGS)

483 484 485 486 487
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 已提交
488
if test -f "$YACC"
489 490
then
	echo "- Using $YACC $YFLAGS"
491 492 493 494
else
    AC_PATH_PROG(bison, bison)
    if test -f "$bison"
    then
495 496 497
	echo "- Using $bison -y $YFLAGS"
	YACC="$bison"
	YFLAGS="-y $YFLAGS"
498 499
    else
	AC_PATH_PROG(yacc, yacc)
500 501
	echo "- Using $yacc $YFLAGS"
	YACC="$yacc"
502
    fi
503
fi
504 505
AC_SUBST(YACC)
AC_SUBST(YFLAGS)
506

M
Marc G. Fournier 已提交
507
AC_CHECK_LIB(sfio,     main)
M
 
Marc G. Fournier 已提交
508 509 510 511
for curses in ncurses curses ; do
	AC_CHECK_LIB(${curses}, main,
		[LIBS="-l${curses} $LIBS"; break])
done
512
AC_CHECK_LIB(termcap,  main)
M
Marc G. Fournier 已提交
513 514 515
AC_CHECK_LIB(history,  main)
AC_CHECK_LIB(readline, main)
AC_CHECK_LIB(readline, write_history, AC_DEFINE(HAVE_HISTORY))
B
Bruce Momjian 已提交
516
if test "$PORTNAME" != "aix" -a "$PORTNAME" != "alpha"
517 518 519
then
	AC_CHECK_LIB(bsd,      main)
fi
520 521 522 523 524 525 526 527 528 529 530 531
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 已提交
532
AC_CHECK_LIB(crypt,    main)
533
AC_CHECK_LIB(gen,      main)
B
Bruce Momjian 已提交
534
AC_CHECK_LIB(PW,       main)
535 536 537 538 539

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)
540
AC_CHECK_HEADERS(sys/resource.h netdb.h arpa/inet.h getopt.h)
M
Marc G. Fournier 已提交
541
AC_CHECK_HEADERS(readline.h history.h dld.h crypt.h endian.h float.h)
B
Bruce Momjian 已提交
542 543
AC_CHECK_HEADERS(readline/readline.h readline/history.h ieeefp.h fp_class.h)
AC_CHECK_HEADERS(netinet/in.h string.h strings.h)
544 545
dnl ODBC headers...
AC_CHECK_HEADERS(sys/param.h pwd.h)
M
 
Marc G. Fournier 已提交
546
dnl
547 548 549 550 551 552 553 554 555 556 557

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

M
 
Marc G. Fournier 已提交
558 559 560 561 562 563 564 565 566
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)])

567
dnl Check for any "odd" conditions
568
AC_MSG_CHECKING(for int timezone)
B
Bruce Momjian 已提交
569 570 571 572
AC_TRY_LINK([#include <time.h>],
	    [int res = timezone / 60; ],
	    [AC_DEFINE(HAVE_INT_TIMEZONE) AC_MSG_RESULT(yes)],
	    AC_MSG_RESULT(no))
573

574
AC_MSG_CHECKING(for gettimeofday args)
B
Bruce Momjian 已提交
575 576 577 578
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))
579

580 581
AC_MSG_CHECKING(for union semun)
AC_TRY_LINK([#include <sys/types.h>
582
#include <sys/ipc.h>
583
#include <sys/sem.h>],
B
Bruce Momjian 已提交
584 585 586
	    [union semun semun;],
	    [AC_DEFINE(HAVE_UNION_SEMUN) AC_MSG_RESULT(yes)],
	    AC_MSG_RESULT(no))
587

588 589 590 591 592 593 594 595 596
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 已提交
597 598 599 600 601 602 603
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 已提交
604
	AC_MSG_RESULT(yes),
B
 
Bruce Momjian 已提交
605
	[AC_DEFINE(HAVE_DBL_MIN_PROBLEM) AC_MSG_RESULT(no)],
606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641
	AC_MSG_RESULT(assuming ok on target machine))

dnl Check to see if we have a working 64-bit integer type.
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,e;
  char buf[100];

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

  /* we do perfunctory checks on multiply, divide, sprintf, sscanf */
  c = a * b;
  sprintf(buf, INT64_FORMAT, c);
  if (strcmp(buf, "800000140000005") != 0)
    return 0;			/* either multiply or sprintf is busted */
  if (sscanf(buf, INT64_FORMAT, &d) != 1)
    return 0;
  if (d != c)
    return 0;
  e = d / b;
  if (e != a)
    return 0;
  return 1;
}
main() {
  exit(! does_int64_work());
}],
B
 
Bruce Momjian 已提交
642
	[AC_DEFINE(HAVE_LONG_INT_64) AC_MSG_RESULT(yes)],
643 644 645
	AC_MSG_RESULT(no),
	AC_MSG_RESULT(assuming not on target machine))

B
Bruce Momjian 已提交
646
AC_MSG_CHECKING(whether 'long long int' is 64 bits)
647 648
AC_TRY_RUN([#include <stdio.h>
typedef long long int int64;
B
Bruce Momjian 已提交
649
#define INT64_FORMAT "%lld"
650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678

int64 a = 20000001;
int64 b = 40000005;

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

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

  /* we do perfunctory checks on multiply, divide, sprintf, sscanf */
  c = a * b;
  sprintf(buf, INT64_FORMAT, c);
  if (strcmp(buf, "800000140000005") != 0)
    return 0;			/* either multiply or sprintf is busted */
  if (sscanf(buf, INT64_FORMAT, &d) != 1)
    return 0;
  if (d != c)
    return 0;
  e = d / b;
  if (e != a)
    return 0;
  return 1;
}
main() {
  exit(! does_int64_work());
}],
B
Bruce Momjian 已提交
679
	[AC_DEFINE(HAVE_LONG_LONG_INT_64) AC_MSG_RESULT(yes)],
B
Bruce Momjian 已提交
680 681 682
	AC_MSG_RESULT(no),
	AC_MSG_RESULT(assuming not on target machine))

683 684 685 686
dnl Checks for library functions.
AC_FUNC_MEMCMP
AC_TYPE_SIGNAL
AC_FUNC_VPRINTF
B
cleanup  
Bruce Momjian 已提交
687
AC_CHECK_FUNCS(tzset memmove sigsetjmp kill sysconf fpclass)
688
AC_CHECK_FUNCS(fp_class fp_class_d class)
689
AC_CHECK_FUNCS(sigprocmask waitpid setsid fcvt)
M
 
Marc G. Fournier 已提交
690 691
AC_CHECK_FUNC(snprintf,
	      AC_DEFINE(HAVE_SNPRINTF),
M
 
Marc G. Fournier 已提交
692
	      SNPRINTF='snprintf.o')
M
 
Marc G. Fournier 已提交
693
AC_SUBST(SNPRINTF)
B
Bruce Momjian 已提交
694 695 696
AC_CHECK_FUNC(isinf,
	      AC_DEFINE(HAVE_ISINF),
	      ISINF='isinf.o')
697
AC_SUBST(ISINF)
B
Bruce Momjian 已提交
698 699 700
AC_CHECK_FUNC(getrusage,
	      AC_DEFINE(HAVE_GETRUSAGE),
	      GETRUSAGE='getrusage.o')
701
AC_SUBST(GETRUSAGE)
B
Bruce Momjian 已提交
702 703 704
AC_CHECK_FUNC(srandom,
	      AC_DEFINE(HAVE_SRANDOM),
	      SRANDOM='srandom.o')
705
AC_SUBST(SRANDOM)
B
Bruce Momjian 已提交
706 707 708
AC_CHECK_FUNC(gethostname,
	      AC_DEFINE(HAVE_GETHOSTNAME),
	      GETHOSTNAME='gethostname.o')
709
AC_SUBST(GETHOSTNAME)
B
Bruce Momjian 已提交
710 711 712
AC_CHECK_FUNC(random,
	      AC_DEFINE(HAVE_RANDOM),
	      MISSING_RANDOM='random.o')
713
AC_SUBST(MISSING_RANDOM)
B
Bruce Momjian 已提交
714 715 716
AC_CHECK_FUNC(inet_aton,
	      AC_DEFINE(HAVE_INET_ATON),
	      INET_ATON='inet_aton.o')
717
AC_SUBST(INET_ATON)
B
Bruce Momjian 已提交
718 719 720
AC_CHECK_FUNC(strerror,
	      AC_DEFINE(HAVE_STRERROR),
	      [STRERROR='strerror.o' STRERROR2='../../backend/port/strerror.o'])
721 722
AC_SUBST(STRERROR)
AC_SUBST(STRERROR2)
B
Bruce Momjian 已提交
723 724 725
AC_CHECK_FUNC(strdup,
	      AC_DEFINE(HAVE_STRDUP),
	      STRDUP='../../utils/strdup.o')
726
AC_SUBST(STRDUP)
B
Bruce Momjian 已提交
727 728 729
AC_CHECK_FUNC(strtol,
	      AC_DEFINE(HAVE_STRTOL),
	      STRTOL='strtol.o')
M
Marc G. Fournier 已提交
730
AC_SUBST(STRTOL)
B
Bruce Momjian 已提交
731 732 733
AC_CHECK_FUNC(strtoul,
	      AC_DEFINE(HAVE_STRTOUL),
	      STRTOL='strtoul.o')
M
Marc G. Fournier 已提交
734
AC_SUBST(STRTOUL)
B
Bruce Momjian 已提交
735 736 737
AC_CHECK_FUNC(strcasecmp,
	      AC_DEFINE(HAVE_STRCASECMP),
	      STRCASECMP='strcasecmp.o')
738
AC_SUBST(STRCASECMP)
B
Bruce Momjian 已提交
739 740 741 742 743
AC_CHECK_FUNC(cbrt,
	      AC_DEFINE(HAVE_CBRT),
	      AC_CHECK_LIB(m, cbrt, AC_DEFINE(HAVE_CBRT)))
AC_CHECK_FUNC(rint,
	      AC_DEFINE(HAVE_RINT),
B
Bruce Momjian 已提交
744 745 746 747 748 749 750 751
[
# On HPUX 9, rint() is not in regular libm.a but in /lib/pa1.1/libm.a
SPECIALMATHLIB=""
if [[ -r /lib/pa1.1/libm.a ]] ; then
    SPECIALMATHLIB="-L /lib/pa1.1 -lm"
fi
	      AC_CHECK_LIB(m, rint, AC_DEFINE(HAVE_RINT), , $SPECIALMATHLIB)
])
752

B
Bruce Momjian 已提交
753 754
dnl Check for Tcl configuration script tclConfig.sh

755 756
dnl If --with-tclconfig was given, don't check for tclsh, tcl
if test -z "$TCL_DIRS"
B
Bruce Momjian 已提交
757
then
758 759 760 761 762 763 764 765 766 767
	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 已提交
768 769 770 771 772 773
fi
	
if test "$USE_TCL" = true
then
	AC_MSG_CHECKING(for tclConfig.sh)
	TCL_CONFIG_SH=
774 775 776 777 778 779
	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 已提交
780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824
	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

825 826 827 828
dnl Check for X libraries

if test "$USE_X" = true; then

B
Bruce Momjian 已提交
829 830 831 832
	ice_save_LIBS="$LIBS"
	ice_save_CFLAGS="$CFLAGS"
	ice_save_CPPFLAGS="$CPPFLAGS"
	ice_save_LDFLAGS="$LDFLAGS"
833

B
Bruce Momjian 已提交
834
	AC_PATH_XTRA
835

B
Bruce Momjian 已提交
836 837 838 839
	LIBS="$LIBS $X_EXTRA_LIBS"
	CFLAGS="$CFLAGS $X_CFLAGS"
	CPPFLAGS="$CPPFLAGS $X_CFLAGS"
	LDFLAGS="$LDFLAGS $X_LIBS"
840

B
Bruce Momjian 已提交
841
	dnl Check for X library
842

B
Bruce Momjian 已提交
843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859
	X11_LIBS=""
	AC_CHECK_LIB(X11, XOpenDisplay, X11_LIBS="-lX11",,${X_PRE_LIBS})
	if test "$X11_LIBS" = ""; then
		dnl Not having X may be fatal.	Let the user fix this.
		AC_MSG_WARN([The X11 library '-lX11' could not be found.
			    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.])
	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"
860 861
fi

862 863 864 865 866 867 868 869 870 871
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
872 873 874 875 876 877 878 879 880 881 882
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

883
AC_OUTPUT(
884 885
	GNUmakefile
	Makefile.global
886 887
	backend/port/Makefile
	backend/catalog/genbki.sh
888 889 890 891
	backend/utils/Gen_fmgrtab.sh
	bin/pg_dump/Makefile
	bin/pg_version/Makefile
	bin/psql/Makefile
B
Bruce Momjian 已提交
892 893
	bin/pgtclsh/mkMakefile.tcldefs.sh
	bin/pgtclsh/mkMakefile.tkdefs.sh
894 895 896 897 898 899 900 901
	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 已提交
902
	pl/plpgsql/src/mklang.sql
903 904
	pl/tcl/mkMakefile.tcldefs.sh
)