1
0
mirror of https://github.com/fwbuilder/fwbuilder synced 2026-03-19 09:47:20 +01:00
fwbuilder/configure.in
2010-05-25 23:07:52 +00:00

486 lines
13 KiB
Plaintext

dnl $Id: configure.in,v 1.70 2007/06/07 02:33:53 vkurland Exp $
AC_INIT
AC_CONFIG_SRCDIR([src/gui/main.cpp])
AC_CANONICAL_TARGET
AC_CONFIG_HEADER(config.h)
PACKAGE=fwbuilder
AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [package])
AC_SUBST(PACKAGE)
dnl
dnl all version numbers are defined in the file VERSION
dnl
. ./VERSION
BUILD_NUM=`cat build_num | cut -d' ' -f3`
AC_SUBST(FWB_MAJOR_VERSION)
AC_SUBST(FWB_MINOR_VERSION)
AC_SUBST(FWB_MICRO_VERSION)
AC_SUBST(FWB_VERSION)
SHORTVERSION=${FWB_MAJOR_VERSION}${FWB_MINOR_VERSION}${FWB_MICRO_VERSION}
AC_SUBST(SHORTVERSION)
echo "Creating VERSION.h file..."
echo "#define VERSION \"$VERSION\"" > VERSION.h
dnl try to find QT
dnl
AC_ARG_WITH(qtdir,[ --with-qtdir=DIR Specify directory path for QT ])
if test -n "$with_qtdir"; then
AC_MSG_CHECKING(Using QT in )
QTDIR="$with_qtdir";
export QTDIR
AC_MSG_RESULT($QTDIR)
fi
# TODO: do we need to add $QTDIR/bin to PATH to find qmake?
EXTENDED_PATH="/usr/local/bin:$PATH"
AC_ARG_WITH(qmake, [ --with-qmake=qmake Specify the qmake to be used (debian qmake-qt4) ])
if test -n "$with_qmake"; then
AC_PATH_PROG(QMAKE, $with_qmake, ,[$EXTENDED_PATH])
if test -z "$QMAKE"; then
AC_MSG_ERROR("Could not find qmake")
fi
else
AC_PATH_PROG(QMAKE, qmake, ,[$EXTENDED_PATH])
if test -z "$QMAKE"; then
AC_PATH_PROG(QMAKE, qmake-qt4, ,[$EXTENDED_PATH])
if test -z "$QMAKE"; then
AC_MSG_ERROR("Could not find qmake")
fi
fi
fi
AC_MSG_CHECKING(checking version of QT this qmake is part of)
qmake_version=`$QMAKE -v 2>&1 | awk '/Using Qt version/ { print $4;}'`
case $qmake_version in
4.*) AC_MSG_RESULT( $qmake_version ) ;;
*) AC_MSG_ERROR( "$qmake_version -- v4.x is required") ;;
esac
AC_ARG_WITH(templatedir, [ --with-templatedir=DIR Specify directory path for fwbuilder template files ])
AC_ARG_WITH(docdir, [ --with-docdir=DIR Specify directory path for fwbuilder
documentation files ])
AC_ARG_WITH(datadir, [ --with-datadir=DIR Specify directory path for fwbuilder
data files ])
dnl
dnl Determine init dir and add definition to config.h. Program
dnl determines prefix name of the directory it was started from
dnl and prepends it to the RES_DIR
dnl
PREFIX=$ac_default_prefix
if test "x$prefix" != "xNONE"; then
PREFIX=$prefix
fi
AC_DEFINE_UNQUOTED(PREFIX, "${PREFIX}", [prefix])
AC_SUBST(PREFIX)
AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [version])
AC_SUBST(VERSION)
AC_PROG_INSTALL
AC_ISC_POSIX
AC_PROG_CC
dnl AM_PROG_CC_STDC
AC_HEADER_STDC
AC_PROG_CPP
AC_PROG_CXX
AC_PROG_CXXCPP
dnl need this for intl to compile on FreeBSD and may be other platforms
AC_CHECK_FUNCS(strchr memcpy)
dnl AM_INIT_AUTOMAKE($PACKAGE, $VERSION)
dnl AC_CANONICAL_HOST
AC_PROG_MAKE_SET
dnl Check for GNU make
dnl
AC_MSG_CHECKING(whether make is GNU Make)
if ${MAKE-make} -q --version 2>/dev/null | grep '^GNU Make ' >/dev/null ; then
AC_MSG_RESULT(yes)
else
AC_MSG_RESULT(no)
if test "$host_vendor" = "sun" ; then
AC_MSG_ERROR("SUN make does not work for building Firewall Builder. Please install GNU make")
fi
fi
dnl some platform-dependent flags
dnl
dnl e.g. we need to set -I/sw/include before check for GETTEXT
dnl
GUILINKFLAGS=
case "$build_os" in
*solaris*)
GUILINKFLAGS="-export-dynamic"
;;
*darwin*)
if test -d /sw/include; then
CXXFLAGS="-I/sw/include"
CPPFLAGS="-I/sw/include"
CFLAGS="-I/sw/include"
LDFLAGS="-flat_namespace"
fi
LIBS="$LIBS -L/sw/lib"
AC_CHECK_LIB(poll, poll, [LIBS="$LIBS -lpoll"],[
AC_MSG_ERROR([Could not link with libpoll: library is not installed on this system])
])
;;
esac
AC_SUBST(GUILINKFLAGS)
dnl
dnl forkpty is in libutil on Linux and BSD, while on Mac it is in libc
dnl
AC_CHECK_HEADERS( [pty.h libutil.h util.h],[],[],[#include <sys/types.h>])
AC_CHECK_LIB(c,forkpty,[
AC_DEFINE_UNQUOTED(HAVE_FORKPTY, 1, [forkpty])
],[
AC_CHECK_LIB(util,forkpty,[
AC_DEFINE_UNQUOTED(HAVE_FORKPTY, 1, [forkpty])
LIBS="-lutil $LIBS"
],[
AC_MSG_RESULT(["forkpty not found, will use emulation"])
],[])
],[])
AC_CHECK_LIB(c,cfmakeraw,[
AC_DEFINE_UNQUOTED(HAVE_CFMAKERAW, 1, [cfmakeraw])
])
dnl standard LIBTOOL fragment
dnl
dnl commented out 12/20 - we now use qmake and do not need libtool
dnl
dnl AC_LIBTOOL_DLOPEN
dnl AC_PROG_LIBTOOL
dnl AC_SUBST(LIBTOOL_DEPS)
dnl AM_PROG_LIBTOOL
dnl AC_PROG_RANLIB
AC_CHECK_HEADERS([getopt.h])
AC_CHECK_HEADERS([signal.h])
AC_CHECK_FUNCS(stat _stat signal)
AC_STRUCT_TM
AC_STRUCT_TIMEZONE
dnl do not insert spaces in these macros, even outside of []
AC_PATH_PROG(RCS_FILE_NAME,[rcs],[rcs],[$EXTENDED_PATH])
AC_PATH_PROG(RCSDIFF_FILE_NAME,[rcsdiff],[rcsdiff],[$EXTENDED_PATH])
AC_PATH_PROG(RLOG_FILE_NAME,[rlog],[rlog],[$EXTENDED_PATH])
AC_PATH_PROG(CI_FILE_NAME,[ci],[ci],[$EXTENDED_PATH])
AC_PATH_PROG(CO_FILE_NAME,[co],[co],[$EXTENDED_PATH])
AC_DEFINE_UNQUOTED(RCS_FILE_NAME, ["$RCS_FILE_NAME"], [rcs_file_name])
AC_DEFINE_UNQUOTED(RCSDIFF_FILE_NAME, ["$RCSDIFF_FILE_NAME"], [rcsdiff_file_name])
AC_DEFINE_UNQUOTED(RLOG_FILE_NAME, ["$RLOG_FILE_NAME"], [rlog_file_name])
AC_DEFINE_UNQUOTED(CI_FILE_NAME, ["$CI_FILE_NAME"], [ci_file_name])
AC_DEFINE_UNQUOTED(CO_FILE_NAME, ["$CO_FILE_NAME"], [co_file_name])
AC_PATH_PROG(LIBFWBUILDER_CONFIG, libfwbuilder-config-${FWB_MAJOR_VERSION}, ,[$EXTENDED_PATH])
if test x$LIBFWBUILDER_CONFIG = x ; then
AC_MSG_ERROR([*** libfwbuilder not installed, or libfwbuilder-config-${FWB_MAJOR_VERSION} is not in path])
else
LIBFWBUILDER_CFLAGS_FWBUILDER="`$LIBFWBUILDER_CONFIG --cflags fwbuilder`"
LIBFWBUILDER_CFLAGS_FWCOMPILER="`$LIBFWBUILDER_CONFIG --cflags fwcompiler`"
LIBFWBUILDER_CFLAGS_FWBD="`$LIBFWBUILDER_CONFIG --cflags fwbd`"
LIBFWBUILDER_INCLUDEPATH="`$LIBFWBUILDER_CONFIG --includepath`"
LIBFWBUILDER_LIBPATH="`$LIBFWBUILDER_CONFIG --libpath`"
LIBFWBUILDER_LIBS_FWBUILDER="`$LIBFWBUILDER_CONFIG --libs fwbuilder`"
LIBFWBUILDER_LIBS_FWCOMPILER="`$LIBFWBUILDER_CONFIG --libs fwcompiler`"
LIBFWBUILDER_LIBS_FWBD="`$LIBFWBUILDER_CONFIG --libs fwbd`"
LIBFWBUILDER_STATICLIBS="`$LIBFWBUILDER_CONFIG --staticlibs`"
LIBFWBUILDER_VERSION="`$LIBFWBUILDER_CONFIG --version`"
FWBUILDER_XML_VERSION="`$LIBFWBUILDER_CONFIG --xml_version`"
AC_MSG_CHECKING(libfwbuilder version)
if test x${LIBFWBUILDER_VERSION} != x${REQUIRED_LIBFWBUILDER_VERSION} ; then
AC_MSG_ERROR([*** Need libfwbuilder version $REQUIRED_LIBFWBUILDER_VERSION, found $LIBFWBUILDER_VERSION ])
fi
AC_MSG_RESULT($LIBFWBUILDER_VERSION)
AC_SUBST(LIBFWBUILDER_CFLAGS_FWBUILDER)
AC_SUBST(LIBFWBUILDER_CFLAGS_FWCOMPILER)
AC_SUBST(LIBFWBUILDER_LIBS_FWBUILDER)
AC_SUBST(LIBFWBUILDER_LIBS_FWCOMPILER)
AC_SUBST(LIBFWBUILDER_LIBPATH)
AC_SUBST(LIBFWBUILDER_INCLUDEPATH)
AC_SUBST(LIBFWBUILDER_STATICLIBS)
AC_SUBST(LIBFWBUILDER_VERSION)
AC_SUBST(FWBUILDER_XML_VERSION)
fi
AC_DEFINE_UNQUOTED(LIBFWBUILDER_VERSION, "$LIBFWBUILDER_VERSION", [libfwbuilder_version])
AC_SUBST(LIBS)
AC_LANG([C++])
AM_PATH_CPPUNIT(1.12.0, [HAVE_CPPUNIT="1"])
AC_DEFINE_UNQUOTED(HAVE_CPPUNIT, $HAVE_CPPUNIT)
AC_SUBST(HAVE_CPPUNIT)
AC_SUBST(CPPUNIT_CFLAGS)
AC_SUBST(CPPUNIT_LIBS)
dnl A check for antlr-runtime library used to be here but has been
dnl removed. We should always use antlr runtime code incuded with
dnl fwbuilder code tree because of the fixes I've done in
dnl CurcularQueue.hpp module for 64 bit systems. This problem seems to
dnl have been fixed in antlr v3 but until we convert all grammars to
dnl the new antlr, we have to use provided antlr 2.7.7 with these
dnl fixes. This means we can't use antlr runtime that comes with the
dnl OS even if it is installed.
ANTLR_INCLUDEPATH="`pwd`/src/"
ANTLR_LIBS="`pwd`/src/antlr/libantlr.a"
AC_SUBST(ANTLR_LIBS)
AC_SUBST(ANTLR_INCLUDEPATH)
# TODO: Probably need to repackage this as Autoconf macro.
#
# QT DBus framework is not always available. It is not included in QT
# for Windows and is missing in QT 4.5.3 Commercial package for Mac OS
# X 10.6 SnowLeopard (but it is present in QT 4.4.1 Commercial for
# Mac OS X 10.5 Leopard. Go figure.)
#
AC_MSG_CHECKING(QT DBus framework)
( cd config_tests
C=""
test -n "$QMAKESPEC" && C="$C -spec $QMAKESPEC "
$QMAKE $C qtdbus_test.pro || exit 1
test -f Makefile || exit 1
make clean >config.log 2>&1
make >>config.log 2>&1
)
if test $? -eq 0; then
HAVE_QTDBUS="1"
AC_MSG_RESULT(ok)
AC_DEFINE(HAVE_QTDBUS)
else
AC_MSG_RESULT(not available)
fi
AC_SUBST(HAVE_QTDBUS)
dnl ********************************************************************
if test "x$with_docdir" != "x"; then
DOCDIR="${with_docdir}"
else
DOCDIR="${PREFIX}/share/doc/fwbuilder-${VERSION}"
fi
DOCDIRPATH=`dirname ${DOCDIR}`
if test "x$with_datadir" != "x"; then
DATADIR="${with_datadir}"
else
DATADIR="${PREFIX}/share/"
fi
ICONSDIR=""
AC_MSG_CHECKING(what OS this is)
case ${host} in
*-*-cygwin*)
OS=cygwin
OS_CYGWIN=1
AC_MSG_RESULT(Win32 cygwin)
DEFAULT_RES_DIR="resources"
;;
*-*-mingw32*)
OS=mingw32
OS_MINGW=1
AC_MSG_RESULT(Win32 mingw)
DEFAULT_RES_DIR="resources"
;;
*-*-darwin*)
OS=MacOSX
OS_MACOSX=1
MANDIR="${PREFIX}/share/man/"
AC_MSG_RESULT(MacOSX)
DEFAULT_RES_DIR="../Resources"
;;
*-*-solaris*)
OS=Solaris
OS_SOLARIS=1
MANDIR="${PREFIX}/share/man/"
AC_MSG_RESULT(Solaris)
DEFAULT_RES_DIR="${PREFIX}/share/fwbuilder-${VERSION}"
;;
*-*-freebsd*)
OS=FreeBSD
OS_FREEBSD=1
MANDIR="${PREFIX}/man/"
AC_MSG_RESULT(FreeBSD)
DEFAULT_RES_DIR="${PREFIX}/share/fwbuilder-${VERSION}"
;;
*-*-openbsd*)
OS=OpenBSD
OS_OPENBSD=1
MANDIR="${PREFIX}/man/"
AC_MSG_RESULT(OpenBSD)
DEFAULT_RES_DIR="${PREFIX}/share/fwbuilder-${VERSION}"
;;
*-*-kfreebsd*)
OS=FreeBSD
OS_FREEBSD=1
if test -f /etc/debian_version ; then
DISTRO=Debian
else
DISTRO="Unknown"
fi
MANDIR="${PREFIX}/share/man/"
AC_MSG_RESULT($DISTRO GNU/kFreeBSD)
DEFAULT_RES_DIR="${PREFIX}/share/fwbuilder-${VERSION}"
;;
*-*-linux*)
DEFAULT_RES_DIR="${PREFIX}/share/fwbuilder-${VERSION}"
OS=Linux
OS_LINUX=1
if test -f /etc/debian_version ; then
DISTRO=Debian
elif test -f /etc/mandrake-release ; then
DISTRO=Mandrake
elif test -f /etc/slackware-version ; then
DISTRO=Slackware
elif test -f /etc/SuSE-release ; then
DISTRO=SuSE
elif test -f /etc/redhat-release ; then
#
# Mandrake has symlink /etc/redhat-release -> /etc/manrake-release ,
# so this check must be the last
#
DISTRO=RedHat
else
DISTRO="Unknown"
fi
MANDIR="${PREFIX}/share/man/"
ICONSDIR="${DATADIR}/icons/hicolor/"
AC_MSG_RESULT($DISTRO Linux)
;;
*)
OS=Unknown
OS_UNKNOWN=1
DISTRO=Unknown
MANDIR="${PREFIX}/share/man/"
AC_MSG_RESULT(Unknown)
DEFAULT_RES_DIR="${PREFIX}/share/fwbuilder-${VERSION}"
;;
esac
if test "x$with_templatedir" != "x"; then
RES_DIR="${with_templatedir}"
else
RES_DIR="$DEFAULT_RES_DIR"
fi
AC_DEFINE_UNQUOTED(RES_DIR, "$RES_DIR", [res_dir])
AC_SUBST(RES_DIR)
AC_SUBST(OS)
AC_DEFINE_UNQUOTED(OS, "${OS}", [os])
test -n "$OS_CYGWIN" && AC_DEFINE_UNQUOTED(OS_CYGWIN, "${OS_CYGWIN}", [cygwin])
test -n "$OS_MINGW" && AC_DEFINE_UNQUOTED(OS_MINGW, "${OS_MINGW}", [mingw])
test -n "$OS_MACOSX" && AC_DEFINE_UNQUOTED(OS_MACOSX, "${OS_MACOSX}", [macosx])
test -n "$OS_SOLARIS" && AC_DEFINE_UNQUOTED(OS_SOLARIS,"${OS_SOLARIS}",[solaris])
test -n "$OS_FREEBSD" && AC_DEFINE_UNQUOTED(OS_FREEBSD,"${OS_FREEBSD}",[freebsd])
test -n "$OS_OPENBSD" && AC_DEFINE_UNQUOTED(OS_OPENBSD,"${OS_OPENBSD}",[openbsd])
test -n "$OS_LINUX" && AC_DEFINE_UNQUOTED(OS_LINUX, "${OS_LINUX}", [linux])
test -n "$OS_SECUWALL" && AC_DEFINE_UNQUOTED(OS_SECUWALL, "${OS_SECUWALL}", [secuwall])
test -n "$OS_UNKNOWN" && AC_DEFINE_UNQUOTED(OS_UNKNOWN,"${OS_UNKNOWN}",[unknown])
AC_SUBST(DISTRO)
AC_DEFINE_UNQUOTED(DISTRO, "${DISTRO}", [distro])
AC_SUBST(DOCDIRPATH)
AC_DEFINE_UNQUOTED(DOCDIRPATH, "${DOCDIRPATH}", [docdirpath])
AC_SUBST(DOCDIR)
AC_DEFINE_UNQUOTED(DOCDIR, "${DOCDIR}", [docdir])
AC_SUBST(DATADIR)
AC_SUBST(MANDIR)
AC_SUBST(ICONSDIR)
AC_PATH_PROG(CCACHE, ccache, , )
AC_SUBST(CCACHE)
if test -n "$CCACHE"
then
ccache -s
fi
AC_ARG_WITH(distcc,[ --with-distcc=N Use distcc with N parallel make count])
if test -n "$with_distcc"; then
if test "x$with_distcc" != "xno"; then
AC_PATH_PROG(HAVE_DISTCC, distcc, , )
if test -n "$HAVE_DISTCC"; then
DISTCC=$HAVE_DISTCC
AC_SUBST(DISTCC)
PARALLEL_MAKE_COUNT=$with_distcc
AC_SUBST(PARALLEL_MAKE_COUNT)
fi
fi
else
AC_PATH_PROG(HAVE_DISTCC, distcc, , )
if test -n "$HAVE_DISTCC"; then
M_J=$(distcc -j 2>/dev/null)
if test -n "$M_J"; then
DISTCC=$HAVE_DISTCC
AC_SUBST(DISTCC)
PARALLEL_MAKE_COUNT=$M_J
AC_SUBST(PARALLEL_MAKE_COUNT)
fi
fi
fi
AC_CONFIG_FILES([ qmake.inc ])
AC_CONFIG_FILES([ src/res/objects_init.xml ])
AC_CONFIG_FILES([ src/res/templates.xml ])
AC_OUTPUT
# QMAKE=$QMAKE CCACHE=$CCACHE QTDIR=$QTDIR ./runqmake.sh
QMAKE=$QMAKE QTDIR=$QTDIR ./runqmake.sh