From a3ed87ca7808363d8752f919617f88010ebf46b3 Mon Sep 17 00:00:00 2001 From: "Friedrich W. H. Kossebau" Date: Wed, 6 Mar 2019 13:43:56 +0100 Subject: 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 --- src/kconfig_compiler/README.dox | 12 ++++++++++++ src/kconfig_compiler/checkkcfg.pl | 8 +++++--- src/kconfig_compiler/kconfig_compiler.cpp | 10 +++++++--- 3 files changed, 24 insertions(+), 6 deletions(-) (limited to 'src') 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 @@ -96,6 +96,18 @@ The following options are read from the kcfgc file: programname.kcfg Name of kcfg file containing the options the class is generated for + + HeaderExtension + string + h + Extension to use for the name of the generated C++ header files. Since KF 5.57 + + + SourceExtension + string + cpp + Extension to use for the name of the generated C++ source file. Since KF 5.57 + NameSpace string 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; -- cgit v1.2.1