mosesdecoder/configure.in
pjwilliams d4359f9875 If Boost is available, use per-sentence object pools to allocate ProcessedRule
and WordConsumed objects (which are used to store rule table lookup state).
Large numbers of these objects are used during decoding and this can
significantly improve performance, especially for multithreaded decoding,
though at the cost of increased total memory use.

The ./configure option --disable-boost-pool can be used to disable this
feature if memory is tight.  This currently only affects moses_chart with
in-memory rule tables.



git-svn-id: https://mosesdecoder.svn.sourceforge.net/svnroot/mosesdecoder/trunk@3873 1f5c12ca-751b-0410-a591-d2e778427230
2011-02-07 15:43:19 +00:00

287 lines
8.2 KiB
Plaintext

AC_INIT(moses/src)
AM_CONFIG_HEADER(config.h)
AM_INIT_AUTOMAKE(moses, 0.1)
AC_CONFIG_MACRO_DIR([m4])
AC_PROG_CXX
AC_PROG_CXXCPP
AC_LANG_CPLUSPLUS
AC_DISABLE_SHARED
AC_PROG_LIBTOOL
# Shared library are disabled for default
#LT_INIT([disable-shared])
AX_XMLRPC_C
AC_ARG_WITH(protobuf,
[AC_HELP_STRING([--with-protobuf=PATH], [(optional) path to Google protobuf])],
[with_protobuf=$withval],
[with_protobuf=no]
)
AC_ARG_WITH(srilm,
[AC_HELP_STRING([--with-srilm=PATH], [(optional) path to SRI's LM toolkit])],
[with_srilm=$withval],
[with_srilm=no]
)
AC_ARG_WITH(srilm-dynamic,
[AC_HELP_STRING([--with-srilm-dynamic], [(optional) link dynamically with srilm])],
[with_srilm_dynamic=yes],
[with_srilm_dynamic=no]
)
AC_ARG_WITH(irstlm,
[AC_HELP_STRING([--with-irstlm=PATH], [(optional) path to IRST's LM toolkit])],
[with_irstlm=$withval],
[with_irstlm=no]
)
AC_ARG_WITH(kenlm,
[AC_HELP_STRING([--with-kenlm], [(optional) Include Ken's LM toolkit; default is yes])],
[with_kenlm=$withval],
[with_kenlm=yes]
)
AC_ARG_WITH(randlm,
[AC_HELP_STRING([--with-randlm=PATH], [(optional) path to RandLM toolkit])],
[with_randlm=$withval],
[with_randlm=no]
)
AC_ARG_WITH(notrace,
[AC_HELP_STRING([--notrace], [disable trace])],
[without_trace=yes],
)
AC_ARG_ENABLE(profiling,
[AC_HELP_STRING([--enable-profiling], [moses will dump profiling info])],
[CPPFLAGS="$CPPFLAGS -pg"; LDFLAGS="$LDFLAGS -pg" ]
)
AC_ARG_ENABLE(optimization,
[AC_HELP_STRING([--enable-optimization], [compile with -O3 flag])],
[CPPFLAGS="$CPPFLAGS -O3"; LDFLAGS="$LDFLAGS -O3" ]
)
AC_ARG_ENABLE(threads,
[AC_HELP_STRING([--enable-threads], [compile threadsafe library and multi-threaded moses (mosesmt)])],
[],
[enable_threads=no]
)
AC_ARG_ENABLE(boost,
[AC_HELP_STRING([--enable-boost], [use Boost library])],
[],
[enable_boost=no]
)
AC_ARG_WITH(zlib,
[AC_HELP_STRING([--with-zlib=PATH], [(optional) path to zlib])],
[with_zlib=$withval],
[with_zlib=no]
)
AC_ARG_WITH(tcmalloc,
[AC_HELP_STRING([--with-tcmalloc], [(optional) link with tcmalloc; default is no])],
[with_tcmalloc=$withval],
[with_tcmalloc=no]
)
require_boost=no
if test "x$enable_threads" != 'xno' || test "x$enable_boost" != 'xno'
then
require_boost=yes
fi
AC_ARG_ENABLE(boost-pool,
[AC_HELP_STRING([--enable-boost-pool], [(optional) try to improve speed by selectively using Boost pool allocation (may increase total memory use); default is yes if Boost enabled])],
[],
[enable_boost_pool=$require_boost]
)
AM_CONDITIONAL([INTERNAL_LM], false)
AM_CONDITIONAL([SRI_LM], false)
AM_CONDITIONAL([IRST_LM], false)
AM_CONDITIONAL([KEN_LM], false)
AM_CONDITIONAL([RAND_LM], false)
AM_CONDITIONAL([PROTOBUF], false)
AM_CONDITIONAL([am__fastdepCC], false)
AM_CONDITIONAL([WITH_THREADS],false)
if test "x$without_trace" = 'xyes'
then
AC_MSG_NOTICE([trace disabled, most regression test will fail])
else
AC_MSG_NOTICE([trace enabled (default)])
CPPFLAGS="$CPPFLAGS -DTRACE_ENABLE=1"
fi
if test "x$require_boost" = 'xyes'
then
AC_MSG_NOTICE([Using Boost library])
BOOST_REQUIRE([1.36.0])
fi
if test "x$enable_threads" = 'xyes'
then
AC_MSG_NOTICE([Building threaded moses])
BOOST_THREADS
CPPFLAGS="$CPPFLAGS -DWITH_THREADS"
AM_CONDITIONAL([WITH_THREADS],true)
else
AC_MSG_NOTICE([Building non-threaded moses. This will disable the moses server])
fi
if test "x$with_protobuf" != 'xno'
then
SAVE_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS -I${with_protobuf}/include"
AC_CHECK_HEADER(google/protobuf/message.h,
[AC_DEFINE([HAVE_PROTOBUF], [], [flag for protobuf])],
[AC_MSG_ERROR([Cannot find protobuf!])])
LIB_PROTOBUF="-lprotobuf"
LDFLAGS="$LDFLAGS -L${with_protobuf}/lib"
LIBS="$LIBS $LIB_PROTOBUF"
AC_PATH_PROG(PROTOC,protoc,,"${PATH}:${with_protobuf}/bin")
FMTLIBS="$FMTLIBS libprotobuf.a"
AM_CONDITIONAL([PROTOBUF], true)
fi
if test "x$with_srilm" != 'xno'
then
SAVE_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS -I${with_srilm}/include"
AC_CHECK_HEADER(Ngram.h,
[AC_DEFINE([HAVE_SRILM], [], [flag for SRILM])],
[AC_MSG_ERROR([Cannot find SRILM!])])
if test "x$with_srilm_dynamic" != 'xyes'
then
LIB_SRILM="-loolm -ldstruct -lmisc -lflm"
# ROOT/lib/i686-m64/liboolm.a
# ROOT/lib/i686-m64/libdstruct.a
# ROOT/lib/i686-m64/libmisc.a
MY_ARCH=`${with_srilm}/sbin/machine-type`
LDFLAGS="$LDFLAGS -L${with_srilm}/lib/${MY_ARCH} -L${with_srilm}/flm/obj/${MY_ARCH}"
LIBS="$LIBS $LIB_SRILM"
FMTLIBS="$FMTLIBS liboolm.a libdstruct.a libmisc.a"
else
LDFLAGS="$LDFLAGS -L${with_srilm}/lib"
LIBS="$LIBS -lsrilm"
fi
AC_CHECK_LIB([oolm], [trigram_init], [], [AC_MSG_ERROR([Cannot find SRILM's library in ${with_srilm}/lib/${MY_ARCH} ])])
AM_CONDITIONAL([SRI_LM], true)
fi
if test "x$with_irstlm" != 'xno'
then
SAVE_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS -I${with_irstlm}/include"
AC_MSG_NOTICE([])
AC_MSG_NOTICE([!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!])
AC_MSG_NOTICE([!!! You are linking the IRSTLM library; be sure the release is >= 5.50.01 !!!])
AC_MSG_NOTICE([!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!])
AC_MSG_NOTICE([])
AC_CHECK_HEADER(n_gram.h,
[AC_DEFINE([HAVE_IRSTLM], [], [flag for IRSTLM])],
[AC_MSG_ERROR([Cannot find IRST-LM in ${with_irstlm}])])
MY_ARCH=`uname -m`
LIB_IRSTLM="-lirstlm"
LDFLAGS="$LDFLAGS -L${with_irstlm}/lib"
LIBS="$LIBS $LIB_IRSTLM"
FMTLIBS="$FMTLIBS libirstlm.a"
AM_CONDITIONAL([IRST_LM], true)
fi
if test "x$with_kenlm" != 'xno'
then
SAVE_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS -I${PWD}/kenlm"
AC_CHECK_HEADER(lm/model.hh,
[AC_DEFINE([HAVE_KENLM], [], [flag for KENLM])],
[AC_MSG_ERROR([Cannot find KEN-LM in ${PWD}/kenlm])])
KENLM_LDFLAGS="-L\$(top_srcdir)/kenlm -lkenlm -lz"
KENLM_DEPS="\$(top_srcdir)/kenlm/libkenlm.la"
FMTLIBS="$FMTLIBS libkenlm.la"
AM_CONDITIONAL([KEN_LM], true)
else
KENLM_LDFLAGS=""
KENLM_DEPS=""
fi
AC_SUBST(KENLM_LDFLAGS)
AC_SUBST(KENLM_DEPS)
if test "x$with_randlm" != 'xno'
then
SAVE_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS -I${with_randlm}/include"
AC_CHECK_HEADER(RandLM.h,
[AC_DEFINE([HAVE_RANDLM], [], [flag for RandLM])],
[AC_MSG_ERROR([Cannot find RandLM!])])
MY_ARCH=`uname -m`
LIB_RANDLM="-lrandlm"
LDFLAGS="$LDFLAGS -L${with_randlm}/lib"
LIBS="$LIBS $LIB_RANDLM"
FMTLIBS="$FMTLIBS librandlm.a"
AM_CONDITIONAL([RAND_LM], true)
fi
if test "x$with_tcmalloc" != 'xno'
then
AC_CHECK_LIB([tcmalloc], [malloc], [], [AC_MSG_ERROR([Cannot find tcmalloc])])
fi
if test "x$enable_boost_pool" != 'xno'
then
AC_CHECK_HEADER(boost/pool/object_pool.hpp,
[AC_DEFINE([USE_BOOST_POOL], [], [Flag to enable use of Boost pool])],
[AC_MSG_WARN([Cannot find boost/pool/object_pool.hpp])]
)
fi
AM_CONDITIONAL([WITH_MERT],false)
AC_CHECK_HEADERS([getopt.h],
[AM_CONDITIONAL([WITH_MERT],true)],
[AC_MSG_WARN([Cannot find getopt.h - disabling new mert])])
AM_CONDITIONAL([WITH_SERVER],false)
if test "x$have_xmlrpc_c" = "xyes" && test "x$enable_threads" = "xyes"; then
AM_CONDITIONAL([WITH_SERVER],true)
else
AC_MSG_NOTICE([Disabling server])
fi
if test "x$with_zlib" != 'xno'
then
CPPFLAGS="$CPPFLAGS -I${with_zlib}/include"
LDFLAGS="$LDFLAGS -L${with_zlib}/lib"
fi
LIBS="$LIBS -lz"
AC_CONFIG_FILES(Makefile OnDiskPt/src/Makefile moses/src/Makefile moses-chart/src/Makefile moses-cmd/src/Makefile moses-chart-cmd/src/Makefile misc/Makefile mert/Makefile server/Makefile CreateOnDisk/src/Makefile kenlm/Makefile)
AC_OUTPUT()