authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2022-12-27 19:20:36-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2022-12-27 19:21:33-07:00
logb1207b3293968da4da12c26c85384f10ff4d1c06
tree5b7d5c3ed1da8abb386b3fbb465e8daecfb9cc69
parent601ab9a251a7952026fa9c72427344126bf62730

Revert "cmake: check llvm-config in separate function"

This reverts commit 55c3efcb58cc153fc3109a61c6949e470b57b81e. This caused a regression when building Zig with Homebrew. Also I don't like that it prints a message on success. Only when there is a problem should an error message be printed. closes #14093

1 files changed, 47 insertions(+), 49 deletions(-)

cmake/Findllvm.cmake+47-49
...@@ -8,9 +8,27 @@...@@ -8,9 +8,27 @@
8# LLVM_LIBDIRS8# LLVM_LIBDIRS
9# LLVM_LINK_MODE9# LLVM_LINK_MODE
1010
11function(check_llvm_config LLVM_CONFIG_EXE)11
12 # Start with empty message for current llvm-config12if(ZIG_USE_LLVM_CONFIG)
13 set(LLVM_CONFIG_ERROR_MESSAGES "" PARENT_SCOPE)13 set(LLVM_CONFIG_ERROR_MESSAGES "")
14 while(1)
15 unset(LLVM_CONFIG_EXE CACHE)
16 find_program(LLVM_CONFIG_EXE
17 NAMES llvm-config-15 llvm-config-15.0 llvm-config150 llvm-config15 llvm-config NAMES_PER_DIR
18 PATHS
19 "/mingw64/bin"
20 "/c/msys64/mingw64/bin"
21 "c:/msys64/mingw64/bin"
22 "C:/Libraries/llvm-15.0.0/bin")
23
24 if ("${LLVM_CONFIG_EXE}" STREQUAL "LLVM_CONFIG_EXE-NOTFOUND")
25 if (NOT LLVM_CONFIG_ERROR_MESSAGES STREQUAL "")
26 list(JOIN LLVM_CONFIG_ERROR_MESSAGES "\n" LLVM_CONFIG_ERROR_MESSAGE)
27 message(FATAL_ERROR ${LLVM_CONFIG_ERROR_MESSAGE})
28 else()
29 message(FATAL_ERROR "unable to find llvm-config")
30 endif()
31 endif()
1432
15 # Check that this LLVM is the right version33 # Check that this LLVM is the right version
16 execute_process(34 execute_process(
...@@ -18,10 +36,14 @@ function(check_llvm_config LLVM_CONFIG_EXE)...@@ -18,10 +36,14 @@ function(check_llvm_config LLVM_CONFIG_EXE)
18 OUTPUT_VARIABLE LLVM_CONFIG_VERSION36 OUTPUT_VARIABLE LLVM_CONFIG_VERSION
19 OUTPUT_STRIP_TRAILING_WHITESPACE)37 OUTPUT_STRIP_TRAILING_WHITESPACE)
2038
21 if("${LLVM_CONFIG_VERSION}" VERSION_LESS 15 OR "${LLVM_CONFIG_VERSION}" VERSION_GREATER_EQUAL 16)39 get_filename_component(LLVM_CONFIG_DIR "${LLVM_CONFIG_EXE}" DIRECTORY)
22 # Save the error message for current llvm-config we find40 if("${LLVM_CONFIG_VERSION}" VERSION_LESS 15 OR "${LLVM_CONFIG_VERSION}" VERSION_EQUAL 16 OR "${LLVM_CONFIG_VERSION}" VERSION_GREATER 16)
23 set(LLVM_CONFIG_ERROR_MESSAGES "Expected LLVM 15.x but found ${LLVM_CONFIG_VERSION}" PARENT_SCOPE)41 # Save the error message, in case this is the last llvm-config we find
24 return()42 list(APPEND LLVM_CONFIG_ERROR_MESSAGES "expected LLVM 15.x but found ${LLVM_CONFIG_VERSION} using ${LLVM_CONFIG_EXE}")
43
44 # Ignore this directory and try the search again
45 list(APPEND CMAKE_IGNORE_PATH "${LLVM_CONFIG_DIR}")
46 continue()
25 endif()47 endif()
2648
27 # Check that this LLVM supports linking as a shared/static library, if requested49 # Check that this LLVM supports linking as a shared/static library, if requested
...@@ -38,13 +60,17 @@ function(check_llvm_config LLVM_CONFIG_EXE)...@@ -38,13 +60,17 @@ function(check_llvm_config LLVM_CONFIG_EXE)
38 ERROR_VARIABLE LLVM_CONFIG_ERROR60 ERROR_VARIABLE LLVM_CONFIG_ERROR
39 ERROR_STRIP_TRAILING_WHITESPACE)61 ERROR_STRIP_TRAILING_WHITESPACE)
4062
41 if (LLVM_CONFIG_ERROR)63 if (LLVM_CONFIG_ERROR)
64 # Save the error message, in case this is the last llvm-config we find
42 if (ZIG_SHARED_LLVM)65 if (ZIG_SHARED_LLVM)
43 set(LLVM_CONFIG_ERROR_MESSAGES "This LLVM does not support linking as a shared library" PARENT_SCOPE)66 list(APPEND LLVM_CONFIG_ERROR_MESSAGES "LLVM 15.x found at ${LLVM_CONFIG_EXE} does not support linking as a shared library")
44 else()67 else()
45 set(LLVM_CONFIG_ERROR_MESSAGES "This LLVM does not support linking as a static library" PARENT_SCOPE)68 list(APPEND LLVM_CONFIG_ERROR_MESSAGES "LLVM 15.x found at ${LLVM_CONFIG_EXE} does not support linking as a static library")
46 endif()69 endif()
47 return()70
71 # Ignore this directory and try the search again
72 list(APPEND CMAKE_IGNORE_PATH "${LLVM_CONFIG_DIR}")
73 continue()
48 endif()74 endif()
49 endif()75 endif()
5076
...@@ -53,15 +79,17 @@ function(check_llvm_config LLVM_CONFIG_EXE)...@@ -53,15 +79,17 @@ function(check_llvm_config LLVM_CONFIG_EXE)
53 OUTPUT_VARIABLE LLVM_TARGETS_BUILT_SPACES79 OUTPUT_VARIABLE LLVM_TARGETS_BUILT_SPACES
54 OUTPUT_STRIP_TRAILING_WHITESPACE)80 OUTPUT_STRIP_TRAILING_WHITESPACE)
55 string(REPLACE " " ";" LLVM_TARGETS_BUILT "${LLVM_TARGETS_BUILT_SPACES}")81 string(REPLACE " " ";" LLVM_TARGETS_BUILT "${LLVM_TARGETS_BUILT_SPACES}")
5682 function(NEED_TARGET TARGET_NAME)
57 macro(NEED_TARGET TARGET_NAME)
58 list (FIND LLVM_TARGETS_BUILT "${TARGET_NAME}" _index)83 list (FIND LLVM_TARGETS_BUILT "${TARGET_NAME}" _index)
59 if (${_index} EQUAL -1)84 if (${_index} EQUAL -1)
60 set(LLVM_CONFIG_ERROR_MESSAGES "This LLVM is missing target ${TARGET_NAME}. Zig requires LLVM to be built with all default targets enabled." PARENT_SCOPE)85 # Save the error message, in case this is the last llvm-config we find
61 return()86 list(APPEND LLVM_CONFIG_ERROR_MESSAGES "LLVM (according to ${LLVM_CONFIG_EXE}) is missing target ${TARGET_NAME}. Zig requires LLVM to be built with all default targets enabled.")
62 endif()
63 endmacro()
6487
88 # Ignore this directory and try the search again
89 list(APPEND CMAKE_IGNORE_PATH "${LLVM_CONFIG_DIR}")
90 continue()
91 endif()
92 endfunction(NEED_TARGET)
65 NEED_TARGET("AArch64")93 NEED_TARGET("AArch64")
66 NEED_TARGET("AMDGPU")94 NEED_TARGET("AMDGPU")
67 NEED_TARGET("ARM")95 NEED_TARGET("ARM")
...@@ -80,39 +108,9 @@ function(check_llvm_config LLVM_CONFIG_EXE)...@@ -80,39 +108,9 @@ function(check_llvm_config LLVM_CONFIG_EXE)
80 NEED_TARGET("WebAssembly")108 NEED_TARGET("WebAssembly")
81 NEED_TARGET("X86")109 NEED_TARGET("X86")
82 NEED_TARGET("XCore")110 NEED_TARGET("XCore")
83endfunction()
84
85if(ZIG_USE_LLVM_CONFIG)
86 while(1)
87 unset(LLVM_CONFIG_EXE CACHE)
88 find_program(LLVM_CONFIG_EXE
89 NAMES llvm-config-15 llvm-config-15.0 llvm-config150 llvm-config15 llvm-config NAMES_PER_DIR
90 PATHS
91 "/mingw64/bin"
92 "/c/msys64/mingw64/bin"
93 "c:/msys64/mingw64/bin"
94 "C:/Libraries/llvm-15.0.0/bin")
95
96 if("${LLVM_CONFIG_EXE}" STREQUAL "LLVM_CONFIG_EXE-NOTFOUND")
97 message(FATAL_ERROR "Suitable llvm-config is not found.")
98 endif()
99
100 message("Trying ${LLVM_CONFIG_EXE}...")
101111
102 check_llvm_config(${LLVM_CONFIG_EXE})112 # Got it!
103 if(LLVM_CONFIG_ERROR_MESSAGES STREQUAL "")113 break()
104 message("This llvm-config is suitable for us, continuing...")
105 break()
106 else()
107
108 message("This llvm-config is not suitable for us:")
109 list(JOIN LLVM_CONFIG_ERROR_MESSAGES "\n" LLVM_CONFIG_ERROR_MESSAGE)
110 message(${LLVM_CONFIG_ERROR_MESSAGE})
111 message("Trying another llvm-config...")
112
113 get_filename_component(LLVM_CONFIG_DIR "${LLVM_CONFIG_EXE}" DIRECTORY)
114 list(APPEND CMAKE_IGNORE_PATH "${LLVM_CONFIG_DIR}")
115 endif()
116 endwhile()114 endwhile()
117115
118 if(ZIG_SHARED_LLVM OR ZIG_STATIC_LLVM)116 if(ZIG_SHARED_LLVM OR ZIG_STATIC_LLVM)