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 = ; } alias headers : ../util//kenutil : : : $(max-factors) $(dlib) ; alias ThreadPool : ThreadPool.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 ; } local have-clock = [ SHELL "bash -c \"g++ -dM -x c++ -E /dev/null -include time.h 2>/dev/null |grep CLOCK_MONOTONIC\"" : exit-status ] ; if $(have-clock[2]) = 0 { #required for clock_gettime. Threads already have rt. lib rt : : static:static shared:shared ; } else { alias rt ; } #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 : $(LM-LOG) ; lib moses : [ glob *.cpp TranslationModel/*.cpp TranslationModel/fuzzy-match/*.cpp TranslationModel/DynSAInclude/*.cpp TranslationModel/RuleTable/*.cpp TranslationModel/Scope3Parser/*.cpp TranslationModel/CYKPlusParser/*.cpp FF/*.cpp FF/OSM-Feature/*.cpp : #exceptions ThreadPool.cpp SyntacticLanguageModel.cpp *Test.cpp Mock*.cpp FF/Factory.cpp ] headers FF_Factory.o LM//LM TranslationModel/CompactPT//CompactPT synlm ThreadPool rt ..//search ../util/double-conversion//double-conversion ..//z ../OnDiskPt//OnDiskPt ; alias headers-to-install : [ glob-tree *.h ] ; import testing ; #unit-test moses_test : [ glob *Test.cpp Mock*.cpp ] moses headers ..//z ../OnDiskPt//OnDiskPt ..//boost_unit_test_framework ;