cmake_minimum_required(VERSION 3.7)
project(ubl-settings-diskquota)

find_package(PkgConfig REQUIRED)

pkg_check_modules(GTK REQUIRED gtk+-3.0)
include_directories(${GTK_INCLUDE_DIRS})
link_directories(${GTK_LIBRARY_DIRS})
add_definitions(${GTK_CFLAGS_OTHER})

#pkg_check_modules(VTE291 REQUIRED vte-2.91)
#include_directories(${VTE291_INCLUDE_DIRS})
#link_directories(${VTE291_LIBRARY_DIRS})
#add_definitions(${VTE291_CFLAGS_OTHER})

find_library(WEBKIT_LIBRARIES_FOUND webkit2gtk-4.0 webkit2gtk-web-extension-4.0)

option(WEBKIT_FOUND "No" OFF)
if(WEBKIT_LIBRARIES_FOUND)
        option(WEBKIT_FOUND "Yes" ON)
        PKG_CHECK_MODULES(WEBKIT REQUIRED webkit2gtk-4.0 webkit2gtk-web-extension-4.0)
        include_directories(${WEBKIT_INCLUDE_DIRS})
        link_directories(${WEBKIT_LIBRARY_DIRS})
        add_definitions(${WEBKIT_CFLAGS_OTHER})
endif()

configure_file(ubl-cmake.in ubl-cmake.h)

file(COPY ${CMAKE_CURRENT_BINARY_DIR}/ubl-cmake.h DESTINATION ./)

set(GRESOURCE_C   resources.c)
set(GRESOURCE_XML gresource.xml)

find_program(GLIB_COMPILE_RESOURCES NAMES glib-compile-resources REQUIRED)  
add_custom_target(GLADE ubl-settings-diskquota.glade)

set(DEPENDFILES 
                ../ubl-settings-diskquota.glade
                ../gresource.xml
                ../ubl-settings-diskquota-banner.png
                ../ubl-settings-diskquota.css
        )

file(COPY ${DEPENDFILES} DESTINATION ${CMAKE_CURRENT_BINARY_DIR})

add_custom_command(
    OUTPUT ${GRESOURCE_C}
    WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
    COMMAND ${GLIB_COMPILE_RESOURCES}
    ARGS
        --generate-source
        --target=${CMAKE_CURRENT_BINARY_DIR}/${GRESOURCE_C}
        ${GRESOURCE_XML}
    VERBATIM
    MAIN_DEPENDENCY ${GRESOURCE_XML}
    DEPENDS
        ${GLADE}
)
add_custom_target(
    dummy-resource
    DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${GRESOURCE_C}
)

#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic -Wall -Wextra -Werror -Wmissing-declarations -fdiagnostics-color=always -std=c++2a")
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic -Wall -Wextra -Werror -Wmissing-declarations -fdiagnostics-color=always -lm")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic -Wall -Wextra -Werror -Wmissing-declarations -fdiagnostics-color=always \
	-O2 -pipe -fno-plt -fexceptions \
        -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security \
        -fstack-clash-protection -fcf-protection")
      

set(SOURCE_FILES
        view_set_disk.c
        view_set_disk.h
        controler.h
        controler.c
        view_check_user_table.c
        view_check_user_table.h
        model/model.h
        model/model.c
        model/save.h
        model/save.c
        model/load.h
        model/load.c
        model/vector.c
        model/vector.h
        ubl-strings.h
        view_filters.c
        view_filters.h
        view_temp_u_g_p.c
        view_temp_u_g_p.h
        model/ubl-utils.h
        model/ubl-utils.c
        model/my_device.h
        model/my_device.c
        model/philos_utils.h
        model/philos_utils.c
        
        ubl-settings-diskquota.c
        ubl-settings-diskquota.h
        ${CMAKE_CURRENT_BINARY_DIR}/ubl-cmake.h
        )

set(LIBRARIES
        ${GTK_LIBRARIES}
        ${WEBKIT_LIBRARIES}
#        ${VTE291_LIBRARIES}
        pthread)


add_executable(${PROJECT_NAME} ${SOURCE_FILES} ${CMAKE_CURRENT_BINARY_DIR}/${GRESOURCE_C})
target_link_libraries(${PROJECT_NAME} PUBLIC ${LIBRARIES})
target_include_directories(${PROJECT_NAME} PUBLIC ${PROJECT_BINARY_DIR})
set_source_files_properties(
    ${CMAKE_CURRENT_BINARY_DIR}/${GRESOURCE_C}
    PROPERTIES GENERATED TRUE
)
install(TARGETS ${PROJECT_NAME} DESTINATION bin)
add_dependencies(${PROJECT_NAME} dummy-resource)