cmake_minimum_required(VERSION 3.24)

set(APP_NAME "zswm")
set(SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR})

add_compile_definitions(LOG_FILE="$ENV{HOME}/zswm-log.txt")
# add_compile_definitions(RELEASE)

# generate compile_commands.json for clangd
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)

# compile flags
add_compile_options(-g)
add_compile_options(-Wall)

project(${APP_NAME}
    VERSION 0.0.1
    LANGUAGES C
)

add_executable(${APP_NAME} main.c utils.c layout.c status.c)

# use C17
set_property(TARGET ${APP_NAME} PROPERTY C_STANDARD 17)

find_package(PkgConfig REQUIRED)

pkg_check_modules(GLIB REQUIRED glib-2.0)
pkg_check_modules(XCB REQUIRED
    xcb
    xcb-cursor
    xcb-ewmh
    xcb-icccm
    xcb-image
    xcb-keysyms
    xcb-util
    xcb-xfixes
    xcb-xinerama
    xcb-xrm
)
pkg_check_modules(RENDERER REQUIRED cairo pango pangocairo imlib2)
pkg_check_modules(CAIRO_XCB REQUIRED cairo-xcb)
pkg_check_modules(PULSE REQUIRED libpulse-mainloop-glib)

add_subdirectory(xcb)
add_subdirectory(renderer)

configure_file(
    "${CMAKE_CURRENT_SOURCE_DIR}/app.h.in"
    "${CMAKE_BINARY_DIR}/app.h"
    @ONLY
)

target_include_directories(${APP_NAME} SYSTEM
    PRIVATE ${GLIB_INCLUDE_DIRS}
    PRIVATE ${CAIRO_XCB_INCLUDE_DIRS}
    PRIVATE ${PULSE_INCLUDE_DIRS}
)
target_include_directories(${APP_NAME}
    PRIVATE "${SOURCE_DIR}/include"
    PRIVATE "${SOURCE_DIR}"
    PRIVATE ${CMAKE_BINARY_DIR}
)

target_link_libraries(${APP_NAME}
    PRIVATE m
    PRIVATE ${GLIB_LIBRARIES}
    PRIVATE ${CAIRO_XCB_LIBRARIES}
    PRIVATE ${PULSE_LIBRARIES}
    PRIVATE ${LIB_XCB_NAME}
    PRIVATE ${LIB_RENDERER_NAME}
)
