aboutsummaryrefslogtreecommitdiff
path: root/cmake/CompileGResources.cmake
diff options
context:
space:
mode:
authorMarvin W <git@larma.de>2025-04-05 12:54:09 +0200
committerMarvin W <git@larma.de>2025-04-06 13:58:06 +0200
commit12c0d27814bf6079b7a86da7796fb89271c416eb (patch)
tree1bbae1c8fd7f7792d10788a82c778bf1770a43c0 /cmake/CompileGResources.cmake
parente434f51103430b0692ff5d330199c69f67e22744 (diff)
Drop CMake support
Diffstat (limited to 'cmake/CompileGResources.cmake')
-rw-r--r--cmake/CompileGResources.cmake221
1 files changed, 0 insertions, 221 deletions
diff --git a/cmake/CompileGResources.cmake b/cmake/CompileGResources.cmake
deleted file mode 100644
index 14d2b2c8..00000000
--- a/cmake/CompileGResources.cmake
+++ /dev/null
@@ -1,221 +0,0 @@
-include(CMakeParseArguments)
-
-# Path to this file.
-set(GCR_CMAKE_MACRO_DIR ${CMAKE_CURRENT_LIST_DIR})
-
-# Compiles a gresource resource file from given resource files. Automatically
-# creates the XML controlling file.
-# The type of resource to generate (header, c-file or bundle) is automatically
-# determined from TARGET file ending, if no TYPE is explicitly specified.
-# The output file is stored in the provided variable "output".
-# "xml_out" contains the variable where to output the XML path. Can be used to
-# create custom targets or doing postprocessing.
-# If you want to use preprocessing, you need to manually check the existence
-# of the tools you use. This function doesn't check this for you, it just
-# generates the XML file. glib-compile-resources will then throw a
-# warning/error.
-function(COMPILE_GRESOURCES output xml_out)
- # Available options:
- # COMPRESS_ALL, NO_COMPRESS_ALL Overrides the COMPRESS flag in all
- # registered resources.
- # STRIPBLANKS_ALL, NO_STRIPBLANKS_ALL Overrides the STRIPBLANKS flag in all
- # registered resources.
- # TOPIXDATA_ALL, NO_TOPIXDATA_ALL Overrides the TOPIXDATA flag in all
- # registered resources.
- set(CG_OPTIONS COMPRESS_ALL NO_COMPRESS_ALL
- STRIPBLANKS_ALL NO_STRIPBLANKS_ALL
- TOPIXDATA_ALL NO_TOPIXDATA_ALL)
-
- # Available one value options:
- # TYPE Type of resource to create. Valid options are:
- # EMBED_C: A C-file that can be compiled with your project.
- # EMBED_H: A header that can be included into your project.
- # BUNDLE: Generates a resource bundle file that can be loaded
- # at runtime.
- # AUTO: Determine from target file ending. Need to specify
- # target argument.
- # PREFIX Overrides the resource prefix that is prepended to each
- # relative file name in registered resources.
- # SOURCE_DIR Overrides the resources base directory to search for resources.
- # Normally this is set to the source directory with that CMake
- # was invoked (CMAKE_SOURCE_DIR).
- # TARGET Overrides the name of the output file/-s. Normally the output
- # names from glib-compile-resources tool is taken.
- set(CG_ONEVALUEARGS TYPE PREFIX SOURCE_DIR TARGET)
-
- # Available multi-value options:
- # RESOURCES The list of resource files. Whether absolute or relative path is
- # equal, absolute paths are stripped down to relative ones. If the
- # absolute path is not inside the given base directory SOURCE_DIR
- # or CMAKE_SOURCE_DIR (if SOURCE_DIR is not overriden), this
- # function aborts.
- # OPTIONS Extra command line options passed to glib-compile-resources.
- set(CG_MULTIVALUEARGS RESOURCES OPTIONS)
-
- # Parse the arguments.
- cmake_parse_arguments(CG_ARG
- "${CG_OPTIONS}"
- "${CG_ONEVALUEARGS}"
- "${CG_MULTIVALUEARGS}"
- "${ARGN}")
-
- # Variable to store the double-quote (") string. Since escaping
- # double-quotes in strings is not possible we need a helper variable that
- # does this job for us.
- set(Q \")
-
- # Check invocation validity with the <prefix>_UNPARSED_ARGUMENTS variable.
- # If other not recognized parameters were passed, throw error.
- if (CG_ARG_UNPARSED_ARGUMENTS)
- set(CG_WARNMSG "Invocation of COMPILE_GRESOURCES with unrecognized")
- set(CG_WARNMSG "${CG_WARNMSG} parameters. Parameters are:")
- set(CG_WARNMSG "${CG_WARNMSG} ${CG_ARG_UNPARSED_ARGUMENTS}.")
- message(WARNING ${CG_WARNMSG})
- endif()
-
- # Check invocation validity depending on generation mode (EMBED_C, EMBED_H
- # or BUNDLE).
- if ("${CG_ARG_TYPE}" STREQUAL "EMBED_C")
- # EMBED_C mode, output compilable C-file.
- set(CG_GENERATE_COMMAND_LINE "--generate-source")
- set(CG_TARGET_FILE_ENDING "c")
- elseif ("${CG_ARG_TYPE}" STREQUAL "EMBED_H")
- # EMBED_H mode, output includable header file.
- set(CG_GENERATE_COMMAND_LINE "--generate-header")
- set(CG_TARGET_FILE_ENDING "h")
- elseif ("${CG_ARG_TYPE}" STREQUAL "BUNDLE")
- # BUNDLE mode, output resource bundle. Don't do anything since
- # glib-compile-resources outputs a bundle when not specifying
- # something else.
- set(CG_TARGET_FILE_ENDING "gresource")
- else()
- # Everything else is AUTO mode, determine from target file ending.
- if (CG_ARG_TARGET)
- set(CG_GENERATE_COMMAND_LINE "--generate")
- else()
- set(CG_ERRMSG "AUTO mode given, but no target specified. Can't")
- set(CG_ERRMSG "${CG_ERRMSG} determine output type. In function")
- set(CG_ERRMSG "${CG_ERRMSG} COMPILE_GRESOURCES.")
- message(FATAL_ERROR ${CG_ERRMSG})
- endif()
- endif()
-
- # Check flag validity.
- if (CG_ARG_COMPRESS_ALL AND CG_ARG_NO_COMPRESS_ALL)
- set(CG_ERRMSG "COMPRESS_ALL and NO_COMPRESS_ALL simultaneously set. In")
- set(CG_ERRMSG "${CG_ERRMSG} function COMPILE_GRESOURCES.")
- message(FATAL_ERROR ${CG_ERRMSG})
- endif()
- if (CG_ARG_STRIPBLANKS_ALL AND CG_ARG_NO_STRIPBLANKS_ALL)
- set(CG_ERRMSG "STRIPBLANKS_ALL and NO_STRIPBLANKS_ALL simultaneously")
- set(CG_ERRMSG "${CG_ERRMSG} set. In function COMPILE_GRESOURCES.")
- message(FATAL_ERROR ${CG_ERRMSG})
- endif()
- if (CG_ARG_TOPIXDATA_ALL AND CG_ARG_NO_TOPIXDATA_ALL)
- set(CG_ERRMSG "TOPIXDATA_ALL and NO_TOPIXDATA_ALL simultaneously set.")
- set(CG_ERRMSG "${CG_ERRMSG} In function COMPILE_GRESOURCES.")
- message(FATAL_ERROR ${CG_ERRMSG})
- endif()
-
- # Check if there are any resources.
- if (NOT CG_ARG_RESOURCES)
- set(CG_ERRMSG "No resource files to process. In function")
- set(CG_ERRMSG "${CG_ERRMSG} COMPILE_GRESOURCES.")
- message(FATAL_ERROR ${CG_ERRMSG})
- endif()
-
- # Extract all dependencies for targets from resource list.
- foreach(res ${CG_ARG_RESOURCES})
- if (NOT(("${res}" STREQUAL "COMPRESS") OR
- ("${res}" STREQUAL "STRIPBLANKS") OR
- ("${res}" STREQUAL "TOPIXDATA")))
-
- add_custom_command(
- OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/resources/${res}"
- COMMAND ${CMAKE_COMMAND} -E copy "${CG_ARG_SOURCE_DIR}/${res}" "${CMAKE_CURRENT_BINARY_DIR}/resources/${res}"
- MAIN_DEPENDENCY "${CG_ARG_SOURCE_DIR}/${res}")
- list(APPEND CG_RESOURCES_DEPENDENCIES "${CMAKE_CURRENT_BINARY_DIR}/resources/${res}")
- endif()
- endforeach()
-
-
- # Construct .gresource.xml path.
- set(CG_XML_FILE_PATH "${CMAKE_CURRENT_BINARY_DIR}/resources/.gresource.xml")
-
- # Generate gresources XML target.
- list(APPEND CG_CMAKE_SCRIPT_ARGS "-D")
- list(APPEND CG_CMAKE_SCRIPT_ARGS "GXML_OUTPUT=${Q}${CG_XML_FILE_PATH}${Q}")
- if(CG_ARG_COMPRESS_ALL)
- list(APPEND CG_CMAKE_SCRIPT_ARGS "-D")
- list(APPEND CG_CMAKE_SCRIPT_ARGS "GXML_COMPRESS_ALL")
- endif()
- if(CG_ARG_NO_COMPRESS_ALL)
- list(APPEND CG_CMAKE_SCRIPT_ARGS "-D")
- list(APPEND CG_CMAKE_SCRIPT_ARGS "GXML_NO_COMPRESS_ALL")
- endif()
- if(CG_ARG_STRPIBLANKS_ALL)
- list(APPEND CG_CMAKE_SCRIPT_ARGS "-D")
- list(APPEND CG_CMAKE_SCRIPT_ARGS "GXML_STRIPBLANKS_ALL")
- endif()
- if(CG_ARG_NO_STRIPBLANKS_ALL)
- list(APPEND CG_CMAKE_SCRIPT_ARGS "-D")
- list(APPEND CG_CMAKE_SCRIPT_ARGS "GXML_NO_STRIPBLANKS_ALL")
- endif()
- if(CG_ARG_TOPIXDATA_ALL)
- list(APPEND CG_CMAKE_SCRIPT_ARGS "-D")
- list(APPEND CG_CMAKE_SCRIPT_ARGS "GXML_TOPIXDATA_ALL")
- endif()
- if(CG_ARG_NO_TOPIXDATA_ALL)
- list(APPEND CG_CMAKE_SCRIPT_ARGS "-D")
- list(APPEND CG_CMAKE_SCRIPT_ARGS "GXML_NO_TOPIXDATA_ALL")
- endif()
- list(APPEND CG_CMAKE_SCRIPT_ARGS "-D")
- list(APPEND CG_CMAKE_SCRIPT_ARGS "GXML_PREFIX=${Q}${CG_ARG_PREFIX}${Q}")
- list(APPEND CG_CMAKE_SCRIPT_ARGS "-D")
- list(APPEND CG_CMAKE_SCRIPT_ARGS
- "GXML_RESOURCES=${Q}${CG_ARG_RESOURCES}${Q}")
- list(APPEND CG_CMAKE_SCRIPT_ARGS "-P")
- list(APPEND CG_CMAKE_SCRIPT_ARGS
- "${Q}${GCR_CMAKE_MACRO_DIR}/BuildTargetScript.cmake${Q}")
-
- get_filename_component(CG_XML_FILE_PATH_ONLY_NAME
- "${CG_XML_FILE_PATH}" NAME)
- set(CG_XML_CUSTOM_COMMAND_COMMENT
- "Creating gresources XML file (${CG_XML_FILE_PATH_ONLY_NAME})")
- add_custom_command(OUTPUT ${CG_XML_FILE_PATH}
- COMMAND ${CMAKE_COMMAND}
- ARGS ${CG_CMAKE_SCRIPT_ARGS}
- DEPENDS ${CG_RESOURCES_DEPENDENCIES}
- WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
- COMMENT ${CG_XML_CUSTOM_COMMAND_COMMENT})
-
- # Create target manually if not set (to make sure glib-compile-resources
- # doesn't change behaviour with it's naming standards).
- if (NOT CG_ARG_TARGET)
- set(CG_ARG_TARGET "${CMAKE_CURRENT_BINARY_DIR}/resources")
- set(CG_ARG_TARGET "${CG_ARG_TARGET}.${CG_TARGET_FILE_ENDING}")
- endif()
-
- # Create source directory automatically if not set.
- if (NOT CG_ARG_SOURCE_DIR)
- set(CG_ARG_SOURCE_DIR "${CMAKE_SOURCE_DIR}")
- endif()
-
- # Add compilation target for resources.
- add_custom_command(OUTPUT ${CG_ARG_TARGET}
- COMMAND ${GLIB_COMPILE_RESOURCES_EXECUTABLE}
- ARGS
- ${OPTIONS}
- "--target=${Q}${CG_ARG_TARGET}${Q}"
- "--sourcedir=${Q}${CG_ARG_SOURCE_DIR}${Q}"
- ${CG_GENERATE_COMMAND_LINE}
- ${CG_XML_FILE_PATH}
- MAIN_DEPENDENCY ${CG_XML_FILE_PATH}
- DEPENDS ${CG_RESOURCES_DEPENDENCIES}
- WORKING_DIRECTORY ${CMAKE_BUILD_DIR})
-
- # Set output and XML_OUT to parent scope.
- set(${xml_out} ${CG_XML_FILE_PATH} PARENT_SCOPE)
- set(${output} ${CG_ARG_TARGET} PARENT_SCOPE)
-
-endfunction()