aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/generator/iarew/iarewutils.cpp
diff options
context:
space:
mode:
authorDenis Shienkov <denis.shienkov@gmail.com>2019-07-23 15:45:29 +0300
committerDenis Shienkov <denis.shienkov@gmail.com>2019-07-31 13:12:01 +0000
commit86747ff36bb162764fd8c2f741a1674d16b0b3cd (patch)
treeebc9323f57c601ae49af9cff9fe0674fd71bb6ca /src/plugins/generator/iarew/iarewutils.cpp
parent2363f13f8fbd001a3544acb2a600010893e4cf80 (diff)
baremetal: Share common generators code
Common code which are used for the 'iarew' and 'keiluv' generators was moved to the corelib/generators library. Besides, this code also can be used in future for the XML-based generators. Change-Id: I79a21e3e078d563600d7f365785731fe9e847045 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Diffstat (limited to 'src/plugins/generator/iarew/iarewutils.cpp')
-rw-r--r--src/plugins/generator/iarew/iarewutils.cpp174
1 files changed, 7 insertions, 167 deletions
diff --git a/src/plugins/generator/iarew/iarewutils.cpp b/src/plugins/generator/iarew/iarewutils.cpp
index a24e48490..da6237df7 100644
--- a/src/plugins/generator/iarew/iarewutils.cpp
+++ b/src/plugins/generator/iarew/iarewutils.cpp
@@ -30,53 +30,11 @@
#include "iarewutils.h"
+#include <generators/generatorutils.h>
+
namespace qbs {
namespace IarewUtils {
-QString architectureName(Architecture arch)
-{
- switch (arch) {
- case Architecture::ArmArchitecture:
- return QStringLiteral("arm");
- case Architecture::AvrArchitecture:
- return QStringLiteral("avr");
- case Architecture::Mcs51Architecture:
- return QStringLiteral("mcs51");
- default:
- return QStringLiteral("unknown");
- }
-}
-
-Architecture architecture(const Project &qbsProject)
-{
- const auto qbsArch = qbsProject.projectConfiguration()
- .value(Internal::StringConstants::qbsModule()).toMap()
- .value(QStringLiteral("architecture")).toString();
-
- if (qbsArch == QLatin1String("arm"))
- return Architecture::ArmArchitecture;
- if (qbsArch == QLatin1String("avr"))
- return Architecture::AvrArchitecture;
- if (qbsArch == QLatin1String("mcs51"))
- return Architecture::Mcs51Architecture;
- return Architecture::UnknownArchitecture;
-}
-
-QString buildConfigurationName(const Project &qbsProject)
-{
- return qbsProject.projectConfiguration()
- .value(Internal::StringConstants::qbsModule()).toMap()
- .value(QStringLiteral("configurationName")).toString();
-}
-
-int debugInformation(const ProductData &qbsProduct)
-{
- return qbsProduct.moduleProperties().getModuleProperty(
- Internal::StringConstants::qbsModule(),
- QStringLiteral("debugInformation"))
- .toInt();
-}
-
QString toolkitRootPath(const ProductData &qbsProduct)
{
QDir dir(qbsProduct.moduleProperties()
@@ -97,93 +55,18 @@ QString clibToolkitRootPath(const ProductData &qbsProduct)
return toolkitRootPath(qbsProduct) + QLatin1String("/lib/clib");
}
-QString buildRootPath(const Project &qbsProject)
-{
- QDir dir(qbsProject.projectData().buildDirectory());
- dir.cdUp();
- return dir.absolutePath();
-}
-
-QString relativeFilePath(const QString &baseDirectory,
- const QString &fullFilePath)
-{
- return QDir(baseDirectory).relativeFilePath(fullFilePath);
-}
-
QString toolkitRelativeFilePath(const QString &basePath,
const QString &fullFilePath)
{
return QLatin1String("$TOOLKIT_DIR$/")
- + IarewUtils::relativeFilePath(basePath, fullFilePath);
+ + gen::utils::relativeFilePath(basePath, fullFilePath);
}
QString projectRelativeFilePath(const QString &basePath,
const QString &fullFilePath)
{
return QLatin1String("$PROJ_DIR$/")
- + IarewUtils::relativeFilePath(basePath, fullFilePath);
-}
-
-QString binaryOutputDirectory(const QString &baseDirectory,
- const ProductData &qbsProduct)
-{
- return QDir(baseDirectory).relativeFilePath(qbsProduct.buildDirectory())
- + QLatin1String("/bin");
-}
-
-QString objectsOutputDirectory(const QString &baseDirectory,
- const ProductData &qbsProduct)
-{
- return QDir(baseDirectory).relativeFilePath(qbsProduct.buildDirectory())
- + QLatin1String("/obj");
-}
-
-QString listingOutputDirectory(const QString &baseDirectory,
- const ProductData &qbsProduct)
-{
- return QDir(baseDirectory).relativeFilePath(qbsProduct.buildDirectory())
- + QLatin1String("/lst");
-}
-
-std::vector<ProductData> dependenciesOf(const ProductData &qbsProduct,
- const GeneratableProject &genProject,
- const QString configurationName)
-{
- std::vector<ProductData> result;
- const auto depsNames = qbsProduct.dependencies();
- for (const auto &product : qAsConst(genProject.products)) {
- const auto pt = product.type();
- if (!pt.contains(QLatin1String("staticlibrary")))
- continue;
- const auto pn = product.name();
- if (!depsNames.contains(pn))
- continue;
- result.push_back(product.data.value(configurationName));
- }
- return result;
-}
-
-QString targetBinary(const ProductData &qbsProduct)
-{
- const auto type = qbsProduct.type();
- if (type.contains(QLatin1String("application"))) {
- return QFileInfo(qbsProduct.targetExecutable()).fileName();
- } else if (type.contains(QLatin1String("staticlibrary"))) {
- const auto artifacts = qbsProduct.targetArtifacts();
- for (const auto &artifact : artifacts) {
- if (artifact.fileTags().contains(QLatin1String("staticlibrary")))
- return QFileInfo(artifact.filePath()).fileName();
- }
- }
-
- return {};
-}
-
-QString targetBinaryPath(const QString &baseDirectory,
- const ProductData &qbsProduct)
-{
- return binaryOutputDirectory(baseDirectory, qbsProduct)
- + QLatin1Char('/') + targetBinary(qbsProduct);
+ + gen::utils::relativeFilePath(basePath, fullFilePath);
}
OutputBinaryType outputBinaryType(const ProductData &qbsProduct)
@@ -196,49 +79,6 @@ OutputBinaryType outputBinaryType(const ProductData &qbsProduct)
return ApplicationOutputType;
}
-QString cppStringModuleProperty(const PropertyMap &qbsProps,
- const QString &propertyName)
-{
- return qbsProps.getModuleProperty(Internal::StringConstants::cppModule(),
- propertyName).toString();
-}
-
-bool cppBooleanModuleProperty(const PropertyMap &qbsProps,
- const QString &propertyName)
-{
- return qbsProps.getModuleProperty(Internal::StringConstants::cppModule(),
- propertyName).toBool();
-}
-
-int cppIntegerModuleProperty(const PropertyMap &qbsProps,
- const QString &propertyName)
-{
- return qbsProps.getModuleProperty(Internal::StringConstants::cppModule(),
- propertyName).toInt();
-}
-
-QStringList cppStringModuleProperties(const PropertyMap &qbsProps,
- const QStringList &propertyNames)
-{
- QStringList properties;
- for (const auto &propertyName : propertyNames) {
- properties << qbsProps.getModuleProperty(Internal::StringConstants::cppModule(),
- propertyName).toStringList();
- }
- return properties;
-}
-
-QVariantList cppVariantModuleProperties(const PropertyMap &qbsProps,
- const QStringList &propertyNames)
-{
- QVariantList properties;
- for (const auto &propertyName : propertyNames) {
- properties << qbsProps.getModuleProperty(Internal::StringConstants::cppModule(),
- propertyName).toList();
- }
- return properties;
-}
-
QString flagValue(const QStringList &flags, const QString &flagKey)
{
// Seach for full 'flagKey' option matching.
@@ -288,7 +128,7 @@ QVariantList flagValues(const QStringList &flags, const QString &flagKey)
QStringList cppModuleCompilerFlags(const PropertyMap &qbsProps)
{
- return cppStringModuleProperties(
+ return gen::utils::cppStringModuleProperties(
qbsProps, {QStringLiteral("driverFlags"), QStringLiteral("cFlags"),
QStringLiteral("cppFlags"), QStringLiteral("cxxFlags"),
QStringLiteral("commonCompilerFlags")});
@@ -296,13 +136,13 @@ QStringList cppModuleCompilerFlags(const PropertyMap &qbsProps)
QStringList cppModuleAssemblerFlags(const PropertyMap &qbsProps)
{
- return cppStringModuleProperties(
+ return gen::utils::cppStringModuleProperties(
qbsProps, {QStringLiteral("assemblerFlags")});
}
QStringList cppModuleLinkerFlags(const PropertyMap &qbsProps)
{
- return cppStringModuleProperties(
+ return gen::utils::cppStringModuleProperties(
qbsProps, {QStringLiteral("driverFlags"),
QStringLiteral("driverLinkerFlags")});
}