diff options
| -rw-r--r-- | KF5ConfigMacros.cmake | 19 | ||||
| -rw-r--r-- | autotests/kconfig_compiler/CMakeLists.txt | 8 | ||||
| -rw-r--r-- | autotests/kconfig_compiler/test_fileextensions.kcfg | 16 | ||||
| -rw-r--r-- | autotests/kconfig_compiler/test_fileextensions.kcfgc | 7 | ||||
| -rw-r--r-- | autotests/kconfig_compiler/test_fileextensions_main.cxx | 32 | ||||
| -rw-r--r-- | src/kconfig_compiler/README.dox | 12 | ||||
| -rwxr-xr-x | src/kconfig_compiler/checkkcfg.pl | 8 | ||||
| -rw-r--r-- | src/kconfig_compiler/kconfig_compiler.cpp | 10 | 
8 files changed, 104 insertions, 8 deletions
| diff --git a/KF5ConfigMacros.cmake b/KF5ConfigMacros.cmake index 65af42a6..469d9b01 100644 --- a/KF5ConfigMacros.cmake +++ b/KF5ConfigMacros.cmake @@ -75,8 +75,23 @@ function (KCONFIG_ADD_KCFG_FILES _sources )                  set(_kcfg_FILENAME "${_basename}.kcfg")              endif()         endif() -       set(_src_FILE    ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.cpp) -       set(_header_FILE ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.h) + +       string(REGEX MATCH "HeaderExtension=([^\n]+)\n" "" "${_contents}") +       if(CMAKE_MATCH_1) +            set(_kcfg_header_EXT "${CMAKE_MATCH_1}") +       else() +            set(_kcfg_header_EXT "h") +       endif() + +       string(REGEX MATCH "SourceExtension=([^\n]+)\n" "" "${_contents}") +       if(CMAKE_MATCH_1) +            set(_kcfg_src_EXT "${CMAKE_MATCH_1}") +       else() +            set(_kcfg_src_EXT "cpp") +       endif() + +       set(_src_FILE    ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.${_kcfg_src_EXT}) +       set(_header_FILE ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.${_kcfg_header_EXT})         set(_moc_FILE    ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.moc)         set(_kcfg_FILE   ${_abs_PATH}/${_kcfg_FILENAME})         # Maybe the .kcfg is a generated file? diff --git a/autotests/kconfig_compiler/CMakeLists.txt b/autotests/kconfig_compiler/CMakeLists.txt index 590c7700..70b2dbb8 100644 --- a/autotests/kconfig_compiler/CMakeLists.txt +++ b/autotests/kconfig_compiler/CMakeLists.txt @@ -241,3 +241,11 @@ gen_kcfg_test_source(test_translation_kde_domain test_translation_kde_domain_SRC  ecm_add_test(TEST_NAME test_translation_kde_domain ${test_translation_kde_domain_SRCS})  target_link_libraries(test_translation_kde_domain KF5::ConfigGui) + +########### next target ############### + +set(test_fileextensions_SRCS test_fileextensions_main.cxx) +gen_kcfg_test_source(test_fileextensions test_fileextensions_SRCS) + +ecm_add_test(TEST_NAME test_fileextensions ${test_fileextensions_SRCS}) +target_link_libraries(test_fileextensions KF5::ConfigGui) diff --git a/autotests/kconfig_compiler/test_fileextensions.kcfg b/autotests/kconfig_compiler/test_fileextensions.kcfg new file mode 100644 index 00000000..c5040fd8 --- /dev/null +++ b/autotests/kconfig_compiler/test_fileextensions.kcfg @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="UTF-8"?> +<kcfg xmlns="http://www.kde.org/standards/kcfg/1.0" +      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" +      xsi:schemaLocation="http://www.kde.org/standards/kcfg/1.0 +                          http://www.kde.org/standards/kcfg/1.0/kcfg.xsd" > +  <kcfgfile name="test_fileextensions_rc"/> + +  <group name="General"> +    <entry type="Bool" key="Auto Save"> +      <label>Enable automatic saving of calendar</label> +      <whatsthis context="@info:whatsthis">Enable automatic saving of calendars to have calendars saved automatically.</whatsthis> +      <default>false</default> +    </entry> +  </group> + +</kcfg> diff --git a/autotests/kconfig_compiler/test_fileextensions.kcfgc b/autotests/kconfig_compiler/test_fileextensions.kcfgc new file mode 100644 index 00000000..cc6556f9 --- /dev/null +++ b/autotests/kconfig_compiler/test_fileextensions.kcfgc @@ -0,0 +1,7 @@ +# Code generation options for kconfig_compiler_kf5 +File=test_fileextensions.kcfg +Singleton=true +ClassName=TestFileExtensions +SetUserTexts=true +HeaderExtension=hxx +SourceExtension=cxx diff --git a/autotests/kconfig_compiler/test_fileextensions_main.cxx b/autotests/kconfig_compiler/test_fileextensions_main.cxx new file mode 100644 index 00000000..e19fb102 --- /dev/null +++ b/autotests/kconfig_compiler/test_fileextensions_main.cxx @@ -0,0 +1,32 @@ +/* +Copyright 2019 Friedrich W. H. Kossebau <kossebau@kde.org> + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE +AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#include "test_fileextensions.hxx" +#include <QGuiApplication> + +int main(int argc, char **argv) +{ +    QGuiApplication app(argc, argv); +    Q_UNUSED(app); +    TestFileExtensions *t = TestFileExtensions::self(); +    delete t; +    return 0; +} diff --git a/src/kconfig_compiler/README.dox b/src/kconfig_compiler/README.dox index 3ba97285..64f7c44a 100644 --- a/src/kconfig_compiler/README.dox +++ b/src/kconfig_compiler/README.dox @@ -97,6 +97,18 @@ The following options are read from the kcfgc file:    <td>Name of kcfg file containing the options the class is generated for</td>  </tr>  <tr> +  <td><b>HeaderExtension</b></td> +  <td>string</td> +  <td>h</td> +  <td>Extension to use for the name of the generated C++ header files. Since KF 5.57</td> +</tr> +<tr> +  <td><b>SourceExtension</b></td> +  <td>string</td> +  <td>cpp</td> +  <td>Extension to use for the name of the generated C++ source file. Since KF 5.57</td> +</tr> +<tr>    <td><b>NameSpace</b></td>    <td>string</td>    <td>-</td> diff --git a/src/kconfig_compiler/checkkcfg.pl b/src/kconfig_compiler/checkkcfg.pl index 9ebcbf83..03d187c9 100755 --- a/src/kconfig_compiler/checkkcfg.pl +++ b/src/kconfig_compiler/checkkcfg.pl @@ -1,6 +1,6 @@  #!/usr/bin/perl -if ( @ARGV != 1 ) { +if ( @ARGV < 1 ) {    print STDERR "Missing arg: filename\n";    exit 1;  } @@ -10,8 +10,10 @@ $file = $ARGV[0];  $file =~ /^(.*)\.[^\.]*$/;  $filebase = $1; -$file_h = "$filebase.h"; -$file_cpp = "$filebase.cpp"; +$header_extension = @ARGV > 1 ? $ARGV[1] : "h"; +$source_extension = @ARGV > 2 ? $ARGV[2] : "cpp"; +$file_h = "$filebase.$header_extension"; +$file_cpp = "$filebase.$source_extension";  $kcfgc = $file . "c"; diff --git a/src/kconfig_compiler/kconfig_compiler.cpp b/src/kconfig_compiler/kconfig_compiler.cpp index da75ad94..b467a20a 100644 --- a/src/kconfig_compiler/kconfig_compiler.cpp +++ b/src/kconfig_compiler/kconfig_compiler.cpp @@ -108,6 +108,8 @@ public:              translationSystem = QtTranslation;          }          qCategoryLoggingName = codegenConfig.value(QStringLiteral("CategoryLoggingName"), QString()).toString(); +        headerExtension = codegenConfig.value(QStringLiteral("HeaderExtension"), QStringLiteral("h")).toString(); +        sourceExtension = codegenConfig.value(QStringLiteral("SourceExtension"), QStringLiteral("cpp")).toString();      }  public: @@ -131,6 +133,8 @@ public:      QStringList mutators;      QStringList defaultGetters;      QString qCategoryLoggingName; +    QString headerExtension; +    QString sourceExtension;      bool allMutators;      bool setUserTexts;      bool allDefaultGetters; @@ -1742,8 +1746,8 @@ int main(int argc, char **argv)      }  #endif -    QString headerFileName = baseName + ".h"; -    QString implementationFileName = baseName + ".cpp"; +    QString headerFileName = baseName + '.' + cfg.headerExtension; +    QString implementationFileName = baseName + '.' + cfg.sourceExtension;      QString mocFileName = baseName + ".moc";      QString cppPreamble; // code to be inserted at the beginnin of the cpp file, e.g. initialization of static values @@ -2199,7 +2203,7 @@ int main(int argc, char **argv)      if (cfg.customAddons) {          h << "    // Include custom additions" << endl; -        h << "    #include \"" << filenameOnly(baseName) << "_addons.h\"" << endl; +        h << "    #include \"" << filenameOnly(baseName) << "_addons." << cfg.headerExtension << '"' << endl;      }      h << "};" << endl << endl; | 
