[pkg-d-commits] [ldc] 11/12: Sync LLVM-related CMake stuff from master (#1980)

Matthias Klumpp mak at moszumanska.debian.org
Sun Apr 23 22:35:57 UTC 2017


This is an automated email from the git hooks/post-receive script.

mak pushed a commit to annotated tag v0.17.3
in repository ldc.

commit 8c29b701173e35b2dc1cf10fc6ec4045e22f8998
Author: kinke <kinke at users.noreply.github.com>
Date:   Sun Jan 22 11:59:59 2017 +0100

    Sync LLVM-related CMake stuff from master (#1980)
---
 cmake/Modules/FindLLVM.cmake | 56 ++++++++++++++++++++++++++++++++++----------
 1 file changed, 44 insertions(+), 12 deletions(-)

diff --git a/cmake/Modules/FindLLVM.cmake b/cmake/Modules/FindLLVM.cmake
index 82bd09f..286db07 100644
--- a/cmake/Modules/FindLLVM.cmake
+++ b/cmake/Modules/FindLLVM.cmake
@@ -32,16 +32,26 @@ set(llvm_config_names llvm-config-3.9 llvm-config39
                       llvm-config-3.7 llvm-config37
                       llvm-config-3.6 llvm-config36
                       llvm-config-3.5 llvm-config35
-                      llvm-config-3.4 llvm-config34
-                      llvm-config-3.3 llvm-config33
-                      llvm-config-3.2 llvm-config32
-                      llvm-config-3.1 llvm-config31 llvm-config)
+                      llvm-config)
 find_program(LLVM_CONFIG
     NAMES ${llvm_config_names}
     PATHS ${LLVM_ROOT_DIR}/bin NO_DEFAULT_PATH
     DOC "Path to llvm-config tool.")
 find_program(LLVM_CONFIG NAMES ${llvm_config_names})
 
+# Prints a warning/failure message depending on the required/quiet flags. Copied
+# from FindPackageHandleStandardArgs.cmake because it doesn't seem to be exposed.
+macro(_LLVM_FAIL _msg)
+  if(LLVM_FIND_REQUIRED)
+    message(FATAL_ERROR "${_msg}")
+  else()
+    if(NOT LLVM_FIND_QUIETLY)
+      message(STATUS "${_msg}")
+    endif()
+  endif()
+endmacro()
+
+
 if ((WIN32 AND NOT(MINGW OR CYGWIN)) OR NOT LLVM_CONFIG)
     if (WIN32)
         # A bit of a sanity check:
@@ -68,6 +78,11 @@ if ((WIN32 AND NOT(MINGW OR CYGWIN)) OR NOT LLVM_CONFIG)
         if(TARGET_AArch64 GREATER -1)
             list(APPEND LLVM_FIND_COMPONENTS AArch64Utils)
         endif()
+        # Similar to the work around above, but for AMDGPU
+        list(FIND LLVM_TARGETS_TO_BUILD "AMDGPU" TARGET_AMDGPU)
+        if(TARGET_AMDGPU GREATER -1)
+            list(APPEND LLVM_FIND_COMPONENTS AMDGPUUtils)
+        endif()
         if(${LLVM_VERSION_STRING} MATCHES "^3\\.[0-6][\\.0-9A-Za-z]*")
             # Versions below 3.7 do not support components debuginfo[dwarf|pdb]
             # Only debuginfo is available
@@ -95,8 +110,9 @@ if ((WIN32 AND NOT(MINGW OR CYGWIN)) OR NOT LLVM_CONFIG)
             llvm_map_components_to_libnames(tmplibs ${LLVM_FIND_COMPONENTS})
         endif()
         if(MSVC)
+            set(LLVM_LDFLAGS "-LIBPATH:\"${LLVM_LIBRARY_DIRS}\"")
             foreach(lib ${tmplibs})
-                list(APPEND LLVM_LIBRARIES "${LLVM_LIBRARY_DIRS}/${CMAKE_STATIC_LIBRARY_PREFIX}${lib}${CMAKE_STATIC_LIBRARY_SUFFIX}")
+                list(APPEND LLVM_LIBRARIES "${CMAKE_STATIC_LIBRARY_PREFIX}${lib}${CMAKE_STATIC_LIBRARY_SUFFIX}")
             endforeach()
         else()
             # Rely on the library search path being set correctly via -L on
@@ -112,8 +128,8 @@ if ((WIN32 AND NOT(MINGW OR CYGWIN)) OR NOT LLVM_CONFIG)
         # to switch to add_definitions() instead of throwing strings around.
         string(REPLACE ";" " " LLVM_CXXFLAGS "${LLVM_CXXFLAGS}")
     else()
-        if (NOT FIND_LLVM_QUIETLY)
-            message(WARNING "Could not find llvm-config. Try manually setting LLVM_CONFIG to the llvm-config executable of the installation to use.")
+        if (NOT LLVM_FIND_QUIETLY)
+            message(WARNING "Could not find llvm-config (LLVM >= ${LLVM_FIND_VERSION}). Try manually setting LLVM_CONFIG to the llvm-config executable of the installation to use.")
         endif()
     endif()
 else()
@@ -121,28 +137,40 @@ else()
        if(LLVM_FIND_QUIETLY)
             set(_quiet_arg ERROR_QUIET)
         endif()
+        set(result_code)
         execute_process(
             COMMAND ${LLVM_CONFIG} --${flag}
+            RESULT_VARIABLE result_code
             OUTPUT_VARIABLE LLVM_${var}
             OUTPUT_STRIP_TRAILING_WHITESPACE
             ${_quiet_arg}
         )
-        if(${ARGV2})
-            file(TO_CMAKE_PATH "${LLVM_${var}}" LLVM_${var})
+        if(result_code)
+            _LLVM_FAIL("Failed to execute llvm-config ('${LLVM_CONFIG}', result code: '${result_code})'")
+        else()
+            if(${ARGV2})
+                file(TO_CMAKE_PATH "${LLVM_${var}}" LLVM_${var})
+            endif()
         endif()
     endmacro()
     macro(llvm_set_libs var flag)
        if(LLVM_FIND_QUIETLY)
             set(_quiet_arg ERROR_QUIET)
         endif()
+        set(result_code)
         execute_process(
             COMMAND ${LLVM_CONFIG} --${flag} ${LLVM_FIND_COMPONENTS}
+            RESULT_VARIABLE result_code
             OUTPUT_VARIABLE tmplibs
             OUTPUT_STRIP_TRAILING_WHITESPACE
             ${_quiet_arg}
         )
-        file(TO_CMAKE_PATH "${tmplibs}" tmplibs)
-        string(REGEX MATCHALL "${pattern}[^ ]+" LLVM_${var} ${tmplibs})
+        if(result_code)
+            _LLVM_FAIL("Failed to execute llvm-config ('${LLVM_CONFIG}', result code: '${result_code})'")
+        else()
+            file(TO_CMAKE_PATH "${tmplibs}" tmplibs)
+            string(REGEX MATCHALL "${pattern}[^ ]+" LLVM_${var} ${tmplibs})
+        endif()
     endmacro()
 
     llvm_set(VERSION_STRING version)
@@ -186,7 +214,7 @@ else()
     # but code for it is not in shared library
     if("${LLVM_FIND_COMPONENTS}" MATCHES "tablegen")
         if (NOT "${LLVM_LIBRARIES}" MATCHES "LLVMTableGen")
-            set(LLVM_LIBRARIES "${LLVM_LIBRARIES} -lLLVMTableGen")
+            set(LLVM_LIBRARIES "${LLVM_LIBRARIES};-lLLVMTableGen")
         endif()
     endif()
     llvm_set(TARGETS_TO_BUILD targets-built)
@@ -204,6 +232,10 @@ endif()
 string(REGEX REPLACE "([0-9]+).*" "\\1" LLVM_VERSION_MAJOR "${LLVM_VERSION_STRING}" )
 string(REGEX REPLACE "[0-9]+\\.([0-9]+).*[A-Za-z]*" "\\1" LLVM_VERSION_MINOR "${LLVM_VERSION_STRING}" )
 
+if (${LLVM_VERSION_STRING} VERSION_LESS ${LLVM_FIND_VERSION})
+    message(FATAL_ERROR "Unsupported LLVM version found ${LLVM_VERSION_STRING}. At least version ${LLVM_FIND_VERSION} is required.")
+endif()
+
 # Use the default CMake facilities for handling QUIET/REQUIRED.
 include(FindPackageHandleStandardArgs)
 

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-d/ldc.git



More information about the pkg-d-commits mailing list