diff options
author | Jan Tojnar <jtojnar@gmail.com> | 2020-04-16 10:09:43 +0200 |
---|---|---|
committer | Jan Tojnar <jtojnar@gmail.com> | 2020-04-16 10:09:43 +0200 |
commit | 3d8e43691731037672c36129cbecb2fe43ffad7e (patch) | |
tree | c7f5fe5732dd22a66330d041ee7b0139f75b412d /pkgs/development/compilers/llvm/6 | |
parent | a04625379a9e842cb987197c4f273de1bea807b7 (diff) | |
parent | 342eaba9ebbc68923c1028a56be1c94e74862832 (diff) | |
download | nixlib-3d8e43691731037672c36129cbecb2fe43ffad7e.tar nixlib-3d8e43691731037672c36129cbecb2fe43ffad7e.tar.gz nixlib-3d8e43691731037672c36129cbecb2fe43ffad7e.tar.bz2 nixlib-3d8e43691731037672c36129cbecb2fe43ffad7e.tar.lz nixlib-3d8e43691731037672c36129cbecb2fe43ffad7e.tar.xz nixlib-3d8e43691731037672c36129cbecb2fe43ffad7e.tar.zst nixlib-3d8e43691731037672c36129cbecb2fe43ffad7e.zip |
Merge branch 'master' into staging-next
Diffstat (limited to 'pkgs/development/compilers/llvm/6')
-rw-r--r-- | pkgs/development/compilers/llvm/6/compiler-rt.nix | 51 | ||||
-rw-r--r-- | pkgs/development/compilers/llvm/6/default.nix | 10 |
2 files changed, 55 insertions, 6 deletions
diff --git a/pkgs/development/compilers/llvm/6/compiler-rt.nix b/pkgs/development/compilers/llvm/6/compiler-rt.nix index b3b6e86fc525..1bdba107d7dd 100644 --- a/pkgs/development/compilers/llvm/6/compiler-rt.nix +++ b/pkgs/development/compilers/llvm/6/compiler-rt.nix @@ -1,5 +1,13 @@ { stdenv, version, fetch, cmake, python3, llvm, libcxxabi }: -with stdenv.lib; + +let + + useLLVM = stdenv.hostPlatform.useLLVM or false; + bareMetal = stdenv.hostPlatform.parsed.kernel.name == "none"; + inherit (stdenv.hostPlatform) isMusl; + +in + stdenv.mkDerivation { pname = "compiler-rt"; inherit version; @@ -8,15 +16,38 @@ stdenv.mkDerivation { nativeBuildInputs = [ cmake python3 llvm ]; buildInputs = stdenv.lib.optional stdenv.hostPlatform.isDarwin libcxxabi; - configureFlags = [ + NIX_CFLAGS_COMPILE = [ + "-DSCUDO_DEFAULT_OPTIONS=DeleteSizeMismatch=0:DeallocationTypeMismatch=0" + ]; + + cmakeFlags = [ "-DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON" + "-DCMAKE_C_COMPILER_TARGET=${stdenv.hostPlatform.config}" + "-DCMAKE_ASM_COMPILER_TARGET=${stdenv.hostPlatform.config}" + ] ++ stdenv.lib.optionals (useLLVM || bareMetal || isMusl) [ + "-DCOMPILER_RT_BUILD_SANITIZERS=OFF" + "-DCOMPILER_RT_BUILD_XRAY=OFF" + "-DCOMPILER_RT_BUILD_LIBFUZZER=OFF" + "-DCOMPILER_RT_BUILD_PROFILE=OFF" + ] ++ stdenv.lib.optionals (useLLVM || bareMetal) [ + "-DCMAKE_C_COMPILER_WORKS=ON" + "-DCMAKE_CXX_COMPILER_WORKS=ON" + "-DCOMPILER_RT_BAREMETAL_BUILD=ON" + "-DCMAKE_SIZEOF_VOID_P=${toString (stdenv.hostPlatform.parsed.cpu.bits / 8)}" + ] ++ stdenv.lib.optionals (useLLVM) [ + "-DCOMPILER_RT_BUILD_BUILTINS=ON" + "-DCMAKE_C_FLAGS=-nodefaultlibs" + #https://stackoverflow.com/questions/53633705/cmake-the-c-compiler-is-not-able-to-compile-a-simple-test-program + "-DCMAKE_TRY_COMPILE_TARGET_TYPE=STATIC_LIBRARY" + ] ++ stdenv.lib.optionals (bareMetal) [ + "-DCOMPILER_RT_OS_DIR=baremetal" ]; outputs = [ "out" "dev" ]; patches = [ ./compiler-rt-codesign.patch # Revert compiler-rt commit that makes codesign mandatory - ] ++ optional stdenv.hostPlatform.isMusl ./sanitizers-nongnu.patch; + ] ++ stdenv.lib.optional stdenv.hostPlatform.isMusl ./sanitizers-nongnu.patch; # TSAN requires XPC on Darwin, which we have no public/free source files for. We can depend on the Apple frameworks # to get it, but they're unfree. Since LLVM is rather central to the stdenv, we patch out TSAN support so that Hydra @@ -26,11 +57,23 @@ stdenv.mkDerivation { postPatch = stdenv.lib.optionalString stdenv.isDarwin '' substituteInPlace cmake/config-ix.cmake \ --replace 'set(COMPILER_RT_HAS_TSAN TRUE)' 'set(COMPILER_RT_HAS_TSAN FALSE)' + '' + stdenv.lib.optionalString (useLLVM) '' + substituteInPlace lib/builtins/int_util.c \ + --replace "#include <stdlib.h>" "" + substituteInPlace lib/builtins/clear_cache.c \ + --replace "#include <assert.h>" "" + substituteInPlace lib/builtins/cpu_model.c \ + --replace "#include <assert.h>" "" ''; # Hack around weird upsream RPATH bug - postInstall = stdenv.lib.optionalString stdenv.isDarwin '' + postInstall = stdenv.lib.optionalString (stdenv.hostPlatform.isDarwin || stdenv.hostPlatform.isWasm) '' ln -s "$out/lib"/*/* "$out/lib" + '' + stdenv.lib.optionalString (useLLVM) '' + ln -s $out/lib/*/clang_rt.crtbegin-*.o $out/lib/linux/crtbegin.o + ln -s $out/lib/*/clang_rt.crtend-*.o $out/lib/linux/crtend.o + ln -s $out/lib/*/clang_rt.crtbegin_shared-*.o $out/lib/linux/crtbeginS.o + ln -s $out/lib/*/clang_rt.crtend_shared-*.o $out/lib/linux/crtendS.o ''; enableParallelBuilding = true; diff --git a/pkgs/development/compilers/llvm/6/default.nix b/pkgs/development/compilers/llvm/6/default.nix index ba704f972c31..b544a4f6ba69 100644 --- a/pkgs/development/compilers/llvm/6/default.nix +++ b/pkgs/development/compilers/llvm/6/default.nix @@ -1,4 +1,4 @@ -{ lowPrio, newScope, pkgs, stdenv, cmake, libstdcxxHook +{ lowPrio, newScope, pkgs, stdenv, cmake, gcc, libstdcxxHook , libxml2, python3, isl, fetchurl, overrideCC, wrapCCWith , buildLlvmTools # tools, but from the previous stage, for cross , targetLlvmLibraries # libraries, but from the next stage, for cross @@ -7,6 +7,7 @@ let release_version = "6.0.1"; version = release_version; # differentiating these is important for rc's + targetConfig = stdenv.targetPlatform.config; fetch = name: sha256: fetchurl { url = "https://releases.llvm.org/${release_version}/${name}-${version}.src.tar.xz"; @@ -56,7 +57,12 @@ let extraPackages = [ targetLlvmLibraries.compiler-rt ]; - extraBuildCommands = mkExtraBuildCommands cc; + extraBuildCommands = '' + echo "-target ${targetConfig}" >> $out/nix-support/cc-cflags + echo "-B${gcc.cc}/lib/gcc/${targetConfig}/${gcc.version}" >> $out/nix-support/cc-cflags + echo "-L${gcc.cc}/lib/gcc/${targetConfig}/${gcc.version}" >> $out/nix-support/cc-ldflags + echo "-L${gcc.cc.lib}/${targetConfig}/lib" >> $out/nix-support/cc-ldflags + '' + mkExtraBuildCommands cc; }; libcxxClang = wrapCCWith rec { |