mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-05 21:31:08 -06:00
CUDA: Add LinkLineComputer that computes cuda dlink lines.
This commit is contained in:
committed by
Brad King
parent
115269a86c
commit
ae05fcc63f
74
Source/cmLinkLineDeviceComputer.cxx
Normal file
74
Source/cmLinkLineDeviceComputer.cxx
Normal file
@@ -0,0 +1,74 @@
|
||||
/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
||||
file Copyright.txt or https://cmake.org/licensing for details. */
|
||||
|
||||
#include "cmLinkLineDeviceComputer.h"
|
||||
#include "cmComputeLinkInformation.h"
|
||||
#include "cmGeneratorTarget.h"
|
||||
#include "cmGlobalNinjaGenerator.h"
|
||||
#include "cmOutputConverter.h"
|
||||
|
||||
cmLinkLineDeviceComputer::cmLinkLineDeviceComputer(
|
||||
cmOutputConverter* outputConverter, cmStateDirectory stateDir)
|
||||
: cmLinkLineComputer(outputConverter, stateDir)
|
||||
{
|
||||
}
|
||||
|
||||
cmLinkLineDeviceComputer::~cmLinkLineDeviceComputer()
|
||||
{
|
||||
}
|
||||
|
||||
std::string cmLinkLineDeviceComputer::ComputeLinkLibraries(
|
||||
cmComputeLinkInformation& cli, std::string const& stdLibString)
|
||||
{
|
||||
// Write the library flags to the build rule.
|
||||
std::ostringstream fout;
|
||||
typedef cmComputeLinkInformation::ItemVector ItemVector;
|
||||
ItemVector const& items = cli.GetItems();
|
||||
std::string config = cli.GetConfig();
|
||||
for (ItemVector::const_iterator li = items.begin(); li != items.end();
|
||||
++li) {
|
||||
if (!li->Target) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (li->Target->GetType() == cmStateEnums::INTERFACE_LIBRARY ||
|
||||
li->Target->GetType() == cmStateEnums::SHARED_LIBRARY ||
|
||||
li->Target->GetType() == cmStateEnums::MODULE_LIBRARY) {
|
||||
continue;
|
||||
}
|
||||
|
||||
std::set<std::string> langs;
|
||||
li->Target->GetLanguages(langs, config);
|
||||
if (langs.count("CUDA") == 0) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (li->IsPath) {
|
||||
fout << this->ConvertToOutputFormat(
|
||||
this->ConvertToLinkReference(li->Value));
|
||||
} else {
|
||||
fout << li->Value;
|
||||
}
|
||||
fout << " ";
|
||||
}
|
||||
|
||||
if (!stdLibString.empty()) {
|
||||
fout << stdLibString << " ";
|
||||
}
|
||||
|
||||
return fout.str();
|
||||
}
|
||||
|
||||
cmNinjaLinkLineDeviceComputer::cmNinjaLinkLineDeviceComputer(
|
||||
cmOutputConverter* outputConverter, cmStateDirectory stateDir,
|
||||
cmGlobalNinjaGenerator const* gg)
|
||||
: cmLinkLineDeviceComputer(outputConverter, stateDir)
|
||||
, GG(gg)
|
||||
{
|
||||
}
|
||||
|
||||
std::string cmNinjaLinkLineDeviceComputer::ConvertToLinkReference(
|
||||
std::string const& lib) const
|
||||
{
|
||||
return GG->ConvertToNinjaPath(lib);
|
||||
}
|
||||
Reference in New Issue
Block a user