From 22a1422f210e6f6741eaa104d2d632b57fa2f8ce Mon Sep 17 00:00:00 2001 From: Matthew Bauer Date: Sat, 26 Jan 2019 23:48:28 -0500 Subject: [PATCH 1/2] Fix infinite recursion on Darwin. Fixes #18 --- llvm-head/llvm.nix | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/llvm-head/llvm.nix b/llvm-head/llvm.nix index e847ee9..0f21bec 100644 --- a/llvm-head/llvm.nix +++ b/llvm-head/llvm.nix @@ -32,8 +32,7 @@ in stdenv.mkDerivation rec { outputs = ["out"] ++ stdenv.lib.optional enableSharedLibraries "lib"; - buildInputs = [ perl groff cmake libxml2 python libffi ] - ++ stdenv.lib.optionals stdenv.isDarwin [ libcxxabi ]; + buildInputs = [ perl groff cmake libxml2 python libffi ]; propagatedBuildInputs = [ ncurses zlib ]; From c66daf997729839564c4cfc76786262028016faa Mon Sep 17 00:00:00 2001 From: Matthew Bauer Date: Sun, 27 Jan 2019 14:13:56 -0500 Subject: [PATCH 2/2] Set install name correctly for LLVM. This was already fixed upstream in Nixpkgs, but not fixed here. https://github.com/NixOS/nixpkgs/commit/adcf4aa5241f8dc37195d9bcbce27a80b913a512 --- llvm-head/llvm.nix | 28 +++++++++++----------------- 1 file changed, 11 insertions(+), 17 deletions(-) diff --git a/llvm-head/llvm.nix b/llvm-head/llvm.nix index 0f21bec..66f22b6 100644 --- a/llvm-head/llvm.nix +++ b/llvm-head/llvm.nix @@ -43,6 +43,10 @@ in stdenv.mkDerivation rec { postPatch = stdenv.lib.optionalString (enableSharedLibraries) '' substitute '${./llvm-outputs.patch}' ./llvm-outputs.patch --subst-var lib patch -p1 < ./llvm-outputs.patch + '' + stdenv.lib.optionalString stdenv.isDarwin '' + substituteInPlace cmake/modules/AddLLVM.cmake \ + --replace 'set(_install_name_dir INSTALL_NAME_DIR "@rpath")' "set(_install_name_dir)" \ + --replace 'set(_install_rpath "@loader_path/../lib" ''${extra_libdir})' "" ''; # hacky fix: created binaries need to be run before installation @@ -89,25 +93,15 @@ in stdenv.mkDerivation rec { moveToOutput "lib/libLLVM${stdenv.hostPlatform.extensions.sharedLibrary}" "$lib" substituteInPlace "$out/lib/cmake/llvm/LLVMExports-${if debugVersion then "debug" else "release"}.cmake" \ --replace "\''${_IMPORT_PREFIX}/lib/libLLVM-" "$lib/lib/libLLVM-" + '' + stdenv.lib.optionalString (stdenv.isDarwin && enableSharedLibraries) '' + substituteInPlace "$out/lib/cmake/llvm/LLVMExports-release.cmake" \ + --replace "\''${_IMPORT_PREFIX}/lib/libLLVM.dylib" "$lib/lib/libLLVM.dylib" + install_name_tool -id $lib/lib/libLLVM.dylib $lib/lib/libLLVM.dylib + install_name_tool -change @rpath/libLLVM.dylib $lib/lib/libLLVM.dylib $out/bin/llvm-config + ln -s $lib/lib/libLLVM.dylib $lib/lib/libLLVM-${shortVersion}.dylib + ln -s $lib/lib/libLLVM.dylib $lib/lib/libLLVM-${release_version}.dylib ''; - - # postInstall = "" - # + stdenv.lib.optionalString (enableSharedLibraries) '' - # moveToOutput "lib/libLLVM-*" "$lib" - # moveToOutput "lib/libLLVM.${shlib}" "$lib" - # substituteInPlace "$out/lib/cmake/llvm/LLVMExports-release.cmake" \ - # --replace "\''${_IMPORT_PREFIX}/lib/libLLVM-" "$lib/lib/libLLVM-" - # '' - # + stdenv.lib.optionalString (stdenv.isDarwin && enableSharedLibraries) '' - # substituteInPlace "$out/lib/cmake/llvm/LLVMExports-release.cmake" \ - # --replace "\''${_IMPORT_PREFIX}/lib/libLLVM.dylib" "$lib/lib/libLLVM.dylib" - # install_name_tool -id $lib/lib/libLLVM.dylib $lib/lib/libLLVM.dylib - # install_name_tool -change @rpath/libLLVM.dylib $lib/lib/libLLVM.dylib $out/bin/llvm-config - # ln -s $lib/lib/libLLVM.dylib $lib/lib/libLLVM-${shortVersion}.dylib - # ln -s $lib/lib/libLLVM.dylib $lib/lib/libLLVM-${release_version}.dylib - # ''; - doCheck = false; # stdenv.isLinux; dontStrip = debugVersion;