llvm: fix llvm-config on darwin

With 7.1 llvm-config looks for libLLVM-7.1.dylib, but the shortVersion
was still 7 so only 7 and 7.1.0 where aliased before.

	$ llvm-config --link-shared
	llvm-config: error: libLLVM-7.1.dylib is missing
This commit is contained in:
Daiderd Jordan 2019-05-04 13:16:10 +02:00 committed by Frederik Rietdijk
parent 0f10b72b5f
commit 807ba5f123

View File

@ -25,9 +25,10 @@ let
src = fetch "llvm" "0r1p5didv4rkgxyvbkyz671xddg6i3dxvbpsi1xxipkla0l9pk0v";
polly_src = fetch "polly" "16qkns4ab4x0azrvhy4j7cncbyb2rrbdrqj87zphvqxm5pvm8m1h";
# Used when creating a version-suffixed symlink of libLLVM.dylib
shortVersion = with stdenv.lib;
concatStringsSep "." (take 1 (splitString "." release_version));
# Used when creating a versioned symlinks of libLLVM.dylib
versionSuffixes = with stdenv.lib;
let parts = splitString "." release_version; in
imap (i: _: concatStringsSep "." (take i parts)) parts;
in stdenv.mkDerivation (rec {
name = "llvm-${version}";
@ -142,8 +143,9 @@ in stdenv.mkDerivation (rec {
+ optionalString (stdenv.isDarwin && enableSharedLibraries) ''
substituteInPlace "$out/lib/cmake/llvm/LLVMExports-${if debugVersion then "debug" else "release"}.cmake" \
--replace "\''${_IMPORT_PREFIX}/lib/libLLVM.dylib" "$lib/lib/libLLVM.dylib"
ln -s $lib/lib/libLLVM.dylib $lib/lib/libLLVM-${shortVersion}.dylib
ln -s $lib/lib/libLLVM.dylib $lib/lib/libLLVM-${release_version}.dylib
${stdenv.lib.concatMapStringsSep "\n" (v: ''
ln -s $lib/lib/libLLVM.dylib $lib/lib/libLLVM-${v}.dylib
'') versionSuffixes}
'';
doCheck = stdenv.isLinux && (!stdenv.isx86_32);