cmake_minimum_required(VERSION 3.10)
project(DeviceControlSystem 
    VERSION 1.1.10
    LANGUAGES C
)

# 获取构建信息
string(TIMESTAMP BUILD_TIMESTAMP)
set(BUILD_USER $ENV{USER})

# 配置版本文件
configure_file(
    ${CMAKE_CURRENT_SOURCE_DIR}/include/version.h.in
    ${CMAKE_CURRENT_BINARY_DIR}/include/version.h
)

# 添加生成的头文件目录
include_directories(
    ${CMAKE_CURRENT_BINARY_DIR}/include
    include
    device_judg/device
    device_judg/judg
    device_judg/device_exit
    system/gpio
    system/sensor
    usr
    zlog/src
)

# 查找所有源文件
file(GLOB_RECURSE SOURCES
    src/*.c
    device_judg/device/*.c
    device_judg/judg/*.c
    device_judg/device_exit/*.c
    system/gpio/*.c
    system/sensor/*.c
    usr/*.c
    zlog/src/*.c
)

list(FILTER SOURCES EXCLUDE REGEX "zlog/src/zlog-chk-conf.c")
list(FILTER SOURCES EXCLUDE REGEX "zlog/src/zlog_win.c")

# 设置静态链接选项
set(CMAKE_FIND_LIBRARY_SUFFIXES .a .so)
set(BUILD_SHARED_LIBS OFF)
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static-libgcc -static-libstdc++ -Wl,-Bstatic -Wl,--whole-archive -lpthread -Wl,--no-whole-archive -Wl,-Bdynamic")

# 创建可执行文件
add_executable(main ${SOURCES})

# 链接静态库
target_link_libraries(main PRIVATE
    -Wl,--start-group
    wiringPi
    mosquitto
    cjson
    curl
    m
    ssl
    crypto
    -Wl,--end-group
)

# 安装规则（可选）
install(TARGETS main DESTINATION bin)

# 单元测试支持（可选）
enable_testing()