Skip to content
This repository was archived by the owner on Jan 7, 2023. It is now read-only.

Commit 0e35a4a

Browse files
committed
Adding llvm10 patches
Change-Id: I25b6753e70a7192dd6604399be2f48ac5a1ea593
1 parent 595c1e3 commit 0e35a4a

10 files changed

+422
-0
lines changed

CMakeLists.txt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -226,6 +226,14 @@ if(NOT EXISTS ${LLVM_SOURCE_DIR})
226226
file(GLOB LLVM_PATCH_FILES
227227
"${CMAKE_CURRENT_SOURCE_DIR}/releases/${dirPatch}/patches_external/*.patch"
228228
)
229+
230+
if(LLVM_VERSION_MAJOR EQUAL 10)
231+
file(GLOB LLVM_PATCH_FILES_INTERNAL
232+
"${CMAKE_CURRENT_SOURCE_DIR}/releases/${dirPatch}/patches_internal/*.patch"
233+
)
234+
set(LLVM_PATCH_FILES ${LLVM_PATCH_FILES} ${LLVM_PATCH_FILES_INTERNAL})
235+
endif()
236+
229237
# Sort list of patch files.
230238
if(LLVM_PATCH_FILES)
231239
list(SORT LLVM_PATCH_FILES)
Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
From eeb816d95f0910bd246e37bb2bb3923acf0edf6b Mon Sep 17 00:00:00 2001
2+
From: Aleksander Us <[email protected]>
3+
Date: Mon, 26 Aug 2019 15:47:41 +0300
4+
Subject: [PATCH] [BasicBlockUtils] Add metadata fixing in
5+
SplitBlockPredecessors.
6+
7+
In case when BB is header of some loop and predecessor is latch of
8+
this loop, metadata was not attached to newly created basic block.
9+
This led to loss of loop metadata for other passes.
10+
---
11+
lib/Transforms/Utils/BasicBlockUtils.cpp | 23 ++++++++----
12+
test/Transforms/LoopSimplify/loop_metadata.ll | 36 +++++++++++++++++++
13+
2 files changed, 52 insertions(+), 7 deletions(-)
14+
create mode 100644 test/Transforms/LoopSimplify/loop_metadata.ll
15+
16+
diff --git a/lib/Transforms/Utils/BasicBlockUtils.cpp b/lib/Transforms/Utils/BasicBlockUtils.cpp
17+
index 5fa371377c8..3a90ae061fb 100644
18+
--- a/lib/Transforms/Utils/BasicBlockUtils.cpp
19+
+++ b/lib/Transforms/Utils/BasicBlockUtils.cpp
20+
@@ -579,24 +579,33 @@ BasicBlock *llvm::SplitBlockPredecessors(BasicBlock *BB,
21+
22+
// The new block unconditionally branches to the old block.
23+
BranchInst *BI = BranchInst::Create(BB, NewBB);
24+
+ bool IsBBHeader = LI && LI->isLoopHeader(BB);
25+
+ Loop *BBLoop = LI ? LI->getLoopFor(BB) : nullptr;
26+
// Splitting the predecessors of a loop header creates a preheader block.
27+
- if (LI && LI->isLoopHeader(BB))
28+
+ if (IsBBHeader)
29+
// Using the loop start line number prevents debuggers stepping into the
30+
// loop body for this instruction.
31+
- BI->setDebugLoc(LI->getLoopFor(BB)->getStartLoc());
32+
+ BI->setDebugLoc(BBLoop->getStartLoc());
33+
else
34+
BI->setDebugLoc(BB->getFirstNonPHIOrDbg()->getDebugLoc());
35+
36+
// Move the edges from Preds to point to NewBB instead of BB.
37+
- for (unsigned i = 0, e = Preds.size(); i != e; ++i) {
38+
+ for (BasicBlock *Pred : Preds) {
39+
+ Instruction *PI = Pred->getTerminator();
40+
// This is slightly more strict than necessary; the minimum requirement
41+
// is that there be no more than one indirectbr branching to BB. And
42+
// all BlockAddress uses would need to be updated.
43+
- assert(!isa<IndirectBrInst>(Preds[i]->getTerminator()) &&
44+
+ assert(!isa<IndirectBrInst>(PI) &&
45+
"Cannot split an edge from an IndirectBrInst");
46+
- assert(!isa<CallBrInst>(Preds[i]->getTerminator()) &&
47+
- "Cannot split an edge from a CallBrInst");
48+
- Preds[i]->getTerminator()->replaceUsesOfWith(BB, NewBB);
49+
+ assert(!isa<CallBrInst>(PI) && "Cannot split an edge from a CallBrInst");
50+
+ if (IsBBHeader && BBLoop->contains(Pred) && BBLoop->isLoopLatch(Pred)) {
51+
+ // Update loop metadata if it exists.
52+
+ if (MDNode *LoopMD = PI->getMetadata(LLVMContext::MD_loop)) {
53+
+ BI->setMetadata(LLVMContext::MD_loop, LoopMD);
54+
+ PI->setMetadata(LLVMContext::MD_loop, nullptr);
55+
+ }
56+
+ }
57+
+ PI->replaceUsesOfWith(BB, NewBB);
58+
}
59+
60+
// Insert a new PHI node into NewBB for every PHI node in BB and that new PHI
61+
diff --git a/test/Transforms/LoopSimplify/loop_metadata.ll b/test/Transforms/LoopSimplify/loop_metadata.ll
62+
new file mode 100644
63+
index 00000000000..c15c92fe3ae
64+
--- /dev/null
65+
+++ b/test/Transforms/LoopSimplify/loop_metadata.ll
66+
@@ -0,0 +1,36 @@
67+
+; RUN: opt -S -loop-simplify < %s | FileCheck %s
68+
+
69+
+; CHECK: for.cond.loopexit:
70+
+; CHECK: br label %for.cond, !llvm.loop !0
71+
+; CHECK: br i1 %cmp1, label %for.body1, label %for.cond.loopexit
72+
+
73+
+define void @foo() {
74+
+entry:
75+
+ br label %for.cond
76+
+
77+
+for.cond: ; preds = %for.cond1, %entry
78+
+ %j = phi i32 [ 0, %entry ], [ %add, %for.cond1 ]
79+
+ %cmp = icmp ult i32 %j, 8
80+
+ br i1 %cmp, label %for.body, label %for.end
81+
+
82+
+for.body: ; preds = %for.cond
83+
+ %dummy1 = add i32 1, 1
84+
+ %add = add nuw nsw i32 %j, 1
85+
+ br label %for.cond1
86+
+
87+
+for.cond1: ; preds = %for.body1, %for.body
88+
+ %i.0 = phi i32 [ 1, %for.body ], [ %inc, %for.body1 ]
89+
+ %cmp1 = icmp ult i32 %i.0, 8
90+
+ br i1 %cmp1, label %for.body1, label %for.cond, !llvm.loop !0
91+
+
92+
+for.body1: ; preds = %for.cond1
93+
+ %dummy2 = add i32 1, 1
94+
+ %inc = add nuw nsw i32 %i.0, 1
95+
+ br label %for.cond1
96+
+
97+
+for.end: ; preds = %for.cond
98+
+ ret void
99+
+}
100+
+
101+
+!0 = distinct !{!0, !1}
102+
+!1 = !{!"llvm.loop.unroll.full"}
103+
--
104+
2.18.0
105+
Lines changed: 140 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,140 @@
1+
From 35e218a886f4c066eabd18685240d55270bd5a6d Mon Sep 17 00:00:00 2001
2+
From: Aleksander Us <[email protected]>
3+
Date: Mon, 26 Aug 2019 15:45:47 +0300
4+
Subject: [PATCH] [IndVarSimplify] Do not use SCEV expander for IVCount in
5+
LFTR when possible.
6+
7+
SCEV analysis cannot properly cache instruction with poison flags
8+
(for example, add nsw outside of loop will not be reused by expander).
9+
This can lead to generating of additional instructions by SCEV expander.
10+
11+
Example IR:
12+
13+
...
14+
%maxval = add nuw nsw i32 %a1, %a2
15+
...
16+
for.body:
17+
...
18+
%cmp22 = icmp ult i32 %ivadd, %maxval
19+
br i1 %cmp22, label %for.body, label %for.end
20+
...
21+
22+
SCEV expander will generate copy of %maxval in preheader but without
23+
nuw/nsw flags. This can be avoided by explicit check that iv count
24+
value gives the same SCEV expressions as calculated by LFTR.
25+
---
26+
lib/Transforms/Scalar/IndVarSimplify.cpp | 12 +++++++++-
27+
test/Transforms/IndVarSimplify/add_nsw.ll | 23 ++++++++++++++++++++
28+
test/Transforms/IndVarSimplify/lftr-reuse.ll | 9 +++-----
29+
test/Transforms/IndVarSimplify/udiv.ll | 1 +
30+
4 files changed, 38 insertions(+), 7 deletions(-)
31+
create mode 100644 test/Transforms/IndVarSimplify/add_nsw.ll
32+
33+
diff --git a/lib/Transforms/Scalar/IndVarSimplify.cpp b/lib/Transforms/Scalar/IndVarSimplify.cpp
34+
index f9fc698a4a9..5e04dac8aa6 100644
35+
--- a/lib/Transforms/Scalar/IndVarSimplify.cpp
36+
+++ b/lib/Transforms/Scalar/IndVarSimplify.cpp
37+
@@ -2375,6 +2375,17 @@ static Value *genLoopLimit(PHINode *IndVar, BasicBlock *ExitingBB,
38+
if (UsePostInc)
39+
IVLimit = SE->getAddExpr(IVLimit, SE->getOne(IVLimit->getType()));
40+
41+
+ // If computed limit is equal to old limit then do not use SCEV expander
42+
+ // because it can lost NUW/NSW flags and create extra instructions.
43+
+ BranchInst *BI = cast<BranchInst>(ExitingBB->getTerminator());
44+
+ if (ICmpInst *Cmp = dyn_cast<ICmpInst>(BI->getOperand(0))) {
45+
+ Value *Limit = Cmp->getOperand(0);
46+
+ if (!L->isLoopInvariant(Limit))
47+
+ Limit = Cmp->getOperand(1);
48+
+ if (SE->getSCEV(Limit) == IVLimit)
49+
+ return Limit;
50+
+ }
51+
+
52+
// Expand the code for the iteration count.
53+
assert(SE->isLoopInvariant(IVLimit, L) &&
54+
"Computed iteration count is not loop invariant!");
55+
@@ -2383,7 +2394,6 @@ static Value *genLoopLimit(PHINode *IndVar, BasicBlock *ExitingBB,
56+
// SCEV expression (IVInit) for a pointer type IV value (IndVar).
57+
Type *LimitTy = ExitCount->getType()->isPointerTy() ?
58+
IndVar->getType() : ExitCount->getType();
59+
- BranchInst *BI = cast<BranchInst>(ExitingBB->getTerminator());
60+
return Rewriter.expandCodeFor(IVLimit, LimitTy, BI);
61+
}
62+
}
63+
diff --git a/test/Transforms/IndVarSimplify/add_nsw.ll b/test/Transforms/IndVarSimplify/add_nsw.ll
64+
new file mode 100644
65+
index 00000000000..abd1cbb6c51
66+
--- /dev/null
67+
+++ b/test/Transforms/IndVarSimplify/add_nsw.ll
68+
@@ -0,0 +1,23 @@
69+
+; RUN: opt -indvars -S %s | FileCheck %s
70+
+
71+
+target datalayout = "e-p:32:32-i64:64-n8:16:32"
72+
+
73+
+; CHECK: for.body.preheader:
74+
+; CHECK-NOT: add
75+
+; CHECK: for.body:
76+
+
77+
+define void @foo(i32 %a1, i32 %a2) {
78+
+entry:
79+
+ %maxval = add nuw nsw i32 %a1, %a2
80+
+ %cmp = icmp slt i32 %maxval, 1
81+
+ br i1 %cmp, label %for.end, label %for.body
82+
+
83+
+for.body: ; preds = %entry, %for.body
84+
+ %j.02 = phi i32 [ 0, %entry ], [ %add31, %for.body ]
85+
+ %add31 = add nuw nsw i32 %j.02, 1
86+
+ %cmp22 = icmp slt i32 %add31, %maxval
87+
+ br i1 %cmp22, label %for.body, label %for.end
88+
+
89+
+for.end: ; preds = %for.body
90+
+ ret void
91+
+}
92+
diff --git a/test/Transforms/IndVarSimplify/lftr-reuse.ll b/test/Transforms/IndVarSimplify/lftr-reuse.ll
93+
index 14ae9738696..509d662b767 100644
94+
--- a/test/Transforms/IndVarSimplify/lftr-reuse.ll
95+
+++ b/test/Transforms/IndVarSimplify/lftr-reuse.ll
96+
@@ -67,11 +67,9 @@ define void @expandOuterRecurrence(i32 %arg) nounwind {
97+
; CHECK-NEXT: [[CMP1:%.*]] = icmp slt i32 0, [[SUB1]]
98+
; CHECK-NEXT: br i1 [[CMP1]], label [[OUTER_PREHEADER:%.*]], label [[EXIT:%.*]]
99+
; CHECK: outer.preheader:
100+
-; CHECK-NEXT: [[TMP0:%.*]] = add i32 [[ARG]], -1
101+
; CHECK-NEXT: br label [[OUTER:%.*]]
102+
; CHECK: outer:
103+
-; CHECK-NEXT: [[INDVARS_IV:%.*]] = phi i32 [ [[TMP0]], [[OUTER_PREHEADER]] ], [ [[INDVARS_IV_NEXT:%.*]], [[OUTER_INC:%.*]] ]
104+
-; CHECK-NEXT: [[I:%.*]] = phi i32 [ [[I_INC:%.*]], [[OUTER_INC]] ], [ 0, [[OUTER_PREHEADER]] ]
105+
+; CHECK-NEXT: [[I:%.*]] = phi i32 [ [[I_INC:%.*]], [[OUTER_INC:%.*]] ], [ 0, [[OUTER_PREHEADER]] ]
106+
; CHECK-NEXT: [[SUB2:%.*]] = sub nsw i32 [[ARG]], [[I]]
107+
; CHECK-NEXT: [[SUB3:%.*]] = sub nsw i32 [[SUB2]], 1
108+
; CHECK-NEXT: [[CMP2:%.*]] = icmp slt i32 0, [[SUB3]]
109+
@@ -81,14 +79,13 @@ define void @expandOuterRecurrence(i32 %arg) nounwind {
110+
; CHECK: inner:
111+
; CHECK-NEXT: [[J:%.*]] = phi i32 [ 0, [[INNER_PH]] ], [ [[J_INC:%.*]], [[INNER]] ]
112+
; CHECK-NEXT: [[J_INC]] = add nuw nsw i32 [[J]], 1
113+
-; CHECK-NEXT: [[EXITCOND:%.*]] = icmp ne i32 [[J_INC]], [[INDVARS_IV]]
114+
+; CHECK-NEXT: [[EXITCOND:%.*]] = icmp ne i32 [[J_INC]], [[SUB3]]
115+
; CHECK-NEXT: br i1 [[EXITCOND]], label [[INNER]], label [[OUTER_INC_LOOPEXIT:%.*]]
116+
; CHECK: outer.inc.loopexit:
117+
; CHECK-NEXT: br label [[OUTER_INC]]
118+
; CHECK: outer.inc:
119+
; CHECK-NEXT: [[I_INC]] = add nuw nsw i32 [[I]], 1
120+
-; CHECK-NEXT: [[INDVARS_IV_NEXT]] = add i32 [[INDVARS_IV]], -1
121+
-; CHECK-NEXT: [[EXITCOND1:%.*]] = icmp ne i32 [[I_INC]], [[TMP0]]
122+
+; CHECK-NEXT: [[EXITCOND1:%.*]] = icmp ne i32 [[I_INC]], [[SUB1]]
123+
; CHECK-NEXT: br i1 [[EXITCOND1]], label [[OUTER]], label [[EXIT_LOOPEXIT:%.*]]
124+
; CHECK: exit.loopexit:
125+
; CHECK-NEXT: br label [[EXIT]]
126+
diff --git a/test/Transforms/IndVarSimplify/udiv.ll b/test/Transforms/IndVarSimplify/udiv.ll
127+
index b3f2c2a6a66..3530343ef4a 100644
128+
--- a/test/Transforms/IndVarSimplify/udiv.ll
129+
+++ b/test/Transforms/IndVarSimplify/udiv.ll
130+
@@ -133,6 +133,7 @@ declare i32 @printf(i8* nocapture, ...) nounwind
131+
; CHECK-LABEL: @foo(
132+
; CHECK: for.body.preheader:
133+
; CHECK-NOT: udiv
134+
+; CHECK: for.body:
135+
136+
define void @foo(double* %p, i64 %n) nounwind {
137+
entry:
138+
--
139+
2.18.0
140+
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
# Description : Fix build break for building llvm-as
2+
3+
--- a/tools/llvm-as/CMakeLists.txt
4+
+++ b/tools/llvm-as/CMakeLists.txt
5+
@@ -2,6 +2,7 @@ set(LLVM_LINK_COMPONENTS
6+
AsmParser
7+
BitWriter
8+
Core
9+
+ Demangle
10+
Support
11+
)
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
# Description : Fix build break for building llvm-link
2+
3+
--- a/tools/llvm-link/CMakeLists.txt
4+
+++ b/tools/llvm-link/CMakeLists.txt
5+
@@ -8,6 +8,7 @@ set(LLVM_LINK_COMPONENTS
6+
Support
7+
TransformUtils
8+
IPO
9+
+ Demangle
10+
)
11+
12+
add_llvm_tool(llvm-link
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
# Description : Fix build break for building opt
2+
3+
--- a/tools/opt/CMakeLists.txt
4+
+++ b/tools/opt/CMakeLists.txt
5+
@@ -9,6 +9,7 @@ set(LLVM_LINK_COMPONENTS
6+
CodeGen
7+
Core
8+
Coroutines
9+
+ Demangle
10+
IPO
11+
IRReader
12+
InstCombine
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
diff --git a/CMakeLists.txt b/CMakeLists.txt
2+
--- a/CMakeLists.txt
3+
+++ b/CMakeLists.txt
4+
@@ -244,10 +244,17 @@ This process created the file `CMakeCache.txt' and the directory `CMakeFiles'.
5+
Please delete them.")
6+
endif()
7+
8+
+SET( CMAKE_CXX_FLAGS_RELEASEINTERNAL "${CMAKE_CXX_FLAGS_RELEASE}" )
9+
+SET( CMAKE_C_FLAGS_RELEASEINTERNAL "${CMAKE_C_FLAGS_RELEASE}" )
10+
+SET( CMAKE_EXE_LINKER_FLAGS_RELEASEINTERNAL "${CMAKE_EXE_LINKER_FLAGS_RELEASE}" )
11+
+SET( CMAKE_SHARED_LINKER_FLAGS_RELEASEINTERNAL "${CMAKE_SHARED_LINKER_FLAGS_RELEASE}" )
12+
+SET( CMAKE_STATIC_LINKER_FLAGS_RELEASEINTERNAL "${CMAKE_STATIC_LINKER_FLAGS_RELEASE}" )
13+
+SET( CMAKE_MODULE_LINKER_FLAGS_RELEASEINTERNAL "${CMAKE_MODULE_LINKER_FLAGS_RELEASE}" )
14+
+
15+
string(TOUPPER "${CMAKE_BUILD_TYPE}" uppercase_CMAKE_BUILD_TYPE)
16+
17+
if (CMAKE_BUILD_TYPE AND
18+
- NOT uppercase_CMAKE_BUILD_TYPE MATCHES "^(DEBUG|RELEASE|RELWITHDEBINFO|MINSIZEREL)$")
19+
+ NOT uppercase_CMAKE_BUILD_TYPE MATCHES "^(DEBUG|RELEASE|RELEASEINTERNAL|RELWITHDEBINFO|MINSIZEREL)$")
20+
message(FATAL_ERROR "Invalid value for CMAKE_BUILD_TYPE: ${CMAKE_BUILD_TYPE}")
21+
endif()
22+
23+
@@ -842,6 +849,7 @@ if( MINGW AND NOT "${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang" )
24+
# People report that -O3 is unreliable on MinGW. The traditional
25+
# build also uses -O2 for that reason:
26+
llvm_replace_compiler_option(CMAKE_CXX_FLAGS_RELEASE "-O3" "-O2")
27+
+ llvm_replace_compiler_option(CMAKE_CXX_FLAGS_RELEASEINTERNAL "-O3" "-O2")
28+
endif()
29+
30+
# Put this before tblgen. Else we have a circular dependence.
31+
diff --git a/cmake/modules/ChooseMSVCCRT.cmake b/cmake/modules/ChooseMSVCCRT.cmake
32+
--- a/cmake/modules/ChooseMSVCCRT.cmake
33+
+++ b/cmake/modules/ChooseMSVCCRT.cmake
34+
@@ -46,8 +46,12 @@ macro(set_flag_in_var flagsvar regex flag)
35+
# Make sure this change gets reflected in the cache/gui.
36+
# CMake requires the docstring parameter whenever set() touches the cache,
37+
# so get the existing docstring and re-use that.
38+
- get_property(flagsvar_docs CACHE ${flagsvar} PROPERTY HELPSTRING)
39+
- set(${flagsvar} "${${flagsvar}}" CACHE STRING "${flagsvar_docs}" FORCE)
40+
+ if(FLUSH_TO_CACHE)
41+
+ get_property(flagsvar_docs CACHE ${flagsvar} PROPERTY HELPSTRING)
42+
+ set(${flagsvar} "${${flagsvar}}" CACHE STRING "${flagsvar_docs}" FORCE)
43+
+ else()
44+
+ set(${flagsvar} "${${flagsvar}}")
45+
+ endif()
46+
endmacro(set_flag_in_var)
47+
48+
49+
diff --git a/cmake/modules/HandleLLVMOptions.cmake b/cmake/modules/HandleLLVMOptions.cmake
50+
--- a/cmake/modules/HandleLLVMOptions.cmake
51+
+++ b/cmake/modules/HandleLLVMOptions.cmake
52+
@@ -60,9 +60,11 @@ if( LLVM_ENABLE_ASSERTIONS )
53+
# Also remove /D NDEBUG to avoid MSVC warnings about conflicting defines.
54+
foreach (flags_var_to_scrub
55+
CMAKE_CXX_FLAGS_RELEASE
56+
+ CMAKE_CXX_FLAGS_RELEASEINTERNAL
57+
CMAKE_CXX_FLAGS_RELWITHDEBINFO
58+
CMAKE_CXX_FLAGS_MINSIZEREL
59+
CMAKE_C_FLAGS_RELEASE
60+
+ CMAKE_C_FLAGS_RELEASEINTERNAL
61+
CMAKE_C_FLAGS_RELWITHDEBINFO
62+
CMAKE_C_FLAGS_MINSIZEREL)
63+
string (REGEX REPLACE "(^| )[/-]D *NDEBUG($| )" " "
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# Description : Configure file race fix
2+
# When Fixed in Open Source : Needed always
3+
diff -Naur --strip-trailing-cr a/utils/llvm-build/llvmbuild/main.py b/utils/llvm-build/llvmbuild/main.py
4+
--- a/utils/llvm-build/llvmbuild/main.py 2016-02-08 08:41:14.000000000 -0700
5+
+++ b/utils/llvm-build/llvmbuild/main.py 2018-11-16 08:35:21.030615300 -0700
6+
@@ -586,11 +586,14 @@ subdirectories = %s
7+
# FIXME: File a CMake RFE to get a properly supported version of this
8+
# feature.
9+
""")
10+
+ f.write("""file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/DummyConfigureOutput)\n""")
11+
+ import hashlib
12+
+
13+
for dep in dependencies:
14+
f.write("""\
15+
configure_file(\"%s\"
16+
- ${CMAKE_CURRENT_BINARY_DIR}/DummyConfigureOutput)\n""" % (
17+
- cmake_quote_path(dep),))
18+
+ ${CMAKE_CURRENT_BINARY_DIR}/DummyConfigureOutput/%s)\n""" % (
19+
+ cmake_quote_path(dep),hashlib.sha1(dep).hexdigest()))
20+
21+
# Write the properties we use to encode the required library dependency
22+
# information in a form CMake can easily use directly.
23+

0 commit comments

Comments
 (0)