C++ Compilers: Systematize handling of standard libraries

This commit is contained in:
John Ericson
2020-06-22 04:24:44 +00:00
committed by John Ericson
parent e00d4d6021
commit f3f7612a40
29 changed files with 150 additions and 199 deletions
+3 -11
View File
@@ -1,4 +1,4 @@
{ lowPrio, newScope, pkgs, stdenv, cmake, gcc, libstdcxxHook
{ lowPrio, newScope, pkgs, stdenv, cmake
, libxml2, python3, isl, fetchurl, overrideCC, wrapCCWith
, buildLlvmTools # tools, but from the previous stage, for cross
, targetLlvmLibraries # libraries, but from the next stage, for cross
@@ -51,25 +51,17 @@ let
libstdcxxClang = wrapCCWith rec {
cc = tools.clang-unwrapped;
extraTools = [
libstdcxxHook
];
libcxx = null; # libstdcxx is smuggled in with clang.gcc
extraPackages = [
targetLlvmLibraries.compiler-rt
];
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;
extraBuildCommands = mkExtraBuildCommands cc;
};
libcxxClang = wrapCCWith rec {
cc = tools.clang-unwrapped;
libcxx = targetLlvmLibraries.libcxx;
extraPackages = [
targetLlvmLibraries.libcxx
targetLlvmLibraries.libcxxabi
targetLlvmLibraries.compiler-rt
];