diff options
| author | David Faure <faure@kde.org> | 2014-01-03 09:35:46 +0100 | 
|---|---|---|
| committer | David Faure <faure@kde.org> | 2014-01-03 13:11:05 +0100 | 
| commit | bc2c178e004c16523757501f59acdede82681d7c (patch) | |
| tree | b9441c68ff1349e7e1a7c18c8da507ea7a7ff55a | |
| parent | 809726ddd7b920c1d0c5a5339c344d91b88c59ef (diff) | |
| download | extra-cmake-modules-bc2c178e004c16523757501f59acdede82681d7c.tar.gz extra-cmake-modules-bc2c178e004c16523757501f59acdede82681d7c.tar.bz2 | |
Install all headers under FrameworkName, add optional PREFIX for namespaced headers
| -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) | 
