diff --git a/pkgs/os-specific/darwin/cctools-port/default.nix b/pkgs/os-specific/darwin/cctools-port/default.nix new file mode 100644 index 000000000000..0d40409a9944 --- /dev/null +++ b/pkgs/os-specific/darwin/cctools-port/default.nix @@ -0,0 +1,55 @@ +{ stdenv, cross, fetchurl, autoconf, automake, libtool +, libcxx, llvm, clang, openssl, libuuid +}: + +stdenv.mkDerivation rec { + name = "cctools-port-${version}"; + version = "845"; + + src = fetchurl { + url = "https://github.com/tpoechtrager/cctools-port/archive/" + + "cctools-${version}-ld64-136-1.tar.gz"; + sha256 = "06pg6h1g8avgx4j6cfykdpggf490li796gzhhyqn27jsagli307i"; + }; + + buildInputs = [ + autoconf automake libtool libcxx llvm clang openssl libuuid + ]; + + patches = [ ./ld-rpath-nonfinal.patch ./ld-ignore-rpath-link.patch ]; + + enableParallelBuilding = true; + + postPatch = '' + patchShebangs tools + sed -i -e 's/which/type -P/' tools/*.sh + sed -i -e 's|clang++|& -I${libcxx}/include/c++/v1|' cctools/autogen.sh + + # Workaround for https://www.sourceware.org/bugzilla/show_bug.cgi?id=11157 + cat > cctools/include/unistd.h < 0 ) { +- if ( !minOS(ld::mac10_5, ld::iOS_2_0) ) +- throw "-rpath can only be used when targeting Mac OS X 10.5 or later"; +- switch ( fOutputKind ) { +- case Options::kDynamicExecutable: +- case Options::kDynamicLibrary: +- case Options::kDynamicBundle: +- break; +- case Options::kStaticExecutable: +- case Options::kObjectFile: +- case Options::kDyld: +- case Options::kPreload: +- case Options::kKextBundle: +- throw "-rpath can only be used when creating a dynamic final linked image"; +- } +- } +- ++ if ( fRPaths.size() > 0 && !minOS(ld::mac10_5, ld::iOS_2_0) ) ++ throw "-rpath can only be used when targeting Mac OS X 10.5 or later"; ++ + if ( fPositionIndependentExecutable ) { + switch ( fOutputKind ) { + case Options::kDynamicExecutable: diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 93caa5c7796b..dfe977678ffd 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -6546,7 +6546,13 @@ let cramfsswap = callPackage ../os-specific/linux/cramfsswap { }; - darwin.xcode = callPackage ../os-specific/darwin/xcode { }; + darwin = { + cctools = forceNativeDrv (callPackage ../os-specific/darwin/cctools-port { + cross = assert crossSystem != null; crossSystem; + }); + + xcode = callPackage ../os-specific/darwin/xcode {}; + }; devicemapper = lvm2;