diff options
| -rw-r--r-- | modules/ECMGenerateHeaders.cmake | 19 | ||||
| -rw-r--r-- | tests/ECMGenerateHeadersTest/headtest1.hpp | 0 | ||||
| -rw-r--r-- | tests/ECMGenerateHeadersTest/headtest2.hpp | 0 | ||||
| -rw-r--r-- | tests/ECMGenerateHeadersTest/run_test.cmake.config | 20 | 
4 files changed, 34 insertions, 5 deletions
diff --git a/modules/ECMGenerateHeaders.cmake b/modules/ECMGenerateHeaders.cmake index 255662d1..13edd92d 100644 --- a/modules/ECMGenerateHeaders.cmake +++ b/modules/ECMGenerateHeaders.cmake @@ -9,6 +9,7 @@  #   ecm_generate_headers(<camelcase_forwarding_headers_var>  #       HEADER_NAMES <CamelCaseName> [<CamelCaseName> [...]]  #       [ORIGINAL <CAMELCASE|LOWERCASE>] +#       [HEADER_EXTENSION <header_extension>]  #       [OUTPUT_DIR <output_dir>]  #       [PREFIX <prefix>]  #       [REQUIRED_HEADERS <variable>] @@ -16,7 +17,8 @@  #       [RELATIVE <relative_path>])  #  # For each CamelCase header name passed to HEADER_NAMES, a file of that name -# will be generated that will include a version with ``.h`` appended. +# will be generated that will include a version with ``.h`` or, if set, +# ``.<header_extension>`` appended.  # For example, the generated header ``ClassA`` will include ``classa.h`` (or  # ``ClassA.h``, see ORIGINAL).  # If a CamelCaseName consists of multiple comma-separated files, e.g. @@ -28,6 +30,9 @@  # ORIGINAL specifies how the name of the original header is written: lowercased  # or also camelcased.  The default is LOWERCASE. Since 1.8.0.  # +# HEADER_EXTENSION specifies what file name extension is used for the header +# files.  The default is "h". Since 5.48.0. +#  # PREFIX places the generated headers in subdirectories.  This should be a  # CamelCase name like ``KParts``, which will cause the CamelCase forwarding  # headers to be placed in the ``KParts`` directory (e.g. ``KParts/Part``).  It @@ -138,7 +143,7 @@ include(CMakeParseArguments)  function(ECM_GENERATE_HEADERS camelcase_forwarding_headers_var)      set(options) -    set(oneValueArgs ORIGINAL OUTPUT_DIR PREFIX REQUIRED_HEADERS COMMON_HEADER RELATIVE) +    set(oneValueArgs ORIGINAL HEADER_EXTENSION OUTPUT_DIR PREFIX REQUIRED_HEADERS COMMON_HEADER RELATIVE)      set(multiValueArgs HEADER_NAMES)      cmake_parse_arguments(EGH "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) @@ -158,6 +163,10 @@ function(ECM_GENERATE_HEADERS camelcase_forwarding_headers_var)          message(FATAL_ERROR "Unexpected value for original argument to ECM_GENERATE_HEADERS: ${EGH_ORIGINAL}")      endif() +    if(NOT EGH_HEADER_EXTENSION) +        set(EGH_HEADER_EXTENSION "h") +    endif() +      if(NOT EGH_OUTPUT_DIR)          set(EGH_OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}")      endif() @@ -188,7 +197,7 @@ function(ECM_GENERATE_HEADERS camelcase_forwarding_headers_var)              string(TOLOWER "${_baseclass}" originalbasename)          endif() -        set(_actualheader "${CMAKE_CURRENT_SOURCE_DIR}/${EGH_RELATIVE}${originalbasename}.h") +        set(_actualheader "${CMAKE_CURRENT_SOURCE_DIR}/${EGH_RELATIVE}${originalbasename}.${EGH_HEADER_EXTENSION}")          if (NOT EXISTS ${_actualheader})              message(FATAL_ERROR "Could not find \"${_actualheader}\"")          endif() @@ -196,7 +205,7 @@ function(ECM_GENERATE_HEADERS camelcase_forwarding_headers_var)          foreach(_CLASSNAME ${_classnames})              set(FANCY_HEADER_FILE "${EGH_OUTPUT_DIR}/${EGH_PREFIX}${_CLASSNAME}")              if (NOT EXISTS ${FANCY_HEADER_FILE}) -                file(WRITE ${FANCY_HEADER_FILE} "#include \"${originalprefix}${originalbasename}.h\"\n") +                file(WRITE ${FANCY_HEADER_FILE} "#include \"${originalprefix}${originalbasename}.${EGH_HEADER_EXTENSION}\"\n")              endif()              list(APPEND ${camelcase_forwarding_headers_var} "${FANCY_HEADER_FILE}")              if (EGH_PREFIX) @@ -206,7 +215,7 @@ function(ECM_GENERATE_HEADERS camelcase_forwarding_headers_var)                  else()                      string(TOLOWER "${_CLASSNAME}" originalclassname)                  endif() -                set(REGULAR_HEADER_NAME ${EGH_OUTPUT_DIR}/${originalprefix}${originalclassname}.h) +                set(REGULAR_HEADER_NAME ${EGH_OUTPUT_DIR}/${originalprefix}${originalclassname}.${EGH_HEADER_EXTENSION})                  if (NOT EXISTS ${REGULAR_HEADER_NAME})                      file(WRITE ${REGULAR_HEADER_NAME} "#include \"${_actualheader}\"\n")                  endif() diff --git a/tests/ECMGenerateHeadersTest/headtest1.hpp b/tests/ECMGenerateHeadersTest/headtest1.hpp new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/tests/ECMGenerateHeadersTest/headtest1.hpp diff --git a/tests/ECMGenerateHeadersTest/headtest2.hpp b/tests/ECMGenerateHeadersTest/headtest2.hpp new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/tests/ECMGenerateHeadersTest/headtest2.hpp diff --git a/tests/ECMGenerateHeadersTest/run_test.cmake.config b/tests/ECMGenerateHeadersTest/run_test.cmake.config index a9027dbc..29bfeba8 100644 --- a/tests/ECMGenerateHeadersTest/run_test.cmake.config +++ b/tests/ECMGenerateHeadersTest/run_test.cmake.config @@ -354,4 +354,24 @@ if (NOT "${file_contents}" STREQUAL "${exp_contents}")  endif() +########################################################### + +message(STATUS "Test 14: HEADER_EXTENSION") +set(camelcase_headers) +set(expfiles "${CMAKE_CURRENT_BINARY_DIR}/HeadTest1" +             "${CMAKE_CURRENT_BINARY_DIR}/HeadTest2") +set(origfiles headtest1.hpp headtest2.hpp) +file(REMOVE ${expfiles}) +ecm_generate_headers( +    camelcase_headers +    HEADER_NAMES HeadTest1 HeadTest2 +    HEADER_EXTENSION hpp +) +if (NOT "${expfiles}" STREQUAL "${camelcase_headers}") +    message(FATAL_ERROR "camelcase_headers was set to \"${camelcase_headers}\" instead of \"${expfiles}\"") +endif() +check_files(GENERATED ${expfiles} +            ORIGINALS ${origfiles}) + +  # vim:ft=cmake  | 
