diff options
author | Jakub Jirutka <jakub@jirutka.cz> | 2016-08-07 04:08:34 +0200 |
---|---|---|
committer | Jakub Jirutka <jakub@jirutka.cz> | 2016-08-07 13:22:27 +0200 |
commit | 36ead8ea412bd3d2c5b51083f2f6c44bccb92955 (patch) | |
tree | 29163bba87e208bab9526c04c3057b6ddc812691 | |
parent | 29249283f7efcb933875984ca19f1297c9e74cb0 (diff) | |
download | aports-36ead8ea412bd3d2c5b51083f2f6c44bccb92955.tar.bz2 aports-36ead8ea412bd3d2c5b51083f2f6c44bccb92955.tar.xz |
testing/llvm3.7: move libLLVM.so to /usr/lib, add version to libs name
This is needed for binaries that are dynamically linked with
libLLVM, so they can find it on the default LD_LIBRARY_PATH.
To be honest, I'm still not sure if everything is right. LLVM's CMake
scripts have a lot flaws in this version (see recent commits). Most
distribution still use old make files.
However, it already works for Rust (linked statically) and Julia (linked
dynamically).
-rw-r--r-- | testing/llvm3.7/APKBUILD | 26 | ||||
-rw-r--r-- | testing/llvm3.7/cmake-fix-libLLVM-name.patch | 76 |
2 files changed, 97 insertions, 5 deletions
diff --git a/testing/llvm3.7/APKBUILD b/testing/llvm3.7/APKBUILD index 5b04e400c1..4524414694 100644 --- a/testing/llvm3.7/APKBUILD +++ b/testing/llvm3.7/APKBUILD @@ -6,7 +6,7 @@ pkgname=llvm3.7 _pkgname=llvm _majorver=3.7 pkgver=$_majorver.1 -pkgrel=2 +pkgrel=3 pkgdesc="Low Level Virtual Machine compiler system (version $_majorver)" arch="all" url="http://llvm.org/" @@ -36,6 +36,7 @@ source="http://llvm.org/releases/$pkgver/llvm-$pkgver.src.tar.xz llvm-0003-Fix-DynamicLibrary-to-build-with-musl-libc.patch llvm-nm-workaround.patch config.guess.patch + cmake-fix-libLLVM-name.patch " builddir="$srcdir/$_pkgname-$pkgver.src" @@ -164,8 +165,20 @@ static() { libs() { pkgdesc="LLVM $_majorver runtime libraries" + local soname="libLLVM-$_majorver.so" - _mv "$pkgdir"/$_prefix/lib/libLLVM.so.[0-9]* "$subpkgdir"/$_prefix/lib/ + mkdir -p "$subpkgdir" + cd "$subpkgdir" + + # libLLVM should be in /usr/lib. This is needed for binaries that are + # dynamically linked with libLLVM, so they can find it on default path. + _mv "$pkgdir"/$_prefix/lib/$soname usr/lib/ || return 1 + ln -s $soname usr/lib/${soname/$_majorver/$pkgver} || return 1 + + # And also symlink it back to the LLVM prefix. + mkdir -p $_prefix/lib + ln -s ../../$soname $_prefix/lib/$soname || return 1 + ln -s ../../$soname $_prefix/lib/${soname/$_majorver/$pkgver} } dev() { @@ -189,16 +202,19 @@ b370ea6589931c560a92699b890dd888 llvm-0001-Add-Musl-MuslEABI-and-Musl-EABIHF-tr b0cd098117223159b76e96c3f884536b llvm-0002-Fix-build-with-musl-libc.patch 9cc5050619f764ca9dc842a5ab122290 llvm-0003-Fix-DynamicLibrary-to-build-with-musl-libc.patch 785147afd8ab80fa95955a5637b6582f llvm-nm-workaround.patch -57d95aabd731eca1c1411ceb1894120c config.guess.patch" +57d95aabd731eca1c1411ceb1894120c config.guess.patch +a263b29c441c1c83b12535a3f9fd3410 cmake-fix-libLLVM-name-2.patch" sha256sums="be7794ed0cec42d6c682ca8e3517535b54555a3defabec83554dbc74db545ad5 llvm-3.7.1.src.tar.xz 6018671b549f3043ab4d7100956f0e05092d83de72b88edea199c91d5755d819 llvm-0001-Add-Musl-MuslEABI-and-Musl-EABIHF-triples.patch e1b0fd5f6918d8c8404f3ec4b8d3ab8fbe8dadc2d6011792349b56e5e8ee51e2 llvm-0002-Fix-build-with-musl-libc.patch fc28356bf0d5fcfe9b99e28f4abbc2f49f50d263b44e428e30f33bf5472747b4 llvm-0003-Fix-DynamicLibrary-to-build-with-musl-libc.patch 1870f910a6f5f2ba6144bd079ec55ed879fe8fd8b1b1b384935f36da43e5f114 llvm-nm-workaround.patch -10a719450c48433756c9f7a51593f415758ac587911349b22f7d440415a0c6d5 config.guess.patch" +10a719450c48433756c9f7a51593f415758ac587911349b22f7d440415a0c6d5 config.guess.patch +e3a9d29441e5a701deb5d89b00ba0b93103ca1aef3f9dffe97f2378aca0e9ef6 cmake-fix-libLLVM-name-2.patch" sha512sums="ac521debc02f6deba96ef975d6a546b0c5c77299c1dbf5e1b87a7974ff5e7fd715bd7e384b92d9adf572ce47130bdbf6d3c648eb0d7f72f16f976292e4909e90 llvm-3.7.1.src.tar.xz 64388ca3100fd36dfcfa7ba8ec8eb8dd40a7388d4363952ec9b4012e5b82494bd445a1b46506b479283121ec2f74fe3dc07b154f5c76db27b6f5b1af50c265aa llvm-0001-Add-Musl-MuslEABI-and-Musl-EABIHF-triples.patch 4cb3fabbb627b596ce398ed717c66ad20bbea7092ba30751520cc5a63d38e1ac53d23e98a6ad82121ddcf2434383ba5cadbc2990f99a4528e99c6e2160c2f725 llvm-0002-Fix-build-with-musl-libc.patch 19bfb9282455d39d07dbb2b1293b03a45c57d522fbb9c5e58dac034200669628b97e7a90cd4ff5d52d9bb79acfccbef653d8a1140a7f0589ecd6f9b7c4ba0eb6 llvm-0003-Fix-DynamicLibrary-to-build-with-musl-libc.patch 11db6f3c5d697bc536c7d053530f7a5572756185e16399c32c31306861b58046ca9bc14b8d8097758c00a8c1a7026cbfb75636c0e697e59c53dda5848f93b006 llvm-nm-workaround.patch -caf1c9466e8163f8844bd40095d1c3ce26c9e96dcb639f64833baca65a81708d39496e8c8ea65c7f11476d752265080998f1873b79cbc92b23349258e4dfa3ab config.guess.patch" +caf1c9466e8163f8844bd40095d1c3ce26c9e96dcb639f64833baca65a81708d39496e8c8ea65c7f11476d752265080998f1873b79cbc92b23349258e4dfa3ab config.guess.patch +52287dd37f62e0b51c487abe62a22440d3e9df2cb6144af45ba9ddc42848495fad533bf6b13f08e1b454ee653be9b8a14e02cf81f430a7d2c9be030889ef7f72 cmake-fix-libLLVM-name-2.patch" diff --git a/testing/llvm3.7/cmake-fix-libLLVM-name.patch b/testing/llvm3.7/cmake-fix-libLLVM-name.patch new file mode 100644 index 0000000000..600e32777f --- /dev/null +++ b/testing/llvm3.7/cmake-fix-libLLVM-name.patch @@ -0,0 +1,76 @@ +From: Jakub Jirutka <jakub@jirutka.cz> +Date: Sun, 07 Aug 2016 12:37:00 +0200 +Subject: [PATCH] Include version in name of shared libs + +This change makes the CMake build system generate libraries for Linux and +Darwin matching the makefile build system. + +libLLVM.so -> libLLVM-$MAJOR.$MINOR.so +libLTO.so -> libLTO-$MAJOR.$MINOR.so + +See https://github.com/llvm-mirror/llvm/commit/61dbca10ea813ea3af447cc7ac2556a5e81211f9 + +--- a/cmake/modules/AddLLVM.cmake ++++ b/cmake/modules/AddLLVM.cmake +@@ -313,10 +313,12 @@ + # Same semantics as target_link_libraries(). + # ADDITIONAL_HEADERS + # May specify header files for IDE generators. ++# SONAME ++# Should set SONAME link flags and create symlinks + # ) + function(llvm_add_library name) + cmake_parse_arguments(ARG +- "MODULE;SHARED;STATIC" ++ "MODULE;SHARED;STATIC;SONAME" + "OUTPUT_NAME" + "ADDITIONAL_HEADERS;DEPENDS;LINK_COMPONENTS;LINK_LIBS;OBJLIBS" + ${ARGN}) +@@ -418,11 +420,6 @@ + PREFIX "" + ) + endif() +- +- set_target_properties(${name} +- PROPERTIES +- SOVERSION ${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR} +- VERSION ${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}.${LLVM_VERSION_PATCH}${LLVM_VERSION_SUFFIX}) + endif() + + if(ARG_MODULE OR ARG_SHARED) +@@ -483,7 +480,7 @@ + + macro(add_llvm_library name) + cmake_parse_arguments(ARG +- "SHARED" ++ "SHARED;SONAME" + "" + "" + ${ARGN}) +@@ -526,6 +523,15 @@ + -DCMAKE_INSTALL_COMPONENT=${name} + -P "${CMAKE_BINARY_DIR}/cmake_install.cmake") + endif() ++ if(ARG_SHARED) ++ get_target_property(output_name ${name} OUTPUT_NAME) ++ if(${output_name} STREQUAL "output_name-NOTFOUND") ++ set(output_name ${name}) ++ endif() ++ set(library_name ${output_name}-${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}${LLVM_VERSION_SUFFIX}) ++ set(api_name ${output_name}-${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}.${LLVM_VERSION_PATCH}${LLVM_VERSION_SUFFIX}) ++ set_target_properties(${name} PROPERTIES OUTPUT_NAME ${library_name}) ++ endif() + endif() + set_property(GLOBAL APPEND PROPERTY LLVM_EXPORTS ${name}) + endif() +--- a/tools/llvm-shlib/CMakeLists.txt ++++ b/tools/llvm-shlib/CMakeLists.txt +@@ -95,7 +95,7 @@ + add_custom_target(libLLVMExports DEPENDS ${LLVM_EXPORTED_SYMBOL_FILE}) + endif() + +-add_llvm_library(LLVM SHARED ${SOURCES}) ++add_llvm_library(LLVM SHARED SONAME ${SOURCES}) + + list(REMOVE_DUPLICATES LIB_NAMES) + if("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux") # FIXME: It should be "GNU ld for elf" |