#BUILDING MOSES # #PACKAGES #Language models (optional): #--with-irstlm=/path/to/irstlm #--with-srilm=/path/to/srilm See moses/LM/Jamfile for more options. #--with-maxent-srilm=true (requires a maxent-enabled version of SRILM to be specified via --with-srilm) #--with-nplm=/path/to/nplm #--with-randlm=/path/to/randlm #KenLM is always compiled. # #--with-boost=/path/to/boost #If Boost is in a non-standard location, specify it here. This directory is #expected to contain include and lib or lib64. # #--with-xmlrpc-c=/path/to/xmlrpc-c for libxmlrpc-c (used by server) #Note that, like language models, this is the --prefix where the library was #installed, not some executable within the library. # #Compact phrase table and compact lexical reordering table #--with-cmph=/path/to/cmph # #Thread-caching malloc (if present, used for multi-threaded builds by default) #--without-tcmalloc does not compile with tcmalloc even if present #--full-tcmalloc links against the full version (useful for memory profiling) # #REGRESSION TESTING #--with-regtest=/path/to/moses-reg-test-data # #INSTALLATION #--prefix=/path/to/prefix sets the install prefix [default is source root]. #--bindir=/path/to/prefix/bin sets the bin directory [PREFIX/bin] #--libdir=/path/to/prefix/lib sets the lib directory [PREFIX/lib] #--includedir=/path/to/prefix/include installs headers. # Does not install if missing. No argument defaults to PREFIX/include . #--install-scripts=/path/to/scripts copies scripts into a directory. # Does not install if missing. No argument defaults to PREFIX/scripts . #--git appends the git revision to the prefix directory. # # #BUILD OPTIONS # By default, the build is multi-threaded, optimized, and statically linked. # Pass these to change the build: # # threading=single|multi controls threading (default multi) # # variant=release|debug|profile builds optimized (default), for debug, or for # profiling # # link=static|shared controls preferred linking (default static) # --static forces static linking (the default will fall # back to shared) # # debug-symbols=on|off include (default) or exclude debugging # information also known as -g # --notrace compiles without TRACE macros # # --enable-boost-pool uses Boost pools for the memory SCFG tabgle # # --enable-mpi switch on mpi # --without-libsegfault does not link with libSegFault # # --max-kenlm-order maximum ngram order that kenlm can process (default 6) # # --max-factors maximum number of factors (default 4) # # --unlabelled-source ignore source labels (redundant in hiero or string-to-tree system) # for better performance #CONTROLLING THE BUILD #-a to build from scratch #-j$NCPUS to compile in parallel #--clean to clean import option ; import modules ; import path ; path-constant TOP : . ; include $(TOP)/jam-files/sanity.jam ; boost 103600 ; external-lib z ; lib dl : : static:static shared:shared ; requirements += dl ; if ! [ option.get "without-tcmalloc" : : "yes" ] && [ test_library "tcmalloc_minimal" ] { if [ option.get "full-tcmalloc" : : "yes" ] { external-lib unwind ; external-lib tcmalloc_and_profiler : : unwind ; requirements += tcmalloc_and_profiler unwind -fno-omit-frame-pointer -fno-omit-frame-pointer ; } else { external-lib tcmalloc_minimal ; requirements += multi:tcmalloc_minimal ; } } else { echo "Tip: install tcmalloc for faster threading. See BUILD-INSTRUCTIONS.txt for more information." ; } if [ option.get "enable-mpi" : : "yes" ] { import mpi ; using mpi ; external-lib boost_mpi ; external-lib boost_serialization ; requirements += MPI_ENABLE ; requirements += mpi ; requirements += boost_mpi ; requirements += boost_serialization ; } requirements += [ option.get "notrace" : TRACE_ENABLE=1 ] ; requirements += [ option.get "enable-boost-pool" : : USE_BOOST_POOL ] ; requirements += [ option.get "with-mm" : : PT_UG ] ; requirements += [ option.get "with-mm" : : MAX_NUM_FACTORS=4 ] ; requirements += [ option.get "unlabelled-source" : : UNLABELLED_SOURCE ] ; if [ option.get "with-cmph" ] { requirements += HAVE_CMPH ; } project : default-build multi on on release static ; #Apparently OS X likes to link against iconv for fgetsUTF8. lib iconv ; requirements += MACOSX:iconv ; project : requirements multi:WITH_THREADS multi:boost_thread boost_system _FILE_OFFSET_BITS=64 _LARGE_FILES $(requirements) . ; #Add directories here if you want their incidental targets too (i.e. tests). build-projects lm util phrase-extract search moses moses/LM mert moses-cmd moses-chart-cmd mira scripts regression-testing ; if [ option.get "with-mm" : : "yes" ] { alias mm : moses/TranslationModel/UG//lookup_mmsapt moses/TranslationModel/UG/mm//mtt-build moses/TranslationModel/UG/mm//mtt-dump moses/TranslationModel/UG/mm//symal2mam moses/TranslationModel/UG/mm//mam2symal moses/TranslationModel/UG/mm//mam_verify moses/TranslationModel/UG/mm//custom-pt moses/TranslationModel/UG/mm//mmlex-build moses/TranslationModel/UG/mm//mmlex-lookup moses/TranslationModel/UG/mm//mtt-count-words moses/TranslationModel/UG/mm//calc-coverage moses/TranslationModel/UG//try-align ; } else { alias mm ; } alias programs : lm//programs moses-chart-cmd//moses_chart moses-cmd//programs OnDiskPt//CreateOnDiskPt OnDiskPt//queryOnDiskPt mert//programs misc//programs symal phrase-extract phrase-extract//lexical-reordering phrase-extract//extract-ghkm phrase-extract//pcfg-extract phrase-extract//pcfg-score biconcor mira//mira contrib/server//mosesserver mm ; install-bin-libs programs ; install-headers headers-base : [ path.glob-tree biconcor contrib lm mert misc moses-chart-cmd moses-cmd OnDiskPt phrase-extract symal util : *.hh *.h ] : . ; install-headers headers-moses : moses//headers-to-install : moses ; alias install : prefix-bin prefix-lib headers-base headers-moses ; if ! [ option.get "includedir" : : $(prefix)/include ] { explicit install headers-base headers-moses ; } if [ path.exists $(TOP)/dist ] && $(prefix) != dist { echo "You have a $(TOP)/dist directory, but the build system now places files directly in the root i.e. $(TOP)/bin ." ; echo "To disable this message, delete $(TOP)/dist ." ; echo ; }