1diff --git a/CMakeLists.txt b/CMakeLists.txt 2index 66e6d49..78f7b42 100644 3--- a/CMakeLists.txt 4+++ b/CMakeLists.txt 5@@ -1,23 +1,6 @@ 6 cmake_minimum_required(VERSION 3.13.0) 7 project(kaldi_binaries) 8 9-include(ExternalProject) 10-include(ProcessorCount) 11- 12-ProcessorCount(NCPU) 13-if(NOT NCPU EQUAL 0) 14- set(MAKE_FLAGS -j${NCPU}) 15-endif() 16- 17-set(DST ${PROJECT_SOURCE_DIR}/kaldi_active_grammar/exec) 18-if ("${CMAKE_HOST_SYSTEM_NAME}" STREQUAL "Darwin") 19- set(DST ${DST}/macos/) 20-elseif("${CMAKE_HOST_SYSTEM_NAME}" STREQUAL "Linux") 21- set(DST ${DST}/linux/) 22-else() 23- set(DST ${DST}/windows/) 24-endif() 25- 26 set(BINARIES 27 tools/openfst/bin/fstarcsort${CMAKE_EXECUTABLE_SUFFIX} 28 tools/openfst/bin/fstcompile${CMAKE_EXECUTABLE_SUFFIX} 29@@ -29,63 +12,6 @@ set(LIBRARIES 30 src/lib/libkaldi-dragonfly${CMAKE_SHARED_LIBRARY_SUFFIX} 31 ) 32 33-# For MacOS, we handle all the "indirect" shared libraries manually. 34-if("${CMAKE_HOST_SYSTEM_NAME}" STREQUAL "Darwin") 35- list(APPEND LIBRARIES 36- tools/openfst/lib/libfst${CMAKE_SHARED_LIBRARY_SUFFIX} 37- tools/openfst/lib/libfstscript${CMAKE_SHARED_LIBRARY_SUFFIX} 38- src/lib/libkaldi-base${CMAKE_SHARED_LIBRARY_SUFFIX} 39- src/lib/libkaldi-chain${CMAKE_SHARED_LIBRARY_SUFFIX} 40- src/lib/libkaldi-cudamatrix${CMAKE_SHARED_LIBRARY_SUFFIX} 41- src/lib/libkaldi-decoder${CMAKE_SHARED_LIBRARY_SUFFIX} 42- src/lib/libkaldi-feat${CMAKE_SHARED_LIBRARY_SUFFIX} 43- src/lib/libkaldi-fstext${CMAKE_SHARED_LIBRARY_SUFFIX} 44- src/lib/libkaldi-gmm${CMAKE_SHARED_LIBRARY_SUFFIX} 45- src/lib/libkaldi-hmm${CMAKE_SHARED_LIBRARY_SUFFIX} 46- src/lib/libkaldi-ivector${CMAKE_SHARED_LIBRARY_SUFFIX} 47- src/lib/libkaldi-lat${CMAKE_SHARED_LIBRARY_SUFFIX} 48- src/lib/libkaldi-lm${CMAKE_SHARED_LIBRARY_SUFFIX} 49- src/lib/libkaldi-matrix${CMAKE_SHARED_LIBRARY_SUFFIX} 50- src/lib/libkaldi-nnet2${CMAKE_SHARED_LIBRARY_SUFFIX} 51- src/lib/libkaldi-nnet3${CMAKE_SHARED_LIBRARY_SUFFIX} 52- src/lib/libkaldi-online2${CMAKE_SHARED_LIBRARY_SUFFIX} 53- src/lib/libkaldi-rnnlm${CMAKE_SHARED_LIBRARY_SUFFIX} 54- src/lib/libkaldi-transform${CMAKE_SHARED_LIBRARY_SUFFIX} 55- src/lib/libkaldi-tree${CMAKE_SHARED_LIBRARY_SUFFIX} 56- src/lib/libkaldi-util${CMAKE_SHARED_LIBRARY_SUFFIX} 57- ) 58-endif() 59- 60-if("${CMAKE_HOST_SYSTEM_NAME}" STREQUAL "Windows") 61- message(FATAL_ERROR "CMake build not supported on Windows") 62- # FIXME: copy files? 63- # https://cmake.org/cmake/help/latest/command/foreach.html 64- # https://stackoverflow.com/questions/34799916/copy-file-from-source-directory-to-binary-directory-using-cmake 65-endif() 66- 67-find_program(MAKE_EXE NAMES make gmake nmake) 68- 69-if(DEFINED ENV{INTEL_MKL_DIR}) 70- # Default: INTEL_MKL_DIR=/opt/intel/mkl/ 71- message("Compiling with MKL in: $ENV{INTEL_MKL_DIR}") 72- set(KALDI_CONFIG_FLAGS --shared --static-math --use-cuda=no --mathlib=MKL --mkl-root=$ENV{INTEL_MKL_DIR}) 73- set(MATHLIB_BUILD_COMMAND true) 74-else() 75- message("Compiling with OpenBLAS") 76- set(KALDI_CONFIG_FLAGS --shared --static-math --use-cuda=no --mathlib=OPENBLAS) 77- set(MATHLIB_BUILD_COMMAND cd tools 78- && git clone -b v0.3.13 --single-branch https://github.com/xianyi/OpenBLAS 79- && ${MAKE_EXE} ${MAKE_FLAGS} -C OpenBLAS DYNAMIC_ARCH=1 TARGET=GENERIC USE_LOCKING=1 USE_THREAD=0 all 80- && ${MAKE_EXE} ${MAKE_FLAGS} -C OpenBLAS PREFIX=install install 81- && cd ..) 82-endif() 83- 84-if(DEFINED ENV{KALDI_BRANCH}) 85- set(KALDI_BRANCH $ENV{KALDI_BRANCH}) 86-else() 87- message(FATAL_ERROR "KALDI_BRANCH not set! Use 'origin/master'?") 88- # set(KALDI_BRANCH "origin/master") 89-endif() 90 91 message("MAKE_EXE = ${MAKE_EXE}") 92 message("PYTHON_EXECUTABLE = ${PYTHON_EXECUTABLE}") 93@@ -99,63 +25,4 @@ message("CMAKE_CURRENT_BINARY_DIR = ${CMAKE_CURRENT_BINARY_DIR}") 94 95 # CXXFLAGS are set and exported in kaldi-configure-wrapper.sh 96 97-if(NOT "${CMAKE_HOST_SYSTEM_NAME}" STREQUAL "Windows") 98- set(STRIP_LIBS_COMMAND find src/lib tools/openfst/lib -name *${CMAKE_SHARED_LIBRARY_SUFFIX} | xargs strip) 99- set(STRIP_DST_COMMAND find ${DST} | xargs strip) 100- if("${CMAKE_HOST_SYSTEM_NAME}" STREQUAL "Darwin") 101- list(APPEND STRIP_LIBS_COMMAND -x) 102- list(APPEND STRIP_DST_COMMAND -x) 103- endif() 104- ExternalProject_Add(kaldi 105- GIT_CONFIG advice.detachedHead=false 106- GIT_REPOSITORY https://github.com/daanzu/kaldi-fork-active-grammar.git 107- GIT_TAG ${KALDI_BRANCH} 108- GIT_SHALLOW TRUE 109- CONFIGURE_COMMAND sed -i.bak -e "s/status=0/exit 0/g" tools/extras/check_dependencies.sh && cp ${PROJECT_SOURCE_DIR}/building/kaldi-configure-wrapper.sh src/ 110- BUILD_IN_SOURCE TRUE 111- BUILD_COMMAND ${MATHLIB_BUILD_COMMAND} && cd tools && ${MAKE_EXE} ${MAKE_FLAGS} && cd openfst && autoreconf && cd ../../src && bash ./kaldi-configure-wrapper.sh ./configure ${KALDI_CONFIG_FLAGS} && ${MAKE_EXE} ${MAKE_FLAGS} depend && ${MAKE_EXE} ${MAKE_FLAGS} dragonfly dragonflybin bin fstbin lmbin 112- LIST_SEPARATOR " " 113- INSTALL_COMMAND ${STRIP_LIBS_COMMAND} && mkdir -p ${DST} && cp ${BINARIES} ${LIBRARIES} ${DST} 114- ) 115-endif() 116- 117-# Fix dynamic libraries loading paths on macOS. The libraries and 118-# executables are built with RPATH settings embedded in them, pointing 119-# to the locations in temporary directories used to build the 120-# binaries. After package installation is done, these directories are 121-# deleted and the dynamic libraries cannot be loaded. The following 122-# commands generate a shell script that fixes the paths to the dynamic 123-# libraries in the built executables and the libraries themselves. 124-# Also the commands add a custom target to invoke the generated script 125-# after the external project (kaldi) has been built. An alternative 126-# would be to change the kaldi engine build system to accept a path to 127-# where the binaries would be placed and point RPATH to that location. 128-if("${CMAKE_HOST_SYSTEM_NAME}" STREQUAL "Darwin") 129- string (REPLACE ";" " " BINARIES_STR "${BINARIES}") 130- string (REPLACE ";" " " LIBRARIES_STR "${LIBRARIES}") 131- file(GENERATE OUTPUT name_fixer 132- CONTENT 133- "for a in ${BINARIES_STR} ; do 134- a_bare=$\{a##*/\} 135- install_name_tool -change ${PROJECT_BINARY_DIR}/kaldi-prefix/src/kaldi/tools/openfst-1.6.7/lib/libfst.10.dylib \"@loader_path/libfst.dylib\" ${DST}$a_bare 136- install_name_tool -change ${PROJECT_BINARY_DIR}/kaldi-prefix/src/kaldi/tools/openfst-1.6.7/lib/libfstscript.10.dylib \"@loader_path/libfstscript.dylib\" ${DST}$a_bare 137- for b in ${LIBRARIES_STR} ; do 138- b_bare=$\{b##*/\} 139- install_name_tool -change \"@rpath/$b_bare\" \"@loader_path/$b_bare\" ${DST}$a_bare 140- done 141- done 142- for a in ${LIBRARIES_STR} ; do 143- a_bare=$\{a##*/\} 144- install_name_tool -id \"@loader_path/$a_bare\" ${DST}$a_bare 145- install_name_tool -change ${PROJECT_BINARY_DIR}/kaldi-prefix/src/kaldi/tools/openfst-1.6.7/lib/libfst.10.dylib \"@loader_path/libfst.dylib\" ${DST}$a_bare 146- install_name_tool -change ${PROJECT_BINARY_DIR}/kaldi-prefix/src/kaldi/tools/openfst-1.6.7/lib/libfstscript.10.dylib \"@loader_path/libfstscript.dylib\" ${DST}$a_bare 147- for b in ${LIBRARIES_STR} ; do 148- b_bare=$\{b##*/\} 149- install_name_tool -change \"@rpath/$b_bare\" \"@loader_path/$b_bare\" ${DST}$a_bare 150- done 151- done") 152- add_custom_target(fixer ALL COMMAND /bin/sh name_fixer) 153- add_dependencies(fixer kaldi) 154-endif() 155- 156 install(CODE "MESSAGE(\"Installed kaldi engine binaries.\")")