summaryrefslogtreecommitdiffstats
path: root/tools/mkunity/CMakeLists.txt
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-13 11:32:39 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-13 11:32:39 +0000
commit56ae875861ab260b80a030f50c4aff9f9dc8fff0 (patch)
tree531412110fc901a5918c7f7442202804a83cada9 /tools/mkunity/CMakeLists.txt
parentInitial commit. (diff)
downloadicinga2-upstream.tar.xz
icinga2-upstream.zip
Adding upstream version 2.14.2.upstream/2.14.2upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'tools/mkunity/CMakeLists.txt')
-rw-r--r--tools/mkunity/CMakeLists.txt47
1 files changed, 47 insertions, 0 deletions
diff --git a/tools/mkunity/CMakeLists.txt b/tools/mkunity/CMakeLists.txt
new file mode 100644
index 0000000..8fa0f20
--- /dev/null
+++ b/tools/mkunity/CMakeLists.txt
@@ -0,0 +1,47 @@
+# Icinga 2 | (c) 2012 Icinga GmbH | GPLv2+
+
+define_property(
+ SOURCE
+ PROPERTY EXCLUDE_UNITY_BUILD
+ BRIEF_DOCS "Whether to exclude the source file from unity builds"
+ FULL_DOCS "Specified whether a source file should be excluded from unity builds and should be built separately"
+)
+
+if(ICINGA2_UNITY_BUILD)
+ set(mkunity_SOURCES
+ mkunity.c
+ )
+
+ add_executable(mkunity ${mkunity_SOURCES})
+
+ set_target_properties (
+ mkunity PROPERTIES
+ FOLDER Bin
+ )
+
+ function(MKUNITY_TARGET Target Prefix UnityInputRef)
+ set(UnityInput ${${UnityInputRef}})
+ set(UnityOutput ${CMAKE_CURRENT_BINARY_DIR}/${Target}_unity.cpp)
+ set(RealSources "")
+ set(UnitySources "")
+ foreach(UnitySource ${UnityInput})
+ get_property(SourceExcluded SOURCE ${UnitySource} PROPERTY EXCLUDE_UNITY_BUILD)
+ if(SourceExcluded MATCHES TRUE OR NOT ${UnitySource} MATCHES "\\.(cpp|cxx|cc)\$")
+ list(APPEND RealSources ${UnitySource})
+ else()
+ list(APPEND UnitySources ${UnitySource})
+ endif()
+ endforeach()
+ add_custom_command(
+ OUTPUT ${UnityOutput}
+ COMMAND mkunity
+ ARGS ${Prefix} ${UnitySources} > ${UnityOutput}.tmp
+ COMMAND ${CMAKE_COMMAND}
+ ARGS -E copy ${UnityOutput}.tmp ${UnityOutput}
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+ DEPENDS mkunity ${UnitySources}
+ )
+ list(APPEND RealSources ${UnityOutput})
+ set(${UnityInputRef} ${RealSources} PARENT_SCOPE)
+ endfunction()
+endif()