cmake_minimum_required(VERSION 3.10)

project(SeBIE VERSION 0.9.5 LANGUAGES C)

list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/cmake)

#
# use GTK4, GTK3 or GTK2
#
find_package(GTK4 4.8 COMPONENTS gtk)
if (NOT GTK4_FOUND)
    find_package(GTK3 3.22 COMPONENTS gtk)
    if (NOT GTK3_FOUND)
        find_package(GTK2 2.6 REQUIRED COMPONENTS gtk)
    endif()
endif()

include(CheckLibraryExists)
CHECK_LIBRARY_EXISTS(m pow "" HAVE_LIB_M)
if (HAVE_LIB_M)
    set(EXTRA_LIBS ${EXTRA_LIBS} m)
endif (HAVE_LIB_M)

set(PROJECT_TARGET sebie)

set(HEADERS
    src/sebie_callbacks.h
    src/sebie_config.h
    src/sebie_gtk_helpers.h
    src/sebie.h
    src/sebie_helpers.h
    src/sebie_view.h
    )

set(SOURCES
    src/sebie.c
    src/sebie_callbacks.c
    src/sebie_config.c
    src/sebie_gtk_helpers.c
    src/sebie_helpers.c
    src/sebie_view.c
    )

set(PACKAGE_STRING "sebie ${CMAKE_PROJECT_VERSION}")
set(PACKAGE_VERSION ${CMAKE_PROJECT_VERSION})

configure_file(
    ${PROJECT_SOURCE_DIR}/cmake/config.h.in
    ${PROJECT_BINARY_DIR}/config.h
    )

add_executable(${PROJECT_TARGET} ${HEADERS} ${SOURCES})

target_include_directories(${PROJECT_TARGET} PRIVATE
    ${PROJECT_BINARY_DIR} src
    ${GTK4_INCLUDE_DIRS}
    ${GTK3_INCLUDE_DIRS}
    ${GTK2_INCLUDE_DIRS}
    )

target_link_libraries(${PROJECT_TARGET} PRIVATE
    ${GTK4_LIBRARIES}
    ${GTK3_LIBRARIES}
    ${GTK2_LIBRARIES}
    ${EXTRA_LIBS}
    )

install(TARGETS ${PROJECT_TARGET} RUNTIME DESTINATION bin)
