llvmPackages/libllvm: move static archives to dev output

Reduces closure size by ~240MiB (down to ~100MiB) for
LLVM 13, the others are similar.

Having those archives in the lib output makes no sense
as they are no runtime dependencies. Removing them
alltogether is also not an option because the dynamic
libraries offer only the C API while many users of
libllvm require the C++ API. Those users must have an
dependency on libllvm.dev anyway and will find those
files for linking.
This commit is contained in:
Matthias Treydte 2022-03-03 12:16:02 +01:00
parent 832aaff72a
commit 1748887ff2
11 changed files with 66 additions and 0 deletions

View file

@ -244,6 +244,12 @@ in stdenv.mkDerivation (rec {
ln -s $lib/lib/libLLVM.dylib $lib/lib/libLLVM-${shortVersion}.dylib
ln -s $lib/lib/libLLVM.dylib $lib/lib/libLLVM-${release_version}.dylib
''
+ optionalString enableSharedLibraries ''
mkdir -p $dev/lib
mv $lib/lib/*.a $dev/lib
sed -i -E "s|$lib/lib/(.*)\.a|$dev/lib/\1\.a|" \
"$dev/lib/cmake/llvm/LLVMExports-${if debugVersion then "debug" else "release"}.cmake"
''
+ optionalString (stdenv.buildPlatform != stdenv.hostPlatform) ''
cp NATIVE/bin/llvm-config $dev/bin/llvm-config-native
'';

View file

@ -255,6 +255,12 @@ in stdenv.mkDerivation (rec {
ln -s $lib/lib/libLLVM.dylib $lib/lib/libLLVM-${shortVersion}.dylib
ln -s $lib/lib/libLLVM.dylib $lib/lib/libLLVM-${release_version}.dylib
''
+ optionalString enableSharedLibraries ''
mkdir -p $dev/lib
mv $lib/lib/*.a $dev/lib
sed -i -E "s|$lib/lib/(.*)\.a|$dev/lib/\1\.a|" \
"$dev/lib/cmake/llvm/LLVMExports-${if debugVersion then "debug" else "release"}.cmake"
''
+ optionalString (stdenv.buildPlatform != stdenv.hostPlatform) ''
cp NATIVE/bin/llvm-config $dev/bin/llvm-config-native
'';

View file

@ -242,6 +242,12 @@ in stdenv.mkDerivation (rec {
ln -s $lib/lib/libLLVM.dylib $lib/lib/libLLVM-${shortVersion}.dylib
ln -s $lib/lib/libLLVM.dylib $lib/lib/libLLVM-${release_version}.dylib
''
+ optionalString enableSharedLibraries ''
mkdir -p $dev/lib
mv $lib/lib/*.a $dev/lib
sed -i -E "s|$lib/lib/(.*)\.a|$dev/lib/\1\.a|" \
"$dev/lib/cmake/llvm/LLVMExports-${if debugVersion then "debug" else "release"}.cmake"
''
+ optionalString (stdenv.buildPlatform != stdenv.hostPlatform) ''
cp NATIVE/bin/llvm-config $dev/bin/llvm-config-native
'';

View file

@ -205,6 +205,12 @@ in stdenv.mkDerivation (rec {
ln -s $lib/lib/libLLVM.dylib $lib/lib/libLLVM-${shortVersion}.dylib
ln -s $lib/lib/libLLVM.dylib $lib/lib/libLLVM-${release_version}.dylib
''
+ optionalString enableSharedLibraries ''
mkdir -p $dev/lib
mv $lib/lib/*.a $dev/lib
sed -i -E "s|$lib/lib/(.*)\.a|$dev/lib/\1\.a|" \
"$dev/lib/cmake/llvm/LLVMExports-${if debugVersion then "debug" else "release"}.cmake"
''
+ optionalString (stdenv.buildPlatform != stdenv.hostPlatform) ''
cp NATIVE/bin/llvm-config $dev/bin/llvm-config-native
'';

View file

@ -200,6 +200,12 @@ in stdenv.mkDerivation (rec {
ln -s $lib/lib/libLLVM.dylib $lib/lib/libLLVM-${shortVersion}.dylib
ln -s $lib/lib/libLLVM.dylib $lib/lib/libLLVM-${release_version}.dylib
''
+ optionalString enableSharedLibraries ''
mkdir -p $dev/lib
mv $lib/lib/*.a $dev/lib
sed -i -E "s|$lib/lib/(.*)\.a|$dev/lib/\1\.a|" \
"$dev/lib/cmake/llvm/LLVMExports-${if debugVersion then "debug" else "release"}.cmake"
''
+ optionalString (stdenv.buildPlatform != stdenv.hostPlatform) ''
cp NATIVE/bin/llvm-config $dev/bin/llvm-config-native
'';

View file

@ -222,6 +222,12 @@ stdenv.mkDerivation (rec {
ln -s $lib/lib/libLLVM.dylib $lib/lib/libLLVM-${v}.dylib
'') versionSuffixes}
''
+ optionalString enableSharedLibraries ''
mkdir -p $dev/lib
mv $lib/lib/*.a $dev/lib
sed -i -E "s|$lib/lib/(.*)\.a|$dev/lib/\1\.a|" \
"$dev/lib/cmake/llvm/LLVMExports-${if debugVersion then "debug" else "release"}.cmake"
''
+ optionalString (stdenv.buildPlatform != stdenv.hostPlatform) ''
cp NATIVE/bin/llvm-config $dev/bin/llvm-config-native
'';

View file

@ -215,6 +215,12 @@ stdenv.mkDerivation (rec {
ln -s $lib/lib/libLLVM.dylib $lib/lib/libLLVM-${v}.dylib
'') versionSuffixes}
''
+ optionalString enableSharedLibraries ''
mkdir -p $dev/lib
mv $lib/lib/*.a $dev/lib
sed -i -E "s|$lib/lib/(.*)\.a|$dev/lib/\1\.a|" \
"$dev/lib/cmake/llvm/LLVMExports-${if debugVersion then "debug" else "release"}.cmake"
''
+ optionalString (stdenv.buildPlatform != stdenv.hostPlatform) ''
cp NATIVE/bin/llvm-config $dev/bin/llvm-config-native
'';

View file

@ -234,6 +234,12 @@ in stdenv.mkDerivation (rec {
ln -s $lib/lib/libLLVM.dylib $lib/lib/libLLVM-${v}.dylib
'') versionSuffixes}
''
+ optionalString enableSharedLibraries ''
mkdir -p $dev/lib
mv $lib/lib/*.a $dev/lib
sed -i -E "s|$lib/lib/(.*)\.a|$dev/lib/\1\.a|" \
"$dev/lib/cmake/llvm/LLVMExports-${if debugVersion then "debug" else "release"}.cmake"
''
+ optionalString (stdenv.buildPlatform != stdenv.hostPlatform) ''
cp NATIVE/bin/llvm-config $dev/bin/llvm-config-native
'';

View file

@ -226,6 +226,12 @@ in stdenv.mkDerivation (rec {
ln -s $lib/lib/libLLVM.dylib $lib/lib/libLLVM-${shortVersion}.dylib
ln -s $lib/lib/libLLVM.dylib $lib/lib/libLLVM-${release_version}.dylib
''
+ optionalString enableSharedLibraries ''
mkdir -p $dev/lib
mv $lib/lib/*.a $dev/lib
sed -i -E "s|$lib/lib/(.*)\.a|$dev/lib/\1\.a|" \
"$dev/lib/cmake/llvm/LLVMExports-${if debugVersion then "debug" else "release"}.cmake"
''
+ optionalString (stdenv.buildPlatform != stdenv.hostPlatform) ''
cp NATIVE/bin/llvm-config $dev/bin/llvm-config-native
'';

View file

@ -241,6 +241,12 @@ in stdenv.mkDerivation (rec {
ln -s $lib/lib/libLLVM.dylib $lib/lib/libLLVM-${shortVersion}.dylib
ln -s $lib/lib/libLLVM.dylib $lib/lib/libLLVM-${release_version}.dylib
''
+ optionalString enableSharedLibraries ''
mkdir -p $dev/lib
mv $lib/lib/*.a $dev/lib
sed -i -E "s|$lib/lib/(.*)\.a|$dev/lib/\1\.a|" \
"$dev/lib/cmake/llvm/LLVMExports-${if debugVersion then "debug" else "release"}.cmake"
''
+ optionalString (stdenv.buildPlatform != stdenv.hostPlatform) ''
cp NATIVE/bin/llvm-config $dev/bin/llvm-config-native
'';

View file

@ -200,6 +200,12 @@ in stdenv.mkDerivation (rec {
ln -s $lib/lib/libLLVM.dylib $lib/lib/libLLVM-${shortVersion}.dylib
ln -s $lib/lib/libLLVM.dylib $lib/lib/libLLVM-${release_version}.dylib
''
+ optionalString enableSharedLibraries ''
mkdir -p $dev/lib
mv $lib/lib/*.a $dev/lib
sed -i -E "s|$lib/lib/(.*)\.a|$dev/lib/\1\.a|" \
"$dev/lib/cmake/llvm/LLVMExports-${if debugVersion then "debug" else "release"}.cmake"
''
+ optionalString (stdenv.buildPlatform != stdenv.hostPlatform) ''
cp NATIVE/bin/llvm-config $dev/bin/llvm-config-native
'';