diff options
| -rw-r--r-- | CMakeLists.txt | 2 | ||||
| -rw-r--r-- | cmake/Modules/GlibCompileResources.cmake | 22 | ||||
| -rw-r--r-- | cmake/Modules/GlibCompileResources.in | 2 | ||||
| -rw-r--r-- | gui/CMakeLists.txt | 117 |
4 files changed, 73 insertions, 70 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index dc106d2..a907d5c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -22,7 +22,7 @@ include("GNUInstallDirs") # Global Dependencies -add_subdirectory("deps/libadwaitamm" SYSTEM) +add_subdirectory("deps/libadwaitamm" EXCLUDE_FROM_ALL SYSTEM) FetchContent_Declare( "Catch2" diff --git a/cmake/Modules/GlibCompileResources.cmake b/cmake/Modules/GlibCompileResources.cmake index 3922b92..f718cac 100644 --- a/cmake/Modules/GlibCompileResources.cmake +++ b/cmake/Modules/GlibCompileResources.cmake @@ -7,8 +7,8 @@ find_program(GLIB_COMPILE_RESOURCES ) function(target_add_glib_resources TARGET) - set(SINGLE_VALUE_ARGS "PREFIX" "WORKING_DIRECTORY") - set(MULTI_VALUE_ARGS "CSS_FILES" "UI_FILES") + set(SINGLE_VALUE_ARGS "NAME" "PREFIX" "WORKING_DIRECTORY") + set(MULTI_VALUE_ARGS "CSS_FILES" "XML_FILES") cmake_parse_arguments( PARSE_ARGV 1 "" @@ -23,6 +23,10 @@ function(target_add_glib_resources TARGET) message(FATAL_ERROR "Target '${TARGET}' does not exist") endif() + if(NOT _NAME) + set(_NAME "${TARGET}") + endif() + if(NOT _PREFIX) message(FATAL_ERROR "Glib resource prefix not defined") endif() @@ -33,13 +37,13 @@ function(target_add_glib_resources TARGET) # File Names - set(GLIB_RESOURCE_C_FILE "${CMAKE_CURRENT_BINARY_DIR}/${TARGET}.gresource.c") - set(GLIB_RESOURCE_MANIFEST "${CMAKE_CURRENT_BINARY_DIR}/${TARGET}.gresource.xml") + set(GLIB_RESOURCE_C_FILE "${CMAKE_CURRENT_BINARY_DIR}/${_NAME}.gresource.c") + set(GLIB_RESOURCE_MANIFEST "${CMAKE_CURRENT_BINARY_DIR}/${_NAME}.gresource.xml") # Manifest File - foreach(UI_FILE IN LISTS _UI_FILES) - string(APPEND GLIB_RESOURCE_FILES " <file compressed=\"true\" preprocess=\"xml-stripblanks\">${UI_FILE}</file>\n") + foreach(XML_FILE IN LISTS _XML_FILES) + string(APPEND GLIB_RESOURCE_FILES " <file compressed=\"true\" preprocess=\"xml-stripblanks\">${XML_FILE}</file>\n") endforeach() foreach(CSS_FILE IN LISTS _CSS_FILES) @@ -48,13 +52,13 @@ function(target_add_glib_resources TARGET) string(STRIP "${GLIB_RESOURCE_FILES}" GLIB_RESOURCE_FILES) set(GLIB_RESOURCE_PREFIX "${_PREFIX}") - configure_file("${PROJECT_SOURCE_DIR}/cmake/Modules/GlibCompileResources.in" + configure_file("${CMAKE_CURRENT_FUNCTION_LIST_DIR}/GlibCompileResources.in" "${GLIB_RESOURCE_MANIFEST}" ) # Source Generation - foreach(FILE IN LISTS _CSS_FILES _UI_FILES) + foreach(FILE IN LISTS _CSS_FILES _XML_FILES) list(APPEND _DEPS "${_WORKING_DIRECTORY}/${FILE}") endforeach() @@ -79,5 +83,3 @@ function(target_add_glib_resources TARGET) "${GLIB_RESOURCE_C_FILE}" ) endfunction() - -# <file preprocess="xml-stripblanks">bookie.ui</file> diff --git a/cmake/Modules/GlibCompileResources.in b/cmake/Modules/GlibCompileResources.in index 2166c25..07b7194 100644 --- a/cmake/Modules/GlibCompileResources.in +++ b/cmake/Modules/GlibCompileResources.in @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <gresources> - <gresource prefix="/@GLIB_RESOURCE_PREFIX@"> + <gresource prefix="@GLIB_RESOURCE_PREFIX@"> @GLIB_RESOURCE_FILES@ </gresource> </gresources>
\ No newline at end of file diff --git a/gui/CMakeLists.txt b/gui/CMakeLists.txt index cf7830b..389332d 100644 --- a/gui/CMakeLists.txt +++ b/gui/CMakeLists.txt @@ -10,17 +10,54 @@ project("turns-gui" ) include("FetchContent") +include("GlibCompileResources") find_package("PkgConfig" REQUIRED) # Dependencies +pkg_check_modules("gio" + IMPORTED_TARGET + REQUIRED + "gio-2.0>=${TURNS_GLIB_MINIMUM_VERSION}" +) + pkg_check_modules("glibmm" IMPORTED_TARGET REQUIRED "glibmm-2.68>=${TURNS_GLIB_MINIMUM_VERSION}" ) +# Resources + +add_library("resources" STATIC) + +target_link_libraries("resources" PUBLIC + "PkgConfig::gio" +) + +target_add_glib_resources("resources" + NAME "ui" + WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/ui" + PREFIX "/ch/arknet/Turns" + XML_FILES + "participant_editor.ui" + "participant_row.ui" + "preferences.ui" + "tracker.ui" + "turn_order_view.ui" + CSS_FILES + "style.css" + "style-dark.css" +) + +target_add_glib_resources("resources" + NAME "metainfo" + PREFIX "/ch/arknet/Turns" + XML_FILES + "metainfo.xml" +) + # Application add_executable("gui" "src/main.cpp") @@ -38,6 +75,10 @@ target_include_directories("gui" PUBLIC target_link_libraries("gui" PUBLIC "adwaitamm::adwaitamm" "turns::mm" + + "$<$<CXX_COMPILER_ID:GNU,Clang>:-Wl,--whole-archive>" + "resources" + "$<$<CXX_COMPILER_ID:GNU,Clang>:-Wl,--no-whole-archive>" ) set_target_properties("gui" PROPERTIES @@ -47,62 +88,22 @@ set_target_properties("gui" PROPERTIES CXX_EXTENSIONS OFF ) -install(TARGETS "gui") +configure_file("desktop.in" "ch.arknet.Turns.desktop") +configure_file("metainfo.xml" "ch.arknet.Turns.metainfo.xml") +configure_file("mime.xml" "ch.arknet.Turns.xml") + +install(FILES + "${CMAKE_CURRENT_BINARY_DIR}/ch.arknet.Turns.desktop" + DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/applications" +) -# add_executable("app" -# "src/main.cpp" -# ) - -# target_link_libraries("app" PRIVATE -# "$<$<AND:$<CXX_COMPILER_ID:GNU,Clang>,$<CONFIG:Debug>>:gcov>" - -# "PkgConfig::gtkmm" -# "adwaitamm::adwaitamm" - -# "turns::core" -# "turns::lang" - -# "$<$<CXX_COMPILER_ID:GNU,Clang>:-Wl,--whole-archive>" -# "turns::ui" -# "turns::style" -# "$<$<CXX_COMPILER_ID:GNU,Clang>:-Wl,--no-whole-archive>" -# ) - -# target_add_glib_resources("app" -# PREFIX "/ch/arknet/Turns" -# UI_FILES "metainfo.xml" -# ) - -# set_target_properties("app" PROPERTIES -# OUTPUT_NAME "turns" -# ) - -# install(TARGETS "app" -# RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" -# ) - -# install(FILES -# "${CMAKE_CURRENT_SOURCE_DIR}/metainfo.xml" -# DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/metainfo" -# RENAME "ch.arknet.Turns.metainfo.xml" -# ) - -# configure_file("desktop.in" -# "turns.desktop" -# ) - -# install(FILES -# "${CMAKE_CURRENT_BINARY_DIR}/turns.desktop" -# DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/applications" -# RENAME "ch.arknet.Turns.desktop" -# ) - -# configure_file("mime.xml" -# "turns.xml" -# ) - -# install(FILES -# "${CMAKE_CURRENT_BINARY_DIR}/turns.xml" -# DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/mime/packages" -# RENAME "ch.arknet.Turns.xml" -# ) +install(FILES + "${CMAKE_CURRENT_BINARY_DIR}/ch.arknet.Turns.metainfo.xml" + DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/metainfo" +) +install(FILES + "${CMAKE_CURRENT_BINARY_DIR}/ch.arknet.Turns.xml" + DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/mime/packages" +) + +install(TARGETS "gui") |
