[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