cmake_minimum_required(VERSION 3.15.2)

# 设置工程名称
project(stt VERSION 1.5 LANGUAGES CXX)

# 设置C++标准
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

# 编译选项
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3")
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR})

message(STATUS "Platform: " ${CMAKE_HOST_SYSTEM_NAME})
message(STATUS "Install prefix: " ${CMAKE_INSTALL_PREFIX})
message(STATUS "Build type: " ${CMAKE_BUILD_TYPE})

# 获取所有源文件
aux_source_directory(src STT_SRC)

# 创建可执行文件（保留原有功能）
add_executable(stt ${STT_SRC})
set_target_properties(stt PROPERTIES CXX_STANDARD 11)

# 安装可执行文件
install(TARGETS stt RUNTIME DESTINATION sbin)

# Python绑定支持（可选）
option(BUILD_PYTHON_MODULE "Build Python module" OFF)

if(BUILD_PYTHON_MODULE)
    # 查找pybind11
    find_package(pybind11 REQUIRED)
    
    if(NOT pybind11_FOUND)
        message(STATUS "pybind11 not found, trying to find it via Python")
        # 尝试通过Python找到pybind11
        execute_process(
            COMMAND ${Python_EXECUTABLE} -m pybind11 --includes
            OUTPUT_VARIABLE PYBIND11_INCLUDES
            OUTPUT_STRIP_TRAILING_WHITESPACE
            ERROR_QUIET
        )
        
        if(NOT PYBIND11_INCLUDES)
            message(FATAL_ERROR "pybind11 is required for Python module build")
        endif()
    endif()
    
    message(STATUS "Building Python module")
    
    # 创建Python模块
    pybind11_add_module(stt_python 
        pybind/stt_binding.cpp
        ${STT_SRC}
    )
    
    # 设置模块属性
    set_target_properties(stt_python PROPERTIES
        CXX_STANDARD 11
        OUTPUT_NAME "stt"
        LIBRARY_OUTPUT_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/pybind"
    )
    
    # 添加包含目录
    target_include_directories(stt_python PRIVATE
        ${CMAKE_CURRENT_SOURCE_DIR}/src
        ${CMAKE_CURRENT_SOURCE_DIR}
    )
    
    # 定义宏
    target_compile_definitions(stt_python PRIVATE
        VERSION_INFO="${PROJECT_VERSION}"
    )
    
    # 链接库（如果需要）
    # target_link_libraries(stt_python PRIVATE ...)
    
    message(STATUS "Python module will be built as: pybind/stt${PYTHON_MODULE_EXTENSION}")
endif()

# 安装Python绑定文件（如果构建了Python模块）
if(BUILD_PYTHON_MODULE)
    install(FILES
        pybind/__init__.py
        pybind/example_usage.py
        DESTINATION ${Python_SITEARCH}/stt
    )
endif()