diff options
Diffstat (limited to 'pcr/llvm37/0001-backport-so-versioning.patch')
-rw-r--r-- | pcr/llvm37/0001-backport-so-versioning.patch | 180 |
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 + |