aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorFriedrich W. H. Kossebau <kossebau@kde.org>2019-03-06 13:43:56 +0100
committerFriedrich W. H. Kossebau <kossebau@kde.org>2019-03-15 06:55:13 +0100
commita3ed87ca7808363d8752f919617f88010ebf46b3 (patch)
tree8499bdc6b25490d84e71b4bee3f2be5b159df6f6 /src
parent516f558742dfa8da7a5e6def39309516d703bc1b (diff)
downloadkconfig-a3ed87ca7808363d8752f919617f88010ebf46b3.tar.gz
kconfig-a3ed87ca7808363d8752f919617f88010ebf46b3.tar.bz2
kconfig_compiler: new kcfgc args HeaderExtension & SourceExtension
Summary: When using kconfig_compiler generated sources in projects where the used file extensions for C++ files are not ".h" and/or ".cpp", the include for the generated header looks a bit alien to the project, as well as the generated source file if one looks closer at it. This code adds new optional flags HeaderExtension & SourceExtension which can be used to control the file extensions used for the generated files. Test Plan: All unit tests and the new test_fileextensions pass, existing projects using kcfg without & with the new flags build fine. Reviewers: #frameworks, apol Reviewed By: apol Subscribers: apol, kde-frameworks-devel Tags: #frameworks Differential Revision: https://phabricator.kde.org/D19565
Diffstat (limited to 'src')
-rw-r--r--src/kconfig_compiler/README.dox12
-rwxr-xr-xsrc/kconfig_compiler/checkkcfg.pl8
-rw-r--r--src/kconfig_compiler/kconfig_compiler.cpp10
3 files changed, 24 insertions, 6 deletions
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;