Support pkg-config (#253)
This commit is contained in:
104
.github/workflows/pkg-config.yaml
vendored
Normal file
104
.github/workflows/pkg-config.yaml
vendored
Normal file
@@ -0,0 +1,104 @@
|
||||
name: pkg-config
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- pkg-config
|
||||
tags:
|
||||
- '*'
|
||||
paths:
|
||||
- '.github/workflows/pkg-config.yaml'
|
||||
- 'CMakeLists.txt'
|
||||
- 'cmake/**'
|
||||
- 'sherpa-onnx/csrc/*'
|
||||
- 'sherpa-onnx/c-api/*'
|
||||
- 'c-api-examples/**'
|
||||
pull_request:
|
||||
branches:
|
||||
- master
|
||||
paths:
|
||||
- '.github/workflows/pkg-config.yaml'
|
||||
- 'CMakeLists.txt'
|
||||
- 'cmake/**'
|
||||
- 'sherpa-onnx/csrc/*'
|
||||
- 'sherpa-onnx/c-api/*'
|
||||
|
||||
workflow_dispatch:
|
||||
|
||||
concurrency:
|
||||
group: pkg-config-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
linux:
|
||||
runs-on: ${{ matrix.os }}
|
||||
name: ${{ matrix.os }} ${{ matrix.build_type }} ${{ matrix.lib_type }}
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
os: [ubuntu-latest, macos-latest]
|
||||
build_type: [Release, Debug]
|
||||
lib_type: [shared, static]
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Configure CMake
|
||||
shell: bash
|
||||
run: |
|
||||
mkdir build
|
||||
cd build
|
||||
if [[ ${{ matrix.lib_type }} == "shared" ]]; then
|
||||
cmake -DSHERPA_ONNX_ENABLE_C_API=ON -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} -DCMAKE_INSTALL_PREFIX=./install -DBUILD_SHARED_LIBS=ON ..
|
||||
else
|
||||
cmake -DSHERPA_ONNX_ENABLE_C_API=ON -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} -DCMAKE_INSTALL_PREFIX=./install -DBUILD_SHARED_LIBS=OFF ..
|
||||
fi
|
||||
|
||||
- name: Build sherpa-onnx for ${{ matrix.os }} ${{ matrix.build_type }} ${{ matrix.lib_type }}
|
||||
shell: bash
|
||||
run: |
|
||||
cd build
|
||||
make -j2
|
||||
make install
|
||||
|
||||
ls -lh lib
|
||||
ls -lh bin
|
||||
|
||||
- name: Install tree
|
||||
if: matrix.os == 'ubuntu-latest'
|
||||
shell: bash
|
||||
run: |
|
||||
sudo apt-get install tree
|
||||
|
||||
- name: Install tree
|
||||
if: matrix.os == 'macos-latest'
|
||||
shell: bash
|
||||
run: |
|
||||
brew install tree
|
||||
|
||||
- name: Display generated files of sherpa-onnx for ${{ matrix.os }} ${{ matrix.build_type }} ${{ matrix.lib_type }}
|
||||
shell: bash
|
||||
run: |
|
||||
tree build/install
|
||||
ls -lh build/install
|
||||
|
||||
cat build/install/sherpa-onnx.pc
|
||||
|
||||
- name: Build C API example
|
||||
shell: bash
|
||||
run: |
|
||||
export PKG_CONFIG_PATH=$PWD/build/install:$PKG_CONFIG_PATH
|
||||
cd c-api-examples
|
||||
gcc -o decode-file-c-api $(pkg-config --cflags sherpa-onnx) ./decode-file-c-api.c $(pkg-config --libs sherpa-onnx)
|
||||
./decode-file-c-api --help
|
||||
|
||||
- name: Test online transducer (C API)
|
||||
shell: bash
|
||||
run: |
|
||||
export PATH=$PWD/c-api-examples:$PATH
|
||||
export EXE=decode-file-c-api
|
||||
|
||||
.github/scripts/test-online-transducer.sh
|
||||
@@ -1,7 +1,7 @@
|
||||
cmake_minimum_required(VERSION 3.13 FATAL_ERROR)
|
||||
project(sherpa-onnx)
|
||||
|
||||
set(SHERPA_ONNX_VERSION "1.7.0")
|
||||
set(SHERPA_ONNX_VERSION "1.7.1")
|
||||
|
||||
# Disable warning about
|
||||
#
|
||||
@@ -167,3 +167,22 @@ if(SHERPA_ONNX_ENABLE_C_API)
|
||||
add_subdirectory(c-api-examples)
|
||||
endif()
|
||||
message(STATUS "CMAKE_CXX_FLAGS: ${CMAKE_CXX_FLAGS}")
|
||||
|
||||
if(NOT BUILD_SHARED_LIBS)
|
||||
if(APPLE)
|
||||
set(SHERPA_ONNX_PKG_CONFIG_EXTRA_LIBS "-lc++")
|
||||
endif()
|
||||
|
||||
if(UNIX AND NOT APPLE)
|
||||
set(SHERPA_ONNX_PKG_CONFIG_EXTRA_LIBS "-lstdc++ -lm")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# See https://people.freedesktop.org/~dbn/pkg-config-guide.html
|
||||
configure_file(cmake/sherpa-onnx.pc.in ${PROJECT_BINARY_DIR}/sherpa-onnx.pc @ONLY)
|
||||
install(
|
||||
FILES
|
||||
${PROJECT_BINARY_DIR}/sherpa-onnx.pc
|
||||
DESTINATION
|
||||
.
|
||||
)
|
||||
|
||||
@@ -2,10 +2,11 @@ function(download_cargs)
|
||||
include(FetchContent)
|
||||
|
||||
set(cargs_URL "https://github.com/likle/cargs/archive/refs/tags/v1.0.3.tar.gz")
|
||||
set(cargs_URL2 "https://huggingface.co/csukuangfj/sherpa-onnx-cmake-deps/resolve/main/cargs-1.0.3.tar.gz")
|
||||
set(cargs_HASH "SHA256=ddba25bd35e9c6c75bc706c126001b8ce8e084d40ef37050e6aa6963e836eb8b")
|
||||
|
||||
# If you don't have access to the Internet,
|
||||
# please pre-download asio
|
||||
# please pre-download cargs
|
||||
set(possible_file_locations
|
||||
$ENV{HOME}/Downloads/cargs-1.0.3.tar.gz
|
||||
${PROJECT_SOURCE_DIR}/cargs-1.0.3.tar.gz
|
||||
@@ -19,11 +20,18 @@ function(download_cargs)
|
||||
set(cargs_URL "${f}")
|
||||
file(TO_CMAKE_PATH "${cargs_URL}" cargs_URL)
|
||||
message(STATUS "Found local downloaded cargs: ${cargs_URL}")
|
||||
set(cargs_URL2)
|
||||
break()
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
FetchContent_Declare(cargs URL ${cargs_URL} URL_HASH ${cargs_HASH})
|
||||
FetchContent_Declare(cargs
|
||||
URL
|
||||
${cargs_URL}
|
||||
${cargs_URL2}
|
||||
URL_HASH
|
||||
${cargs_HASH}
|
||||
)
|
||||
|
||||
FetchContent_GetProperties(cargs)
|
||||
if(NOT cargs_POPULATED)
|
||||
@@ -32,6 +40,11 @@ function(download_cargs)
|
||||
endif()
|
||||
message(STATUS "cargs is downloaded to ${cargs_SOURCE_DIR}")
|
||||
add_subdirectory(${cargs_SOURCE_DIR} ${cargs_BINARY_DIR} EXCLUDE_FROM_ALL)
|
||||
|
||||
install(TARGETS cargs DESTINATION lib)
|
||||
install(FILES ${cargs_SOURCE_DIR}/include/cargs.h
|
||||
DESTINATION include
|
||||
)
|
||||
endfunction()
|
||||
|
||||
download_cargs()
|
||||
|
||||
@@ -57,6 +57,9 @@ function(download_portaudio)
|
||||
|
||||
if(BUILD_SHARED_LIBS)
|
||||
set_target_properties(portaudio PROPERTIES OUTPUT_NAME "sherpa-onnx-portaudio")
|
||||
if(NOT WIN32)
|
||||
target_compile_options(portaudio PRIVATE "-Wno-deprecated-declarations")
|
||||
endif()
|
||||
|
||||
if(SHERPA_ONNX_ENABLE_PYTHON AND WIN32)
|
||||
install(TARGETS portaudio DESTINATION ..)
|
||||
@@ -65,6 +68,9 @@ function(download_portaudio)
|
||||
endif()
|
||||
else()
|
||||
set_target_properties(portaudio_static PROPERTIES OUTPUT_NAME "sherpa-onnx-portaudio_static")
|
||||
if(NOT WIN32)
|
||||
target_compile_options(portaudio_static PRIVATE "-Wno-deprecated-declarations")
|
||||
endif()
|
||||
if(SHERPA_ONNX_ENABLE_PYTHON AND WIN32)
|
||||
install(TARGETS portaudio_static DESTINATION ..)
|
||||
else()
|
||||
|
||||
16
cmake/sherpa-onnx.pc.in
Normal file
16
cmake/sherpa-onnx.pc.in
Normal file
@@ -0,0 +1,16 @@
|
||||
prefix="@CMAKE_INSTALL_PREFIX@"
|
||||
exec_prefix="${prefix}"
|
||||
includedir="${prefix}/include"
|
||||
libdir="${exec_prefix}/lib"
|
||||
|
||||
Name: sherpa-onnx
|
||||
Description: pkg-config for sherpa-onnx
|
||||
URL: https://github.com/k2-fsa/sherpa-onnx
|
||||
|
||||
Version: @SHERPA_ONNX_VERSION@
|
||||
Cflags: -I"${includedir}"
|
||||
|
||||
# Note: -lcargs is required only for the following file
|
||||
# https://github.com/k2-fsa/sherpa-onnx/blob/master/c-api-examples/decode-file-c-api.c
|
||||
# We add it here so that users don't need to specify -lcargs when compiling decode-file-c-api.c
|
||||
Libs: -L"${libdir}" -lsherpa-onnx-c-api -lsherpa-onnx-core -lonnxruntime -lkaldi-native-fbank-core -lcargs -Wl,-rpath,${libdir} @SHERPA_ONNX_PKG_CONFIG_EXTRA_LIBS@
|
||||
@@ -82,13 +82,17 @@ def process_windows(s):
|
||||
"sherpa-onnx-c-api.dll",
|
||||
"sherpa-onnx-core.dll",
|
||||
]
|
||||
|
||||
version = get_version()
|
||||
|
||||
prefix1 = f"{SHERPA_ONNX_DIR}/windows/sherpa_onnx/lib/"
|
||||
prefix2 = f"{SHERPA_ONNX_DIR}/windows/sherpa_onnx/"
|
||||
prefix3 = f"{SHERPA_ONNX_DIR}/windows/"
|
||||
prefix4 = f"{SHERPA_ONNX_DIR}/windows/sherpa_onnx-${version}.data/data/bin/"
|
||||
|
||||
lib_list = []
|
||||
for lib in libs:
|
||||
for prefix in [prefix1, prefix2, prefix3]:
|
||||
for prefix in [prefix1, prefix2, prefix3, prefix4]:
|
||||
f = Path(prefix) / lib
|
||||
if f.is_file():
|
||||
lib_list.append(str(f))
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
// Copyright 2023 Xiaomi Corporation
|
||||
#ifndef SHERPA_ONNX_CSRC_TEXT_UTILS_H_
|
||||
#define SHERPA_ONNX_CSRC_TEXT_UTILS_H_
|
||||
#include <errno.h>.
|
||||
#include <errno.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include <limits>
|
||||
|
||||
Reference in New Issue
Block a user