# SHELL += -x CXX ?= g++ CC ?= gcc # used for sph2pipe # CXX = clang++ # Uncomment these lines... # CC = clang # ...to build with Clang. # Note: OpenFst requires a relatively recent C++ compiler with C++11 support, # e.g. g++ >= 4.7, Apple clang >= 5.0 or LLVM clang >= 3.3. OPENFST_VERSION ?= 1.6.7 CUB_VERSION ?= 1.8.0 OPENBLAS_VERSION ?= 0.3.5 # Default features configured for OpenFST; can be overridden in the make command line. OPENFST_CONFIGURE ?= --enable-static --enable-shared --enable-far --enable-ngram-fsts OPENFST_VER_NUM := $(shell echo $(OPENFST_VERSION) | sed 's/\./ /g' | xargs printf "%d%02d%02d") ifeq ("$(shell expr $(OPENFST_VER_NUM) \< 10600)","1") $(error OpenFst-$(OPENFST_VERSION) is not supported. \ Supported versions: >= 1.6.0) endif all: check_required_programs sph2pipe sclite openfst cub @echo -e "\n\n" @echo "Warning: IRSTLM is not installed by default anymore. If you need IRSTLM" @echo "Warning: use the script extras/install_irstlm.sh" @echo "All done OK." # make sure check_required_programs runs before anything else: sph2pipe sclite openfst sctk: | check_required_programs check_required_programs: extras/check_dependencies.sh clean: openfst_cleaned sclite_cleaned openfst_cleaned: $(MAKE) -C openfst-$(OPENFST_VERSION) clean sclite_cleaned: $(MAKE) -C sctk clean distclean: rm -rf openfst-$(OPENFST_VERSION)/ rm -rf sctk-2.4.10/ rm -rf sctk rm -rf sph2pipe_v2.5/ rm -rf sph2pipe_v2.5.tar.gz rm -rf sctk-2.4.10-20151007-1312Z.tar.bz2 rm -rf openfst-$(OPENFST_VERSION).tar.gz rm -f openfst rm -rf libsndfile-1.0.25{,.tar.gz} BeamformIt-3.51{,.tgz} rm -f cub-$(CUB_VERSION).zip rm -rf cub-$(CUB_VERSION) rm -f cub .PHONY: openfst # so target will be made even though "openfst" exists. openfst: openfst_compiled openfst-$(OPENFST_VERSION)/lib -rm -f openfst -ln -s openfst-$(OPENFST_VERSION) openfst .PHONY: openfst_compiled openfst_compiled: openfst-$(OPENFST_VERSION)/Makefile $(MAKE) -C openfst-$(OPENFST_VERSION) install MAKEOVERRIDES= openfst-$(OPENFST_VERSION)/lib: | openfst-$(OPENFST_VERSION)/Makefile -cd openfst-$(OPENFST_VERSION) && [ -d lib64 ] && [ ! -d lib ] && ln -s lib64 lib # Add the -O flag to CXXFLAGS on cygwin as it can fix the compilation error # "file too big". ifeq ($(OSTYPE),cygwin) # Note: OSTYPE path is probably dead for latest cygwin64 (installed on 2016/11/11). openfst_add_CXXFLAGS = -O -Wa,-mbig-obj else ifeq ($(OS),Windows_NT) # This new OS path is confirmed working on Windows 10 / Cygwin64. openfst_add_CXXFLAGS = -O -Wa,-mbig-obj else openfst_add_CXXFLAGS = endif openfst-$(OPENFST_VERSION)/Makefile: openfst-$(OPENFST_VERSION) | check_required_programs cd openfst-$(OPENFST_VERSION)/ && \ ./configure --prefix=`pwd` $(OPENFST_CONFIGURE) CXX="$(CXX)" CXXFLAGS="$(CXXFLAGS) $(openfst_add_CXXFLAGS)" LDFLAGS="$(LDFLAGS)" LIBS="-ldl" openfst-$(OPENFST_VERSION): openfst-$(OPENFST_VERSION).tar.gz tar xozf openfst-$(OPENFST_VERSION).tar.gz openfst-$(OPENFST_VERSION).tar.gz: wget -T 10 -t 1 http://www.openfst.org/twiki/pub/FST/FstDownload/openfst-$(OPENFST_VERSION).tar.gz || \ wget -T 10 -t 3 http://www.openslr.org/resources/2/openfst-$(OPENFST_VERSION).tar.gz sclite: sclite_compiled .PHONY: sclite_compiled sclite_compiled: sctk sctk_configured cd sctk; \ $(MAKE) CC="$(CC)" CXX="$(CXX)" all && $(MAKE) install && $(MAKE) doc sctk_configured: sctk sctk/.configured sctk/.configured: sctk cd sctk; $(MAKE) config touch sctk/.configured .PHONY: sctk sctk: sctk-2.4.10-20151007-1312Z.tar.bz2 tar xojf sctk-2.4.10-20151007-1312Z.tar.bz2 || \ tar --exclude '*NONE*html' -xvojf sctk-2.4.10-20151007-1312Z.tar.bz2 rm -rf sctk && ln -s sctk-2.4.10 sctk sctk-2.4.10-20151007-1312Z.tar.bz2: wget -T 10 -t 3 ftp://jaguar.ncsl.nist.gov/pub/sctk-2.4.10-20151007-1312Z.tar.bz2|| \ wget --no-check-certificate -T 10 http://www.openslr.org/resources/4/sctk-2.4.10-20151007-1312Z.tar.bz2 sph2pipe: sph2pipe_compiled sph2pipe_compiled: sph2pipe_v2.5/sph2pipe sph2pipe_v2.5/sph2pipe: | sph2pipe_v2.5 cd sph2pipe_v2.5/; \ $(CC) -o sph2pipe *.c -lm sph2pipe_v2.5: sph2pipe_v2.5.tar.gz tar --no-same-owner -xzf sph2pipe_v2.5.tar.gz sph2pipe_v2.5.tar.gz: wget -T 10 -t 3 http://www.openslr.org/resources/3/sph2pipe_v2.5.tar.gz || \ wget --no-check-certificate -T 10 https://sourceforge.net/projects/kaldi/files/sph2pipe_v2.5.tar.gz .PHONY: cub cub: wget -T 10 -t 3 -O cub-$(CUB_VERSION).zip https://github.com/NVlabs/cub/archive/$(CUB_VERSION).zip unzip -oq cub-$(CUB_VERSION).zip rm -f cub ln -s cub-$(CUB_VERSION) cub # OpenBLAS is not compiled by default. Run 'make -j openblas' in this directory to build. .PHONY: openblas openblas: @-rm -rf OpenBLAS xianyi-OpenBLAS-* wget -t3 -nv -O- $$( \ wget -qO- 'https://api.github.com/repos/xianyi/OpenBLAS/releases/tags/v$(OPENBLAS_VERSION)' | \ python -c 'import sys,json;print(json.load(sys.stdin)["tarball_url"])') | \ tar xzf - mv xianyi-OpenBLAS-* OpenBLAS $(MAKE) PREFIX=$$(pwd)/OpenBLAS/install USE_THREAD=0 -C OpenBLAS all install