mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-01 11:22:21 -06:00
AIX: Fix executable ENABLE_EXPORTS in Makefile generators
In commit afcd9fe669 (AIX: Add an option to disable automatic exports
from shared libraries, 2020-01-30, v3.17.0-rc1~47^2) the population of
the `<AIX_EXPORTS>` rule variable placeholder was accidentally added to
the device linking rule rather than the main linking rule. This caused
our `ExportImportList` script on AIX, when called for executables with
`ENABLE_EXPORTS` set, to be given an `AIX_EXPORTS` file name that does
not exist, leading to a warning from the `dump` tool.
Move the population of the `<AIX_EXPORTS>` placeholder in the Makefile
generators to the main link rule.
Issue: #20290
This commit is contained in:
@@ -195,8 +195,6 @@ void cmMakefileExecutableTargetGenerator::WriteNvidiaDeviceExecutableRule(
|
||||
this->CreateObjectLists(useLinkScript, false, useResponseFileForObjects,
|
||||
buildObjs, depends, useWatcomQuote);
|
||||
|
||||
std::string const& aixExports = this->GetAIXExports(this->GetConfigName());
|
||||
|
||||
cmRulePlaceholderExpander::RuleVariables vars;
|
||||
std::string objectDir = this->GeneratorTarget->GetSupportDirectory();
|
||||
|
||||
@@ -217,7 +215,6 @@ void cmMakefileExecutableTargetGenerator::WriteNvidiaDeviceExecutableRule(
|
||||
cmOutputConverter::SHELL);
|
||||
|
||||
vars.Language = linkLanguage.c_str();
|
||||
vars.AIXExports = aixExports.c_str();
|
||||
vars.Objects = buildObjs.c_str();
|
||||
vars.ObjectDir = objectDir.c_str();
|
||||
vars.Target = target.c_str();
|
||||
@@ -528,11 +525,14 @@ void cmMakefileExecutableTargetGenerator::WriteExecutableRule(bool relink)
|
||||
|
||||
std::string manifests = this->GetManifests(this->GetConfigName());
|
||||
|
||||
std::string const& aixExports = this->GetAIXExports(this->GetConfigName());
|
||||
|
||||
cmRulePlaceholderExpander::RuleVariables vars;
|
||||
vars.CMTargetName = this->GeneratorTarget->GetName().c_str();
|
||||
vars.CMTargetType =
|
||||
cmState::GetTargetTypeName(this->GeneratorTarget->GetType()).c_str();
|
||||
vars.Language = linkLanguage.c_str();
|
||||
vars.AIXExports = aixExports.c_str();
|
||||
vars.Objects = buildObjs.c_str();
|
||||
std::string objectDir = this->GeneratorTarget->GetSupportDirectory();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user