hantengc
Committed by GitHub

add openfst.cmake file (#707)

1. When compiling locally, openfst is missing.so add this file to the sherpa-onnx/cmake folder
# Copyright (c) 2020 Xiaomi Corporation (author: Fangjun Kuang)
function(download_openfst)
include(FetchContent)
set(openfst_URL "https://github.com/kkm000/openfst/archive/refs/tags/win/1.6.5.1.tar.gz")
set(openfst_URL2 "https://huggingface.co/csukuangfj/kaldi-hmm-gmm-cmake-deps/resolve/main/openfst-win-1.6.5.1.tar.gz")
set(openfst_HASH "SHA256=02c49b559c3976a536876063369efc0e41ab374be1035918036474343877046e")
# If you don't have access to the Internet,
# please pre-download it
set(possible_file_locations
$ENV{HOME}/Downloads/openfst-win-1.6.5.1.tar.gz
${CMAKE_SOURCE_DIR}/openfst-win-1.6.5.1.tar.gz
${CMAKE_BINARY_DIR}/openfst-win-1.6.5.1.tar.gz
/tmp/openfst-win-1.6.5.1.tar.gz
/star-fj/fangjun/download/github/openfst-win-1.6.5.1.tar.gz
)
foreach(f IN LISTS possible_file_locations)
if(EXISTS ${f})
set(openfst_URL "${f}")
file(TO_CMAKE_PATH "${openfst_URL}" openfst_URL)
set(openfst_URL2)
break()
endif()
endforeach()
set(HAVE_BIN OFF CACHE BOOL "" FORCE)
set(HAVE_SCRIPT ON CACHE BOOL "" FORCE)
set(HAVE_COMPACT OFF CACHE BOOL "" FORCE)
set(HAVE_COMPRESS OFF CACHE BOOL "" FORCE)
set(HAVE_CONST OFF CACHE BOOL "" FORCE)
set(HAVE_FAR OFF CACHE BOOL "" FORCE)
set(HAVE_GRM OFF CACHE BOOL "" FORCE)
set(HAVE_PDT OFF CACHE BOOL "" FORCE)
set(HAVE_MPDT OFF CACHE BOOL "" FORCE)
set(HAVE_LINEAR OFF CACHE BOOL "" FORCE)
set(HAVE_LOOKAHEAD OFF CACHE BOOL "" FORCE)
set(HAVE_NGRAM OFF CACHE BOOL "" FORCE)
set(HAVE_PYTHON OFF CACHE BOOL "" FORCE)
set(HAVE_SPECIAL OFF CACHE BOOL "" FORCE)
if(NOT WIN32)
FetchContent_Declare(openfst
URL
${openfst_URL}
${openfst_URL2}
URL_HASH ${openfst_HASH}
PATCH_COMMAND
sed -i.bak s/enable_testing\(\)//g "src/CMakeLists.txt" &&
sed -i.bak s/add_subdirectory\(test\)//g "src/CMakeLists.txt" &&
sed -i.bak /message/d "src/script/CMakeLists.txt"
# sed -i.bak s/add_subdirectory\(script\)//g "src/CMakeLists.txt" &&
# sed -i.bak s/add_subdirectory\(extensions\)//g "src/CMakeLists.txt"
)
else()
FetchContent_Declare(openfst
URL ${openfst_URL}
URL_HASH ${openfst_HASH}
)
endif()
FetchContent_GetProperties(openfst)
if(NOT openfst_POPULATED)
message(STATUS "Downloading openfst from ${openfst_URL}")
FetchContent_Populate(openfst)
endif()
message(STATUS "openfst is downloaded to ${openfst_SOURCE_DIR}")
add_subdirectory(${openfst_SOURCE_DIR} ${openfst_BINARY_DIR} EXCLUDE_FROM_ALL)
set(openfst_SOURCE_DIR ${openfst_SOURCE_DIR} PARENT_SCOPE)
# Rename libfst.so.6 to libkaldifst_fst.so.6 to avoid potential conflicts
# when kaldifst is installed.
set_target_properties(fst PROPERTIES OUTPUT_NAME "kaldifst_fst")
install(TARGETS fst
DESTINATION lib
)
if(KALDIFST_BUILD_PYTHON)
set_target_properties(fstscript PROPERTIES OUTPUT_NAME "kaldifst_fstscript")
install(TARGETS fstscript
DESTINATION lib
)
endif()
endfunction()
download_openfst()
... ...