uboot: (firmwareOdroidC2/C4) don't invoke patch tool, use patches = [] instead
https://github.com/NixOS/nixpkgs/blob/master/pkgs/stdenv/generic/setup.sh#L948 this can do it nicely. Signed-off-by: Anton Arapov <anton@deadbeef.mx>
This commit is contained in:
commit
56de2bcd43
30691 changed files with 3076956 additions and 0 deletions
80
pkgs/development/compilers/llvm/8/clang/HIP-use-PATH-8.patch
Normal file
80
pkgs/development/compilers/llvm/8/clang/HIP-use-PATH-8.patch
Normal file
|
|
@ -0,0 +1,80 @@
|
|||
From d9f1b7d7571b252e0ba2359ae6cfa93a9903c0e7 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Holger=20W=C3=BCnsche?= <holger.o.wuensche@t-online.de>
|
||||
Date: Tue, 21 Jan 2020 19:49:44 +0100
|
||||
Subject: [PATCH] [HIP] use GetProgramPath for executable discovery
|
||||
|
||||
This change replaces the manual building of executable paths
|
||||
using llvm::sys::path::append with GetProgramPath.
|
||||
This enables adding other paths in case executables reside
|
||||
in different directories and makes the code easier to read.
|
||||
|
||||
Differential Revision: https://reviews.llvm.org/D72903
|
||||
---
|
||||
clang/lib/Driver/ToolChains/HIP.cpp | 23 ++++++++---------------
|
||||
1 file changed, 8 insertions(+), 15 deletions(-)
|
||||
|
||||
diff --git a/lib/Driver/ToolChains/HIP.cpp b/lang/lib/Driver/ToolChains/HIP.cpp
|
||||
index 868765cf88e..31f2d68ec6c 100644
|
||||
--- a/lib/Driver/ToolChains/HIP.cpp
|
||||
+++ b/lib/Driver/ToolChains/HIP.cpp
|
||||
@@ -104,9 +104,8 @@ const char *AMDGCN::Linker::constructLLVMLinkCommand(
|
||||
const char *OutputFileName =
|
||||
C.addTempFile(C.getArgs().MakeArgString(TmpName));
|
||||
CmdArgs.push_back(OutputFileName);
|
||||
- SmallString<128> ExecPath(C.getDriver().Dir);
|
||||
- llvm::sys::path::append(ExecPath, "llvm-link");
|
||||
- const char *Exec = Args.MakeArgString(ExecPath);
|
||||
+ const char *Exec =
|
||||
+ Args.MakeArgString(getToolChain().GetProgramPath("llvm-link"));
|
||||
C.addCommand(llvm::make_unique<Command>(JA, *this, Exec, CmdArgs, Inputs));
|
||||
return OutputFileName;
|
||||
}
|
||||
@@ -147,9 +146,8 @@ const char *AMDGCN::Linker::constructOptCommand(
|
||||
const char *OutputFileName =
|
||||
C.addTempFile(C.getArgs().MakeArgString(TmpFileName));
|
||||
OptArgs.push_back(OutputFileName);
|
||||
- SmallString<128> OptPath(C.getDriver().Dir);
|
||||
- llvm::sys::path::append(OptPath, "opt");
|
||||
- const char *OptExec = Args.MakeArgString(OptPath);
|
||||
+ const char *OptExec =
|
||||
+ Args.MakeArgString(getToolChain().GetProgramPath("opt"));
|
||||
C.addCommand(llvm::make_unique<Command>(JA, *this, OptExec, OptArgs, Inputs));
|
||||
return OutputFileName;
|
||||
}
|
||||
@@ -167,9 +165,7 @@ const char *AMDGCN::Linker::constructLlcCommand(
|
||||
const char *LlcOutputFile =
|
||||
C.addTempFile(C.getArgs().MakeArgString(LlcOutputFileName));
|
||||
LlcArgs.push_back(LlcOutputFile);
|
||||
- SmallString<128> LlcPath(C.getDriver().Dir);
|
||||
- llvm::sys::path::append(LlcPath, "llc");
|
||||
- const char *Llc = Args.MakeArgString(LlcPath);
|
||||
+ const char *Llc = Args.MakeArgString(getToolChain().GetProgramPath("llc"));
|
||||
C.addCommand(llvm::make_unique<Command>(JA, *this, Llc, LlcArgs, Inputs));
|
||||
return LlcOutputFile;
|
||||
}
|
||||
@@ -184,9 +180,7 @@ void AMDGCN::Linker::constructLldCommand(Compilation &C, const JobAction &JA,
|
||||
ArgStringList LldArgs{"-flavor", "gnu", "--no-undefined",
|
||||
"-shared", "-o", Output.getFilename(),
|
||||
InputFileName};
|
||||
- SmallString<128> LldPath(C.getDriver().Dir);
|
||||
- llvm::sys::path::append(LldPath, "lld");
|
||||
- const char *Lld = Args.MakeArgString(LldPath);
|
||||
+ const char *Lld = Args.MakeArgString(getToolChain().GetProgramPath("lld"));
|
||||
C.addCommand(llvm::make_unique<Command>(JA, *this, Lld, LldArgs, Inputs));
|
||||
}
|
||||
|
||||
@@ -218,9 +212,8 @@ void AMDGCN::constructHIPFatbinCommand(Compilation &C, const JobAction &JA,
|
||||
Args.MakeArgString(std::string("-outputs=").append(OutputFileName));
|
||||
BundlerArgs.push_back(BundlerOutputArg);
|
||||
|
||||
- SmallString<128> BundlerPath(C.getDriver().Dir);
|
||||
- llvm::sys::path::append(BundlerPath, "clang-offload-bundler");
|
||||
- const char *Bundler = Args.MakeArgString(BundlerPath);
|
||||
+ const char *Bundler = Args.MakeArgString(
|
||||
+ T.getToolChain().GetProgramPath("clang-offload-bundler"));
|
||||
C.addCommand(llvm::make_unique<Command>(JA, T, Bundler, BundlerArgs, Inputs));
|
||||
}
|
||||
|
||||
--
|
||||
2.23.1
|
||||
|
||||
|
|
@ -0,0 +1,53 @@
|
|||
Index: lib/Driver/ToolChains/BareMetal.cpp
|
||||
===================================================================
|
||||
--- a/lib/Driver/ToolChains/BareMetal.cpp
|
||||
+++ b/lib/Driver/ToolChains/BareMetal.cpp
|
||||
@@ -157,7 +157,7 @@
|
||||
void BareMetal::AddLinkRuntimeLib(const ArgList &Args,
|
||||
ArgStringList &CmdArgs) const {
|
||||
CmdArgs.push_back(Args.MakeArgString("-lclang_rt.builtins-" +
|
||||
- getTriple().getArchName() + ".a"));
|
||||
+ getTriple().getArchName()));
|
||||
}
|
||||
|
||||
void baremetal::Linker::ConstructJob(Compilation &C, const JobAction &JA,
|
||||
Index: test/Driver/baremetal.cpp
|
||||
===================================================================
|
||||
--- a/test/Driver/baremetal.cpp
|
||||
+++ b/test/Driver/baremetal.cpp
|
||||
@@ -13,7 +13,7 @@
|
||||
// CHECK-V6M-C-NEXT: "{{[^"]*}}ld{{(\.(lld|bfd|gold))?}}{{(\.exe)?}}" "{{.*}}.o" "-Bstatic"
|
||||
// CHECK-V6M-C-SAME: "-L[[RESOURCE_DIR:[^"]+]]{{[/\\]+}}lib{{[/\\]+}}baremetal"
|
||||
// CHECK-V6M-C-SAME: "-T" "semihosted.lds" "-Lsome{{[/\\]+}}directory{{[/\\]+}}user{{[/\\]+}}asked{{[/\\]+}}for"
|
||||
-// CHECK-V6M-C-SAME: "-lc" "-lm" "-lclang_rt.builtins-armv6m.a"
|
||||
+// CHECK-V6M-C-SAME: "-lc" "-lm" "-lclang_rt.builtins-armv6m"
|
||||
// CHECK-V6M-C-SAME: "-o" "{{.*}}.o"
|
||||
|
||||
// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
|
||||
@@ -35,7 +35,7 @@
|
||||
// CHECK-V6M-DEFAULTCXX: "{{[^"]*}}ld{{(\.(lld|bfd|gold))?}}{{(\.exe)?}}" "{{.*}}.o" "-Bstatic"
|
||||
// CHECK-V6M-DEFAULTCXX-SAME: "-L{{[^"]*}}{{[/\\]+}}lib{{(64)?}}{{[/\\]+}}clang{{[/\\]+}}{{.*}}{{[/\\]+}}lib{{[/\\]+}}baremetal"
|
||||
// CHECK-V6M-DEFAULTCXX-SAME: "-lc++" "-lc++abi" "-lunwind"
|
||||
-// CHECK-V6M-DEFAULTCXX-SAME: "-lc" "-lm" "-lclang_rt.builtins-armv6m.a"
|
||||
+// CHECK-V6M-DEFAULTCXX-SAME: "-lc" "-lm" "-lclang_rt.builtins-armv6m"
|
||||
// CHECK-V6M-DEFAULTCXX-SAME: "-o" "{{.*}}.o"
|
||||
|
||||
// RUN: %clangxx -no-canonical-prefixes %s -### -o %t.o 2>&1 \
|
||||
@@ -48,7 +48,7 @@
|
||||
// CHECK-V6M-LIBCXX: "{{[^"]*}}ld{{(\.(lld|bfd|gold))?}}{{(\.exe)?}}" "{{.*}}.o" "-Bstatic"
|
||||
// CHECK-V6M-LIBCXX-SAME: "-L{{[^"]*}}{{[/\\]+}}lib{{(64)?}}{{[/\\]+}}clang{{[/\\]+}}{{.*}}{{[/\\]+}}lib{{[/\\]+}}baremetal"
|
||||
// CHECK-V6M-LIBCXX-SAME: "-lc++" "-lc++abi" "-lunwind"
|
||||
-// CHECK-V6M-LIBCXX-SAME: "-lc" "-lm" "-lclang_rt.builtins-armv6m.a"
|
||||
+// CHECK-V6M-LIBCXX-SAME: "-lc" "-lm" "-lclang_rt.builtins-armv6m"
|
||||
// CHECK-V6M-LIBCXX-SAME: "-o" "{{.*}}.o"
|
||||
|
||||
// RUN: %clangxx -no-canonical-prefixes %s -### -o %t.o 2>&1 \
|
||||
@@ -61,7 +61,7 @@
|
||||
// CHECK-V6M-LIBSTDCXX: "{{[^"]*}}ld{{(\.(lld|bfd|gold))?}}{{(\.exe)?}}" "{{.*}}.o" "-Bstatic"
|
||||
// CHECK-V6M-LIBSTDCXX-SAME: "-L{{[^"]*}}{{[/\\]+}}lib{{(64)?}}{{[/\\]+}}clang{{[/\\]+}}{{.*}}{{[/\\]+}}lib{{[/\\]+}}baremetal"
|
||||
// CHECK-V6M-LIBSTDCXX-SAME: "-lstdc++" "-lsupc++" "-lunwind"
|
||||
-// CHECK-V6M-LIBSTDCXX-SAME: "-lc" "-lm" "-lclang_rt.builtins-armv6m.a"
|
||||
+// CHECK-V6M-LIBSTDCXX-SAME: "-lc" "-lm" "-lclang_rt.builtins-armv6m"
|
||||
// CHECK-V6M-LIBSTDCXX-SAME: "-o" "{{.*}}.o"
|
||||
|
||||
// RUN: %clangxx -no-canonical-prefixes %s -### -o %t.o 2>&1 \
|
||||
144
pkgs/development/compilers/llvm/8/clang/default.nix
Normal file
144
pkgs/development/compilers/llvm/8/clang/default.nix
Normal file
|
|
@ -0,0 +1,144 @@
|
|||
{ lib, stdenv, llvm_meta, fetch, substituteAll, cmake, libxml2, libllvm, version, clang-tools-extra_src, python3
|
||||
, buildLlvmTools
|
||||
, fixDarwinDylibNames
|
||||
, enableManpages ? false
|
||||
, enablePolly ? false # TODO: get this info from llvm (passthru?)
|
||||
}:
|
||||
|
||||
let
|
||||
self = stdenv.mkDerivation ({
|
||||
pname = "clang";
|
||||
inherit version;
|
||||
|
||||
src = fetch "cfe" "0ihnbdl058gvl2wdy45p5am55bq8ifx8m9mhcsgj9ax8yxlzvvvh";
|
||||
|
||||
unpackPhase = ''
|
||||
unpackFile $src
|
||||
mv cfe-${version}* clang
|
||||
sourceRoot=$PWD/clang
|
||||
unpackFile ${clang-tools-extra_src}
|
||||
mv clang-tools-extra-* $sourceRoot/tools/extra
|
||||
'';
|
||||
|
||||
nativeBuildInputs = [ cmake python3 ]
|
||||
++ lib.optional enableManpages python3.pkgs.sphinx
|
||||
++ lib.optional stdenv.hostPlatform.isDarwin fixDarwinDylibNames;
|
||||
|
||||
buildInputs = [ libxml2 libllvm ];
|
||||
|
||||
cmakeFlags = [
|
||||
"-DCMAKE_CXX_FLAGS=-std=c++11"
|
||||
"-DCLANGD_BUILD_XPC=OFF"
|
||||
"-DLLVM_ENABLE_RTTI=ON"
|
||||
] ++ lib.optionals enableManpages [
|
||||
"-DCLANG_INCLUDE_DOCS=ON"
|
||||
"-DLLVM_ENABLE_SPHINX=ON"
|
||||
"-DSPHINX_OUTPUT_MAN=ON"
|
||||
"-DSPHINX_OUTPUT_HTML=OFF"
|
||||
"-DSPHINX_WARNINGS_AS_ERRORS=OFF"
|
||||
] ++ lib.optionals (stdenv.hostPlatform != stdenv.buildPlatform) [
|
||||
"-DLLVM_TABLEGEN_EXE=${buildLlvmTools.llvm}/bin/llvm-tblgen"
|
||||
"-DCLANG_TABLEGEN=${buildLlvmTools.libclang.dev}/bin/clang-tblgen"
|
||||
] ++ lib.optionals enablePolly [
|
||||
"-DWITH_POLLY=ON"
|
||||
"-DLINK_POLLY_INTO_TOOLS=ON"
|
||||
];
|
||||
|
||||
patches = [
|
||||
./purity.patch
|
||||
./xpc.patch
|
||||
# Backport for -static-pie, which the latter touches, and which is nice in
|
||||
# its own right.
|
||||
./static-pie.patch
|
||||
# Backport for the `--unwindlib=[libgcc|compiler-rt]` flag, which is
|
||||
# needed for our bootstrapping to not interfere with C.
|
||||
./unwindlib.patch
|
||||
# https://reviews.llvm.org/D51899
|
||||
./compiler-rt-baremetal.patch
|
||||
# make clang -xhip use $PATH to find executables
|
||||
./HIP-use-PATH-8.patch
|
||||
./gnu-install-dirs.patch
|
||||
(substituteAll {
|
||||
src = ../../clang-6-10-LLVMgold-path.patch;
|
||||
libllvmLibdir = "${libllvm.lib}/lib";
|
||||
})
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
sed -i -e 's/DriverArgs.hasArg(options::OPT_nostdlibinc)/true/' \
|
||||
-e 's/Args.hasArg(options::OPT_nostdlibinc)/true/' \
|
||||
lib/Driver/ToolChains/*.cpp
|
||||
|
||||
# Patch for standalone doc building
|
||||
sed -i '1s,^,find_package(Sphinx REQUIRED)\n,' docs/CMakeLists.txt
|
||||
'' + lib.optionalString stdenv.hostPlatform.isMusl ''
|
||||
sed -i -e 's/lgcc_s/lgcc_eh/' lib/Driver/ToolChains/*.cpp
|
||||
'' + lib.optionalString stdenv.hostPlatform.isDarwin ''
|
||||
substituteInPlace tools/extra/clangd/CMakeLists.txt \
|
||||
--replace "NOT HAVE_CXX_ATOMICS64_WITHOUT_LIB" FALSE
|
||||
'';
|
||||
|
||||
outputs = [ "out" "lib" "dev" "python" ];
|
||||
|
||||
postInstall = ''
|
||||
ln -sv $out/bin/clang $out/bin/cpp
|
||||
|
||||
# Move libclang to 'lib' output
|
||||
moveToOutput "lib/libclang.*" "$lib"
|
||||
substituteInPlace $out/lib/cmake/clang/ClangTargets-release.cmake \
|
||||
--replace "\''${_IMPORT_PREFIX}/lib/libclang." "$lib/lib/libclang."
|
||||
|
||||
mkdir -p $python/bin $python/share/clang/
|
||||
mv $out/bin/{git-clang-format,scan-view} $python/bin
|
||||
if [ -e $out/bin/set-xcode-analyzer ]; then
|
||||
mv $out/bin/set-xcode-analyzer $python/bin
|
||||
fi
|
||||
mv $out/share/clang/*.py $python/share/clang
|
||||
rm $out/bin/c-index-test
|
||||
|
||||
mkdir -p $dev/bin
|
||||
cp bin/clang-tblgen $dev/bin
|
||||
'';
|
||||
|
||||
passthru = {
|
||||
isClang = true;
|
||||
inherit libllvm;
|
||||
};
|
||||
|
||||
meta = llvm_meta // {
|
||||
homepage = "https://clang.llvm.org/";
|
||||
description = "A C language family frontend for LLVM";
|
||||
longDescription = ''
|
||||
The Clang project provides a language front-end and tooling
|
||||
infrastructure for languages in the C language family (C, C++, Objective
|
||||
C/C++, OpenCL, CUDA, and RenderScript) for the LLVM project.
|
||||
It aims to deliver amazingly fast compiles, extremely useful error and
|
||||
warning messages and to provide a platform for building great source
|
||||
level tools. The Clang Static Analyzer and clang-tidy are tools that
|
||||
automatically find bugs in your code, and are great examples of the sort
|
||||
of tools that can be built using the Clang frontend as a library to
|
||||
parse C/C++ code.
|
||||
'';
|
||||
};
|
||||
} // lib.optionalAttrs enableManpages {
|
||||
pname = "clang-manpages";
|
||||
|
||||
buildPhase = ''
|
||||
make docs-clang-man
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/share/man/man1
|
||||
# Manually install clang manpage
|
||||
cp docs/man/*.1 $out/share/man/man1/
|
||||
'';
|
||||
|
||||
outputs = [ "out" ];
|
||||
|
||||
doCheck = false;
|
||||
|
||||
meta = llvm_meta // {
|
||||
description = "man page for Clang ${version}";
|
||||
};
|
||||
});
|
||||
in self
|
||||
290
pkgs/development/compilers/llvm/8/clang/gnu-install-dirs.patch
Normal file
290
pkgs/development/compilers/llvm/8/clang/gnu-install-dirs.patch
Normal file
|
|
@ -0,0 +1,290 @@
|
|||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||
index c2016a45ca6b..9224797da0b5 100644
|
||||
--- a/CMakeLists.txt
|
||||
+++ b/CMakeLists.txt
|
||||
@@ -9,6 +9,8 @@ endif()
|
||||
if( CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR )
|
||||
project(Clang)
|
||||
|
||||
+ include(GNUInstallDirs)
|
||||
+
|
||||
# Rely on llvm-config.
|
||||
set(CONFIG_OUTPUT)
|
||||
if(LLVM_CONFIG)
|
||||
@@ -382,7 +384,7 @@ include_directories(BEFORE
|
||||
|
||||
if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY)
|
||||
install(DIRECTORY include/clang include/clang-c
|
||||
- DESTINATION include
|
||||
+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
|
||||
FILES_MATCHING
|
||||
PATTERN "*.def"
|
||||
PATTERN "*.h"
|
||||
@@ -391,7 +393,7 @@ if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY)
|
||||
)
|
||||
|
||||
install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/include/clang
|
||||
- DESTINATION include
|
||||
+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
|
||||
FILES_MATCHING
|
||||
PATTERN "CMakeFiles" EXCLUDE
|
||||
PATTERN "*.inc"
|
||||
@@ -399,7 +401,7 @@ if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY)
|
||||
)
|
||||
|
||||
install(PROGRAMS utils/bash-autocomplete.sh
|
||||
- DESTINATION share/clang
|
||||
+ DESTINATION ${CMAKE_INSTALL_DATADIR}/clang
|
||||
)
|
||||
endif()
|
||||
|
||||
diff --git a/cmake/modules/AddClang.cmake b/cmake/modules/AddClang.cmake
|
||||
index 7e22f16f365b..3c0c1d245969 100644
|
||||
--- a/cmake/modules/AddClang.cmake
|
||||
+++ b/cmake/modules/AddClang.cmake
|
||||
@@ -99,9 +99,9 @@ macro(add_clang_library name)
|
||||
install(TARGETS ${name}
|
||||
COMPONENT ${name}
|
||||
${export_to_clangtargets}
|
||||
- LIBRARY DESTINATION lib${LLVM_LIBDIR_SUFFIX}
|
||||
- ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX}
|
||||
- RUNTIME DESTINATION bin)
|
||||
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}
|
||||
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}
|
||||
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
|
||||
|
||||
if (${ARG_SHARED} AND NOT CMAKE_CONFIGURATION_TYPES)
|
||||
add_llvm_install_targets(install-${name}
|
||||
@@ -142,7 +142,7 @@ macro(add_clang_tool name)
|
||||
|
||||
install(TARGETS ${name}
|
||||
${export_to_clangtargets}
|
||||
- RUNTIME DESTINATION bin
|
||||
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||
COMPONENT ${name})
|
||||
|
||||
if(NOT CMAKE_CONFIGURATION_TYPES)
|
||||
@@ -157,5 +157,5 @@ endmacro()
|
||||
macro(add_clang_symlink name dest)
|
||||
add_llvm_tool_symlink(${name} ${dest} ALWAYS_GENERATE)
|
||||
# Always generate install targets
|
||||
- llvm_install_symlink(${name} ${dest} ALWAYS_GENERATE)
|
||||
+ llvm_install_symlink(${name} ${dest} ${CMAKE_INSTALL_FULL_BINDIR} ALWAYS_GENERATE)
|
||||
endmacro()
|
||||
diff --git a/lib/Headers/CMakeLists.txt b/lib/Headers/CMakeLists.txt
|
||||
index e444c9c8706f..f8e4d06366a4 100644
|
||||
--- a/lib/Headers/CMakeLists.txt
|
||||
+++ b/lib/Headers/CMakeLists.txt
|
||||
@@ -164,19 +164,19 @@ install(
|
||||
FILES ${files} ${CMAKE_CURRENT_BINARY_DIR}/arm_neon.h
|
||||
COMPONENT clang-headers
|
||||
PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
|
||||
- DESTINATION lib${LLVM_LIBDIR_SUFFIX}/clang/${CLANG_VERSION}/include)
|
||||
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}/clang/${CLANG_VERSION}/include)
|
||||
|
||||
install(
|
||||
FILES ${files} ${CMAKE_CURRENT_BINARY_DIR}/arm_fp16.h
|
||||
COMPONENT clang-headers
|
||||
PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
|
||||
- DESTINATION lib${LLVM_LIBDIR_SUFFIX}/clang/${CLANG_VERSION}/include)
|
||||
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}/clang/${CLANG_VERSION}/include)
|
||||
|
||||
install(
|
||||
FILES ${cuda_wrapper_files}
|
||||
COMPONENT clang-headers
|
||||
PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
|
||||
- DESTINATION lib${LLVM_LIBDIR_SUFFIX}/clang/${CLANG_VERSION}/include/cuda_wrappers)
|
||||
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}/clang/${CLANG_VERSION}/include/cuda_wrappers)
|
||||
|
||||
if (NOT CMAKE_CONFIGURATION_TYPES) # don't add this for IDE's.
|
||||
add_llvm_install_targets(install-clang-headers
|
||||
diff --git a/tools/c-index-test/CMakeLists.txt b/tools/c-index-test/CMakeLists.txt
|
||||
index 53e3421f1b35..79ae5bb4c399 100644
|
||||
--- a/tools/c-index-test/CMakeLists.txt
|
||||
+++ b/tools/c-index-test/CMakeLists.txt
|
||||
@@ -54,7 +54,7 @@ if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY)
|
||||
set_property(TARGET c-index-test APPEND PROPERTY INSTALL_RPATH
|
||||
"@executable_path/../../lib")
|
||||
else()
|
||||
- set(INSTALL_DESTINATION bin)
|
||||
+ set(INSTALL_DESTINATION ${CMAKE_INSTALL_BINDIR})
|
||||
endif()
|
||||
|
||||
install(TARGETS c-index-test
|
||||
diff --git a/tools/clang-check/CMakeLists.txt b/tools/clang-check/CMakeLists.txt
|
||||
index b837b0a0a5d9..9e30bd5780a5 100644
|
||||
--- a/tools/clang-check/CMakeLists.txt
|
||||
+++ b/tools/clang-check/CMakeLists.txt
|
||||
@@ -21,4 +21,4 @@ target_link_libraries(clang-check
|
||||
)
|
||||
|
||||
install(TARGETS clang-check
|
||||
- RUNTIME DESTINATION bin)
|
||||
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
|
||||
diff --git a/tools/clang-extdef-mapping/CMakeLists.txt b/tools/clang-extdef-mapping/CMakeLists.txt
|
||||
index 6c81689a831a..dacc14737719 100644
|
||||
--- a/tools/clang-extdef-mapping/CMakeLists.txt
|
||||
+++ b/tools/clang-extdef-mapping/CMakeLists.txt
|
||||
@@ -18,4 +18,4 @@ target_link_libraries(clang-extdef-mapping
|
||||
)
|
||||
|
||||
install(TARGETS clang-extdef-mapping
|
||||
- RUNTIME DESTINATION bin)
|
||||
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
|
||||
diff --git a/tools/clang-format/CMakeLists.txt b/tools/clang-format/CMakeLists.txt
|
||||
index a295e8cd0b2a..1973ff82c7f6 100644
|
||||
--- a/tools/clang-format/CMakeLists.txt
|
||||
+++ b/tools/clang-format/CMakeLists.txt
|
||||
@@ -21,20 +21,20 @@ if( LLVM_LIB_FUZZING_ENGINE OR LLVM_USE_SANITIZE_COVERAGE )
|
||||
endif()
|
||||
|
||||
install(PROGRAMS clang-format-bbedit.applescript
|
||||
- DESTINATION share/clang
|
||||
+ DESTINATION ${CMAKE_INSTALL_DATADIR}/clang
|
||||
COMPONENT clang-format)
|
||||
install(PROGRAMS clang-format-diff.py
|
||||
- DESTINATION share/clang
|
||||
+ DESTINATION ${CMAKE_INSTALL_DATADIR}/clang
|
||||
COMPONENT clang-format)
|
||||
install(PROGRAMS clang-format-sublime.py
|
||||
- DESTINATION share/clang
|
||||
+ DESTINATION ${CMAKE_INSTALL_DATADIR}/clang
|
||||
COMPONENT clang-format)
|
||||
install(PROGRAMS clang-format.el
|
||||
- DESTINATION share/clang
|
||||
+ DESTINATION ${CMAKE_INSTALL_DATADIR}/clang
|
||||
COMPONENT clang-format)
|
||||
install(PROGRAMS clang-format.py
|
||||
- DESTINATION share/clang
|
||||
+ DESTINATION ${CMAKE_INSTALL_DATADIR}/clang
|
||||
COMPONENT clang-format)
|
||||
install(PROGRAMS git-clang-format
|
||||
- DESTINATION bin
|
||||
+ DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||
COMPONENT clang-format)
|
||||
diff --git a/tools/clang-offload-bundler/CMakeLists.txt b/tools/clang-offload-bundler/CMakeLists.txt
|
||||
index 8718015be76a..7a038f39622e 100644
|
||||
--- a/tools/clang-offload-bundler/CMakeLists.txt
|
||||
+++ b/tools/clang-offload-bundler/CMakeLists.txt
|
||||
@@ -22,4 +22,4 @@ target_link_libraries(clang-offload-bundler
|
||||
${CLANG_OFFLOAD_BUNDLER_LIB_DEPS}
|
||||
)
|
||||
|
||||
-install(TARGETS clang-offload-bundler RUNTIME DESTINATION bin)
|
||||
+install(TARGETS clang-offload-bundler RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
|
||||
diff --git a/tools/clang-rename/CMakeLists.txt b/tools/clang-rename/CMakeLists.txt
|
||||
index 45cbd763425c..f534e022024a 100644
|
||||
--- a/tools/clang-rename/CMakeLists.txt
|
||||
+++ b/tools/clang-rename/CMakeLists.txt
|
||||
@@ -19,8 +19,8 @@ target_link_libraries(clang-rename
|
||||
)
|
||||
|
||||
install(PROGRAMS clang-rename.py
|
||||
- DESTINATION share/clang
|
||||
+ DESTINATION ${CMAKE_INSTALL_DATADIR}/clang
|
||||
COMPONENT clang-rename)
|
||||
install(PROGRAMS clang-rename.el
|
||||
- DESTINATION share/clang
|
||||
+ DESTINATION ${CMAKE_INSTALL_DATADIR}/clang
|
||||
COMPONENT clang-rename)
|
||||
diff --git a/tools/diagtool/CMakeLists.txt b/tools/diagtool/CMakeLists.txt
|
||||
index 96d1c390249c..41c762b37b76 100644
|
||||
--- a/tools/diagtool/CMakeLists.txt
|
||||
+++ b/tools/diagtool/CMakeLists.txt
|
||||
@@ -21,7 +21,7 @@ target_link_libraries(diagtool
|
||||
if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY)
|
||||
install(TARGETS diagtool
|
||||
COMPONENT diagtool
|
||||
- RUNTIME DESTINATION bin)
|
||||
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
|
||||
|
||||
if (NOT CMAKE_CONFIGURATION_TYPES)
|
||||
add_llvm_install_targets(install-diagtool
|
||||
diff --git a/tools/libclang/CMakeLists.txt b/tools/libclang/CMakeLists.txt
|
||||
index 32333b011ad1..258dfb2d520c 100644
|
||||
--- a/tools/libclang/CMakeLists.txt
|
||||
+++ b/tools/libclang/CMakeLists.txt
|
||||
@@ -131,7 +131,7 @@ endif()
|
||||
if(INTERNAL_INSTALL_PREFIX)
|
||||
set(LIBCLANG_HEADERS_INSTALL_DESTINATION "${INTERNAL_INSTALL_PREFIX}/include")
|
||||
else()
|
||||
- set(LIBCLANG_HEADERS_INSTALL_DESTINATION include)
|
||||
+ set(LIBCLANG_HEADERS_INSTALL_DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
|
||||
endif()
|
||||
|
||||
install(DIRECTORY ../../include/clang-c
|
||||
@@ -162,7 +162,7 @@ foreach(PythonVersion ${CLANG_PYTHON_BINDINGS_VERSIONS})
|
||||
COMPONENT
|
||||
libclang-python-bindings
|
||||
DESTINATION
|
||||
- "lib${LLVM_LIBDIR_SUFFIX}/python${PythonVersion}/site-packages")
|
||||
+ "${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}/python${PythonVersion}/site-packages")
|
||||
endforeach()
|
||||
if(NOT CMAKE_CONFIGURATION_TYPES)
|
||||
add_custom_target(libclang-python-bindings)
|
||||
diff --git a/tools/scan-build/CMakeLists.txt b/tools/scan-build/CMakeLists.txt
|
||||
index 380379300b09..adfd58ed5f7d 100644
|
||||
--- a/tools/scan-build/CMakeLists.txt
|
||||
+++ b/tools/scan-build/CMakeLists.txt
|
||||
@@ -41,7 +41,7 @@ if(CLANG_INSTALL_SCANBUILD)
|
||||
${CMAKE_BINARY_DIR}/bin/
|
||||
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/bin/${BinFile})
|
||||
list(APPEND Depends ${CMAKE_BINARY_DIR}/bin/${BinFile})
|
||||
- install(PROGRAMS bin/${BinFile} DESTINATION bin)
|
||||
+ install(PROGRAMS bin/${BinFile} DESTINATION ${CMAKE_INSTALL_BINDIR})
|
||||
endforeach()
|
||||
|
||||
foreach(LibexecFile ${LibexecFiles})
|
||||
@@ -53,7 +53,7 @@ if(CLANG_INSTALL_SCANBUILD)
|
||||
${CMAKE_BINARY_DIR}/libexec/
|
||||
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/libexec/${LibexecFile})
|
||||
list(APPEND Depends ${CMAKE_BINARY_DIR}/libexec/${LibexecFile})
|
||||
- install(PROGRAMS libexec/${LibexecFile} DESTINATION libexec)
|
||||
+ install(PROGRAMS libexec/${LibexecFile} DESTINATION ${CMAKE_INSTALL_LIBEXECDIR})
|
||||
endforeach()
|
||||
|
||||
foreach(ManPage ${ManPages})
|
||||
@@ -77,7 +77,7 @@ if(CLANG_INSTALL_SCANBUILD)
|
||||
${CMAKE_BINARY_DIR}/share/scan-build/
|
||||
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/share/scan-build/${ShareFile})
|
||||
list(APPEND Depends ${CMAKE_BINARY_DIR}/share/scan-build/${ShareFile})
|
||||
- install(FILES share/scan-build/${ShareFile} DESTINATION share/scan-build)
|
||||
+ install(FILES share/scan-build/${ShareFile} DESTINATION ${CMAKE_INSTALL_DATADIR}/scan-build)
|
||||
endforeach()
|
||||
|
||||
add_custom_target(scan-build ALL DEPENDS ${Depends})
|
||||
diff --git a/tools/scan-view/CMakeLists.txt b/tools/scan-view/CMakeLists.txt
|
||||
index b305ca562a72..554bcb379061 100644
|
||||
--- a/tools/scan-view/CMakeLists.txt
|
||||
+++ b/tools/scan-view/CMakeLists.txt
|
||||
@@ -21,7 +21,7 @@ if(CLANG_INSTALL_SCANVIEW)
|
||||
${CMAKE_BINARY_DIR}/bin/
|
||||
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/bin/${BinFile})
|
||||
list(APPEND Depends ${CMAKE_BINARY_DIR}/bin/${BinFile})
|
||||
- install(PROGRAMS bin/${BinFile} DESTINATION bin)
|
||||
+ install(PROGRAMS bin/${BinFile} DESTINATION ${CMAKE_INSTALL_BINDIR})
|
||||
endforeach()
|
||||
|
||||
foreach(ShareFile ${ShareFiles})
|
||||
@@ -33,7 +33,7 @@ if(CLANG_INSTALL_SCANVIEW)
|
||||
${CMAKE_BINARY_DIR}/share/scan-view/
|
||||
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/share/${ShareFile})
|
||||
list(APPEND Depends ${CMAKE_BINARY_DIR}/share/scan-view/${ShareFile})
|
||||
- install(FILES share/${ShareFile} DESTINATION share/scan-view)
|
||||
+ install(FILES share/${ShareFile} DESTINATION ${CMAKE_INSTALL_DATADIR}/scan-view)
|
||||
endforeach()
|
||||
|
||||
add_custom_target(scan-view ALL DEPENDS ${Depends})
|
||||
diff --git a/utils/hmaptool/CMakeLists.txt b/utils/hmaptool/CMakeLists.txt
|
||||
index 5573009d343a..24b3a90f233f 100644
|
||||
--- a/utils/hmaptool/CMakeLists.txt
|
||||
+++ b/utils/hmaptool/CMakeLists.txt
|
||||
@@ -9,7 +9,7 @@ add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/bin/${CLANG_HM
|
||||
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${CLANG_HMAPTOOL})
|
||||
|
||||
list(APPEND Depends ${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/bin/${CLANG_HMAPTOOL})
|
||||
-install(PROGRAMS ${CLANG_HMAPTOOL} DESTINATION bin)
|
||||
+install(PROGRAMS ${CLANG_HMAPTOOL} DESTINATION ${CMAKE_INSTALL_BINDIR})
|
||||
|
||||
add_custom_target(hmaptool ALL DEPENDS ${Depends})
|
||||
set_target_properties(hmaptool PROPERTIES FOLDER "Utils")
|
||||
30
pkgs/development/compilers/llvm/8/clang/purity.patch
Normal file
30
pkgs/development/compilers/llvm/8/clang/purity.patch
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
From 4add81bba40dcec62c4ea4481be8e35ac53e89d8 Mon Sep 17 00:00:00 2001
|
||||
From: Will Dietz <w@wdtz.org>
|
||||
Date: Thu, 18 May 2017 11:56:12 -0500
|
||||
Subject: [PATCH] "purity" patch for 5.0
|
||||
|
||||
---
|
||||
lib/Driver/ToolChains/Gnu.cpp | 7 -------
|
||||
1 file changed, 7 deletions(-)
|
||||
|
||||
diff --git a/lib/Driver/ToolChains/Gnu.cpp b/lib/Driver/ToolChains/Gnu.cpp
|
||||
index fe3c0191bb..c6a482bece 100644
|
||||
--- a/lib/Driver/ToolChains/Gnu.cpp
|
||||
+++ b/lib/Driver/ToolChains/Gnu.cpp
|
||||
@@ -494,13 +494,6 @@ void tools::gnutools::Linker::ConstructJob(Compilation &C, const JobAction &JA,
|
||||
if (!Args.hasArg(options::OPT_static)) {
|
||||
if (Args.hasArg(options::OPT_rdynamic))
|
||||
CmdArgs.push_back("-export-dynamic");
|
||||
-
|
||||
- if (!Args.hasArg(options::OPT_shared)) {
|
||||
- const std::string Loader =
|
||||
- D.DyldPrefix + ToolChain.getDynamicLinker(Args);
|
||||
- CmdArgs.push_back("-dynamic-linker");
|
||||
- CmdArgs.push_back(Args.MakeArgString(Loader));
|
||||
- }
|
||||
}
|
||||
|
||||
CmdArgs.push_back("-o");
|
||||
--
|
||||
2.11.0
|
||||
|
||||
157
pkgs/development/compilers/llvm/8/clang/static-pie.patch
Normal file
157
pkgs/development/compilers/llvm/8/clang/static-pie.patch
Normal file
|
|
@ -0,0 +1,157 @@
|
|||
commit 7a9842bc92921e79b84630045276861be90b2d47
|
||||
Author: Siva Chandra <sivachandra@google.com>
|
||||
Date: Wed Feb 20 19:07:04 2019 +0000
|
||||
|
||||
[Clang Driver] Add support for "-static-pie" argument to the Clang driver.
|
||||
|
||||
Summary: This change mimics GCC's support for the "-static-pie" argument.
|
||||
|
||||
Subscribers: cfe-commits
|
||||
|
||||
Tags: #clang
|
||||
|
||||
Differential Revision: https://reviews.llvm.org/D58307
|
||||
|
||||
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@354502 91177308-0d34-0410-b5e6-96231b3b80d8
|
||||
(cherry picked from commit 7d6cd7825e6883f8650e32b07f3750824c2cef62)
|
||||
|
||||
diff --git a/include/clang/Driver/Options.td b/include/clang/Driver/Options.td
|
||||
index d02d9744d7..75a21e66c7 100644
|
||||
--- a/include/clang/Driver/Options.td
|
||||
+++ b/include/clang/Driver/Options.td
|
||||
@@ -2502,6 +2502,7 @@ def pthread : Flag<["-"], "pthread">, Flags<[CC1Option]>,
|
||||
def no_pthread : Flag<["-"], "no-pthread">, Flags<[CC1Option]>;
|
||||
def p : Flag<["-"], "p">;
|
||||
def pie : Flag<["-"], "pie">;
|
||||
+def static_pie : Flag<["-"], "static-pie">;
|
||||
def read__only__relocs : Separate<["-"], "read_only_relocs">;
|
||||
def remap : Flag<["-"], "remap">;
|
||||
def rewrite_objc : Flag<["-"], "rewrite-objc">, Flags<[DriverOption,CC1Option]>,
|
||||
diff --git a/lib/Driver/ToolChains/CommonArgs.cpp b/lib/Driver/ToolChains/CommonArgs.cpp
|
||||
index d7e316befa..85ffc1618d 100644
|
||||
--- a/lib/Driver/ToolChains/CommonArgs.cpp
|
||||
+++ b/lib/Driver/ToolChains/CommonArgs.cpp
|
||||
@@ -1138,19 +1138,22 @@ static void AddLibgcc(const llvm::Triple &Triple, const Driver &D,
|
||||
bool isCygMing = Triple.isOSCygMing();
|
||||
bool IsIAMCU = Triple.isOSIAMCU();
|
||||
bool StaticLibgcc = Args.hasArg(options::OPT_static_libgcc) ||
|
||||
- Args.hasArg(options::OPT_static);
|
||||
+ Args.hasArg(options::OPT_static) ||
|
||||
+ Args.hasArg(options::OPT_static_pie);
|
||||
|
||||
bool SharedLibgcc = Args.hasArg(options::OPT_shared_libgcc);
|
||||
bool UnspecifiedLibgcc = !StaticLibgcc && !SharedLibgcc;
|
||||
|
||||
// Gcc adds libgcc arguments in various ways:
|
||||
//
|
||||
- // gcc <none>: -lgcc --as-needed -lgcc_s --no-as-needed
|
||||
- // g++ <none>: -lgcc_s -lgcc
|
||||
- // gcc shared: -lgcc_s -lgcc
|
||||
- // g++ shared: -lgcc_s -lgcc
|
||||
- // gcc static: -lgcc -lgcc_eh
|
||||
- // g++ static: -lgcc -lgcc_eh
|
||||
+ // gcc <none>: -lgcc --as-needed -lgcc_s --no-as-needed
|
||||
+ // g++ <none>: -lgcc_s -lgcc
|
||||
+ // gcc shared: -lgcc_s -lgcc
|
||||
+ // g++ shared: -lgcc_s -lgcc
|
||||
+ // gcc static: -lgcc -lgcc_eh
|
||||
+ // g++ static: -lgcc -lgcc_eh
|
||||
+ // gcc static-pie: -lgcc -lgcc_eh
|
||||
+ // g++ static-pie: -lgcc -lgcc_eh
|
||||
//
|
||||
// Also, certain targets need additional adjustments.
|
||||
|
||||
diff --git a/lib/Driver/ToolChains/Gnu.cpp b/lib/Driver/ToolChains/Gnu.cpp
|
||||
index 69dba8fec8..0faa0bb473 100644
|
||||
--- a/lib/Driver/ToolChains/Gnu.cpp
|
||||
+++ b/lib/Driver/ToolChains/Gnu.cpp
|
||||
@@ -334,6 +334,7 @@ void tools::gnutools::Linker::ConstructJob(Compilation &C, const JobAction &JA,
|
||||
const bool isAndroid = ToolChain.getTriple().isAndroid();
|
||||
const bool IsIAMCU = ToolChain.getTriple().isOSIAMCU();
|
||||
const bool IsPIE = getPIE(Args, ToolChain);
|
||||
+ const bool IsStaticPIE = Args.hasArg(options::OPT_static_pie);
|
||||
const bool HasCRTBeginEndFiles =
|
||||
ToolChain.getTriple().hasEnvironment() ||
|
||||
(ToolChain.getTriple().getVendor() != llvm::Triple::MipsTechnologies);
|
||||
@@ -354,6 +355,12 @@ void tools::gnutools::Linker::ConstructJob(Compilation &C, const JobAction &JA,
|
||||
if (IsPIE)
|
||||
CmdArgs.push_back("-pie");
|
||||
|
||||
+ if (IsStaticPIE) {
|
||||
+ CmdArgs.push_back("-static");
|
||||
+ CmdArgs.push_back("-pie");
|
||||
+ CmdArgs.push_back("--no-dynamic-linker");
|
||||
+ }
|
||||
+
|
||||
if (Args.hasArg(options::OPT_rdynamic))
|
||||
CmdArgs.push_back("-export-dynamic");
|
||||
|
||||
@@ -415,6 +422,8 @@ void tools::gnutools::Linker::ConstructJob(Compilation &C, const JobAction &JA,
|
||||
crt1 = "gcrt1.o";
|
||||
else if (IsPIE)
|
||||
crt1 = "Scrt1.o";
|
||||
+ else if (IsStaticPIE)
|
||||
+ crt1 = "rcrt1.o";
|
||||
else
|
||||
crt1 = "crt1.o";
|
||||
}
|
||||
@@ -432,7 +441,7 @@ void tools::gnutools::Linker::ConstructJob(Compilation &C, const JobAction &JA,
|
||||
crtbegin = isAndroid ? "crtbegin_static.o" : "crtbeginT.o";
|
||||
else if (Args.hasArg(options::OPT_shared))
|
||||
crtbegin = isAndroid ? "crtbegin_so.o" : "crtbeginS.o";
|
||||
- else if (IsPIE)
|
||||
+ else if (IsPIE || IsStaticPIE)
|
||||
crtbegin = isAndroid ? "crtbegin_dynamic.o" : "crtbeginS.o";
|
||||
else
|
||||
crtbegin = isAndroid ? "crtbegin_dynamic.o" : "crtbegin.o";
|
||||
@@ -483,7 +492,7 @@ void tools::gnutools::Linker::ConstructJob(Compilation &C, const JobAction &JA,
|
||||
|
||||
if (!Args.hasArg(options::OPT_nostdlib)) {
|
||||
if (!Args.hasArg(options::OPT_nodefaultlibs)) {
|
||||
- if (Args.hasArg(options::OPT_static))
|
||||
+ if (Args.hasArg(options::OPT_static) || IsStaticPIE)
|
||||
CmdArgs.push_back("--start-group");
|
||||
|
||||
if (NeedsSanitizerDeps)
|
||||
@@ -518,7 +527,7 @@ void tools::gnutools::Linker::ConstructJob(Compilation &C, const JobAction &JA,
|
||||
if (IsIAMCU)
|
||||
CmdArgs.push_back("-lgloss");
|
||||
|
||||
- if (Args.hasArg(options::OPT_static))
|
||||
+ if (Args.hasArg(options::OPT_static) || IsStaticPIE)
|
||||
CmdArgs.push_back("--end-group");
|
||||
else
|
||||
AddRunTimeLibs(ToolChain, D, CmdArgs, Args);
|
||||
@@ -535,7 +544,7 @@ void tools::gnutools::Linker::ConstructJob(Compilation &C, const JobAction &JA,
|
||||
const char *crtend;
|
||||
if (Args.hasArg(options::OPT_shared))
|
||||
crtend = isAndroid ? "crtend_so.o" : "crtendS.o";
|
||||
- else if (IsPIE)
|
||||
+ else if (IsPIE || IsStaticPIE)
|
||||
crtend = isAndroid ? "crtend_android.o" : "crtendS.o";
|
||||
else
|
||||
crtend = isAndroid ? "crtend_android.o" : "crtend.o";
|
||||
diff --git a/test/Driver/linux-ld.c b/test/Driver/linux-ld.c
|
||||
index 3ab81be490..800f782523 100644
|
||||
--- a/test/Driver/linux-ld.c
|
||||
+++ b/test/Driver/linux-ld.c
|
||||
@@ -176,6 +176,19 @@
|
||||
// CHECK-CLANG-NO-LIBGCC-STATIC: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
|
||||
// CHECK-CLANG-NO-LIBGCC-STATIC: "--start-group" "-lgcc" "-lgcc_eh" "-lc" "--end-group"
|
||||
//
|
||||
+// RUN: %clang -static-pie -no-canonical-prefixes %s -### -o %t.o 2>&1 \
|
||||
+// RUN: --target=x86_64-unknown-linux -rtlib=platform \
|
||||
+// RUN: --gcc-toolchain="" \
|
||||
+// RUN: --sysroot=%S/Inputs/basic_linux_tree \
|
||||
+// RUN: | FileCheck --check-prefix=CHECK-CLANG-LD-STATIC-PIE %s
|
||||
+// CHECK-CLANG-LD-STATIC-PIE: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
|
||||
+// CHECK-CLANG-LD-STATIC-PIE: "-static"
|
||||
+// CHECK-CLANG-LD-STATIC-PIE: "-pie"
|
||||
+// CHECK-CLANG-LD-STATIC-PIE: "--no-dynamic-linker"
|
||||
+// CHECK-CLANG-LD-STATIC-PIE: "-m" "elf_x86_64"
|
||||
+// CHECK-CLANG-LD-STATIC-PIE: "{{.*}}rcrt1.o"
|
||||
+// CHECK-CLANG-LD-STATIC-PIE: "--start-group" "-lgcc" "-lgcc_eh" "-lc" "--end-group"
|
||||
+//
|
||||
// RUN: %clang -dynamic -no-canonical-prefixes %s -### -o %t.o 2>&1 \
|
||||
// RUN: --target=x86_64-unknown-linux -rtlib=platform \
|
||||
// RUN: --gcc-toolchain="" \
|
||||
372
pkgs/development/compilers/llvm/8/clang/unwindlib.patch
Normal file
372
pkgs/development/compilers/llvm/8/clang/unwindlib.patch
Normal file
|
|
@ -0,0 +1,372 @@
|
|||
commit cd5603a4767277a29d3e67a9c3f2a5d2129cd973
|
||||
Author: Sterling Augustine <saugustine@google.com>
|
||||
Date: Tue Mar 19 20:01:59 2019 +0000
|
||||
|
||||
Add --unwindlib=[libgcc|compiler-rt] to parallel --rtlib= [take 2]
|
||||
|
||||
"clang++ hello.cc --rtlib=compiler-rt"
|
||||
|
||||
now can works without specifying additional unwind or exception
|
||||
handling libraries.
|
||||
|
||||
This reworked version of the feature no longer modifies today's default
|
||||
unwind library for compiler-rt: which is nothing. Rather, a user
|
||||
can specify -DCLANG_DEFAULT_UNWINDLIB=libunwind when configuring
|
||||
the compiler.
|
||||
|
||||
This should address the issues from the previous version.
|
||||
|
||||
Update tests for new --unwindlib semantics.
|
||||
|
||||
Differential Revision: https://reviews.llvm.org/D59109
|
||||
|
||||
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@356508 91177308-0d34-0410-b5e6-96231b3b80d8
|
||||
(cherry picked from commit 344aa82a52f2fae527f58284567ae305a314f7a8)
|
||||
|
||||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||
index c2016a45ca..edeb2b66a1 100644
|
||||
--- a/CMakeLists.txt
|
||||
+++ b/CMakeLists.txt
|
||||
@@ -261,6 +261,24 @@ if (NOT(CLANG_DEFAULT_RTLIB STREQUAL "" OR
|
||||
"Default runtime library to use (\"libgcc\" or \"compiler-rt\", empty for platform default)" FORCE)
|
||||
endif()
|
||||
|
||||
+set(CLANG_DEFAULT_UNWINDLIB "" CACHE STRING
|
||||
+ "Default unwind library to use (\"none\" \"libgcc\" or \"libunwind\", empty to match runtime library.)")
|
||||
+if (CLANG_DEFAULT_UNWINDLIB STREQUAL "")
|
||||
+ if (CLANG_DEFAULT_RTLIB STREQUAL "libgcc")
|
||||
+ set (CLANG_DEFAULT_UNWINDLIB "libgcc" CACHE STRING "" FORCE)
|
||||
+ elseif (CLANG_DEFAULT_RTLIBS STREQUAL "libunwind")
|
||||
+ set (CLANG_DEFAULT_UNWINDLIB "none" CACHE STRING "" FORCE)
|
||||
+ endif()
|
||||
+endif()
|
||||
+
|
||||
+if (NOT(CLANG_DEFAULT_UNWINDLIB STREQUAL "none" OR
|
||||
+ CLANG_DEFAULT_UNWINDLIB STREQUAL "libgcc" OR
|
||||
+ CLANG_DEFAULT_UNWINDLIB STREQUAL "libunwind"))
|
||||
+ message(WARNING "Resetting default unwindlib to use platform default")
|
||||
+ set(CLANG_DEFAULT_UNWINDLIB "" CACHE STRING
|
||||
+ "Default unwind library to use (\"none\" \"libgcc\" or \"libunwind\", empty for none)" FORCE)
|
||||
+endif()
|
||||
+
|
||||
set(CLANG_DEFAULT_OBJCOPY "objcopy" CACHE STRING
|
||||
"Default objcopy executable to use.")
|
||||
|
||||
diff --git a/include/clang/Basic/DiagnosticDriverKinds.td b/include/clang/Basic/DiagnosticDriverKinds.td
|
||||
index 5475e28ed7..15971210e4 100644
|
||||
--- a/include/clang/Basic/DiagnosticDriverKinds.td
|
||||
+++ b/include/clang/Basic/DiagnosticDriverKinds.td
|
||||
@@ -52,6 +52,10 @@ def err_drv_invalid_rtlib_name : Error<
|
||||
"invalid runtime library name in argument '%0'">;
|
||||
def err_drv_unsupported_rtlib_for_platform : Error<
|
||||
"unsupported runtime library '%0' for platform '%1'">;
|
||||
+def err_drv_invalid_unwindlib_name : Error<
|
||||
+ "invalid unwind library name in argument '%0'">;
|
||||
+def err_drv_incompatible_unwindlib : Error<
|
||||
+ "--rtlib=libgcc requires --unwindlib=libgcc">;
|
||||
def err_drv_invalid_stdlib_name : Error<
|
||||
"invalid library name in argument '%0'">;
|
||||
def err_drv_invalid_output_with_multiple_archs : Error<
|
||||
diff --git a/include/clang/Config/config.h.cmake b/include/clang/Config/config.h.cmake
|
||||
index 1d624450b9..2d4cb747e8 100644
|
||||
--- a/include/clang/Config/config.h.cmake
|
||||
+++ b/include/clang/Config/config.h.cmake
|
||||
@@ -23,6 +23,9 @@
|
||||
/* Default runtime library to use. */
|
||||
#define CLANG_DEFAULT_RTLIB "${CLANG_DEFAULT_RTLIB}"
|
||||
|
||||
+/* Default unwind library to use. */
|
||||
+#define CLANG_DEFAULT_UNWINDLIB "${CLANG_DEFAULT_UNWINDLIB}"
|
||||
+
|
||||
/* Default objcopy to use */
|
||||
#define CLANG_DEFAULT_OBJCOPY "${CLANG_DEFAULT_OBJCOPY}"
|
||||
|
||||
diff --git a/include/clang/Driver/Options.td b/include/clang/Driver/Options.td
|
||||
index 75a21e66c7..4da0e54965 100644
|
||||
--- a/include/clang/Driver/Options.td
|
||||
+++ b/include/clang/Driver/Options.td
|
||||
@@ -2570,6 +2570,8 @@ def std_EQ : Joined<["-", "--"], "std=">, Flags<[CC1Option]>,
|
||||
}]>;
|
||||
def stdlib_EQ : Joined<["-", "--"], "stdlib=">, Flags<[CC1Option]>,
|
||||
HelpText<"C++ standard library to use">, Values<"libc++,libstdc++,platform">;
|
||||
+def unwindlib_EQ : Joined<["-", "--"], "unwindlib=">, Flags<[CC1Option]>,
|
||||
+ HelpText<"Unwind library to use">, Values<"libgcc,unwindlib,platform">;
|
||||
def sub__library : JoinedOrSeparate<["-"], "sub_library">;
|
||||
def sub__umbrella : JoinedOrSeparate<["-"], "sub_umbrella">;
|
||||
def system_header_prefix : Joined<["--"], "system-header-prefix=">,
|
||||
diff --git a/include/clang/Driver/ToolChain.h b/include/clang/Driver/ToolChain.h
|
||||
index d5f75b8271..4bedf760eb 100644
|
||||
--- a/include/clang/Driver/ToolChain.h
|
||||
+++ b/include/clang/Driver/ToolChain.h
|
||||
@@ -100,6 +100,12 @@ public:
|
||||
RLT_Libgcc
|
||||
};
|
||||
|
||||
+ enum UnwindLibType {
|
||||
+ UNW_None,
|
||||
+ UNW_CompilerRT,
|
||||
+ UNW_Libgcc
|
||||
+ };
|
||||
+
|
||||
enum RTTIMode {
|
||||
RM_Enabled,
|
||||
RM_Disabled,
|
||||
@@ -368,6 +374,10 @@ public:
|
||||
return ToolChain::CST_Libstdcxx;
|
||||
}
|
||||
|
||||
+ virtual UnwindLibType GetDefaultUnwindLibType() const {
|
||||
+ return ToolChain::UNW_None;
|
||||
+ }
|
||||
+
|
||||
virtual std::string getCompilerRTPath() const;
|
||||
|
||||
virtual std::string getCompilerRT(const llvm::opt::ArgList &Args,
|
||||
@@ -512,6 +522,10 @@ public:
|
||||
// given compilation arguments.
|
||||
virtual CXXStdlibType GetCXXStdlibType(const llvm::opt::ArgList &Args) const;
|
||||
|
||||
+ // GetUnwindLibType - Determine the unwind library type to use with the
|
||||
+ // given compilation arguments.
|
||||
+ virtual UnwindLibType GetUnwindLibType(const llvm::opt::ArgList &Args) const;
|
||||
+
|
||||
/// AddClangCXXStdlibIncludeArgs - Add the clang -cc1 level arguments to set
|
||||
/// the include paths to use for the given C++ standard library type.
|
||||
virtual void
|
||||
diff --git a/lib/Driver/ToolChain.cpp b/lib/Driver/ToolChain.cpp
|
||||
index 88a627eab6..d82423f4a8 100644
|
||||
--- a/lib/Driver/ToolChain.cpp
|
||||
+++ b/lib/Driver/ToolChain.cpp
|
||||
@@ -680,6 +680,33 @@ ToolChain::RuntimeLibType ToolChain::GetRuntimeLibType(
|
||||
return GetDefaultRuntimeLibType();
|
||||
}
|
||||
|
||||
+ToolChain::UnwindLibType ToolChain::GetUnwindLibType(
|
||||
+ const ArgList &Args) const {
|
||||
+ const Arg *A = Args.getLastArg(options::OPT_unwindlib_EQ);
|
||||
+ StringRef LibName = A ? A->getValue() : CLANG_DEFAULT_UNWINDLIB;
|
||||
+
|
||||
+ if (LibName == "none")
|
||||
+ return ToolChain::UNW_None;
|
||||
+ else if (LibName == "platform" || LibName == "") {
|
||||
+ ToolChain::RuntimeLibType RtLibType = GetRuntimeLibType(Args);
|
||||
+ if (RtLibType == ToolChain::RLT_CompilerRT)
|
||||
+ return ToolChain::UNW_None;
|
||||
+ else if (RtLibType == ToolChain::RLT_Libgcc)
|
||||
+ return ToolChain::UNW_Libgcc;
|
||||
+ } else if (LibName == "libunwind") {
|
||||
+ if (GetRuntimeLibType(Args) == RLT_Libgcc)
|
||||
+ getDriver().Diag(diag::err_drv_incompatible_unwindlib);
|
||||
+ return ToolChain::UNW_CompilerRT;
|
||||
+ } else if (LibName == "libgcc")
|
||||
+ return ToolChain::UNW_Libgcc;
|
||||
+
|
||||
+ if (A)
|
||||
+ getDriver().Diag(diag::err_drv_invalid_unwindlib_name)
|
||||
+ << A->getAsString(Args);
|
||||
+
|
||||
+ return GetDefaultUnwindLibType();
|
||||
+}
|
||||
+
|
||||
ToolChain::CXXStdlibType ToolChain::GetCXXStdlibType(const ArgList &Args) const{
|
||||
const Arg *A = Args.getLastArg(options::OPT_stdlib_EQ);
|
||||
StringRef LibName = A ? A->getValue() : CLANG_DEFAULT_CXX_STDLIB;
|
||||
diff --git a/lib/Driver/ToolChains/CommonArgs.cpp b/lib/Driver/ToolChains/CommonArgs.cpp
|
||||
index 85ffc1618d..9fd29726a4 100644
|
||||
--- a/lib/Driver/ToolChains/CommonArgs.cpp
|
||||
+++ b/lib/Driver/ToolChains/CommonArgs.cpp
|
||||
@@ -1132,47 +1132,80 @@ bool tools::isObjCAutoRefCount(const ArgList &Args) {
|
||||
return Args.hasFlag(options::OPT_fobjc_arc, options::OPT_fno_objc_arc, false);
|
||||
}
|
||||
|
||||
-static void AddLibgcc(const llvm::Triple &Triple, const Driver &D,
|
||||
- ArgStringList &CmdArgs, const ArgList &Args) {
|
||||
- bool isAndroid = Triple.isAndroid();
|
||||
- bool isCygMing = Triple.isOSCygMing();
|
||||
- bool IsIAMCU = Triple.isOSIAMCU();
|
||||
- bool StaticLibgcc = Args.hasArg(options::OPT_static_libgcc) ||
|
||||
- Args.hasArg(options::OPT_static) ||
|
||||
- Args.hasArg(options::OPT_static_pie);
|
||||
-
|
||||
- bool SharedLibgcc = Args.hasArg(options::OPT_shared_libgcc);
|
||||
- bool UnspecifiedLibgcc = !StaticLibgcc && !SharedLibgcc;
|
||||
-
|
||||
- // Gcc adds libgcc arguments in various ways:
|
||||
- //
|
||||
- // gcc <none>: -lgcc --as-needed -lgcc_s --no-as-needed
|
||||
- // g++ <none>: -lgcc_s -lgcc
|
||||
- // gcc shared: -lgcc_s -lgcc
|
||||
- // g++ shared: -lgcc_s -lgcc
|
||||
- // gcc static: -lgcc -lgcc_eh
|
||||
- // g++ static: -lgcc -lgcc_eh
|
||||
- // gcc static-pie: -lgcc -lgcc_eh
|
||||
- // g++ static-pie: -lgcc -lgcc_eh
|
||||
- //
|
||||
- // Also, certain targets need additional adjustments.
|
||||
+enum class LibGccType { UnspecifiedLibGcc, StaticLibGcc, SharedLibGcc };
|
||||
+
|
||||
+static LibGccType getLibGccType(const ArgList &Args) {
|
||||
+ bool Static = Args.hasArg(options::OPT_static_libgcc) ||
|
||||
+ Args.hasArg(options::OPT_static) ||
|
||||
+ Args.hasArg(options::OPT_static_pie);
|
||||
+
|
||||
+ bool Shared = Args.hasArg(options::OPT_shared_libgcc);
|
||||
+ if (Shared)
|
||||
+ return LibGccType::SharedLibGcc;
|
||||
+ if (Static)
|
||||
+ return LibGccType::StaticLibGcc;
|
||||
+ return LibGccType::UnspecifiedLibGcc;
|
||||
+}
|
||||
|
||||
- bool LibGccFirst = (D.CCCIsCC() && UnspecifiedLibgcc) || StaticLibgcc;
|
||||
- if (LibGccFirst)
|
||||
- CmdArgs.push_back("-lgcc");
|
||||
+// Gcc adds libgcc arguments in various ways:
|
||||
+//
|
||||
+// gcc <none>: -lgcc --as-needed -lgcc_s --no-as-needed
|
||||
+// g++ <none>: -lgcc_s -lgcc
|
||||
+// gcc shared: -lgcc_s -lgcc
|
||||
+// g++ shared: -lgcc_s -lgcc
|
||||
+// gcc static: -lgcc -lgcc_eh
|
||||
+// g++ static: -lgcc -lgcc_eh
|
||||
+// gcc static-pie: -lgcc -lgcc_eh
|
||||
+// g++ static-pie: -lgcc -lgcc_eh
|
||||
+//
|
||||
+// Also, certain targets need additional adjustments.
|
||||
+
|
||||
+static void AddUnwindLibrary(const ToolChain &TC, const Driver &D,
|
||||
+ ArgStringList &CmdArgs, const ArgList &Args) {
|
||||
+ ToolChain::UnwindLibType UNW = TC.GetUnwindLibType(Args);
|
||||
+ // Targets that don't use unwind libraries.
|
||||
+ if (TC.getTriple().isAndroid() || TC.getTriple().isOSIAMCU() ||
|
||||
+ TC.getTriple().isOSBinFormatWasm() ||
|
||||
+ UNW == ToolChain::UNW_None)
|
||||
+ return;
|
||||
|
||||
- bool AsNeeded = D.CCCIsCC() && UnspecifiedLibgcc && !isAndroid && !isCygMing;
|
||||
+ LibGccType LGT = getLibGccType(Args);
|
||||
+ bool AsNeeded = D.CCCIsCC() && LGT == LibGccType::UnspecifiedLibGcc &&
|
||||
+ !TC.getTriple().isAndroid() && !TC.getTriple().isOSCygMing();
|
||||
if (AsNeeded)
|
||||
CmdArgs.push_back("--as-needed");
|
||||
|
||||
- if ((UnspecifiedLibgcc || SharedLibgcc) && !isAndroid)
|
||||
- CmdArgs.push_back("-lgcc_s");
|
||||
-
|
||||
- else if (StaticLibgcc && !isAndroid && !IsIAMCU)
|
||||
- CmdArgs.push_back("-lgcc_eh");
|
||||
+ switch (UNW) {
|
||||
+ case ToolChain::UNW_None:
|
||||
+ return;
|
||||
+ case ToolChain::UNW_Libgcc: {
|
||||
+ LibGccType LGT = getLibGccType(Args);
|
||||
+ if (LGT == LibGccType::UnspecifiedLibGcc || LGT == LibGccType::SharedLibGcc)
|
||||
+ CmdArgs.push_back("-lgcc_s");
|
||||
+ else if (LGT == LibGccType::StaticLibGcc)
|
||||
+ CmdArgs.push_back("-lgcc_eh");
|
||||
+ break;
|
||||
+ }
|
||||
+ case ToolChain::UNW_CompilerRT:
|
||||
+ CmdArgs.push_back("-lunwind");
|
||||
+ break;
|
||||
+ }
|
||||
|
||||
if (AsNeeded)
|
||||
CmdArgs.push_back("--no-as-needed");
|
||||
+}
|
||||
+
|
||||
+static void AddLibgcc(const ToolChain &TC, const Driver &D,
|
||||
+ ArgStringList &CmdArgs, const ArgList &Args) {
|
||||
+ bool isAndroid = TC.getTriple().isAndroid();
|
||||
+
|
||||
+ LibGccType LGT = getLibGccType(Args);
|
||||
+ bool LibGccFirst = (D.CCCIsCC() && LGT == LibGccType::UnspecifiedLibGcc) ||
|
||||
+ LGT == LibGccType::StaticLibGcc;
|
||||
+ if (LibGccFirst)
|
||||
+ CmdArgs.push_back("-lgcc");
|
||||
+
|
||||
+ AddUnwindLibrary(TC, D, CmdArgs, Args);
|
||||
|
||||
if (!LibGccFirst)
|
||||
CmdArgs.push_back("-lgcc");
|
||||
@@ -1182,7 +1215,7 @@ static void AddLibgcc(const llvm::Triple &Triple, const Driver &D,
|
||||
//
|
||||
// NOTE: This fixes a link error on Android MIPS as well. The non-static
|
||||
// libgcc for MIPS relies on _Unwind_Find_FDE and dl_iterate_phdr from libdl.
|
||||
- if (isAndroid && !StaticLibgcc)
|
||||
+ if (isAndroid && getLibGccType(Args) != LibGccType::StaticLibGcc)
|
||||
CmdArgs.push_back("-ldl");
|
||||
}
|
||||
|
||||
@@ -1194,6 +1227,7 @@ void tools::AddRunTimeLibs(const ToolChain &TC, const Driver &D,
|
||||
switch (RLT) {
|
||||
case ToolChain::RLT_CompilerRT:
|
||||
CmdArgs.push_back(TC.getCompilerRTArgString(Args, "builtins"));
|
||||
+ AddUnwindLibrary(TC, D, CmdArgs, Args);
|
||||
break;
|
||||
case ToolChain::RLT_Libgcc:
|
||||
// Make sure libgcc is not used under MSVC environment by default
|
||||
@@ -1205,7 +1239,7 @@ void tools::AddRunTimeLibs(const ToolChain &TC, const Driver &D,
|
||||
<< Args.getLastArg(options::OPT_rtlib_EQ)->getValue() << "MSVC";
|
||||
}
|
||||
} else
|
||||
- AddLibgcc(TC.getTriple(), D, CmdArgs, Args);
|
||||
+ AddLibgcc(TC, D, CmdArgs, Args);
|
||||
break;
|
||||
}
|
||||
}
|
||||
diff --git a/test/Driver/compiler-rt-unwind.c b/test/Driver/compiler-rt-unwind.c
|
||||
new file mode 100644
|
||||
index 0000000000..00024dfa7e
|
||||
--- /dev/null
|
||||
+++ b/test/Driver/compiler-rt-unwind.c
|
||||
@@ -0,0 +1,49 @@
|
||||
+// General tests that the driver handles combinations of --rtlib=XXX and
|
||||
+// --unwindlib=XXX properly.
|
||||
+//
|
||||
+// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
|
||||
+// RUN: --target=x86_64-unknown-linux \
|
||||
+// RUN: --gcc-toolchain="" \
|
||||
+// RUN: | FileCheck --check-prefix=RTLIB-EMPTY %s
|
||||
+// RTLIB-EMPTY: "{{.*}}lgcc"
|
||||
+// RTLIB-EMPTY: "{{.*}}-lgcc_s"
|
||||
+//
|
||||
+// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
|
||||
+// RUN: --target=x86_64-unknown-linux -rtlib=libgcc \
|
||||
+// RUN: --gcc-toolchain="" \
|
||||
+// RUN: | FileCheck --check-prefix=RTLIB-GCC %s
|
||||
+// RTLIB-GCC: "{{.*}}lgcc"
|
||||
+// RTLIB-GCC: "{{.*}}lgcc_s"
|
||||
+//
|
||||
+// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
|
||||
+// RUN: --target=x86_64-unknown-linux -rtlib=libgcc --unwindlib=libunwind \
|
||||
+// RUN: --gcc-toolchain="" \
|
||||
+// RUN: | FileCheck --check-prefix=RTLIB-GCC-UNWINDLIB-COMPILER-RT %s
|
||||
+// RTLIB-GCC-UNWINDLIB-COMPILER-RT: "{{.*}}lgcc"
|
||||
+// RTLIB-GCC-UNWINDLIB-COMPILER-RT: "{{.*}}lunwind"
|
||||
+//
|
||||
+// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
|
||||
+// RUN: --target=x86_64-unknown-linux -rtlib=compiler-rt \
|
||||
+// RUN: --gcc-toolchain="" \
|
||||
+// RUN: | FileCheck --check-prefix=RTLIB-COMPILER-RT %s
|
||||
+// RTLIB-COMPILER-RT: "{{.*}}libclang_rt.builtins-x86_64.a"
|
||||
+//
|
||||
+// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
|
||||
+// RUN: --target=x86_64-unknown-linux -rtlib=compiler-rt --unwindlib=libgcc \
|
||||
+// RUN: --gcc-toolchain="" \
|
||||
+// RUN: | FileCheck --check-prefix=RTLIB-COMPILER-RT-UNWINDLIB-GCC %s
|
||||
+// RTLIB-COMPILER-RT-UNWINDLIB-GCC: "{{.*}}libclang_rt.builtins-x86_64.a"
|
||||
+// RTLIB-COMPILER-RT-UNWINDLIB-GCC: "{{.*}}lgcc_s"
|
||||
+//
|
||||
+// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
|
||||
+// RUN: --target=x86_64-unknown-linux -rtlib=compiler-rt --unwindlib=libgcc \
|
||||
+// RUN: -static --gcc-toolchain="" \
|
||||
+// RUN: | FileCheck --check-prefix=RTLIB-COMPILER-RT-UNWINDLIB-GCC-STATIC %s
|
||||
+// RTLIB-COMPILER-RT-UNWINDLIB-GCC-STATIC: "{{.*}}libclang_rt.builtins-x86_64.a"
|
||||
+// RTLIB-COMPILER-RT-UNWINDLIB-GCC-STATIC: "{{.*}}lgcc_eh"
|
||||
+//
|
||||
+// RUN: not %clang -no-canonical-prefixes %s -o %t.o 2> %t.err \
|
||||
+// RUN: --target=x86_64-unknown-linux -rtlib=libgcc --unwindlib=libunwind \
|
||||
+// RUN: --gcc-toolchain="" \
|
||||
+// RUN: FileCheck --input-file=%t.err --check-prefix=RTLIB-GCC-UNWINDLIB-COMPILER_RT %s
|
||||
+// RTLIB-GCC-UNWINDLIB-COMPILER_RT: "{{[.|\\\n]*}}--rtlib=libgcc requires --unwindlib=libgcc"
|
||||
41
pkgs/development/compilers/llvm/8/clang/xpc.patch
Normal file
41
pkgs/development/compilers/llvm/8/clang/xpc.patch
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
From 61c9b97d7b81cc2c013b423bf1763a92b14fcae3 Mon Sep 17 00:00:00 2001
|
||||
From: Jan Korous <jkorous@apple.com>
|
||||
Date: Tue, 26 Mar 2019 03:48:25 +0000
|
||||
Subject: [PATCH] [clangd][xpc][cmake] Respect explicit value of
|
||||
CLANGD_BUILD_XPC
|
||||
|
||||
We shouldn't prevent user from disabling XPC framework build on Darwin.
|
||||
However, by keeping it on by default our CI systems also test
|
||||
it by default on macOS.
|
||||
|
||||
Based on user request:
|
||||
http://lists.llvm.org/pipermail/cfe-dev/2019-March/061778.html
|
||||
|
||||
Differential Revision: https://reviews.llvm.org/D59808
|
||||
|
||||
git-svn-id: https://llvm.org/svn/llvm-project/clang-tools-extra/trunk@356974 91177308-0d34-0410-b5e6-96231b3b80d8
|
||||
---
|
||||
CMakeLists.txt | 13 ++++++++++---
|
||||
1 file changed, 10 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||
index 66ebeaeeaa..514b17fb3c 100644
|
||||
--- a/tools/extra/CMakeLists.txt
|
||||
+++ b/tools/extra/CMakeLists.txt
|
||||
@@ -1,6 +1,13 @@
|
||||
-option(CLANGD_BUILD_XPC "Build XPC Support For Clangd." OFF)
|
||||
-if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
|
||||
- set(CLANGD_BUILD_XPC ON CACHE BOOL "" FORCE)
|
||||
+if (NOT DEFINED CLANGD_BUILD_XPC)
|
||||
+ if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
|
||||
+ set(CLANGD_BUILD_XPC_DEFAULT ON)
|
||||
+ else ()
|
||||
+ set(CLANGD_BUILD_XPC_DEFAULT OFF)
|
||||
+ endif ()
|
||||
+
|
||||
+ set(CLANGD_BUILD_XPC ${CLANGD_BUILD_XPC_DEFAULT} CACHE BOOL "Build XPC Support For Clangd." FORCE)
|
||||
+
|
||||
+ unset(CLANGD_BUILD_XPC_DEFAULT)
|
||||
endif ()
|
||||
|
||||
add_subdirectory(clang-apply-replacements)
|
||||
Loading…
Add table
Add a link
Reference in a new issue