diff options
Diffstat (limited to 'configure.in')
-rw-r--r-- | configure.in | 346 |
1 files changed, 346 insertions, 0 deletions
diff --git a/configure.in b/configure.in new file mode 100644 index 0000000..edd4953 --- /dev/null +++ b/configure.in @@ -0,0 +1,346 @@ +AC_INIT(src/phone.h) +AC_CANONICAL_SYSTEM +AM_CONFIG_HEADER(src/twinkle_config.h) + +AC_ARG_ENABLE(qt-check, + AC_HELP_STRING([--disable-qt-check], [do not check Qt installation]), + [ac_cv_qt_check=$enableval], [ac_cv_qt_check=yes]) + +AC_ARG_WITH(kde, + AC_HELP_STRING([--without-kde], [do not compile KDE features]), + [ac_cv_kde=$withval], [ac_cv_kde=yes]) + +AC_ARG_WITH(ilbc, + AC_HELP_STRING([--without-ilbc], [do not compile iLBC]), + [ac_cv_ilbc=$withval], [ac_cv_ilbc=yes]) + +AC_ARG_WITH(speex, + AC_HELP_STRING([--without-speex], [do not compile speex]), + [ac_cv_speex=$withval], [ac_cv_speex=yes]) + +AC_ARG_WITH(zrtp, + AC_HELP_STRING([--without-zrtp], [do not compile zrtp support]), + [ac_cv_zrtp=$withval], [ac_cv_zrtp=yes]) + +AC_ARG_ENABLE(ilbc-cpp, + AC_HELP_STRING([--enable-ilbc-cpp], [your ilbc library is built for C++ instead of C]), + [ac_cv_ilbc_cpp=$enableval], [ac_cv_ilbc_cpp=no]) + +AM_INIT_AUTOMAKE(twinkle,"1.4.2") +AC_DEFINE(VERSION_DATE,["February 25 2009"],[Version release date]) +AC_PROG_CC +AC_PROG_CXX +AC_PROG_CPP +AC_PROG_CXXCPP +AC_PROG_RANLIB +AC_PROG_LEX +AC_PROG_YACC +AC_C_BIGENDIAN +AC_LANG(C++) +AC_FUNC_STRERROR_R + +AC_CHECK_HEADERS([linux/types.h]) +AC_CHECK_HEADERS([linux/errqueue.h],[],[],[ + #if HAVE_LINUX_TYPES_H + #include <linux/types.h> + #endif]) + +# Check version of the Common C++ library. +# This also sets the cc++2 include directory in CXXFLAGS +OST_CCXX2_VERSION(1.6.0,,exit) + +# Temporarily add some default directories to PKG_CONFIG_PATH such that +# the user will not be burdened with setting PKG_CONFIG_PATH +OLD_PKG_CONFIG_PATH=$PKG_CONFIG_PATH +PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig:/usr/lib/pkgconfig + +if test "x${prefix}" != "xNONE" +then + PKG_CONFIG_PATH=$PKG_CONFIG_PATH:${prefix}/lib/pkgconfig +fi + +if test -n "$QTDIR" +then + PKG_CONFIG_PATH=$PKG_CONFIG_PATH:$QTDIR/lib/pkgconfig +fi + +export PKG_CONFIG_PATH + +PKG_CHECK_MODULES(CCRTP, libccrtp1 >= 1.6.0) + +PKG_CHECK_MODULES(XML2, libxml-2.0) +# AC_CHECK_HEADER(libxml/tree.h, [], +# [AC_MSG_ERROR([libxml2 header files missing (libxml2-devel package)])]) + +if test "x$ac_cv_qt_check" = "xyes" +then + PKG_CHECK_MODULES(QT, qt-mt >= 3.3.0 qt-mt < 4.0) +fi + +# Restore the original value of PKG_CONFIG_PATH +PKG_CONFIG_PATH=$OLD_PKG_CONFIG_PATH +export PKG_CONFIG_PATH + +# Check if QTDIR variable is set +AC_MSG_CHECKING([value of \$QTDIR]) +if test -n "$QTDIR" +then + AC_MSG_RESULT([$QTDIR]) +else + AC_MSG_RESULT([not set]) + AC_MSG_ERROR([Set \$QTDIR to the Qt directory, eg. /usr/lib/qt3]) +fi + +AC_MSG_CHECKING([for qmake]) +if test -x $QTDIR/bin/qmake +then + AC_MSG_RESULT([yes]) +else + AC_MSG_RESULT([no]) + AC_MSG_ERROR([Cannot find qmake in \$QTDIR/bin. \$QTDIR is incorrect.]) +fi + +# Without this macro, compiling on non-kde systems does not work +AC_PATH_QT + +# Check if lrelease is available +AC_CHECK_PROG(have_lrelease, lrelease, yes, no) +if test "x$have_lrelease" = "xno" +then + AC_MSG_ERROR([lrelease is missing (qt3-devel-tools package)]) +fi + +dnl Create a Qt include project file for platform dependend variables +dnl This file will be included by the project file in the gui directory +dnl Determine include files and dynamic libs. +dnl Creation of qtccxxincl.pro is good to be in AC_CONFIG_COMMANDS +dnl macro so that config.status to be able to create it too. +dnl In this case we benefit from more ac_xxx variables. +dnl Disadvantage is autoconf don't group commands with same tag +dnl and we should use different tags. In result AC_OUTPUT will +dnl show all of them. +QT_INCL_PRO=qtccxxincl.pro +AC_MSG_NOTICE([creating $QT_INCL_PRO (include project file for Qt)]) + +# first set include path to generated files +echo "INCLUDEPATH += `pwd`/src" > $QT_INCL_PRO +# next get includes specified on command line +( +set -- $CPPFLAGS +while test -n "$1"; do + echo $1 + shift +done +) | grep '^-I' | sed -e 's|^-I||' | xargs echo INCLUDEPATH += >> $QT_INCL_PRO + +#echo "INCLUDEPATH += `$CCGNU2_CONFIG --includes`" | sed -e s/-I//g > $QT_INCL_PRO +# libccrtp1(ccrtp) depend from libccgnu2(commoncpp2) and +# should include above flags ! +echo "INCLUDEPATH += `$PKG_CONFIG --cflags-only-I libccrtp1`" | sed -e s/-I//g >> $QT_INCL_PRO +echo "INCLUDEPATH += `$PKG_CONFIG --cflags-only-I libxml-2.0`" | sed -e s/-I//g >> $QT_INCL_PRO + +# get libraries specified on command line +echo $LDFLAGS | xargs echo LIBS += >> $QT_INCL_PRO + +echo "LIBS += `$CCGNU2_CONFIG --stdlibs`" >> $QT_INCL_PRO +echo "LIBS += $CCRTP_LIBS" >> $QT_INCL_PRO +echo "LIBS += $XML2_LIBS" >> $QT_INCL_PRO + +# Check if KDE is available +if test "x$ac_cv_kde" = "xyes" +then + AC_CHECK_PROG(have_kde, kde-config, yes, no) +else + have_kde="no" +fi + +if test "x$have_kde" = "xyes" +then + KDE_SET_PREFIX + AC_PATH_KDE + + AC_CHECK_FILES(${kde_includes}/kapplication.h, + [], + [AC_MSG_ERROR([kde header files missing (kdelibs3-devel package)])]) + AC_DEFINE(HAVE_KDE, 1, [Define to 1 if you have KDE.]) + echo "INCLUDEPATH += ${kde_includes}" >> $QT_INCL_PRO + echo "LIBS += -L${kde_libraries} -lkdecore -lkdeui" >> $QT_INCL_PRO + echo "LIBS += -L${TWINKLE_KDE_PREFIX}/lib -lkabc" >> $QT_INCL_PRO +else + include_x11_FALSE="yes" + include_ARTS_FALSE="yes" + AC_PREFIX_DEFAULT(${prefix:-/usr/local}) +fi + +# Check for libbbind or libresolv. libbind is preferred as libresolv gives +# GLIBC_PRIVATE on Fedora. +AC_CHECK_LIB(bind, main, [ + LIBS="-lbind $LIBS" + echo "LIBS += -lbind" >> $QT_INCL_PRO], + [ + LIBS="-lresolv $LIBS" + echo "LIBS += -lresolv" >> $QT_INCL_PRO]) + +# Check if sndfile library is available +AC_CHECK_HEADER(sndfile.h, [], + [AC_MSG_ERROR([sndfile header files missing (libsndfile-devel package)])]) +AC_CHECK_LIB(sndfile, sf_open, [], + [AC_MSG_ERROR([libsndfile library is missing.])]) + +# Check if magic library is available +AC_CHECK_HEADER(magic.h, [], + [AC_MSG_ERROR([magic.h is missing (file-devel or libmagic-dev package)])]) +AC_CHECK_LIB(magic, magic_open, [], + [AC_MSG_ERROR([libmagic library is missing (file or libmagic package)])]) + +# This check does not work on all platforms +# Check if libgsm is available +# AC_CHECK_LIB(gsm, sf_open, [ +# AC_CHECK_HEADER(gsm.h, [], +# [AC_MSG_ERROR([gsm header files missing (gsm.h)])]) +# AC_DEFINE(HAVE_GSM, 1, [Define to 1 if you have the <libgsm> library.]) +# GSM_LIBS="-lgsm" +# echo "LIBS += -lgsm" >> $QT_INCL_PRO +# have_gsm="yes" ], [ +# have_gsm="no" +# GSM_LIBS="\$(top_builddir)/src/audio/gsm/libgsm.a" +# echo "LIBS += ../audio/gsm/libgsm.a" >> $QT_INCL_PRO ]) +have_gsm="no" +GSM_LIBS="\$(top_builddir)/src/audio/gsm/libgsm.a" +echo "LIBS += ../audio/gsm/libgsm.a" >> $QT_INCL_PRO + +AC_SUBST(GSM_LIBS) + +# Check if ALSA is available +AC_CHECK_LIB(asound, main, [ + AC_CHECK_HEADER(alsa/asoundlib.h, [], + [AC_MSG_ERROR([alsa header files missing (alsa-devel package)])]) + AC_DEFINE(HAVE_LIBASOUND, 1, [Define to 1 if you have the <libasound> library.]) + LIBS="-lasound $LIBS" + echo "LIBS += -lasound" >> $QT_INCL_PRO + have_libasound="yes" + ], [have_libasound="no"]) + +# Check if SPEEX (libspeex & libspeexdsp) is available +if test "x$ac_cv_speex" = "xyes" +then + AC_CHECK_LIB(speex, main, [ + AC_CHECK_HEADER(speex/speex.h, [], + [AC_MSG_ERROR([speex header files missing])]) + AC_CHECK_LIB(speexdsp, main, [ + AC_CHECK_HEADERS([speex/speex_preprocess.h speex/speex_echo.h], [], + [AC_MSG_ERROR([speexdsp header files missing])]) + AC_DEFINE(HAVE_SPEEX, 1, [Define to 1 if you have the <speex> library.]) + LIBS="-lspeex -lspeexdsp $LIBS" + echo "LIBS += -lspeex" >> $QT_INCL_PRO + echo "LIBS += -lspeexdsp" >> $QT_INCL_PRO + have_speex="yes" + ], [have_speex="no"]) + ], [have_speex="no"]) +else + have_speex="no" +fi + +# iLBC +if test "x$ac_cv_ilbc" = "xyes" +then + AC_CHECK_LIB(ilbc, iLBC_decode, [ + AC_CHECK_HEADER(ilbc/iLBC_define.h, [], + [AC_MSG_ERROR([ilbc header files missing])]) + AC_DEFINE(HAVE_ILBC, 1, [Define to 1 if you have the <ilbc> library.]) + LIBS="-lilbc $LIBS" + echo "LIBS += -lilbc" >> $QT_INCL_PRO + have_ilbc="yes" + ], [have_ilbc="no"]) + + if test "x$ac_cv_ilbc_cpp" = "xyes" + then + AC_DEFINE(HAVE_ILBC_CPP, 1, [Define to 1 if you have a C++ ilbc library.]) + fi +else + have_ilbc="no" +fi + +# Check if zrtp is available +if test "x$ac_cv_zrtp" = "xyes" +then + PKG_CHECK_MODULES(ZRTP, libzrtpcpp >= 1.3.0) + AC_CHECK_LIB(zrtpcpp, main, [ + AC_CHECK_HEADER(libzrtpcpp/ZrtpQueue.h, [], + [AC_MSG_ERROR([zrtp header files missing])]) + AC_DEFINE(HAVE_ZRTP, 1, [Define to 1 if you have the <libzrtpcpp> library.]) + LIBS="-lzrtpcpp $LIBS" + echo "LIBS += -lzrtpcpp" >> $QT_INCL_PRO + have_zrtp="yes" + ], [have_zrtp="no"]) +else + have_zrtp="no" +fi + +# check if GNU readline or readline compatible libraries are avaliable +VL_LIB_READLINE() +if test "x$vl_cv_lib_readline" == "xno" +then + AC_MSG_ERROR([readline-devel package is not installed]) +fi + +# Check if boost regex is available +AC_CHECK_HEADER(boost/regex.h, [], + [AC_MSG_ERROR([boost/regex.h missing (boost-devel package)])]) +AC_CHECK_LIB(boost_regex, main, [ + LIBS="-lboost_regex $LIBS" + echo "LIBS += -lboost_regex" >> $QT_INCL_PRO], + [ + AC_CHECK_LIB(boost_regex-gcc, main, [ + LIBS="-lboost_regex-gcc $LIBS" + echo "LIBS += -lboost_regex-gcc" >> $QT_INCL_PRO], + [AC_MSG_ERROR([libboost_regex library is missing (boost package).])])]) + +ms_CHECK_LRELEASE() + +dnl $QTDIR/bin/qmake -o src/gui/Makefile src/gui/twinkle.pro +dnl Command above is incorrect because srcdir may differ from builddir +dnl +dnl $QTDIR/bin/qmake -o src/gui/Makefile $srcdir/src/gui/twinkle.pro +dnl Command above although is correct in both cases, i.e. when srcdir +dnl is equal or differ from builddir will not generate proper Makefile. +dnl Reason is unknown. +dnl +dnl The sed command adds the KDE3 libraries in front of the LIB path. +dnl This is needed to correctly build on a KDE4 system. Otherwise +dnl gcc will link against KDE4 libraries. +AC_CONFIG_COMMANDS([src/gui/Makefile], + [ + $QTDIR/bin/qmake -o src/gui/Makefile $srcdir/src/gui/twinkle.pro + echo "distdir:" >> src/gui/Makefile + echo "check:" >> src/gui/Makefile + + if test -n "$kde_libraries" + then + sed -i -e "s|\(LIBS *= \)|\1-L${kde_libraries} |" src/gui/Makefile + fi + ], + [kde_libraries=${kde_libraries}] +) + +dnl Next is useless. See comments in src/parser/Makefile.am . +dnl # Strip the -O2 flag from CXXFLAGS for building the SIP parser. +dnl # g++ cannot compile the generated C code from bison with -O2 or -Os +dnl # Note: -Os is used on VIA C3 processor +dnl PARSER_CXXFLAGS=`echo $CXXFLAGS | sed -e "s/\-O2//;s/\-Os//"` +dnl AC_SUBST(PARSER_CXXFLAGS) + +AC_OUTPUT(Makefile src/Makefile src/audio/Makefile src/audio/gsm/Makefile \ + src/audits/Makefile src/sdp/Makefile src/parser/Makefile \ + src/sockets/Makefile src/stun/Makefile src/threads/Makefile \ + src/gui/lang/Makefile src/mwi/Makefile src/im/Makefile \ + src/patterns/Makefile src/utils/Makefile src/presence/Makefile \ + twinkle.spec) + +AC_MSG_RESULT([]) +AC_MSG_RESULT([Configured optional components:]) +AC_MSG_RESULT([KDE support: $have_kde]) +AC_MSG_RESULT([ALSA: $have_libasound]) +AC_MSG_RESULT([Speex: $have_speex]) +AC_MSG_RESULT([iLBC: $have_ilbc]) +AC_MSG_RESULT([ZRTP: $have_zrtp]) |