cmake_minimum_required(VERSION 3.22.1)
project(pebrel_voice LANGUAGES C CXX)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
include(FetchContent)
set(BUILD_SHARED_LIBS OFF CACHE BOOL "" FORCE)
set(WHISPER_BUILD_TESTS OFF CACHE BOOL "" FORCE)
set(WHISPER_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE)
set(WHISPER_BUILD_SERVER OFF CACHE BOOL "" FORCE)
set(GGML_NATIVE OFF CACHE BOOL "" FORCE)
set(GGML_OPENMP OFF CACHE BOOL "" FORCE)
set(GGML_BACKEND_DL OFF CACHE BOOL "" FORCE)
set(GGML_CPU_ALL_VARIANTS OFF CACHE BOOL "" FORCE)
FetchContent_Declare(whisper
    URL https://codeload.github.com/ggml-org/whisper.cpp/tar.gz/refs/tags/v1.7.6
    URL_HASH SHA256=166140e9a6d8a36f787a2bd77f8f44dd64874f12dd8359ff7c1f4f9acb86202e)
FetchContent_MakeAvailable(whisper)
add_library(pebrel_voice SHARED whisper_jni.cpp)
target_compile_options(pebrel_voice PRIVATE -Wall -Wextra -Werror -fvisibility=hidden)
target_link_options(pebrel_voice PRIVATE -Wl,-z,max-page-size=16384 -Wl,--exclude-libs,ALL)
if(CMAKE_HOST_WIN32 AND CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
    # 与终端 JNI 一样，短文件名下显式保留 C++ 驱动模式，由 NDK 选择运行库。
    target_link_options(pebrel_voice PRIVATE --driver-mode=g++)
endif()
target_link_libraries(pebrel_voice PRIVATE whisper)
