Build sherpa-onnx as a single shared library (#1078)
When `-D BUILD_SHARED_LIBS=ON` is passed to `cmake`, it builds a single shared library. Specifically, - For C APIs, it builds `libsherpa-onnx-c-api.so` - For Python APIs, it builds `_sherpa_onnx.cpython-xx-xx.so` - For Kotlin and Java APIs, it builds `libsherpa-onnx-jni.so` There is no `libsherpa-onnx-core.so` any longer. Note it affects only shared libraries.
This commit is contained in:
@@ -45,8 +45,25 @@ function(download_kaldi_decoder)
|
||||
message(STATUS "kaldi-decoder's binary dir is ${kaldi_decoder_BINARY_DIR}")
|
||||
|
||||
include_directories(${kaldi_decoder_SOURCE_DIR})
|
||||
|
||||
if(BUILD_SHARED_LIBS)
|
||||
set(_build_shared_libs_bak ${BUILD_SHARED_LIBS})
|
||||
set(BUILD_SHARED_LIBS OFF)
|
||||
endif()
|
||||
|
||||
add_subdirectory(${kaldi_decoder_SOURCE_DIR} ${kaldi_decoder_BINARY_DIR} EXCLUDE_FROM_ALL)
|
||||
|
||||
if(_build_shared_libs_bak)
|
||||
set_target_properties(
|
||||
kaldi-decoder-core
|
||||
PROPERTIES
|
||||
POSITION_INDEPENDENT_CODE ON
|
||||
C_VISIBILITY_PRESET hidden
|
||||
CXX_VISIBILITY_PRESET hidden
|
||||
)
|
||||
set(BUILD_SHARED_LIBS ON)
|
||||
endif()
|
||||
|
||||
if(WIN32 AND MSVC)
|
||||
target_compile_options(kaldi-decoder-core PUBLIC
|
||||
/wd4018
|
||||
@@ -58,14 +75,7 @@ function(download_kaldi_decoder)
|
||||
INTERFACE
|
||||
${kaldi-decoder_SOURCE_DIR}/
|
||||
)
|
||||
if(SHERPA_ONNX_ENABLE_PYTHON AND WIN32)
|
||||
install(TARGETS
|
||||
kaldi-decoder-core
|
||||
kaldifst_core
|
||||
fst
|
||||
fstfar
|
||||
DESTINATION ..)
|
||||
else()
|
||||
if(NOT BUILD_SHARED_LIBS)
|
||||
install(TARGETS
|
||||
kaldi-decoder-core
|
||||
kaldifst_core
|
||||
@@ -73,15 +83,6 @@ function(download_kaldi_decoder)
|
||||
fstfar
|
||||
DESTINATION lib)
|
||||
endif()
|
||||
|
||||
if(WIN32 AND BUILD_SHARED_LIBS)
|
||||
install(TARGETS
|
||||
kaldi-decoder-core
|
||||
kaldifst_core
|
||||
fst
|
||||
fstfar
|
||||
DESTINATION bin)
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
download_kaldi_decoder()
|
||||
|
||||
Reference in New Issue
Block a user