aboutsummaryrefslogtreecommitdiff
path: root/libbuild2/algorithm.cxx
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2020-03-10 12:11:45 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2020-03-10 12:11:45 +0200
commitd932899aa393e36f59ddc0480f2675a340f7960c (patch)
tree718c4e5a11d2f1f029138e6e9187d6143308f590 /libbuild2/algorithm.cxx
parent386c0bcda597914671dfeb4e1391f41e71465e91 (diff)
Force hard links inside backlinked DLL assembly directory
Windows does not allow the manifest file inside to be a symlink for some (probably security) reasons.
Diffstat (limited to 'libbuild2/algorithm.cxx')
-rw-r--r--libbuild2/algorithm.cxx8
1 files changed, 5 insertions, 3 deletions
diff --git a/libbuild2/algorithm.cxx b/libbuild2/algorithm.cxx
index e59ffa0..4793f0a 100644
--- a/libbuild2/algorithm.cxx
+++ b/libbuild2/algorithm.cxx
@@ -1248,9 +1248,11 @@ namespace build2
if (d)
{
// Currently, for a directory, we do a "copy-link": we make the
- // target directory and then link each entry (for now this is
+ // target directory and then link each entry. (For now this is
// only used to "link" a Windows DLL assembly with only files
- // inside).
+ // inside. We also have to use hard links; see the relevant
+ // comment in cc/link-rule for details. Maybe we can invent a
+ // special "assembly link" for this).
//
dir_path fr (path_cast<dir_path> (p));
dir_path to (path_cast<dir_path> (l));
@@ -1263,7 +1265,7 @@ namespace build2
path f (fr / de.path ());
path t (to / de.path ());
- update_backlink (ctx, f, t, mode::link, verb_never);
+ update_backlink (ctx, f, t, mode::hard, verb_never);
}
}
else