cmake_minimum_required(VERSION 3.22.1)
project(dwgbridge CXX)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

# LIBREDWG_ROOT   ：含 include/ 与 lib/libredwg.a 的预编译目录
# LIBREDWG_SRC    ：LibreDWG 源码树（要它的 src/bits.h 与 src/out_dxf.h——
#                   Bit_Chain 与 dwg_write_dxf 是内部接口，install 时不导出）
if (NOT LIBREDWG_ROOT)
    set(LIBREDWG_ROOT "$ENV{LIBREDWG_ROOT}")
endif ()
if (NOT LIBREDWG_SRC)
    set(LIBREDWG_SRC "$ENV{LIBREDWG_SRC}")
endif ()

if (NOT EXISTS "${LIBREDWG_ROOT}/lib/libredwg.a")
    message(FATAL_ERROR "[dwgbridge] 找不到 ${LIBREDWG_ROOT}/lib/libredwg.a —— 传 -PLIBREDWG_ROOT=/abs/path")
endif ()
if (NOT EXISTS "${LIBREDWG_SRC}/src/bits.h")
    message(FATAL_ERROR "[dwgbridge] 找不到 ${LIBREDWG_SRC}/src/bits.h —— 传 -PLIBREDWG_SRC=/abs/path")
endif ()

add_library(dwgbridge SHARED dwg2dxf_jni.cpp)

target_include_directories(dwgbridge PRIVATE
        "${LIBREDWG_ROOT}/include"
        "${LIBREDWG_SRC}/src"
        "${LIBREDWG_SRC}")

# 16KB 页对齐：新机型（含 16KB 页的模拟器与 Pixel）加载 4KB 对齐的 .so 会直接段错误。
target_link_options(dwgbridge PRIVATE "-Wl,-z,max-page-size=16384")

# 与预编译的 libredwg.a（-O2）对齐；转换是 CPU 密集路径，-O0 会慢数倍。
target_compile_options(dwgbridge PRIVATE -O2)

find_library(log-lib log)
target_link_libraries(dwgbridge "${LIBREDWG_ROOT}/lib/libredwg.a" ${log-lib})
