[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