// Copyright (C) 2020 Alexis Jeandet. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 #include "mesonrunconfiguration.h" #include "mesonpluginconstants.h" #include #include #include #include #include #include #include #include #include using namespace ProjectExplorer; namespace MesonProjectManager { namespace Internal { MesonRunConfiguration::MesonRunConfiguration(Target *target, Utils::Id id) : RunConfiguration{target, id} { auto envAspect = addAspect(target); addAspect(target, ExecutableAspect::RunDevice); addAspect(macroExpander()); addAspect(macroExpander(), envAspect); addAspect(); auto libAspect = addAspect(); connect(libAspect, &UseLibraryPathsAspect::changed, envAspect, &EnvironmentAspect::environmentChanged); if (Utils::HostOsInfo::isMacHost()) { auto dyldAspect = addAspect(); connect(dyldAspect, &UseLibraryPathsAspect::changed, envAspect, &EnvironmentAspect::environmentChanged); envAspect->addModifier([dyldAspect](Utils::Environment &env) { if (dyldAspect->value()) env.set(QLatin1String("DYLD_IMAGE_SUFFIX"), QLatin1String("_debug")); }); } envAspect->addModifier([this, libAspect](Utils::Environment &env) { BuildTargetInfo bti = buildTargetInfo(); if (bti.runEnvModifier) bti.runEnvModifier(env, libAspect->value()); }); setUpdater([this] { updateTargetInformation(); }); connect(target, &Target::buildSystemUpdated, this, &RunConfiguration::update); } void MesonRunConfiguration::updateTargetInformation() { if (!activeBuildSystem()) return; BuildTargetInfo bti = buildTargetInfo(); aspect()->setUseTerminalHint(bti.usesTerminal); aspect()->setExecutable(bti.targetFilePath); aspect()->setDefaultWorkingDirectory(bti.workingDirectory); emit aspect()->environmentChanged(); } MesonRunConfigurationFactory::MesonRunConfigurationFactory() { registerRunConfiguration("MesonProjectManager.MesonRunConfiguration"); addSupportedProjectType(Constants::Project::ID); addSupportedTargetDeviceType(ProjectExplorer::Constants::DESKTOP_DEVICE_TYPE); } } // namespace Internal } // namespace MesonProjectManager