diff options
author | Christian Kandeler <christian.kandeler@qt.io> | 2017-02-23 16:42:37 +0100 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@qt.io> | 2019-01-23 14:35:02 +0000 |
commit | c2833b1a009bc7c382b30d94109b9b7a25a404a6 (patch) | |
tree | 5b960940919310f8867e503234ca6d4f4295bfbe /src/app | |
parent | 1bfc30065371a3d28421e2e7af5653e1e78259f3 (diff) |
Introduce module providers
If a dependency is not found, we now search for a matching module
provider that can generate one for us.
We also provide a generic fall-back provider which uses pkg-config to
locate the dependency (but could be extended to incorporate other
methods in the future). This is the most important part of this change
for practical purposes, as it makes hundreds of popular libraries
available for use in qbs projects without users having to write any
boilerplate code.
In a future patch, a module provider could also be used to implement the
functionality of the qtprofilesetup library, relieving users of the need
to create a profile for building Qt applications.
[ChangeLog] The Depends item now falls back to pkg-config to locate
dependencies whose names do not correspond to a qbs module.
Fixes: QBS-1107
Change-Id: Ifd4f05c237cf58cd9fe707c3da648d3dbb33e82b
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Diffstat (limited to 'src/app')
-rw-r--r-- | src/app/qbs/commandlinefrontend.cpp | 1 | ||||
-rw-r--r-- | src/app/qbs/parser/commandlineoption.cpp | 11 | ||||
-rw-r--r-- | src/app/qbs/parser/commandlineoption.h | 9 | ||||
-rw-r--r-- | src/app/qbs/parser/commandlineoptionpool.cpp | 9 | ||||
-rw-r--r-- | src/app/qbs/parser/commandlineoptionpool.h | 1 | ||||
-rw-r--r-- | src/app/qbs/parser/commandlineparser.cpp | 5 | ||||
-rw-r--r-- | src/app/qbs/parser/commandlineparser.h | 1 | ||||
-rw-r--r-- | src/app/qbs/parser/parsercommand.cpp | 3 |
8 files changed, 39 insertions, 1 deletions
diff --git a/src/app/qbs/commandlinefrontend.cpp b/src/app/qbs/commandlinefrontend.cpp index 978fdbb7a..c848b24d0 100644 --- a/src/app/qbs/commandlinefrontend.cpp +++ b/src/app/qbs/commandlinefrontend.cpp @@ -146,6 +146,7 @@ void CommandLineFrontend::start() params.setDryRun(m_parser.dryRun()); params.setForceProbeExecution(m_parser.forceProbesExecution()); params.setWaitLockBuildGraph(m_parser.waitLockBuildGraph()); + params.setFallbackProviderEnabled(!m_parser.disableFallbackProvider()); params.setLogElapsedTime(m_parser.logTime()); params.setSettingsDirectory(m_settings->baseDirectory()); params.setOverrideBuildGraphData(m_parser.command() == ResolveCommandType); diff --git a/src/app/qbs/parser/commandlineoption.cpp b/src/app/qbs/parser/commandlineoption.cpp index e18658751..dc5b4e440 100644 --- a/src/app/qbs/parser/commandlineoption.cpp +++ b/src/app/qbs/parser/commandlineoption.cpp @@ -681,6 +681,17 @@ QString WaitLockOption::longRepresentation() const return QLatin1String("--wait-lock"); } +QString DisableFallbackProviderOption::description(CommandType) const +{ + return Tr::tr("%1\n\tDo not fall back to pkg-config if a dependency is not found.\n") + .arg(longRepresentation()); +} + +QString DisableFallbackProviderOption::longRepresentation() const +{ + return QLatin1String("--no-fallback-module-provider"); +} + QString RunEnvConfigOption::description(CommandType command) const { Q_UNUSED(command); diff --git a/src/app/qbs/parser/commandlineoption.h b/src/app/qbs/parser/commandlineoption.h index d57ec76b7..414f90489 100644 --- a/src/app/qbs/parser/commandlineoption.h +++ b/src/app/qbs/parser/commandlineoption.h @@ -75,6 +75,7 @@ public: GeneratorOptionType, WaitLockOptionType, RunEnvConfigOptionType, + DisableFallbackProviderType, }; virtual ~CommandLineOption(); @@ -414,6 +415,14 @@ public: QString longRepresentation() const override; }; +class DisableFallbackProviderOption : public OnOffOption +{ +public: + QString description(CommandType command) const override; + QString shortRepresentation() const override { return QString(); } + QString longRepresentation() const override; +}; + } // namespace qbs #endif // QBS_COMMANDLINEOPTION_H diff --git a/src/app/qbs/parser/commandlineoptionpool.cpp b/src/app/qbs/parser/commandlineoptionpool.cpp index 9964f051a..63711f623 100644 --- a/src/app/qbs/parser/commandlineoptionpool.cpp +++ b/src/app/qbs/parser/commandlineoptionpool.cpp @@ -128,6 +128,9 @@ CommandLineOption *CommandLineOptionPool::getOption(CommandLineOption::Type type case CommandLineOption::WaitLockOptionType: option = new WaitLockOption; break; + case CommandLineOption::DisableFallbackProviderType: + option = new DisableFallbackProviderOption; + break; case CommandLineOption::RunEnvConfigOptionType: option = new RunEnvConfigOption; break; @@ -273,6 +276,12 @@ WaitLockOption *CommandLineOptionPool::waitLockOption() const return static_cast<WaitLockOption *>(getOption(CommandLineOption::WaitLockOptionType)); } +DisableFallbackProviderOption *CommandLineOptionPool::disableFallbackProviderOption() const +{ + return static_cast<DisableFallbackProviderOption *>( + getOption(CommandLineOption::DisableFallbackProviderType)); +} + RunEnvConfigOption *CommandLineOptionPool::runEnvConfigOption() const { return static_cast<RunEnvConfigOption *>(getOption(CommandLineOption::RunEnvConfigOptionType)); diff --git a/src/app/qbs/parser/commandlineoptionpool.h b/src/app/qbs/parser/commandlineoptionpool.h index 6a4669165..c7ac263e1 100644 --- a/src/app/qbs/parser/commandlineoptionpool.h +++ b/src/app/qbs/parser/commandlineoptionpool.h @@ -77,6 +77,7 @@ public: RespectProjectJobLimitsOption *respectProjectJobLimitsOption() const; GeneratorOption *generatorOption() const; WaitLockOption *waitLockOption() const; + DisableFallbackProviderOption *disableFallbackProviderOption() const; RunEnvConfigOption *runEnvConfigOption() const; private: diff --git a/src/app/qbs/parser/commandlineparser.cpp b/src/app/qbs/parser/commandlineparser.cpp index c2e265336..2ec0df1df 100644 --- a/src/app/qbs/parser/commandlineparser.cpp +++ b/src/app/qbs/parser/commandlineparser.cpp @@ -231,6 +231,11 @@ bool CommandLineParser::waitLockBuildGraph() const return d->optionPool.waitLockOption()->enabled(); } +bool CommandLineParser::disableFallbackProvider() const +{ + return d->optionPool.disableFallbackProviderOption()->enabled(); +} + bool CommandLineParser::logTime() const { return d->logTime; diff --git a/src/app/qbs/parser/commandlineparser.h b/src/app/qbs/parser/commandlineparser.h index e2ef8ad77..d47657b16 100644 --- a/src/app/qbs/parser/commandlineparser.h +++ b/src/app/qbs/parser/commandlineparser.h @@ -76,6 +76,7 @@ public: bool dryRun() const; bool forceProbesExecution() const; bool waitLockBuildGraph() const; + bool disableFallbackProvider() const; bool logTime() const; bool withNonDefaultProducts() const; bool buildBeforeInstalling() const; diff --git a/src/app/qbs/parser/parsercommand.cpp b/src/app/qbs/parser/parsercommand.cpp index 33f93ce53..79636ff0a 100644 --- a/src/app/qbs/parser/parsercommand.cpp +++ b/src/app/qbs/parser/parsercommand.cpp @@ -210,7 +210,8 @@ static QList<CommandLineOption::Type> resolveOptions() << CommandLineOption::ShowProgressOptionType << CommandLineOption::DryRunOptionType << CommandLineOption::ForceProbesOptionType - << CommandLineOption::LogTimeOptionType; + << CommandLineOption::LogTimeOptionType + << CommandLineOption::DisableFallbackProviderType; } QList<CommandLineOption::Type> ResolveCommand::supportedOptions() const |