summaryrefslogtreecommitdiffstats
path: root/Source/cmExportTryCompileFileGenerator.cxx
diff options
context:
space:
mode:
authorMarc Chevrier <marc.chevrier@gmail.com>2021-03-31 16:45:05 (GMT)
committerMarc Chevrier <marc.chevrier@gmail.com>2021-03-31 17:03:35 (GMT)
commit6cf81efe7d95e3cf43028ef5122a814d8d7f3aa0 (patch)
tree91a61bd9d7289b3f510d2f64097529cef294c0f8 /Source/cmExportTryCompileFileGenerator.cxx
parent36f1f7c449a4b213b207032a32082d78fd866348 (diff)
downloadCMake-6cf81efe7d95e3cf43028ef5122a814d8d7f3aa0.zip
CMake-6cf81efe7d95e3cf43028ef5122a814d8d7f3aa0.tar.gz
CMake-6cf81efe7d95e3cf43028ef5122a814d8d7f3aa0.tar.bz2
Genex: $<HOST_LINK:> and $<DEVICE_LINK:> must be usable in try_compile
Fixes: #22007
Diffstat (limited to 'Source/cmExportTryCompileFileGenerator.cxx')
-rw-r--r--Source/cmExportTryCompileFileGenerator.cxx13
1 files changed, 11 insertions, 2 deletions
diff --git a/Source/cmExportTryCompileFileGenerator.cxx b/Source/cmExportTryCompileFileGenerator.cxx
index c6b6184..cac60e1 100644
--- a/Source/cmExportTryCompileFileGenerator.cxx
+++ b/Source/cmExportTryCompileFileGenerator.cxx
@@ -3,9 +3,10 @@
#include "cmExportTryCompileFileGenerator.h"
#include <map>
-#include <memory>
#include <utility>
+#include <cm/memory>
+
#include "cmGeneratorExpression.h"
#include "cmGeneratorExpressionDAGChecker.h"
#include "cmGeneratorTarget.h"
@@ -66,7 +67,15 @@ std::string cmExportTryCompileFileGenerator::FindTargets(
cmGeneratorExpression ge;
- cmGeneratorExpressionDAGChecker dagChecker(tgt, propName, nullptr, nullptr);
+ std::unique_ptr<cmGeneratorExpressionDAGChecker> parentDagChecker;
+ if (propName == "INTERFACE_LINK_OPTIONS") {
+ // To please constraint checks of DAGChecker, this property must have
+ // LINK_OPTIONS property as parent
+ parentDagChecker = cm::make_unique<cmGeneratorExpressionDAGChecker>(
+ tgt, "LINK_OPTIONS", nullptr, nullptr);
+ }
+ cmGeneratorExpressionDAGChecker dagChecker(tgt, propName, nullptr,
+ parentDagChecker.get());
std::unique_ptr<cmCompiledGeneratorExpression> cge = ge.Parse(*prop);