dnl $Id: configure.in,v 1.49 2002-09-23 07:49:33 eku Exp $ dnl ############################# INITIALISATION ############################### AC_INIT(src) AC_CONFIG_AUX_DIR(src/make.new/config) AC_CACHE_VAL(ac_cv_prog_make_set, [AC_PROG_MAKE_SET]) AC_PREFIX_DEFAULT(/usr/local/firebird) AC_CONFIG_HEADER(src/include/gen/autoconfig.h:src/make.new/config/config.h.in) dnl XE_APPEND(value, varname) define([XE_APPEND],[[$2]="$[$2] [$1]"]) dnl XE_PREPEND(value, varname) define([XE_PREPEND],[[$2]="[$1] $[$2]"]) dnl ############################# ADD TESTS BELOW ############################## AC_CANONICAL_SYSTEM case "$target_cpu" in powerpc) AC_DEFINE(PowerPC) ;; esac CPU_TYPE=$host_cpu dnl EKU: Should this be target_cpu ??? AC_SUBST(CPU_TYPE) case "$target" in *-*-darwin*) MAKEFILE_PREFIX=darwin ; PLATFORM=DARWIN ; AC_DEFINE(DARWIN);; *-*-freebsd*) MAKEFILE_PREFIX=freebsd ; PLATFORM=FREEBSD ; AC_DEFINE(FREEBSD);; *-*-linux*) MAKEFILE_PREFIX=linux ; PLATFORM=LINUX ; AC_DEFINE(LINUX) ;; *-*-netbsd*) MAKEFILE_PREFIX=netbsd ; PLATFORM=NETBSD ; AC_DEFINE(NETBSD) ;; *-*-hpux*) MAKEFILE_PREFIX=hpux ; PLATFORM=hpux ; AC_DEFINE(hpux) ;; i386-pc-solaris*) MAKEFILE_PREFIX=solx86 ; PLATFORM=solx86 ; AC_DEFINE(solx86) ;; i*-sni-sysv4) MAKEFILE_PREFIX=sinixz ; PLATFORM="SINIX-Z" ; AC_DEFINE(SINIXZ) ;; esac AC_SUBST(PLATFORM) dnl possibly needed if we use install-sh program dnl AC_CONFIG_AUX_DIR(`pwd`) AC_PROG_AWK AC_PROG_CC dnl EKU: C++ programs should not use CC, but at the moment all dnl makefiles use $(CC) to link objects. This has to be changed! AC_PROG_CXX AC_PROG_LEX AC_PROG_LN_S AC_PROG_RANLIB AC_PROG_YACC dnl Some controllable options FIREBIRD_ARCH_TYPE=classic AC_ARG_ENABLE(superserver, [ --enable-superserver build SuperServer architecture (default=no)], [case "$enableval" in yes) FIREBIRD_ARCH_TYPE=super;; no) FIREBIRD_ARCH_TYPE=classic;; *) AC_MSG_ERROR(bad value '${enableval}' for --enable-superserver);; esac]) AC_SUBST(FIREBIRD_ARCH_TYPE) PROD_BUILD_FLG=Y AC_ARG_ENABLE(debug, [ --enable-debug build debug version (default=no)], [case "$enableval" in yes) PROD_BUILD_FLG=N;; no) PROD_BUILD_FLG=Y;; *) AC_MSG_ERROR(bad value '${enableval}' for --enable-debug);; esac]) AC_SUBST(PROD_BUILD_FLG) LOCK_MANAGER=N MANAGER_PROCESS_TARGET= if test "$FIREBIRD_ARCH_TYPE" = "classic"; then dnl The lock manager process is only need on systems, that do not support dnl sending signals to process groups (man 2 kill). AC_ARG_WITH(lock-manager, [ --with-lock-manager build lock manager (default=no)], [case "$withval" in yes) LOCK_MANAGER=Y;; no) LOCK_MANAGER=N;; *) AC_MSG_ERROR(bad value '${withval}' for --with-lock-manager);; esac]) if test "$LOCK_MANAGER" = "Y"; then dnl EKU: we should determine the necessity by target system dnl at least SOLARIS-MT, DARWIN and SINIX-Z do not require a lock dnl manager process AC_DEFINE(MANAGER_PROCESS) MANAGER_PROCESS_TARGET=lock_mgr fi fi AC_SUBST(MANAGER_PROCESS_TARGET) dnl Check for system header files AC_CHECK_HEADERS(assert.h) AC_CHECK_HEADERS(ctype.h) AC_CHECK_HEADERS(errno.h) AC_CHECK_HEADERS(fcntl.h) AC_CHECK_HEADERS(grp.h) AC_CHECK_HEADERS(pwd.h) AC_CHECK_HEADERS(libio.h) AC_CHECK_HEADERS(locale.h) AC_CHECK_HEADERS(math.h) AC_CHECK_HEADERS(pthread.h) AC_CHECK_HEADERS(sys/types.h) AC_CHECK_HEADERS(sys/stat.h) AC_CHECK_HEADERS(sys/uio.h) AC_HEADER_SYS_WAIT AC_HEADER_TIME AC_CHECK_HEADERS(sys/timeb.h) AC_CHECK_HEADERS(sys/param.h) AC_CHECK_HEADERS(sys/ioctl.h) AC_CHECK_HEADERS(setjmp.h) AC_CHECK_HEADERS(stdarg.h) AC_CHECK_HEADERS(stdlib.h) AC_CHECK_HEADERS(string.h) AC_CHECK_HEADERS(signal.h) AC_CHECK_HEADERS(readline/readline.h) AC_CHECK_HEADERS(pwd.h) AC_CHECK_HEADERS(unistd.h) AC_CHECK_HEADERS(varargs.h) dnl Check for libraries AC_CHECK_LIB(dl, main) AC_CHECK_LIB(c,main) AC_CHECK_LIB(m, main) if test "$FIREBIRD_ARCH_TYPE" = "super"; then AC_CHECK_LIB(pthread, main) fi AC_CHECK_LIB(crypt, main) AC_CHECK_LIB(curses, main) dnl AC_CHECK_LIB(termcap, main) AC_CHECK_LIB(readline, main,,, $LIBS) AC_CHECK_LIB(stdc++, main,,, $LIBS) dnl Check for functions AC_CHECK_FUNCS(strlcpy strlcat) AC_CHECK_FUNCS(gettimeofday) if test "$ac_cv_func_gettimeofday" = "yes"; then dnl EKU: SINIX-Z has no prototype for gettimeofday() so the following test dnl will always succeed, which is wrong. case $PLATFORM in SINIX-Z) ;; *) AC_MSG_CHECKING(if gettimeofday accepts second (timezone) argument) AC_TRY_COMPILE([#include ], [struct timeval tp; gettimeofday(&tp, (struct timezone *)0);], [AC_DEFINE(GETTIMEOFDAY_RETURNS_TIMEZONE) AC_MSG_RESULT(yes)], [AC_MSG_RESULT(no)]) ;; esac fi AC_CHECK_FUNCS(time times) AC_CHECK_FUNCS(gethostname connect) if test "$ac_cv_func_gethostname" = "no"; then AC_CHECK_LIB(nsl, gethostname, XE_APPEND(-lnsl,LIBS)) fi if test "$ac_cv_func_connect" = "no"; then AC_CHECK_LIB(socket, connect, XE_APPEND(-lsocket,LIBS),, $LIBS) fi AC_CHECK_FUNCS(strcasecmp stricmp) if test "$ac_cv_func_strcasecmp" = "no" -a "$ac_cv_func_stricmp" = "no"; then dnl EKU: On SINIX-Z strcasecmp is in libresolv. AC_CHECK_LIB(resolv, strcasecmp, [XE_APPEND(-lresolv,LIBS) unset ac_cv_func_strcasecmp AC_CHECK_FUNCS(strcasecmp)],, $LIBS) fi AC_CHECK_FUNCS(dirname) if test "$ac_cv_func_dirname" = "no"; then dnl EKU: On SINIX-Z dirname is in libgen. AC_CHECK_LIB(gen, dirname, [XE_APPEND(-lgen,LIBS) unset ac_cv_func_dirname AC_CHECK_FUNCS(dirname)],, $LIBS) fi AC_CHECK_FUNCS(sigaction) AC_CHECK_FUNCS(snprintf) AC_FUNC_MMAP AC_CHECK_FUNCS(atexit on_exit) AC_FUNC_FORK AC_CHECK_FUNCS(setgrp setpgid) AC_FUNC_SETPGRP AC_CHECK_FUNCS(flock) AC_CHECK_FUNCS(initgroups) dnl Check for other things AC_C_BIGENDIAN AC_C_CONST dnl EKU: we should replace the CONST define in the source!!! AC_C_VOLATILE AC_TYPE_SIGNAL AC_CHECK_TYPE(socklen_t,int) AC_SYS_LARGEFILE AC_CHECK_SIZEOF(void*) dnl EKU: try to determine the alignment of long and double dnl replaces ALIGNMENT and DOUBLE_ALIGN in src/jrd/common.h AC_MSG_CHECKING(alignment of long) AC_TRY_RUN([main () { struct s { char a; long b; }; exit((int)&((struct s*)0)->b); }], ac_cv_c_alignment=$ac_status, ac_cv_c_alignment=$ac_status) AC_MSG_RESULT($ac_cv_c_alignment) AC_DEFINE_UNQUOTED(ALIGNMENT,$ac_cv_c_alignment) AC_MSG_CHECKING(alignment of double) AC_TRY_RUN([main () { struct s { char a; double b; }; exit((int)&((struct s*)0)->b); }], ac_cv_c_double_align=$ac_status, ac_cv_c_double_align=$ac_status) AC_MSG_RESULT($ac_cv_c_double_align) AC_DEFINE_UNQUOTED(DOUBLE_ALIGN,$ac_cv_c_double_align) dnl EKU: don't know how to convert this into an autoconf test: dnl #define FB_ALIGN(n,b) ... dnl dnl VMS (n) -> no dnl sun_68k ((n+1) & ~1) -> even dnl XENIX ((n+1) & ~1) -> even dnl netware_386 ((n+1) & ~1) -> even dnl all others ((n + b - 1) & ~(b - 1)) -> multiple of b dnl dnl volunters are welcome! dnl ##################### DO NOT ADD ANY TESTS BELOW ########################### dnl The following file defines the version number strings . ./src/misc/writeBuildNum.sh FIREBIRD_PACKAGE_VERSION="0a.Dev1" FIREBIRD_LIBGDS_SO=libfbembed.so.${FIREBIRD_VERSION} FIREBIRD_LIBGDS_SO_LNK=libfbembed.so FIREBIRD_LIBGDS_SO_X_LNK=libfbembed.so.${MajorVer} AC_SUBST(FIREBIRD_LIBGDS_SO) AC_SUBST(FIREBIRD_LIBGDS_SO_LNK) AC_SUBST(FIREBIRD_LIBGDS_SO_X_LNK) AC_SUBST(FIREBIRD_VERSION) AC_SUBST(FIREBIRD_PACKAGE_VERSION) BUILD_ROOT_DIR=`pwd` SRC_ROOT=$BUILD_ROOT_DIR/src GEN_ROOT=$BUILD_ROOT_DIR/gen NEW_FIREBIRD_DIR=$GEN_ROOT/firebird AC_SUBST(BUILD_ROOT_DIR) AC_SUBST(NEW_FIREBIRD_DIR) AC_CONFIG_COMMANDS_PRE([ mkdir -p gen/csv mkdir -p gen/dudley mkdir -p gen/isql mkdir -p gen/lock mkdir -p gen/gpre mkdir -p gen/pipe mkdir -p gen/remote mkdir -p gen/wal mkdir -p gen/alice mkdir -p gen/refDatabases mkdir -p gen/v5_examples mkdir -p gen/journal mkdir -p gen/msgs mkdir -p gen/burp mkdir -p gen/dsql mkdir -p gen/extlib mkdir -p gen/intl mkdir -p gen/jrd mkdir -p gen/qli mkdir -p gen/utilities mkdir -p gen/fbutil mkdir -p gen/install mkdir -p gen/install/scripts mkdir -p gen/install/sinixz mkdir -p gen/common mkdir -p gen/common/memory mkdir -p gen/firebird/include mkdir -p gen/firebird/intl mkdir -p gen/firebird/UDF mkdir -p gen/firebird/bin mkdir -p gen/firebird/examples/v5 mkdir -p gen/firebird/lib mkdir -p gen/firebird/misc mkdir -p gen/firebird/help src/misc/writeBuildNum.sh rebuildHeader mkdir -p gen/jrd/os mkdir -p gen/jrd/os/darwin mkdir -p gen/jrd/os/posix mkdir -p gen/jrd/os/win32 mkdir -p gen/libfbcommon mkdir -p gen/libfbcommon/memory dnl mkdir -p gen/libdsqlserver mkdir -p gen/libfbserver mkdir -p gen/libfbserver/jrd mkdir -p gen/libfbserver/dsql mkdir -p gen/libfbserver/lock mkdir -p gen/libfbserver/remote mkdir -p gen/libfbserver/pipe mkdir -p gen/libfbserver/gpre mkdir -p gen/libfbserver/alice mkdir -p gen/libfbserver/burp mkdir -p gen/libfbserver/utilities mkdir -p gen/libfbserver/fbutil mkdir -p gen/libfbserver/wal mkdir -p gen/libfbserver/common/memory mkdir -p gen/libfbserver/jrd/os/posix mkdir -p gen/fbserver/remote mkdir -p gen/libfbclient/jrd mkdir -p gen/libfbclient/dsql mkdir -p gen/libfbclient/remote mkdir -p gen/libfbclient/utilities mkdir -p gen/libfbclient/fbutil mkdir -p gen/libfbclient/common/memory mkdir -p gen/client.gbak/burp mkdir -p gen/client.gfix/alice mkdir -p gen/client.gpre/gpre mkdir -p gen/client.isql/isql mkdir -p gen/client.util/utilities mkdir -p gen/intl/intl mkdir -p gen/libfbcommon/common/memory mkdir -p gen/libfbcommon/fbutil mkdir -p gen/boot.gpre/jrd mkdir -p gen/boot.gpre/gpre mkdir -p gen/static.gpre mkdir -p gen/static.gpre/jrd mkdir -p gen/static.gpre/dsql mkdir -p gen/static.gpre/lock mkdir -p gen/static.gpre/remote mkdir -p gen/static.gpre/pipe mkdir -p gen/static.gpre/gpre mkdir -p gen/static.gpre/alice mkdir -p gen/static.gpre/utilities mkdir -p gen/static.gpre/fbutil mkdir -p gen/static.gpre/jrd/os/posix mkdir -p gen/static.gpre/burp mkdir -p gen/static.gpre/wal mkdir -p gen/static.gbak/burp mkdir -p gen/static.isql/isql mkdir -p gen/libfbstatic mkdir -p gen/libfbstatic/jrd mkdir -p gen/libfbstatic/dsql mkdir -p gen/libfbstatic/lock mkdir -p gen/libfbstatic/remote mkdir -p gen/libfbstatic/pipe mkdir -p gen/libfbstatic/gpre mkdir -p gen/libfbstatic/alice mkdir -p gen/libfbstatic/utilities mkdir -p gen/libfbstatic/fbutil mkdir -p gen/libfbstatic/jrd/os/posix mkdir -p gen/libfbstatic/burp mkdir -p gen/libfbstatic/wal mkdir -p gen/embed.lockmgr/lock mkdir -p gen/embed.util/utilities mkdir -p gen/embed.gbak/burp mkdir -p gen/embed.gfix/alice mkdir -p gen/embed.isql/isql mkdir -p gen/embed.gdef/dudley mkdir -p gen/embed.qli/qli mkdir -p gen/embed.gpre/gpre mkdir -p gen/inet_server/remote mkdir -p gen/msgs/msgs mkdir -p gen/extlib/extlib/fbudf mkdir -p gen/v5_examples/v5_examples mkdir -p gen/libfbembed mkdir -p gen/libfbembed/jrd mkdir -p gen/libfbembed/dsql mkdir -p gen/libfbembed/lock mkdir -p gen/libfbembed/remote mkdir -p gen/libfbembed/pipe mkdir -p gen/libfbembed/gpre mkdir -p gen/libfbembed/alice mkdir -p gen/libfbembed/utilities mkdir -p gen/libfbembed/fbutil mkdir -p gen/libfbembed/jrd/os/posix mkdir -p gen/libfbembed/burp mkdir -p gen/libfbembed/wal mkdir -p gen/libfbembed/common/memory ]) MAKE_SRC_DIR=builds/posix AC_DEFINE_UNQUOTED(ISC_PREFIX,$(if test "x$prefix" = "xNONE" ; then echo \"$ac_default_prefix\"; else echo \"$prefix\"; fi)) AC_OUTPUT( gen/make.rules:${MAKE_SRC_DIR}/make.rules gen/make.defaults:${MAKE_SRC_DIR}/make.defaults gen/make.platform:${MAKE_SRC_DIR}/prefix.${MAKEFILE_PREFIX} gen/make.shared.variables:${MAKE_SRC_DIR}/make.shared.variables src/Makefile:${MAKE_SRC_DIR}/Makefile.in.firebird gen/Makefile.libfbcommon:${MAKE_SRC_DIR}/Makefile.in.libfbcommon gen/Makefile.boot.gpre:${MAKE_SRC_DIR}/Makefile.in.boot.gpre gen/Makefile.libfbstatic:${MAKE_SRC_DIR}/Makefile.in.libfbstatic gen/Makefile.static.gpre:${MAKE_SRC_DIR}/Makefile.in.static.gpre gen/Makefile.static.gbak:${MAKE_SRC_DIR}/Makefile.in.static.gbak gen/Makefile.static.isql:${MAKE_SRC_DIR}/Makefile.in.static.isql gen/Makefile.refDatabases:${MAKE_SRC_DIR}/Makefile.in.refDatabases gen/Makefile.libfbserver:${MAKE_SRC_DIR}/Makefile.in.libfbserver gen/Makefile.fbserver:${MAKE_SRC_DIR}/Makefile.in.fbserver gen/Makefile.libfbclient:${MAKE_SRC_DIR}/Makefile.in.libfbclient gen/Makefile.client.gbak:${MAKE_SRC_DIR}/Makefile.in.client.gbak gen/Makefile.client.gfix:${MAKE_SRC_DIR}/Makefile.in.client.gfix gen/Makefile.client.isql:${MAKE_SRC_DIR}/Makefile.in.client.isql gen/Makefile.client.gpre:${MAKE_SRC_DIR}/Makefile.in.client.gpre gen/Makefile.client.util:${MAKE_SRC_DIR}/Makefile.in.client.util gen/Makefile.intl:${MAKE_SRC_DIR}/Makefile.in.intl gen/Makefile.msgs:${MAKE_SRC_DIR}/Makefile.in.msgs gen/Makefile.extlib:${MAKE_SRC_DIR}/Makefile.in.extlib gen/Makefile.v5_examples:${MAKE_SRC_DIR}/Makefile.in.v5_examples gen/Makefile.libfbembed:${MAKE_SRC_DIR}/Makefile.in.libfbembed gen/Makefile.inet_server:${MAKE_SRC_DIR}/Makefile.in.inet_server gen/Makefile.embed.lockmgr:${MAKE_SRC_DIR}/Makefile.in.embed.lockmgr gen/Makefile.embed.util:${MAKE_SRC_DIR}/Makefile.in.embed.util gen/Makefile.embed.gfix:${MAKE_SRC_DIR}/Makefile.in.embed.gfix gen/Makefile.embed.gbak:${MAKE_SRC_DIR}/Makefile.in.embed.gbak gen/Makefile.embed.isql:${MAKE_SRC_DIR}/Makefile.in.embed.isql gen/Makefile.embed.gdef:${MAKE_SRC_DIR}/Makefile.in.embed.gdef gen/Makefile.embed.qli:${MAKE_SRC_DIR}/Makefile.in.embed.qli gen/Makefile.embed.gpre:${MAKE_SRC_DIR}/Makefile.in.embed.gpre src/v5_examples/Makefile:${MAKE_SRC_DIR}/Makefile.in.example5 src/install/Makefile:${MAKE_SRC_DIR}/Makefile.in.install Makefile:Makefile.in gen/install/scripts/preinstall.sh:src/install/${FIREBIRD_ARCH_TYPE}/preinstall.sh.in gen/install/scripts/install.sh:src/install/${FIREBIRD_ARCH_TYPE}/install.sh.in gen/install/scripts/postinstall.sh:src/install/${FIREBIRD_ARCH_TYPE}/postinstall.sh.in gen/install/scripts/preuninstall.sh:src/install/${FIREBIRD_ARCH_TYPE}/preuninstall.sh.in gen/install/scripts/postuninstall.sh:src/install/${FIREBIRD_ARCH_TYPE}/postuninstall.sh.in gen/install/install.sh:src/install/${FIREBIRD_ARCH_TYPE}/tarInstall.sh.in src/install/misc/firebird.xinetd dnl SINIX-Z start gen/install/sinixz/Makefile:src/install/arch-specific/sinixz/Makefile.in gen/install/sinixz/pkginfo:src/install/arch-specific/sinixz/pkginfo.in gen/install/sinixz/prototype:src/install/arch-specific/sinixz/prototype.in gen/install/sinixz/preinstall:src/install/arch-specific/sinixz/preinstall.in gen/install/sinixz/postinstall:src/install/arch-specific/sinixz/postinstall.in gen/install/sinixz/postremove:src/install/arch-specific/sinixz/postremove.in dnl SINIX-Z end ) dnl AC_DEFINE_UNQUOTED(FB_BUILD_TYPE, "$BuildType") dnl AC_DEFINE_UNQUOTED(FB_MAJOR_VER, "$MajorVer") dnl AC_DEFINE_UNQUOTED(FB_MINOR_VER, "$MinorVer") dnl AC_DEFINE_UNQUOTED(FB_REV_NO, "$RevNo") dnl AC_DEFINE_UNQUOTED(FB_BUILD_SUFFIX, "$BuildSuffix") dnl AC_DEFINE_UNQUOTED(PRODUCT_VER_STRING, "$PRODUCT_VER_STRING") dnl AC_DEFINE_UNQUOTED(FILE_VER_NUMBER, $FILE_VER_NUMBER) dnl AC_DEFINE_UNQUOTED(FILE_VER_STRING, "$FILE_VER_STRING") dnl AC_DEFINE_UNQUOTED(LICENSE_VER_STRING, "$FILE_VER_STRING") dnl EKU: must be executed after AC_OUTPUT chmod a+x gen/install/install.sh gen/install/scripts/*.sh dnl Print out the build configuration (the most interesting thing) echo echo echo The Firebird2 package has been configured with the following options: echo case $FIREBIRD_ARCH_TYPE in super) echo "Architecture : SuperServer";; classic) echo "Architecture : ClassicServer";; esac case $PROD_BUILD_FLG in Y) echo " Debug : disabled";; N) echo " Debug : enabled";; esac case $ac_cv_sys_file_offset_bits in no) echo " 64 bit I/O : disabled";; 64) echo " 64 bit I/O : enabled";; esac if test "$FIREBIRD_ARCH_TYPE" = "classic"; then case $LOCK_MANAGER in Y) echo "Lock manager : enabled";; N) echo "Lock manager : disabled";; esac fi echo " Install Dir : $prefix" echo dnl EOF