# Process this file with autoconf to produce a configure script. AC_INIT(xsim) AC_CONFIG_SRCDIR([xsim/main.cpp]) AC_CONFIG_HEADER([config.h]) AC_ARG_WITH(bdb-cxx, [ --with-bdb-cxx Berkeley DB install place], bdb_prefix="$withval", bdb_prefix="NONE") AC_ARG_WITH(bdb-includes, [ --with-bdb-includes Berkeley DB headers location. ], bdbinc="$withval", bdbinc="NONE") AC_ARG_WITH(bdb-libraries, [ --with-bdb-libraries Berkeley DB libraries location. ], bdblibs="$withval", bdblibs="NONE") AC_ARG_WITH(cn-locale, [ --with-cn-locale Default chinese locale [GB2312]], cn_locale="$withval", cn_locale="GB2312") AC_ARG_WITH(qt3, [ --with-qt3 QT v3 or higher location. ], qt3dir="$withval", qt3dir="NONE") AC_ARG_WITH(qt3-includes, [ --with-qt3-includes QT v3 headers location. ], qt3inc="$withval", qt3inc="NONE") AC_ARG_WITH(qt3-libraries, [ --with-qt3-libraries QT v3 libraries location. ], qt3lib="$withval", qt3lib="NONE") AC_ARG_WITH(kde3, [ --with-kde3 KDE3 location. ], kde3dir="$withval", kde3dir="NONE") AC_ARG_WITH(kde3-includes, [ --with-kde3-includes KDE3 headers location. ], kde3inc="$withval", kde3inc="NONE") AC_ARG_WITH(kde3-libraries, [ --with-kde3-libraries KDE3 libraries location. ], kde3lib="$withval", kde3lib="NONE") AC_ARG_WITH(qt2, [ --with-qt2 QT2. ], qt2dir="$withval", qt2dir="NONE") AC_ARG_WITH(qt2-includes, [ --with-qt2-includes QT2. ], qt2inc="$withval", qt2inc="NONE") AC_ARG_WITH(qt2-libraries, [ --with-qt2-libraries QT2. ], qt2lib="$withval", qt2lib="NONE") AC_ARG_WITH(kde2, [ --with-kde2 KDE2 location. ], kde2dir="$withval", kde2dir="NONE") AC_ARG_WITH(kde2-includes, [ --with-kde2-includes KDE2 headers location. ], kde2inc="$withval", kde2inc="NONE") AC_ARG_WITH(kde2-libraries, [ --with-kde2-libraries KDE2 libraries location. ], kde2lib="$withval", kde2lib="NONE") AC_ARG_ENABLE(debug, [ --enable-debug Enable debug], enable_debug=1, enable_debug=0) AC_ARG_ENABLE(mdk-patch, [ --enable-mdk-patch Enable MDK dist patch], enable_mdk_patch=1, enable_mdk_patch=0) AC_ARG_ENABLE(status-all, [ --enable-status-all Enable all status panel plugin], enable_statusall=1, enable_statusall=0) AC_ARG_ENABLE(status-kde3, [ --enable-status-kde3 Enable KDE3 status panel plugin], enable_statuskde3=1, enable_statuskde3=0) AC_ARG_ENABLE(status-kde2, [ --enable-status-kde2 Enable KDE2 status panel plugin], enable_statuskde2=1, enable_statuskde2=0) #AC_ARG_ENABLE(status-gnome2, [ --enable-status-gnome2 Enable Gnome2 status panel plugin], enable_statusgnome2=1, enable_statusgnome2=0) # Check for OS # it's too hard to detect kde and qt automatic, so hard code here, maybe change later case "X`uname -s`" in XLinux) os_type="LINUX" dllib="-ldl" pthreadlib="-lpthread" ;; XFreeBSD) os_type="FREEBSD" dllib="-lc" pthreadlib="-lc_r" ;; *) AC_MSG_ERROR([Your system is not supported yet, If u hope, drop me a message.]) ;; esac # Checks for programs. AC_PROG_CXX AC_PROG_CC AC_PROG_CPP AC_PROG_RANLIB AC_CHECK_TOOL(LD, ld) # Checks for header files. AC_PATH_XTRA if test x"$no_x" != x; then AC_MSG_ERROR([X Window System not found]) fi AC_HEADER_STDC AC_CHECK_HEADERS([locale.h malloc.h stdlib.h string.h sys/param.h unistd.h wchar.h]) # Checks for typedefs, structures, and compiler characteristics. AC_C_CONST AC_TYPE_SIZE_T # Checks for library functions. AC_FUNC_MALLOC AC_TYPE_SIGNAL AC_FUNC_STAT AC_CHECK_FUNCS([memmove memset setlocale strchr strstr]) if test "x$enable_debug" = "x1" ; then CFLAGS="-g -Wall -O2 -DDEBUG -I$x_includes" CXXFLAGS=$CFLAGS LDFLAGS="-g -L$x_libraries" else CFLAGS="-Wall -O2 -I$x_includes" CXXFLAGS=$CFLAGS LDFLAGS="-L$x_libraries" fi if test "x$enable_mdk_patch" = "x1" ; then CFLAGS="$CFLAGS -DMDK_PATCH" fi AC_MSG_CHECKING([for Berkerly DB header]) if test "$bdbinc" = "NONE"; then bdb_include_dirs="\ /usr/include/db4 \ /usr/include/db3 \ /usr/local/include \ /usr/local/include/db4 \ /usr/local/include/db3 \ /usr/include" if test "$bdb_prefix" != "NONE"; then bdb_include_dirs="$bdb_prefix/include $bdb_include_dirs" fi for bdb_dir in $bdb_include_dirs; do if test -r "$bdb_dir/db_cxx.h"; then bdbinc="$bdb_dir" break fi done fi if test "$bdbinc" = "NONE"; then AC_MSG_ERROR(No Berkeley DB4 or DB3 CXX header found) fi #we need to know which DB version using, so check it AC_LANG_CPLUSPLUS oCXXFLAGS="$CXXFLAGS" CXXFLAGS="-I$bdbinc $CFLAGS"; AC_TRY_COMPILE(#include ,int cf(DB *, const DBT *, const DBT *); Db db(NULL, 0); db.set_dup_compare(cf);, [ bdb_version=">=3.2"], [ bdb_version="3"] ) if test "$bdb_version" == ">=3.2"; then AC_TRY_COMPILE(#include ,Db db(NULL, 0); db.open(NULL, "test", NULL, DB_BTREE, 0, 0644);, [ bdb_version=">=4.1"] ) fi CXXFLAGS="$oCXXFLAGS" echo "Berkerly DB $bdb_version CXX header found" #check db cxx lib AC_MSG_CHECKING([for Berkerly DB library]) if test "$bdblibs" = "NONE"; then bdb_library_dirs="\ /usr/lib/db4 \ /usr/lib/db3 \ /usr/local/lib \ /usr/local/lib/db4 \ /usr/local/lib/db3 \ /usr/lib" if test "$bdb_prefix" != "NONE"; then bdb_library_dirs="$bdb_prefix/lib $bdb_library_dirs" fi for bdb_dir in $bdb_library_dirs; do if test -r "$bdb_dir/libdb_cxx.so"; then bdblibs="$bdb_dir" bdblib="db_cxx" break fi if test -r "$bdb_dir/libdb4_cxx.so"; then bdblibs="$bdb_dir" bdblib="db4_cxx" break fi if test -r "$bdb_dir/libdb3_cxx.so"; then bdblibs="$bdb_dir" bdblib="db3_cxx" break fi done fi if test "$bdblibs" = "NONE"; then AC_MSG_ERROR(Failed to check DB $bdb_version CXX library); fi echo "Berkerly DB $bdb_version CXX library found" if test "$bdb_version" = ">=3.2" ; then CXXFLAGS="$CXXFLAGS -DBDB_VERSION4 -DOS_$os_type" else if test "$bdb_version" = ">=4.1"; then CXXFLAGS="$CXXFLAGS -DBDB_VERSION41 -DOS_$os_type" else CXXFLAGS="$CXXFLAGS -DBDB_VERSION3 -DOS_$os_type" fi fi topdir="`pwd`" status_subdirs="std" status_default="std" if test "$enable_statusall" = "1"; then enable_statuskde3=1 enable_statuskde2=1 # enable_statusgnome2=1 fi #we check kde3 and qt3 if test "$enable_statuskde3" = "1"; then status_subdirs="$status_subdirs kde3" AC_MSG_CHECKING([for QT 3.0.x]) if test "$qt3inc" = "NONE"; then qt_include_dirs="\ /usr/lib/qt3/include \ /usr/lib/qt/include \ /usr/include/qt \ /usr/local/qt/include \ /usr/local/include/qt \ /usr/X11/include/qt \ /usr/X11/include/X11/qt \ /usr/X11R6/include \ /usr/X11R6/include/qt \ /usr/X11R6/include/X11/qt \ /usr/X11/lib/qt/include" if test "$qt3dir" != "NONE"; then qt_include_dirs="$qt3dir/include $qt_include_dirs" fi for qt_dir in $qt_include_dirs; do if test -r "$qt_dir/qbig5codec.h"; then qt3inc=$qt_dir break fi done fi if test "$qt3inc" = "NONE"; then AC_MSG_ERROR(No QT 3.0.x headers found) fi if test "$qt3lib" = "NONE"; then qt_library_dirs="\ /usr/lib/qt3/lib \ /usr/lib \ /usr/local/lib \ /usr/lib/qt \ /usr/lib/qt/lib \ /usr/local/lib/qt \ /usr/local/qt/lib \ /usr/X11/lib \ /usr/X11/lib/qt \ /usr/X11R6/lib \ /usr/X11R6/lib/qt" if test "$qt3dir" != "NONE"; then qt_library_dirs="$qt3dir/lib $qt_library_dirs" fi for qt_dir in $qt_library_dirs; do if test -r $qt_dir/libqt-mt.so.3; then qt3lib=$qt_dir break fi done fi if test "$qt3lib" = "NONE"; then AC_MSG_ERROR(No QT 3.0.x libraries found) fi AC_MSG_RESULT([yes, libraries: $qt3lib, headers: $qt3inc]) # now check kde3 ########################## AC_MSG_CHECKING([for KDE3]) if test "$kde3inc" = "NONE"; then kde_incdirs="/opt/kde3/include /opt/kde/include /usr/lib/kde/include /usr/local/kde/include /usr/local/include /usr/kde/include /usr/include/kde /usr/include $x_includes $qt3inc" if test "$kde3dir" != "NONE"; then kde_incdirs="$kde3dir/include $kde_incdirs" fi for kde_dir in $kde_incdirs; do if test -r $kde_dir/ksystemtray.h; then kde3inc=$kde_dir break fi done fi if test "$kde3inc" = "NONE"; then AC_MSG_ERROR(No KDE3 includes found) fi if test "$kde3lib" = "NONE"; then kde_libdirs="/opt/kde3/lib /opt/kde/lib /usr/lib/kde/lib /usr/local/kde/lib /usr/local/lib /usr/kde/lib /usr/lib/kde /usr/lib /usr/X11R6/lib /usr/X11R6/kde/lib /usr/lib/kde3" if test "$kde3dir" != "NONE"; then kde_libdirs="$kde3dir/lib $kde_libdirs" fi for kde_dir in $kde_libdirs; do if test -r $kde_dir/libkdeui.so; then kde3lib=$kde_dir break fi done fi if test "$kde3lib" = "NONE"; then AC_MSG_ERROR(No KDE3 libraries found) fi AC_MSG_RESULT([yes, libraries: $kde3lib, headers: $kde3inc]) status_default="kde3" fi #we check kde2 and qt2 if test "$enable_statuskde2" = "1"; then status_subdirs="$status_subdirs kde2" AC_MSG_CHECKING([for QT 2.x.x]) if test "$qt2inc" = "NONE"; then qt_include_dirs="\ /usr/lib/qt2/include \ /usr/lib/qt/include \ /usr/include/qt \ /usr/local/qt/include \ /usr/local/include/qt \ /usr/X11/include/qt \ /usr/X11/include/X11/qt \ /usr/X11R6/include \ /usr/X11R6/include/qt \ /usr/X11R6/include/X11/qt \ /usr/X11/lib/qt/include" if test "$qt2dir" != "NONE"; then qt_include_dirs="$qt2dir/include $qt_include_dirs" fi for qt_dir in $qt_include_dirs; do if test -r "$qt_dir/qbig5codec.h"; then qt2inc=$qt_dir break fi done fi if test "$qt2inc" = "NONE"; then AC_MSG_ERROR(No QT 2.x.x headers found) fi if test "$qt2lib" = "NONE"; then qt_library_dirs="\ /usr/lib/qt2/lib \ /usr/lib \ /usr/local/lib \ /usr/lib/qt \ /usr/lib/qt/lib \ /usr/local/lib/qt \ /usr/local/qt/lib \ /usr/X11/lib \ /usr/X11/lib/qt \ /usr/X11R6/lib \ /usr/X11R6/lib/qt" if test "$qt2dir" != "NONE"; then qt_library_dirs="$qt2dir/lib $qt_library_dirs" fi for qt_dir in $qt_library_dirs; do if test -r $qt_dir/libqt-mt.so.2; then qt2lib=$qt_dir break fi done fi if test "$qt2lib" = "NONE"; then AC_MSG_ERROR(No QT 2.0.x libraries found) fi AC_MSG_RESULT([yes, libraries: $qt2lib, headers: $qt2inc]) # now check kde2 ########################## AC_MSG_CHECKING([for KDE2]) if test "$kde2inc" = "NONE"; then kde_incdirs="/opt/kde2/include /opt/kde/include /usr/lib/kde/include /usr/local/kde/include /usr/local/include /usr/kde/include /usr/include/kde /usr/include $x_includes $qt2inc" if test "$kde2dir" != "NONE"; then kde_incdirs="$kde2dir/include $kde_incdirs" fi for kde_dir in $kde_incdirs; do if test -r $kde_dir/ksystemtray.h; then kde2inc=$kde_dir break fi done fi if test "$kde2inc" = "NONE"; then AC_MSG_ERROR(No KDE2 includes found) fi if test "$kde2lib" = "NONE"; then kde_libdirs="/opt/kde2/lib /opt/kde/lib /usr/lib/kde/lib /usr/local/kde/lib /usr/local/lib /usr/kde/lib /usr/lib/kde /usr/lib /usr/X11R6/lib /usr/X11R6/kde/lib /usr/lib/kde2" if test "$kde2dir" != "NONE"; then kde_libdirs="$kde2dir/lib $kde_libdirs" fi for kde_dir in $kde_libdirs; do if test -r $kde_dir/libkdeui.so; then kde2lib=$kde_dir break fi done fi if test "$kde2lib" = "NONE"; then AC_MSG_ERROR(No KDE2 libraries found) fi AC_MSG_RESULT([yes, libraries: $kde2lib, headers: $kde2inc]) status_default="kde2" fi #if test "$enable_statusgnome2" = "1"; then # status_subdirs="$status_subdirs gnome2" #fi # which plugin u need?? if test "$enable_statusall" = "1"; then status_default="std" fi if test "$cn_locale" = "GBK"; then cn_locale_suffix="GBK" else if test "$cn_locale" = "GB18030"; then cn_locale_suffix="GBK" else cn_locale_suffix="GB2312" if test "$os_type" = "FREEBSD"; then cn_locale="EUC" fi fi fi cn_locale="zh_CN.$cn_locale" if test "$os_type" = "FREEBSD"; then tw_locale="zh_TW.Big5" else tw_locale="zh_TW" fi if test "$prefix" = "NONE"; then prefix="/usr/local/xsim" dolink="rm -f /usr/local/bin/xsim; ln -s /usr/local/xsim/bin/xsim /usr/local/bin/xsim" unlink="rm -f /usr/local/bin/xsim" else dolink="@echo" unlink="@echo" fi AC_SUBST(cn_locale) AC_SUBST(cn_locale_suffix) AC_SUBST(tw_locale) AC_SUBST(topdir) AC_SUBST(dllib) AC_SUBST(pthreadlib) AC_SUBST(status_subdirs) AC_SUBST(status_default) AC_SUBST(kde3inc) AC_SUBST(kde3lib) AC_SUBST(qt3inc) AC_SUBST(qt3lib) AC_SUBST(kde2inc) AC_SUBST(kde2lib) AC_SUBST(qt2inc) AC_SUBST(qt2lib) AC_SUBST(bdbinc) AC_SUBST(bdblibs) AC_SUBST(bdblib) AC_SUBST(dolink) AC_SUBST(unlink) AC_OUTPUT( Makefile \ xsim/Makefile \ xsim/IMdkit/Makefile \ plugins/Makefile \ plugins/IMs/Makefile \ plugins/IMs/jianpin/Makefile \ plugins/IMs/jianpin/dict/Makefile \ plugins/IMs/wubi/Makefile \ plugins/IMs/wubi/dict/Makefile \ plugins/IMs/table/Makefile \ plugins/IMs/table/dict/Makefile \ plugins/Panels/Makefile \ plugins/Panels/std/Makefile \ plugins/StatusPanels/Makefile \ plugins/StatusPanels/std/Makefile \ plugins/StatusPanels/kde3/Makefile \ plugins/StatusPanels/kde2/Makefile \ etc/Makefile \ etc/xsimrc \ )