cmake_minimum_required(VERSION 3.10)
project(MakeIndex)

set(CMAKE_CXX_STANDARD 17)

# 1. 构建 CLI 工具 (makeindex)
add_executable(makeindex src/main.cpp)

# 2. (可选) 如果检测到 Emscripten，构建 WASM
if (EMSCRIPTEN)
    add_executable(makeindex_wasm src/wasm_bindings.cpp)
    # 允许内存增长，导出 malloc 以便 JS 写入文件数据
    target_link_options(makeindex_wasm PRIVATE
        "-sALLOW_MEMORY_GROWTH=1"
        "-sEXPORTED_FUNCTIONS=['_wasm_make_index','_malloc','_free']"
        "-sEXPORTED_RUNTIME_METHODS=['ccall','cwrap']"
        "-sFORCE_FILESYSTEM=1"
    )
    set_target_properties(makeindex_wasm PROPERTIES SUFFIX ".js")
endif()

# 3. 构建 Python 扩展
# 使用 scikit-build-core 时会自动查找 pybind11
find_package(pybind11 CONFIG REQUIRED)

pybind11_add_module(h264indexer src/bindings.cpp)

# 设置 C++ 标准
target_compile_features(h264indexer PRIVATE cxx_std_17)

# 设置包含目录
target_include_directories(h264indexer PRIVATE src)

# 设置版本信息宏
if(DEFINED VERSION_INFO)
    target_compile_definitions(h264indexer PRIVATE VERSION_INFO=${VERSION_INFO})
else()
    target_compile_definitions(h264indexer PRIVATE VERSION_INFO="dev")
endif()

# 安装 Python 模块
install(TARGETS h264indexer LIBRARY DESTINATION . COMPONENT python)