diff options
Diffstat (limited to 'modules/ECMGenerateHeaders.cmake')
-rw-r--r-- | modules/ECMGenerateHeaders.cmake | 28 |
1 files changed, 19 insertions, 9 deletions
diff --git a/modules/ECMGenerateHeaders.cmake b/modules/ECMGenerateHeaders.cmake index 7fac1649..f72b1c0b 100644 --- a/modules/ECMGenerateHeaders.cmake +++ b/modules/ECMGenerateHeaders.cmake @@ -13,11 +13,14 @@ # ECM_GENERATE_HEADERS( ClassA ClassB ... # [MODULE_NAME name] # [OUTPUT_DIR path] +# [PREFIX prefix] # [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 -# CamelCase and lowercase version. +# directories will be generated. By default, PROJECT_NAME will be used. +# +# The optional PREFIX will be prepended to the filenames, e.g. PREFIX KParts +# will generate KParts/Part and kparts/part.h # # The OUTPUT_DIR argument specifies where the files will be generated; this # should be within the build directory. By default, CMAKE_CURRENT_BINARY_DIR @@ -40,7 +43,7 @@ include(CMakeParseArguments) function(ECM_GENERATE_HEADERS) - set(oneValueArgs MODULE_NAME OUTPUT_DIR REQUIRED_HEADERS RELATIVE) + set(oneValueArgs MODULE_NAME OUTPUT_DIR PREFIX REQUIRED_HEADERS RELATIVE) cmake_parse_arguments(EGH "" "${oneValueArgs}" "" ${ARGN}) if(NOT EGH_MODULE_NAME) set(EGH_MODULE_NAME ${PROJECT_NAME}) @@ -50,22 +53,29 @@ function(ECM_GENERATE_HEADERS) set(EGH_OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR}) endif() + if (EGH_PREFIX) + string(TOLOWER "${EGH_PREFIX}/" lowercaseprefix) + endif() string(TOLOWER ${EGH_MODULE_NAME} lowercasemodule) foreach(_CLASSNAME ${EGH_UNPARSED_ARGUMENTS}) 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(FANCY_HEADER_NAME ${EGH_OUTPUT_DIR}/${EGH_MODULE_NAME}/${EGH_PREFIX}/${_CLASSNAME}) set(_actualheader "${CMAKE_CURRENT_SOURCE_DIR}/${EGH_RELATIVE}/${lowercaseclassname}.h") if (NOT EXISTS ${_actualheader}) message(FATAL_ERROR "Could not find \"${_actualheader}\"") endif() - if (NOT EXISTS ${REGULAR_HEADER_NAME}) - file(WRITE ${REGULAR_HEADER_NAME} "#include \"${_actualheader}\"\n") - endif() if (NOT EXISTS ${FANCY_HEADER_NAME}) - file(WRITE ${FANCY_HEADER_NAME} "#include \"${lowercasemodule}/${lowercaseclassname}.h\"\n") + file(WRITE ${FANCY_HEADER_NAME} "#include \"${lowercaseprefix}${lowercaseclassname}.h\"\n") endif() list(APPEND REQUIRED_HEADERS "${_actualheader}") + if (EGH_PREFIX) + #local forwarding header, for namespaced headers, e.g. kparts/part.h + #this should not get installed, so we don't put it under EGH_MODULE_NAME + set(REGULAR_HEADER_NAME ${EGH_OUTPUT_DIR}/${lowercaseprefix}${lowercaseclassname}.h) + if (NOT EXISTS ${REGULAR_HEADER_NAME}) + file(WRITE ${REGULAR_HEADER_NAME} "#include \"${_actualheader}\"\n") + endif() + endif() endforeach() if (NOT EGH_REQUIRED_HEADERS STREQUAL "") set(${EGH_REQUIRED_HEADERS} ${${EGH_REQUIRED_HEADERS}} ${REQUIRED_HEADERS} PARENT_SCOPE) |