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 /testing | |
| 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).
Diffstat (limited to 'testing')
| -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" |
