[pkg-d-commits] [ldc] 90/211: Create static libs in -od directory for LDMD only

Matthias Klumpp mak at moszumanska.debian.org
Sun Apr 23 22:36:12 UTC 2017


This is an automated email from the git hooks/post-receive script.

mak pushed a commit to annotated tag v1.1.0
in repository ldc.

commit 8276269ab1afa6f16da6f243edbb6624876909c8
Author: Martin <noone at nowhere.com>
Date:   Fri Oct 14 20:56:00 2016 +0200

    Create static libs in -od directory for LDMD only
    
    Let LDC treat relative output paths as relative to the current working
    directory again (as it always used to until a few weeks ago). It's more
    intuitive and avoids breaking build systems/scripts using LDC directly.
    
    Only LDMD continues to prepend the -od directory to the relative output
    path, for DMD compatibility.
    
    Fixes issue #1819.
---
 driver/ldmd.cpp   |  5 +++++
 driver/linker.cpp | 10 +++++++++-
 2 files changed, 14 insertions(+), 1 deletion(-)

diff --git a/driver/ldmd.cpp b/driver/ldmd.cpp
index 87bfa05..e0db5bc 100644
--- a/driver/ldmd.cpp
+++ b/driver/ldmd.cpp
@@ -839,6 +839,11 @@ void buildCommandLine(std::vector<const char *> &r, const Params &p) {
   }
   if (p.objDir) {
     r.push_back(concat("-od=", p.objDir));
+
+    // DMD creates static libraries in the objects directory (unless using an
+    // absolute output path via `-of`).
+    if (p.emitStaticLib)
+      r.push_back("-create-static-lib-in-objdir");
   }
   if (p.objName) {
     r.push_back(concat("-of=", p.objName));
diff --git a/driver/linker.cpp b/driver/linker.cpp
index 2d6ab25..8eeec17 100644
--- a/driver/linker.cpp
+++ b/driver/linker.cpp
@@ -40,6 +40,12 @@ static llvm::cl::opt<bool> staticFlag(
         "Create a statically linked binary, including all system dependencies"),
     llvm::cl::ZeroOrMore);
 
+// used by LDMD
+static llvm::cl::opt<bool> createStaticLibInObjdir(
+    "create-static-lib-in-objdir",
+    llvm::cl::desc("Create static library in -od directory (DMD-compliant)"),
+    llvm::cl::ZeroOrMore, llvm::cl::ReallyHidden);
+
 //////////////////////////////////////////////////////////////////////////////
 
 static void CreateDirectoryOnDisk(llvm::StringRef fileName) {
@@ -717,8 +723,10 @@ int createStaticLibrary() {
     libName.push_back('.');
     libName.append(global.lib_ext);
   }
-  if (global.params.objdir && !FileName::absolute(libName.c_str()))
+  if (createStaticLibInObjdir && global.params.objdir &&
+      !FileName::absolute(libName.c_str())) {
     libName = FileName::combine(global.params.objdir, libName.c_str());
+  }
 
   if (isTargetMSVC) {
     args.push_back("/OUT:" + libName);

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-d/ldc.git



More information about the pkg-d-commits mailing list