cmake_minimum_required(VERSION 3.16)
project(zone_alarm VERSION 2.1 LANGUAGES C CXX)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O2 -Wall -Wno-unused-variable")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O2")

find_package(OpenCV REQUIRED COMPONENTS core imgproc imgcodecs videoio highgui)
find_package(Threads REQUIRED)

include_directories(
    ${CMAKE_SOURCE_DIR}/include
    ${OpenCV_INCLUDE_DIRS}
    /usr/include
    /usr/include/aarch64-linux-gnu
    /usr/include/rga
    /usr/include/libdrm
)

link_directories(/usr/lib /usr/lib/aarch64-linux-gnu)

add_executable(zone_alarm
    src/main.cpp
    src/rtsp_capture.cpp
    src/yolo_detector.cpp
    src/rga_processor.cpp
    src/fence_engine.cpp
    src/relay_ctrl.cpp
    src/web_server.cpp
    src/alarm_history.cpp
    src/rfid_client.cpp
    src/modbus_client.cpp
    src/bucket_manager.cpp
    src/idle_detector.cpp
    src/pose_detector.cpp
    src/display_output.cpp
)

target_link_libraries(zone_alarm
    ${OpenCV_LIBS}
    Threads::Threads
    rknnrt
    rockchip_mpp
    rga
    avcodec
    avformat
    avutil
    swscale
    sqlite3
    dl
    z
)

install(TARGETS zone_alarm DESTINATION bin)
