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 @@
88# LLVM_LIBDIRS
99# LLVM_LINK_MODE
1010
11function(check_llvm_config LLVM_CONFIG_EXE)
12 # Start with empty message for current llvm-config
13 set(LLVM_CONFIG_ERROR_MESSAGES "" PARENT_SCOPE)
11
12if(ZIG_USE_LLVM_CONFIG)
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
1533 # Check that this LLVM is the right version
1634 execute_process(
......@@ -18,10 +36,14 @@ function(check_llvm_config LLVM_CONFIG_EXE)
1836 OUTPUT_VARIABLE LLVM_CONFIG_VERSION
1937 OUTPUT_STRIP_TRAILING_WHITESPACE)
2038
21 if("${LLVM_CONFIG_VERSION}" VERSION_LESS 15 OR "${LLVM_CONFIG_VERSION}" VERSION_GREATER_EQUAL 16)
22 # Save the error message for current llvm-config we find
23 set(LLVM_CONFIG_ERROR_MESSAGES "Expected LLVM 15.x but found ${LLVM_CONFIG_VERSION}" PARENT_SCOPE)
24 return()
39 get_filename_component(LLVM_CONFIG_DIR "${LLVM_CONFIG_EXE}" DIRECTORY)
40 if("${LLVM_CONFIG_VERSION}" VERSION_LESS 15 OR "${LLVM_CONFIG_VERSION}" VERSION_EQUAL 16 OR "${LLVM_CONFIG_VERSION}" VERSION_GREATER 16)
41 # Save the error message, in case this is the last llvm-config we find
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()
2547 endif()
2648
2749 # Check that this LLVM supports linking as a shared/static library, if requested
......@@ -38,13 +60,17 @@ function(check_llvm_config LLVM_CONFIG_EXE)
3860 ERROR_VARIABLE LLVM_CONFIG_ERROR
3961 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
4265 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")
4467 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")
4669 endif()
47 return()
70
71 # Ignore this directory and try the search again
72 list(APPEND CMAKE_IGNORE_PATH "${LLVM_CONFIG_DIR}")
73 continue()
4874 endif()
4975 endif()
5076
......@@ -53,15 +79,17 @@ function(check_llvm_config LLVM_CONFIG_EXE)
5379 OUTPUT_VARIABLE LLVM_TARGETS_BUILT_SPACES
5480 OUTPUT_STRIP_TRAILING_WHITESPACE)
5581 string(REPLACE " " ";" LLVM_TARGETS_BUILT "${LLVM_TARGETS_BUILT_SPACES}")
56
57 macro(NEED_TARGET TARGET_NAME)
82 function(NEED_TARGET TARGET_NAME)
5883 list (FIND LLVM_TARGETS_BUILT "${TARGET_NAME}" _index)
5984 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)
61 return()
62 endif()
63 endmacro()
85 # Save the error message, in case this is the last llvm-config we find
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.")
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)
6593 NEED_TARGET("AArch64")
6694 NEED_TARGET("AMDGPU")
6795 NEED_TARGET("ARM")
......@@ -80,39 +108,9 @@ function(check_llvm_config LLVM_CONFIG_EXE)
80108 NEED_TARGET("WebAssembly")
81109 NEED_TARGET("X86")
82110 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})
103 if(LLVM_CONFIG_ERROR_MESSAGES STREQUAL "")
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()
112 # Got it!
113 break()
116114 endwhile()
117115
118116 if(ZIG_SHARED_LLVM OR ZIG_STATIC_LLVM)