summaryrefslogtreecommitdiff
path: root/pcr/llvm37/0001-backport-so-versioning.patch
diff options
context:
space:
mode:
authorIsaac David <isacdaavid@isacdaavid.info>2017-01-16 15:40:36 -0600
committerIsaac David <isacdaavid@isacdaavid.info>2017-01-16 15:40:36 -0600
commitf4348fd9ab50152284b9bbf0a5e0a0e816c57420 (patch)
treea41c8d4da0c9a6dae668f0d26d9eed73b2dd13db /pcr/llvm37/0001-backport-so-versioning.patch
parent29ebdef05a3c57a540891b203a84705b6fc602f0 (diff)
llvm37: add new package to [pcr] - Bug #1178 -> https://labs.parabola.nu/issues/1178
Diffstat (limited to 'pcr/llvm37/0001-backport-so-versioning.patch')
-rw-r--r--pcr/llvm37/0001-backport-so-versioning.patch180
1 files changed, 180 insertions, 0 deletions
diff --git a/pcr/llvm37/0001-backport-so-versioning.patch b/pcr/llvm37/0001-backport-so-versioning.patch
new file mode 100644
index 000000000..afbab7d09
--- /dev/null
+++ b/pcr/llvm37/0001-backport-so-versioning.patch
@@ -0,0 +1,180 @@
+From 889531a776155aec2a36a6cf47183dea90549759 Mon Sep 17 00:00:00 2001
+From: Kevin Mihelich <kevin@archlinuxarm.org>
+Date: Mon, 4 Jul 2016 08:32:42 -0600
+Subject: [PATCH] backport so versioning
+
+---
+ cmake/modules/AddLLVM.cmake | 93 +++++++++++++++++++++++++++++++---
+ cmake/modules/LLVMInstallSymlink.cmake | 21 ++++++++
+ tools/llvm-shlib/CMakeLists.txt | 2 +-
+ 3 files changed, 109 insertions(+), 7 deletions(-)
+ create mode 100644 cmake/modules/LLVMInstallSymlink.cmake
+
+diff --git a/cmake/modules/AddLLVM.cmake b/cmake/modules/AddLLVM.cmake
+index 6b6e6e0..b9d67d9 100644
+--- a/cmake/modules/AddLLVM.cmake
++++ b/cmake/modules/AddLLVM.cmake
+@@ -316,10 +316,12 @@ endfunction(set_windows_version_resource_properties)
+ # 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;DISABLE_LLVM_LINK_LLVM_DYLIB"
++ "MODULE;SHARED;STATIC;DISABLE_LLVM_LINK_LLVM_DYLIB;SONAME"
+ "OUTPUT_NAME"
+ "ADDITIONAL_HEADERS;DEPENDS;LINK_COMPONENTS;LINK_LIBS;OBJLIBS"
+ ${ARGN})
+@@ -421,11 +423,6 @@ function(llvm_add_library name)
+ 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)
+@@ -440,6 +437,24 @@ function(llvm_add_library name)
+ endif()
+ endif()
+
++ if(ARG_SHARED AND UNIX)
++ if(NOT APPLE AND ARG_SONAME)
++ 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})
++ llvm_install_library_symlink(${api_name} ${library_name} SHARED
++ COMPONENT ${name}
++ ALWAYS_GENERATE)
++ llvm_install_library_symlink(${output_name} ${library_name} SHARED
++ COMPONENT ${name}
++ ALWAYS_GENERATE)
++ endif()
++ endif()
++
+ # Add the explicit dependency information for this library.
+ #
+ # It would be nice to verify that we have the dependencies for this library
+@@ -970,3 +985,69 @@ function(add_lit_testsuites project directory)
+ endforeach()
+ endif()
+ endfunction()
++
++function(llvm_install_library_symlink name dest type)
++ cmake_parse_arguments(ARG "ALWAYS_GENERATE" "COMPONENT" "" ${ARGN})
++ foreach(path ${CMAKE_MODULE_PATH})
++ if(EXISTS ${path}/LLVMInstallSymlink.cmake)
++ set(INSTALL_SYMLINK ${path}/LLVMInstallSymlink.cmake)
++ break()
++ endif()
++ endforeach()
++
++ set(component ${ARG_COMPONENT})
++ if(NOT component)
++ set(component ${name})
++ endif()
++
++ set(full_name ${CMAKE_${type}_LIBRARY_PREFIX}${name}${CMAKE_${type}_LIBRARY_SUFFIX})
++ set(full_dest ${CMAKE_${type}_LIBRARY_PREFIX}${dest}${CMAKE_${type}_LIBRARY_SUFFIX})
++
++ set(output_dir lib)
++ if(WIN32 AND "${type}" STREQUAL "SHARED")
++ set(output_dir bin)
++ endif()
++
++ install(SCRIPT ${INSTALL_SYMLINK}
++ CODE "install_symlink(${full_name} ${full_dest} ${output_dir})"
++ COMPONENT ${component})
++
++ if (NOT CMAKE_CONFIGURATION_TYPES AND NOT ARG_ALWAYS_GENERATE)
++ add_custom_target(install-${name}
++ DEPENDS ${name} ${dest} install-${dest}
++ COMMAND "${CMAKE_COMMAND}"
++ -DCMAKE_INSTALL_COMPONENT=${name}
++ -P "${CMAKE_BINARY_DIR}/cmake_install.cmake")
++ endif()
++endfunction()
++
++function(llvm_install_symlink name dest)
++ cmake_parse_arguments(ARG "ALWAYS_GENERATE" "" "" ${ARGN})
++ foreach(path ${CMAKE_MODULE_PATH})
++ if(EXISTS ${path}/LLVMInstallSymlink.cmake)
++ set(INSTALL_SYMLINK ${path}/LLVMInstallSymlink.cmake)
++ break()
++ endif()
++ endforeach()
++
++ if(ARG_ALWAYS_GENERATE)
++ set(component ${dest})
++ else()
++ set(component ${name})
++ endif()
++
++ set(full_name ${name}${CMAKE_EXECUTABLE_SUFFIX})
++ set(full_dest ${dest}${CMAKE_EXECUTABLE_SUFFIX})
++
++ install(SCRIPT ${INSTALL_SYMLINK}
++ CODE "install_symlink(${full_name} ${full_dest} ${LLVM_TOOLS_INSTALL_DIR})"
++ COMPONENT ${component})
++
++ if (NOT CMAKE_CONFIGURATION_TYPES AND NOT ARG_ALWAYS_GENERATE)
++ add_custom_target(install-${name}
++ DEPENDS ${name} ${dest} install-${dest}
++ COMMAND "${CMAKE_COMMAND}"
++ -DCMAKE_INSTALL_COMPONENT=${name}
++ -P "${CMAKE_BINARY_DIR}/cmake_install.cmake")
++ endif()
++endfunction()
+diff --git a/cmake/modules/LLVMInstallSymlink.cmake b/cmake/modules/LLVMInstallSymlink.cmake
+new file mode 100644
+index 0000000..482697b
+--- /dev/null
++++ b/cmake/modules/LLVMInstallSymlink.cmake
+@@ -0,0 +1,21 @@
++# We need to execute this script at installation time because the
++# DESTDIR environment variable may be unset at configuration time.
++# See PR8397.
++
++function(install_symlink name target outdir)
++ if(UNIX)
++ set(LINK_OR_COPY create_symlink)
++ set(DESTDIR $ENV{DESTDIR})
++ else()
++ set(LINK_OR_COPY copy)
++ endif()
++
++ set(bindir "${DESTDIR}${CMAKE_INSTALL_PREFIX}/${outdir}/")
++
++ message("Creating ${name}")
++
++ execute_process(
++ COMMAND "${CMAKE_COMMAND}" -E ${LINK_OR_COPY} "${target}" "${name}"
++ WORKING_DIRECTORY "${bindir}")
++
++endfunction()
+diff --git a/tools/llvm-shlib/CMakeLists.txt b/tools/llvm-shlib/CMakeLists.txt
+index 9b407bd..d47a01f 100644
+--- a/tools/llvm-shlib/CMakeLists.txt
++++ b/tools/llvm-shlib/CMakeLists.txt
+@@ -82,7 +82,7 @@ else()
+ add_custom_target(libLLVMExports DEPENDS ${LLVM_EXPORTED_SYMBOL_FILE})
+ endif()
+
+-add_llvm_library(LLVM SHARED DISABLE_LLVM_LINK_LLVM_DYLIB ${SOURCES})
++add_llvm_library(LLVM SHARED DISABLE_LLVM_LINK_LLVM_DYLIB SONAME ${SOURCES})
+
+ list(REMOVE_DUPLICATES LIB_NAMES)
+ if("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux") # FIXME: It should be "GNU ld for elf"
+--
+2.9.0
+