aboutsummaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
authorAleix Pol <aleixpol@kde.org>2013-12-27 13:56:21 +0100
committerAleix Pol <aleixpol@kde.org>2013-12-27 13:56:21 +0100
commit809726ddd7b920c1d0c5a5339c344d91b88c59ef (patch)
tree8f1c4f214977215cce2d24892cdd8c813859d152 /modules
parent83f4d25981610a0357284084543c4896155cab4e (diff)
downloadextra-cmake-modules-809726ddd7b920c1d0c5a5339c344d91b88c59ef.tar.gz
extra-cmake-modules-809726ddd7b920c1d0c5a5339c344d91b88c59ef.tar.bz2
Add the REQUIRED_HEADERS and RELATIVE arguments
RELATIVE is needed because some projects have their headers (and sources) split into different subdirectories. REQUIRED_HEADERS gives the opportunity to receive a list of all the headers we're depending on, in case the user wants to re-use it.
Diffstat (limited to 'modules')
-rw-r--r--modules/ECMGenerateHeaders.cmake18
1 files changed, 15 insertions, 3 deletions
diff --git a/modules/ECMGenerateHeaders.cmake b/modules/ECMGenerateHeaders.cmake
index 963e13b9..7fac1649 100644
--- a/modules/ECMGenerateHeaders.cmake
+++ b/modules/ECMGenerateHeaders.cmake
@@ -12,7 +12,8 @@
#
# ECM_GENERATE_HEADERS( ClassA ClassB ...
# [MODULE_NAME name]
-# [OUTPUT_DIR path])
+# [OUTPUT_DIR path]
+# [REQUIRED_HEADERS variable])
#
# The MODULE_NAME argument is used to provide information about where the
# directories will be generated. By default, PROJECT_NAME will be used in both
@@ -22,6 +23,13 @@
# should be within the build directory. By default, CMAKE_CURRENT_BINARY_DIR
# will be used.
#
+# The REQUIRED_HEADERS argument will receive an output variable name where all
+# the required headers will be appended so that they can be installed together
+# with the generated ones.
+#
+# The RELATIVE argument will specify where are the original headers from the
+# current directory.
+#
#
# Copyright (c) 2013, Aleix Pol Gonzalez <aleixpol@blue-systems.com>
#
@@ -32,7 +40,7 @@
include(CMakeParseArguments)
function(ECM_GENERATE_HEADERS)
- set(oneValueArgs MODULE_NAME OUTPUT_DIR)
+ set(oneValueArgs MODULE_NAME OUTPUT_DIR REQUIRED_HEADERS RELATIVE)
cmake_parse_arguments(EGH "" "${oneValueArgs}" "" ${ARGN})
if(NOT EGH_MODULE_NAME)
set(EGH_MODULE_NAME ${PROJECT_NAME})
@@ -47,7 +55,7 @@ function(ECM_GENERATE_HEADERS)
string(TOLOWER ${_CLASSNAME} lowercaseclassname)
set(REGULAR_HEADER_NAME ${EGH_OUTPUT_DIR}/${lowercasemodule}/${lowercaseclassname}.h)
set(FANCY_HEADER_NAME ${EGH_OUTPUT_DIR}/${EGH_MODULE_NAME}/${_CLASSNAME})
- set(_actualheader "${CMAKE_CURRENT_SOURCE_DIR}/${lowercaseclassname}.h")
+ set(_actualheader "${CMAKE_CURRENT_SOURCE_DIR}/${EGH_RELATIVE}/${lowercaseclassname}.h")
if (NOT EXISTS ${_actualheader})
message(FATAL_ERROR "Could not find \"${_actualheader}\"")
endif()
@@ -57,5 +65,9 @@ function(ECM_GENERATE_HEADERS)
if (NOT EXISTS ${FANCY_HEADER_NAME})
file(WRITE ${FANCY_HEADER_NAME} "#include \"${lowercasemodule}/${lowercaseclassname}.h\"\n")
endif()
+ list(APPEND REQUIRED_HEADERS "${_actualheader}")
endforeach()
+ if (NOT EGH_REQUIRED_HEADERS STREQUAL "")
+ set(${EGH_REQUIRED_HEADERS} ${${EGH_REQUIRED_HEADERS}} ${REQUIRED_HEADERS} PARENT_SCOPE)
+ endif ()
endfunction()