aboutsummaryrefslogtreecommitdiff
path: root/nixpkgs/pkgs/development/compilers/swift/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/development/compilers/swift/default.nix')
-rw-r--r--nixpkgs/pkgs/development/compilers/swift/default.nix14
1 files changed, 9 insertions, 5 deletions
diff --git a/nixpkgs/pkgs/development/compilers/swift/default.nix b/nixpkgs/pkgs/development/compilers/swift/default.nix
index 0cd1f704421..c4144532c58 100644
--- a/nixpkgs/pkgs/development/compilers/swift/default.nix
+++ b/nixpkgs/pkgs/development/compilers/swift/default.nix
@@ -2,6 +2,7 @@
, cmake
, coreutils
, glibc
+, gccForLibs
, which
, perl
, libedit
@@ -121,7 +122,7 @@ let
cmakeFlags = [
"-DGLIBC_INCLUDE_PATH=${stdenv.cc.libc.dev}/include"
"-DC_INCLUDE_DIRS=${stdenv.lib.makeSearchPathOutput "dev" "include" devInputs}:${libxml2.dev}/include/libxml2"
- "-DGCC_INSTALL_PREFIX=${clang.cc.gcc}"
+ "-DGCC_INSTALL_PREFIX=${gccForLibs}"
];
in
@@ -182,6 +183,9 @@ stdenv.mkDerivation {
'';
patchPhase = ''
+ # Glibc 2.31 fix
+ patch -p1 -i ${./patches/swift-llvm.patch}
+
# Just patch all the things for now, we can focus this later
patchShebangs $SWIFT_SOURCE_ROOT
@@ -196,7 +200,7 @@ stdenv.mkDerivation {
substituteInPlace swift/stdlib/public/Platform/CMakeLists.txt \
--replace '/usr/include' "${stdenv.cc.libc.dev}/include"
substituteInPlace swift/utils/build-script-impl \
- --replace '/usr/include/c++' "${clang.cc.gcc}/include/c++"
+ --replace '/usr/include/c++' "${gccForLibs}/include/c++"
patch -p1 -d swift -i ${./patches/glibc-arch-headers.patch}
patch -p1 -d swift -i ${./patches/0001-build-presets-linux-don-t-require-using-Ninja.patch}
patch -p1 -d swift -i ${./patches/0002-build-presets-linux-allow-custom-install-prefix.patch}
@@ -257,11 +261,11 @@ stdenv.mkDerivation {
'';
buildPhase = ''
- # gcc-6.4.0/include/c++/6.4.0/cstdlib:75:15: fatal error: 'stdlib.h' file not found
- export NIX_CFLAGS_COMPILE="$( echo ${clang.default_cxx_stdlib_compile} ) $NIX_CFLAGS_COMPILE"
+ # explicitly include C++ headers to prevent errors where stdlib.h is not found from cstdlib
+ export NIX_CFLAGS_COMPILE="$(< ${clang}/nix-support/libcxx-cxxflags) $NIX_CFLAGS_COMPILE"
# During the Swift build, a full local LLVM build is performed and the resulting clang is invoked.
# This compiler is not using the Nix wrappers, so it needs some help to find things.
- export NIX_LDFLAGS_BEFORE="-rpath ${clang.cc.gcc.lib}/lib -L${clang.cc.gcc.lib}/lib $NIX_LDFLAGS_BEFORE"
+ export NIX_LDFLAGS_BEFORE="-rpath ${gccForLibs.lib}/lib -L${gccForLibs.lib}/lib $NIX_LDFLAGS_BEFORE"
# However, we want to use the wrapped compiler whenever possible.
export CC="${clang}/bin/clang"