Skip to content

Commit 0854932

Browse files
localai-botmudler
andauthored
feat(omnivoice-cpp): add OmniVoice TTS backend (file + streaming, voice cloning + voice design) (#10310)
* feat(omnivoice-cpp): add C wrapper + CMake/Makefile build over OmniVoice ov_* ABI Assisted-by: claude:claude-opus-4-8 [Claude Code] Signed-off-by: Ettore Di Giacinto <mudler@localai.io> * feat(omnivoice-cpp): add option/language parsing + WAV framing helpers with tests Assisted-by: claude:claude-opus-4-8 [Claude Code] Signed-off-by: Ettore Di Giacinto <mudler@localai.io> * feat(omnivoice-cpp): wire purego binding with TTS + streaming TTSStream Assisted-by: claude:claude-opus-4-8 [Claude Code] Signed-off-by: Ettore Di Giacinto <mudler@localai.io> * build(omnivoice-cpp): wire backend into root Makefile Assisted-by: claude:claude-opus-4-8 [Claude Code] Signed-off-by: Ettore Di Giacinto <mudler@localai.io> * ci(omnivoice-cpp): add build matrix entries + dep-bump registration Assisted-by: claude:claude-opus-4-8 [Claude Code] Signed-off-by: Ettore Di Giacinto <mudler@localai.io> * feat(omnivoice-cpp): register backend meta + image entries Assisted-by: claude:claude-opus-4-8 [Claude Code] Signed-off-by: Ettore Di Giacinto <mudler@localai.io> * feat(omnivoice-cpp): expose as preference-only importable backend Assisted-by: claude:claude-opus-4-8 [Claude Code] Signed-off-by: Ettore Di Giacinto <mudler@localai.io> * feat(gallery): add omnivoice-cpp TTS models (Q8_0 default + BF16 HQ) Assisted-by: claude:claude-opus-4-8 [Claude Code] Signed-off-by: Ettore Di Giacinto <mudler@localai.io> * docs(omnivoice-cpp): document the OmniVoice TTS backend Assisted-by: claude:claude-opus-4-8 [Claude Code] Signed-off-by: Ettore Di Giacinto <mudler@localai.io> * test(omnivoice-cpp): add env-gated e2e for TTS + streaming Assisted-by: claude:claude-opus-4-8 [Claude Code] Signed-off-by: Ettore Di Giacinto <mudler@localai.io> * feat(omnivoice-cpp): honor tts.audio_path/tts.voice config as default cloning reference The model config tts.audio_path (ModelOptions.AudioPath) and tts.voice now provide a default voice-cloning reference used when a request omits Voice, so a cloned voice can be pinned in the model YAML instead of passed per request. A per-request voice still overrides. Paths resolve relative to the model dir. Assisted-by: claude:claude-opus-4-8 [Claude Code] Signed-off-by: Ettore Di Giacinto <mudler@localai.io> * fix(omnivoice-cpp): add missing omnivoice-cpp-development backend meta Mirrors the whisper/vibevoice convention: a -development meta aggregating the master-tagged image variants (the production meta and per-variant prod+dev image entries already existed; only the development meta aggregator was missing). Assisted-by: claude:claude-opus-4-8 [Claude Code] Signed-off-by: Ettore Di Giacinto <mudler@localai.io> --------- Signed-off-by: Ettore Di Giacinto <mudler@localai.io> Co-authored-by: Ettore Di Giacinto <mudler@localai.io>
1 parent 2034108 commit 0854932

23 files changed

Lines changed: 1681 additions & 2 deletions

File tree

.github/backend-matrix.yml

Lines changed: 152 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -781,6 +781,19 @@ include:
781781
dockerfile: "./backend/Dockerfile.golang"
782782
context: "./"
783783
ubuntu-version: '2404'
784+
- build-type: 'cublas'
785+
cuda-major-version: "12"
786+
cuda-minor-version: "8"
787+
platforms: 'linux/amd64'
788+
tag-latest: 'auto'
789+
tag-suffix: '-gpu-nvidia-cuda-12-omnivoice-cpp'
790+
runs-on: 'ubuntu-latest'
791+
base-image: "ubuntu:24.04"
792+
skip-drivers: 'false'
793+
backend: "omnivoice-cpp"
794+
dockerfile: "./backend/Dockerfile.golang"
795+
context: "./"
796+
ubuntu-version: '2404'
784797
- build-type: 'cublas'
785798
cuda-major-version: "12"
786799
cuda-minor-version: "8"
@@ -1712,6 +1725,19 @@ include:
17121725
dockerfile: "./backend/Dockerfile.golang"
17131726
context: "./"
17141727
ubuntu-version: '2404'
1728+
- build-type: 'cublas'
1729+
cuda-major-version: "13"
1730+
cuda-minor-version: "0"
1731+
platforms: 'linux/amd64'
1732+
tag-latest: 'auto'
1733+
tag-suffix: '-gpu-nvidia-cuda-13-omnivoice-cpp'
1734+
runs-on: 'ubuntu-latest'
1735+
base-image: "ubuntu:24.04"
1736+
skip-drivers: 'false'
1737+
backend: "omnivoice-cpp"
1738+
dockerfile: "./backend/Dockerfile.golang"
1739+
context: "./"
1740+
ubuntu-version: '2404'
17151741
- build-type: 'cublas'
17161742
cuda-major-version: "13"
17171743
cuda-minor-version: "0"
@@ -1751,6 +1777,19 @@ include:
17511777
backend: "qwen3-tts-cpp"
17521778
dockerfile: "./backend/Dockerfile.golang"
17531779
context: "./"
1780+
- build-type: 'cublas'
1781+
cuda-major-version: "13"
1782+
cuda-minor-version: "0"
1783+
platforms: 'linux/arm64'
1784+
skip-drivers: 'false'
1785+
tag-latest: 'auto'
1786+
tag-suffix: '-nvidia-l4t-cuda-13-arm64-omnivoice-cpp'
1787+
base-image: "ubuntu:24.04"
1788+
ubuntu-version: '2404'
1789+
runs-on: 'ubuntu-24.04-arm'
1790+
backend: "omnivoice-cpp"
1791+
dockerfile: "./backend/Dockerfile.golang"
1792+
context: "./"
17541793
- build-type: 'cublas'
17551794
cuda-major-version: "13"
17561795
cuda-minor-version: "0"
@@ -3483,6 +3522,35 @@ include:
34833522
dockerfile: "./backend/Dockerfile.golang"
34843523
context: "./"
34853524
ubuntu-version: '2404'
3525+
# omnivoice-cpp
3526+
- build-type: ''
3527+
cuda-major-version: ""
3528+
cuda-minor-version: ""
3529+
platforms: 'linux/amd64'
3530+
platform-tag: 'amd64'
3531+
tag-latest: 'auto'
3532+
tag-suffix: '-cpu-omnivoice-cpp'
3533+
runs-on: 'ubuntu-latest'
3534+
base-image: "ubuntu:24.04"
3535+
skip-drivers: 'false'
3536+
backend: "omnivoice-cpp"
3537+
dockerfile: "./backend/Dockerfile.golang"
3538+
context: "./"
3539+
ubuntu-version: '2404'
3540+
- build-type: ''
3541+
cuda-major-version: ""
3542+
cuda-minor-version: ""
3543+
platforms: 'linux/arm64'
3544+
platform-tag: 'arm64'
3545+
tag-latest: 'auto'
3546+
tag-suffix: '-cpu-omnivoice-cpp'
3547+
runs-on: 'ubuntu-24.04-arm'
3548+
base-image: "ubuntu:24.04"
3549+
skip-drivers: 'false'
3550+
backend: "omnivoice-cpp"
3551+
dockerfile: "./backend/Dockerfile.golang"
3552+
context: "./"
3553+
ubuntu-version: '2404'
34863554
- build-type: 'sycl_f32'
34873555
cuda-major-version: ""
34883556
cuda-minor-version: ""
@@ -3496,6 +3564,19 @@ include:
34963564
dockerfile: "./backend/Dockerfile.golang"
34973565
context: "./"
34983566
ubuntu-version: '2404'
3567+
- build-type: 'sycl_f32'
3568+
cuda-major-version: ""
3569+
cuda-minor-version: ""
3570+
platforms: 'linux/amd64'
3571+
tag-latest: 'auto'
3572+
tag-suffix: '-gpu-intel-sycl-f32-omnivoice-cpp'
3573+
runs-on: 'ubuntu-latest'
3574+
base-image: "intel/oneapi-basekit:2025.3.0-0-devel-ubuntu24.04"
3575+
skip-drivers: 'false'
3576+
backend: "omnivoice-cpp"
3577+
dockerfile: "./backend/Dockerfile.golang"
3578+
context: "./"
3579+
ubuntu-version: '2404'
34993580
- build-type: 'sycl_f16'
35003581
cuda-major-version: ""
35013582
cuda-minor-version: ""
@@ -3509,6 +3590,19 @@ include:
35093590
dockerfile: "./backend/Dockerfile.golang"
35103591
context: "./"
35113592
ubuntu-version: '2404'
3593+
- build-type: 'sycl_f16'
3594+
cuda-major-version: ""
3595+
cuda-minor-version: ""
3596+
platforms: 'linux/amd64'
3597+
tag-latest: 'auto'
3598+
tag-suffix: '-gpu-intel-sycl-f16-omnivoice-cpp'
3599+
runs-on: 'ubuntu-latest'
3600+
base-image: "intel/oneapi-basekit:2025.3.0-0-devel-ubuntu24.04"
3601+
skip-drivers: 'false'
3602+
backend: "omnivoice-cpp"
3603+
dockerfile: "./backend/Dockerfile.golang"
3604+
context: "./"
3605+
ubuntu-version: '2404'
35123606
- build-type: 'vulkan'
35133607
cuda-major-version: ""
35143608
cuda-minor-version: ""
@@ -3523,6 +3617,20 @@ include:
35233617
dockerfile: "./backend/Dockerfile.golang"
35243618
context: "./"
35253619
ubuntu-version: '2404'
3620+
- build-type: 'vulkan'
3621+
cuda-major-version: ""
3622+
cuda-minor-version: ""
3623+
platforms: 'linux/amd64'
3624+
platform-tag: 'amd64'
3625+
tag-latest: 'auto'
3626+
tag-suffix: '-gpu-vulkan-omnivoice-cpp'
3627+
runs-on: 'ubuntu-latest'
3628+
base-image: "ubuntu:24.04"
3629+
skip-drivers: 'false'
3630+
backend: "omnivoice-cpp"
3631+
dockerfile: "./backend/Dockerfile.golang"
3632+
context: "./"
3633+
ubuntu-version: '2404'
35263634
- build-type: 'vulkan'
35273635
cuda-major-version: ""
35283636
cuda-minor-version: ""
@@ -3537,6 +3645,20 @@ include:
35373645
dockerfile: "./backend/Dockerfile.golang"
35383646
context: "./"
35393647
ubuntu-version: '2404'
3648+
- build-type: 'vulkan'
3649+
cuda-major-version: ""
3650+
cuda-minor-version: ""
3651+
platforms: 'linux/arm64'
3652+
platform-tag: 'arm64'
3653+
tag-latest: 'auto'
3654+
tag-suffix: '-gpu-vulkan-omnivoice-cpp'
3655+
runs-on: 'ubuntu-24.04-arm'
3656+
base-image: "ubuntu:24.04"
3657+
skip-drivers: 'false'
3658+
backend: "omnivoice-cpp"
3659+
dockerfile: "./backend/Dockerfile.golang"
3660+
context: "./"
3661+
ubuntu-version: '2404'
35403662
- build-type: 'cublas'
35413663
cuda-major-version: "12"
35423664
cuda-minor-version: "0"
@@ -3550,6 +3672,19 @@ include:
35503672
dockerfile: "./backend/Dockerfile.golang"
35513673
context: "./"
35523674
ubuntu-version: '2204'
3675+
- build-type: 'cublas'
3676+
cuda-major-version: "12"
3677+
cuda-minor-version: "0"
3678+
platforms: 'linux/arm64'
3679+
skip-drivers: 'false'
3680+
tag-latest: 'auto'
3681+
tag-suffix: '-nvidia-l4t-arm64-omnivoice-cpp'
3682+
base-image: "nvcr.io/nvidia/l4t-jetpack:r36.4.0"
3683+
runs-on: 'ubuntu-24.04-arm'
3684+
backend: "omnivoice-cpp"
3685+
dockerfile: "./backend/Dockerfile.golang"
3686+
context: "./"
3687+
ubuntu-version: '2204'
35533688
- build-type: 'hipblas'
35543689
cuda-major-version: ""
35553690
cuda-minor-version: ""
@@ -3563,6 +3698,19 @@ include:
35633698
dockerfile: "./backend/Dockerfile.golang"
35643699
context: "./"
35653700
ubuntu-version: '2404'
3701+
- build-type: 'hipblas'
3702+
cuda-major-version: ""
3703+
cuda-minor-version: ""
3704+
platforms: 'linux/amd64'
3705+
tag-latest: 'auto'
3706+
tag-suffix: '-gpu-rocm-hipblas-omnivoice-cpp'
3707+
base-image: "rocm/dev-ubuntu-24.04:6.4.4"
3708+
runs-on: 'ubuntu-latest'
3709+
skip-drivers: 'false'
3710+
backend: "omnivoice-cpp"
3711+
dockerfile: "./backend/Dockerfile.golang"
3712+
context: "./"
3713+
ubuntu-version: '2404'
35663714
# vibevoice-cpp
35673715
- build-type: ''
35683716
cuda-major-version: ""
@@ -4393,6 +4541,10 @@ includeDarwin:
43934541
tag-suffix: "-metal-darwin-arm64-qwen3-tts-cpp"
43944542
build-type: "metal"
43954543
lang: "go"
4544+
- backend: "omnivoice-cpp"
4545+
tag-suffix: "-metal-darwin-arm64-omnivoice-cpp"
4546+
build-type: "metal"
4547+
lang: "go"
43964548
- backend: "vibevoice-cpp"
43974549
tag-suffix: "-metal-darwin-arm64-vibevoice-cpp"
43984550
build-type: "metal"

.github/workflows/bump_deps.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,10 @@ jobs:
7070
variable: "QWEN3TTS_CPP_VERSION"
7171
branch: "main"
7272
file: "backend/go/qwen3-tts-cpp/Makefile"
73+
- repository: "ServeurpersoCom/omnivoice.cpp"
74+
variable: "OMNIVOICE_VERSION"
75+
branch: "master"
76+
file: "backend/go/omnivoice-cpp/Makefile"
7377
- repository: "localai-org/vibevoice.cpp"
7478
variable: "VIBEVOICE_CPP_VERSION"
7579
branch: "master"

Makefile

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# Disable parallel execution for backend builds
2-
.NOTPARALLEL: backends/diffusers backends/llama-cpp backends/turboquant backends/outetts backends/piper backends/stablediffusion-ggml backends/whisper backends/crispasr backends/parakeet-cpp backends/faster-whisper backends/silero-vad backends/local-store backends/huggingface backends/rfdetr backends/rfdetr-cpp backends/insightface backends/speaker-recognition backends/kitten-tts backends/kokoro backends/chatterbox backends/llama-cpp-darwin backends/neutts build-darwin-python-backend build-darwin-go-backend backends/mlx backends/diffuser-darwin backends/mlx-vlm backends/mlx-audio backends/mlx-distributed backends/stablediffusion-ggml-darwin backends/vllm backends/vllm-omni backends/sglang backends/moonshine backends/pocket-tts backends/qwen-tts backends/faster-qwen3-tts backends/qwen-asr backends/nemo backends/voxcpm backends/whisperx backends/ace-step backends/acestep-cpp backends/fish-speech backends/voxtral backends/opus backends/trl backends/llama-cpp-quantization backends/kokoros backends/sam3-cpp backends/qwen3-tts-cpp backends/vibevoice-cpp backends/localvqe backends/tinygrad backends/sherpa-onnx backends/ds4 backends/ds4-darwin backends/liquid-audio
2+
.NOTPARALLEL: backends/diffusers backends/llama-cpp backends/turboquant backends/outetts backends/piper backends/stablediffusion-ggml backends/whisper backends/crispasr backends/parakeet-cpp backends/faster-whisper backends/silero-vad backends/local-store backends/huggingface backends/rfdetr backends/rfdetr-cpp backends/insightface backends/speaker-recognition backends/kitten-tts backends/kokoro backends/chatterbox backends/llama-cpp-darwin backends/neutts build-darwin-python-backend build-darwin-go-backend backends/mlx backends/diffuser-darwin backends/mlx-vlm backends/mlx-audio backends/mlx-distributed backends/stablediffusion-ggml-darwin backends/vllm backends/vllm-omni backends/sglang backends/moonshine backends/pocket-tts backends/qwen-tts backends/faster-qwen3-tts backends/qwen-asr backends/nemo backends/voxcpm backends/whisperx backends/ace-step backends/acestep-cpp backends/fish-speech backends/voxtral backends/opus backends/trl backends/llama-cpp-quantization backends/kokoros backends/sam3-cpp backends/qwen3-tts-cpp backends/omnivoice-cpp backends/vibevoice-cpp backends/localvqe backends/tinygrad backends/sherpa-onnx backends/ds4 backends/ds4-darwin backends/liquid-audio
33

44
GOCMD=go
55
GOTEST=$(GOCMD) test
@@ -1176,6 +1176,7 @@ BACKEND_PARAKEET_CPP = parakeet-cpp|golang|.|false|true
11761176
BACKEND_VOXTRAL = voxtral|golang|.|false|true
11771177
BACKEND_ACESTEP_CPP = acestep-cpp|golang|.|false|true
11781178
BACKEND_QWEN3_TTS_CPP = qwen3-tts-cpp|golang|.|false|true
1179+
BACKEND_OMNIVOICE_CPP = omnivoice-cpp|golang|.|false|true
11791180
BACKEND_VIBEVOICE_CPP = vibevoice-cpp|golang|.|false|true
11801181
BACKEND_LOCALVQE = localvqe|golang|.|false|true
11811182
BACKEND_OPUS = opus|golang|.|false|true
@@ -1294,6 +1295,7 @@ $(eval $(call generate-docker-build-target,$(BACKEND_WHISPERX)))
12941295
$(eval $(call generate-docker-build-target,$(BACKEND_ACE_STEP)))
12951296
$(eval $(call generate-docker-build-target,$(BACKEND_ACESTEP_CPP)))
12961297
$(eval $(call generate-docker-build-target,$(BACKEND_QWEN3_TTS_CPP)))
1298+
$(eval $(call generate-docker-build-target,$(BACKEND_OMNIVOICE_CPP)))
12971299
$(eval $(call generate-docker-build-target,$(BACKEND_VIBEVOICE_CPP)))
12981300
$(eval $(call generate-docker-build-target,$(BACKEND_LOCALVQE)))
12991301
$(eval $(call generate-docker-build-target,$(BACKEND_MLX)))
@@ -1311,7 +1313,7 @@ $(eval $(call generate-docker-build-target,$(BACKEND_SHERPA_ONNX)))
13111313
docker-save-%: backend-images
13121314
docker save local-ai-backend:$* -o backend-images/$*.tar
13131315

1314-
docker-build-backends: docker-build-llama-cpp docker-build-ik-llama-cpp docker-build-turboquant docker-build-ds4 docker-build-rerankers docker-build-vllm docker-build-vllm-omni docker-build-sglang docker-build-transformers docker-build-outetts docker-build-diffusers docker-build-kokoro docker-build-faster-whisper docker-build-crispasr docker-build-coqui docker-build-chatterbox docker-build-vibevoice docker-build-liquid-audio docker-build-moonshine docker-build-pocket-tts docker-build-qwen-tts docker-build-fish-speech docker-build-faster-qwen3-tts docker-build-qwen-asr docker-build-nemo docker-build-voxcpm docker-build-whisperx docker-build-ace-step docker-build-acestep-cpp docker-build-voxtral docker-build-mlx-distributed docker-build-trl docker-build-llama-cpp-quantization docker-build-tinygrad docker-build-kokoros docker-build-sam3-cpp docker-build-rfdetr-cpp docker-build-qwen3-tts-cpp docker-build-vibevoice-cpp docker-build-localvqe docker-build-insightface docker-build-speaker-recognition docker-build-sherpa-onnx docker-build-cloud-proxy
1316+
docker-build-backends: docker-build-llama-cpp docker-build-ik-llama-cpp docker-build-turboquant docker-build-ds4 docker-build-rerankers docker-build-vllm docker-build-vllm-omni docker-build-sglang docker-build-transformers docker-build-outetts docker-build-diffusers docker-build-kokoro docker-build-faster-whisper docker-build-crispasr docker-build-coqui docker-build-chatterbox docker-build-vibevoice docker-build-liquid-audio docker-build-moonshine docker-build-pocket-tts docker-build-qwen-tts docker-build-fish-speech docker-build-faster-qwen3-tts docker-build-qwen-asr docker-build-nemo docker-build-voxcpm docker-build-whisperx docker-build-ace-step docker-build-acestep-cpp docker-build-voxtral docker-build-mlx-distributed docker-build-trl docker-build-llama-cpp-quantization docker-build-tinygrad docker-build-kokoros docker-build-sam3-cpp docker-build-rfdetr-cpp docker-build-qwen3-tts-cpp docker-build-omnivoice-cpp docker-build-vibevoice-cpp docker-build-localvqe docker-build-insightface docker-build-speaker-recognition docker-build-sherpa-onnx docker-build-cloud-proxy
13151317

13161318
########################################################
13171319
### Mock Backend for E2E Tests
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
# Fetched upstream sources
2+
sources/
3+
4+
# CMake build directories
5+
build*/
6+
7+
# Compiled shared libraries
8+
*.so
9+
10+
# Compiled backend binary
11+
omnivoice-cpp
12+
13+
# Packaging output
14+
package/
15+
16+
# Downloaded e2e models
17+
omnivoice-models/
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
cmake_minimum_required(VERSION 3.14)
2+
project(gomnivoicecpp LANGUAGES C CXX)
3+
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
4+
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
5+
6+
set(OMNIVOICE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/sources/omnivoice.cpp)
7+
8+
# Override upstream's CMAKE_CUDA_ARCHITECTURES before add_subdirectory.
9+
if(NOT DEFINED CMAKE_CUDA_ARCHITECTURES)
10+
set(CMAKE_CUDA_ARCHITECTURES "75-virtual;80-virtual;86-real;89-real")
11+
endif()
12+
13+
# Add the upstream project. Its own CMakeLists adds ggml + builds
14+
# omnivoice-core (STATIC, contains src/omnivoice.cpp i.e. the ov_* impl).
15+
# EXCLUDE_FROM_ALL keeps its CLI tools/tests from building unless referenced.
16+
add_subdirectory(${OMNIVOICE_DIR} omnivoice EXCLUDE_FROM_ALL)
17+
18+
# Upstream generates version.h into its own CMAKE_CURRENT_BINARY_DIR and adds
19+
# the top-level ${CMAKE_BINARY_DIR} to omnivoice-core's include path. When the
20+
# project is nested under add_subdirectory those two directories differ
21+
# (<build>/omnivoice vs <build>), so omnivoice.cpp cannot find version.h. Point
22+
# omnivoice-core at the subproject binary dir where version.h is actually
23+
# generated. (Fix lives here, never in the fetched upstream checkout.)
24+
target_include_directories(omnivoice-core PRIVATE ${CMAKE_BINARY_DIR}/omnivoice)
25+
26+
add_library(gomnivoicecpp MODULE cpp/gomnivoicecpp.cpp)
27+
target_link_libraries(gomnivoicecpp PRIVATE omnivoice-core)
28+
29+
target_include_directories(gomnivoicecpp PRIVATE ${OMNIVOICE_DIR}/src)
30+
target_include_directories(gomnivoicecpp SYSTEM PRIVATE ${OMNIVOICE_DIR}/ggml/include)
31+
32+
# Link GPU backends if the upstream ggml created them.
33+
foreach(backend blas cuda metal vulkan sycl)
34+
if(TARGET ggml-${backend})
35+
target_link_libraries(gomnivoicecpp PRIVATE ggml-${backend})
36+
if(backend STREQUAL "cuda")
37+
find_package(CUDAToolkit QUIET)
38+
if(CUDAToolkit_FOUND)
39+
target_link_libraries(gomnivoicecpp PRIVATE CUDA::cudart)
40+
endif()
41+
endif()
42+
endif()
43+
endforeach()
44+
45+
if(MSVC)
46+
target_compile_options(gomnivoicecpp PRIVATE /W4 /wd4100 /wd4505)
47+
else()
48+
target_compile_options(gomnivoicecpp PRIVATE -Wall -Wextra
49+
-Wno-unused-parameter -Wno-unused-function)
50+
endif()
51+
52+
set_property(TARGET gomnivoicecpp PROPERTY CXX_STANDARD 17)
53+
set_target_properties(gomnivoicecpp PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})

0 commit comments

Comments
 (0)