aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--KF5ConfigMacros.cmake19
-rw-r--r--autotests/kconfig_compiler/CMakeLists.txt8
-rw-r--r--autotests/kconfig_compiler/test_fileextensions.kcfg16
-rw-r--r--autotests/kconfig_compiler/test_fileextensions.kcfgc7
-rw-r--r--autotests/kconfig_compiler/test_fileextensions_main.cxx32
-rw-r--r--src/kconfig_compiler/README.dox12
-rwxr-xr-xsrc/kconfig_compiler/checkkcfg.pl8
-rw-r--r--src/kconfig_compiler/kconfig_compiler.cpp10
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;