]> git.tdb.fi Git - builder.git/blobdiff - source/copy.cpp
Make symlink a feature of the Install target rather than a target on its own
[builder.git] / source / copy.cpp
index 2c35ef30e1b1f3467421170df7f0f41525ffa318..8ea7f3537ab32d8e84aa2a3dd2731cf32ed1df1f 100644 (file)
 using namespace std;
 using namespace Msp;
 
-Copy::Copy(Builder &b, const Package &pkg, const FS::Path &s, const FS::Path &d):
+Copy::Copy(Builder &b, const Package &pkg, const FS::Path &s, const FS::Path &d, const FS::Path &l):
        InternalAction(b),
        src(s),
-       dest(d)
+       dest(d),
+       link(l)
 {
        announce(pkg.get_name(), "COPY", dest.str());
        if(builder.get_verbose()>=2)
@@ -76,5 +77,11 @@ void Copy::Worker::main()
        if(stat(copy.src.str().c_str(), &st)==0)
                chmod(copy.dest.str().c_str(), st.st_mode&0777);
 
+       if(!copy.link.empty())
+       {
+               FS::Path relpath = FS::relative(copy.dest, FS::dirname(copy.link));
+               symlink(relpath.str().c_str(), copy.link.str().c_str());
+       }
+
        done = true;
 }