# -*- jam -*- max-factors = [ option.get "max-factors" : 4 : 4 ] ; path-constant FACTOR-LOG : bin/factor.log ; update-if-changed $(FACTOR-LOG) $(max-factors) ; max-factors = MAX_NUM_FACTORS=$(max-factors) $(FACTOR-LOG) ; with-dlib = [ option.get "with-dlib" ] ; if $(with-dlib) { dlib = WITH_DLIB $(with-dlib) ; } else { dlib = ; } with-oxlm = [ option.get "with-oxlm" ] ; if $(with-oxlm) { oxlm = -std=c++0x LM_OXLM $(with-oxlm)/src $(with-oxlm)/third_party/eigen ; } else { oxlm = ; } local classifier = ; if [ option.get "with-vw" ] { classifier += ..//vw//classifier ; } alias headers : ../util//kenutil $(classifier) : : : $(max-factors) $(dlib) $(oxlm) ; alias ThreadPool : ThreadPool.cpp ; alias Util : Util.cpp Timer.cpp ; if [ option.get "with-synlm" : no : yes ] = yes { lib m ; obj SyntacticLanguageModel.o : SyntacticLanguageModel.cpp headers : $(TOP)/synlm/hhmm/rvtl/include $(TOP)/synlm/hhmm/wsjparse/include ; alias synlm : SyntacticLanguageModel.o m : : : HAVE_SYNLM ; } else { alias synlm ; } #This is a kludge to force rebuilding if different --with options are passed. #Could have used features like on but getting these to apply only to #linking was ugly and it still didn't trigger an install (since the install #path doesn't encode features). It stores a file lm.log with the previous #options and forces a rebuild if the current options differ. local current = ; for local i in srilm irstlm randlm { local optval = [ option.get "with-$(i)" ] ; if $(optval) { current += "--with-$(i)=$(optval)" ; } } current = $(current:J=" ") ; current ?= "" ; path-constant LM-LOG : bin/lm.log ; update-if-changed $(LM-LOG) $(current) ; obj FF_Factory.o : FF/Factory.cpp LM//macros headers ../lm//kenlm mmlib : $(LM-LOG) ; # check if we have xmlrpc-c's abyss server available # if yes, include server capabilities in the moses executable # include $(TOP)/jam-files/server.jam ; if [ xmlrpc ] { echo "BUILDING MOSES SERVER!" ; alias mserver : [ glob server/*.cpp ] ; } else { echo "NOT BUILDING MOSES SERVER!" ; alias mserver ; } if [ option.get "with-mm" : no : yes ] = yes { alias mmlib : $(TOP)/moses/TranslationModel/UG//mmsapt $(TOP)/moses/TranslationModel/UG/generic//generic $(TOP)/moses/TranslationModel/UG/mm//mm ; } else { alias mmlib ; } local with-vw = [ option.get "with-vw" ] ; if $(with-vw) { alias vwfiles : [ glob FF/VW/*.cpp ] ; } else { alias vwfiles ; } lib moses : [ glob *.cpp parameters/*.cpp Syntax/*.cpp Syntax/F2S/*.cpp Syntax/S2T/*.cpp Syntax/S2T/Parsers/*.cpp Syntax/S2T/Parsers/RecursiveCYKPlusParser/*.cpp Syntax/S2T/Parsers/Scope3Parser/*.cpp Syntax/T2S/*.cpp TranslationModel/*.cpp TranslationModel/fuzzy-match/*.cpp TranslationModel/DynSAInclude/*.cpp TranslationModel/RuleTable/*.cpp TranslationModel/Scope3Parser/*.cpp TranslationModel/CYKPlusParser/*.cpp ../phrase-extract/PhraseOrientation.cpp FF/*.cpp FF/bilingual-lm/*.cpp FF/OSM-Feature/*.cpp FF/Dsg-Feature/*.cpp FF/LexicalReordering/*.cpp PP/*.cpp : #exceptions ThreadPool.cpp SyntacticLanguageModel.cpp *Test.cpp Mock*.cpp FF/*Test.cpp FF/Factory.cpp ] vwfiles synlm mmlib mserver headers FF_Factory.o LM//LM TranslationModel/CompactPT//CompactPT ThreadPool ..//search ../util/double-conversion//double-conversion ../probingpt//probingpt ..//z ../OnDiskPt//OnDiskPt $(TOP)//boost_filesystem $(TOP)//boost_iostreams : single:../util//rt ; alias headers-to-install : [ glob-tree *.h ] ; import testing ; unit-test moses_test : [ glob *Test.cpp Mock*.cpp FF/*Test.cpp ] ..//boost_filesystem moses headers ..//z ../OnDiskPt//OnDiskPt ../probingpt//probingpt ..//boost_unit_test_framework ;