<div dir="ltr">Hello Jonas, Harmen,<br><br>This commit broke one of our builders:<br><a href="http://lab.llvm.org:8011/builders/lld-perf-testsuite/builds/30809">http://lab.llvm.org:8011/builders/lld-perf-testsuite/builds/30809</a><br><br><span style="font-family:monospace">. . .<br>FAILED: bin/llvm-tblgen <br>: && /usr/bin/c++  -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic -Wno-long-long -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wstring-conversion -fdiagnostics-color -ffunction-sections -fdata-sections -O3  -static -fno-pie -Wl,-allow-shlib-undefined    -Wl,-rpath-link,/home/buildslave/slave_as-bldslv8/lld-perf-testsuite/build/./lib  -Wl,-O3 -Wl,--gc-sections utils/TableGen/CMakeFiles/llvm-tblgen.dir/AsmMatcherEmitter.cpp.o utils/TableGen/CMakeFiles/llvm-tblgen.dir/AsmWriterEmitter.cpp.o utils/TableGen/CMakeFiles/llvm-tblgen.dir/AsmWriterInst.cpp.o utils/TableGen/CMakeFiles/llvm-tblgen.dir/Attributes.cpp.o utils/TableGen/CMakeFiles/llvm-tblgen.dir/CallingConvEmitter.cpp.o utils/TableGen/CMakeFiles/llvm-tblgen.dir/CodeEmitterGen.cpp.o utils/TableGen/CMakeFiles/llvm-tblgen.dir/CodeGenDAGPatterns.cpp.o utils/TableGen/CMakeFiles/llvm-tblgen.dir/CodeGenHwModes.cpp.o utils/TableGen/CMakeFiles/llvm-tblgen.dir/CodeGenInstruction.cpp.o utils/TableGen/CMakeFiles/llvm-tblgen.dir/CodeGenMapTable.cpp.o utils/TableGen/CMakeFiles/llvm-tblgen.dir/CodeGenRegisters.cpp.o utils/TableGen/CMakeFiles/llvm-tblgen.dir/CodeGenSchedule.cpp.o utils/TableGen/CMakeFiles/llvm-tblgen.dir/CodeGenTarget.cpp.o utils/TableGen/CMakeFiles/llvm-tblgen.dir/DAGISelEmitter.cpp.o utils/TableGen/CMakeFiles/llvm-tblgen.dir/DAGISelMatcherEmitter.cpp.o utils/TableGen/CMakeFiles/llvm-tblgen.dir/DAGISelMatcherGen.cpp.o utils/TableGen/CMakeFiles/llvm-tblgen.dir/DAGISelMatcherOpt.cpp.o utils/TableGen/CMakeFiles/llvm-tblgen.dir/DAGISelMatcher.cpp.o utils/TableGen/CMakeFiles/llvm-tblgen.dir/DFAEmitter.cpp.o utils/TableGen/CMakeFiles/llvm-tblgen.dir/DFAPacketizerEmitter.cpp.o utils/TableGen/CMakeFiles/llvm-tblgen.dir/DirectiveEmitter.cpp.o utils/TableGen/CMakeFiles/llvm-tblgen.dir/DisassemblerEmitter.cpp.o utils/TableGen/CMakeFiles/llvm-tblgen.dir/ExegesisEmitter.cpp.o utils/TableGen/CMakeFiles/llvm-tblgen.dir/FastISelEmitter.cpp.o utils/TableGen/CMakeFiles/llvm-tblgen.dir/FixedLenDecoderEmitter.cpp.o utils/TableGen/CMakeFiles/llvm-tblgen.dir/GICombinerEmitter.cpp.o utils/TableGen/CMakeFiles/llvm-tblgen.dir/GlobalISelEmitter.cpp.o utils/TableGen/CMakeFiles/llvm-tblgen.dir/InfoByHwMode.cpp.o utils/TableGen/CMakeFiles/llvm-tblgen.dir/InstrInfoEmitter.cpp.o utils/TableGen/CMakeFiles/llvm-tblgen.dir/InstrDocsEmitter.cpp.o utils/TableGen/CMakeFiles/llvm-tblgen.dir/IntrinsicEmitter.cpp.o utils/TableGen/CMakeFiles/llvm-tblgen.dir/OptEmitter.cpp.o utils/TableGen/CMakeFiles/llvm-tblgen.dir/OptParserEmitter.cpp.o utils/TableGen/CMakeFiles/llvm-tblgen.dir/OptRSTEmitter.cpp.o utils/TableGen/CMakeFiles/llvm-tblgen.dir/PredicateExpander.cpp.o utils/TableGen/CMakeFiles/llvm-tblgen.dir/PseudoLoweringEmitter.cpp.o utils/TableGen/CMakeFiles/llvm-tblgen.dir/RISCVCompressInstEmitter.cpp.o utils/TableGen/CMakeFiles/llvm-tblgen.dir/RegisterBankEmitter.cpp.o utils/TableGen/CMakeFiles/llvm-tblgen.dir/RegisterInfoEmitter.cpp.o utils/TableGen/CMakeFiles/llvm-tblgen.dir/SDNodeProperties.cpp.o utils/TableGen/CMakeFiles/llvm-tblgen.dir/SearchableTableEmitter.cpp.o utils/TableGen/CMakeFiles/llvm-tblgen.dir/SubtargetEmitter.cpp.o utils/TableGen/CMakeFiles/llvm-tblgen.dir/SubtargetFeatureInfo.cpp.o utils/TableGen/CMakeFiles/llvm-tblgen.dir/TableGen.cpp.o utils/TableGen/CMakeFiles/llvm-tblgen.dir/Types.cpp.o utils/TableGen/CMakeFiles/llvm-tblgen.dir/X86DisassemblerTables.cpp.o utils/TableGen/CMakeFiles/llvm-tblgen.dir/X86EVEX2VEXTablesEmitter.cpp.o utils/TableGen/CMakeFiles/llvm-tblgen.dir/X86FoldTablesEmitter.cpp.o utils/TableGen/CMakeFiles/llvm-tblgen.dir/X86ModRMFilters.cpp.o utils/TableGen/CMakeFiles/llvm-tblgen.dir/X86RecognizableInstr.cpp.o utils/TableGen/CMakeFiles/llvm-tblgen.dir/WebAssemblyDisassemblerEmitter.cpp.o utils/TableGen/CMakeFiles/llvm-tblgen.dir/CTagsEmitter.cpp.o  -o bin/llvm-tblgen  -Wl,-rpath,"\$ORIGIN/../lib"  lib/libLLVMSupport.a  lib/libLLVMTableGen.a  -lpthread  lib/libLLVMTableGenGlobalISel.a  lib/libLLVMTableGen.a  lib/libLLVMSupport.a  -lrt  -ldl  /usr/lib/x86_64-linux-gnu/libtinfo.so  -lpthread  -lm  lib/libLLVMDemangle.a && :<br>/usr/bin/ld: attempted static link of dynamic object `/usr/lib/x86_64-linux-gnu/libtinfo.so'<br>clang: error: linker command failed with exit code 1 (use -v to see invocation)</span><br><br>The previous revision builds green:<br><a href="http://lab.llvm.org:8011/builders/lld-perf-testsuite/builds/30948">http://lab.llvm.org:8011/builders/lld-perf-testsuite/builds/30948</a><br><br>Please have a look ASAP?<br><br>Thanks<br><br>Galina</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Aug 17, 2020 at 7:56 PM Jonas Devlieghere via lldb-commits <<a href="mailto:lldb-commits@lists.llvm.org">lldb-commits@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><br>
Author: Harmen Stoppels<br>
Date: 2020-08-17T19:52:52-07:00<br>
New Revision: a52173a3e56553d7b795bcf3cdadcf6433117107<br>
<br>
URL: <a href="https://github.com/llvm/llvm-project/commit/a52173a3e56553d7b795bcf3cdadcf6433117107" rel="noreferrer" target="_blank">https://github.com/llvm/llvm-project/commit/a52173a3e56553d7b795bcf3cdadcf6433117107</a><br>
DIFF: <a href="https://github.com/llvm/llvm-project/commit/a52173a3e56553d7b795bcf3cdadcf6433117107.diff" rel="noreferrer" target="_blank">https://github.com/llvm/llvm-project/commit/a52173a3e56553d7b795bcf3cdadcf6433117107.diff</a><br>
<br>
LOG: Use find_library for ncurses<br>
<br>
Currently it is hard to avoid having LLVM link to the system install of<br>
ncurses, since it uses check_library_exists to find e.g. libtinfo and<br>
not find_library or find_package.<br>
<br>
With this change the ncurses lib is found with find_library, which also<br>
considers CMAKE_PREFIX_PATH. This solves an issue for the spack package<br>
manager, where we want to use the zlib installed by spack, and spack<br>
provides the CMAKE_PREFIX_PATH for it.<br>
<br>
This is a similar change as <a href="https://reviews.llvm.org/D79219" rel="noreferrer" target="_blank">https://reviews.llvm.org/D79219</a>, which just<br>
landed in master.<br>
<br>
Differential revision: <a href="https://reviews.llvm.org/D85820" rel="noreferrer" target="_blank">https://reviews.llvm.org/D85820</a><br>
<br>
Added: <br>
<br>
<br>
Modified: <br>
    compiler-rt/cmake/config-ix.cmake<br>
    compiler-rt/lib/xray/tests/CMakeLists.txt<br>
    lldb/source/Core/CMakeLists.txt<br>
    llvm/cmake/config-ix.cmake<br>
    llvm/include/llvm/Config/config.h.cmake<br>
    llvm/lib/Support/CMakeLists.txt<br>
    llvm/lib/Support/Unix/Process.inc<br>
    llvm/utils/gn/secondary/llvm/include/llvm/Config/BUILD.gn<br>
<br>
Removed: <br>
<br>
<br>
<br>
################################################################################<br>
diff  --git a/compiler-rt/cmake/config-ix.cmake b/compiler-rt/cmake/config-ix.cmake<br>
index 5f9e868de5fd..c9d0da2fc089 100644<br>
--- a/compiler-rt/cmake/config-ix.cmake<br>
+++ b/compiler-rt/cmake/config-ix.cmake<br>
@@ -133,17 +133,16 @@ check_library_exists(pthread pthread_create "" COMPILER_RT_HAS_LIBPTHREAD)<br>
 check_library_exists(execinfo backtrace "" COMPILER_RT_HAS_LIBEXECINFO)<br>
<br>
 # Look for terminfo library, used in unittests that depend on LLVMSupport.<br>
-if(LLVM_ENABLE_TERMINFO)<br>
-  foreach(library terminfo tinfo curses ncurses ncursesw)<br>
-    string(TOUPPER ${library} library_suffix)<br>
-    check_library_exists(<br>
-      ${library} setupterm "" COMPILER_RT_HAS_TERMINFO_${library_suffix})<br>
-    if(COMPILER_RT_HAS_TERMINFO_${library_suffix})<br>
-      set(COMPILER_RT_HAS_TERMINFO TRUE)<br>
-      set(COMPILER_RT_TERMINFO_LIB "${library}")<br>
-      break()<br>
-    endif()<br>
-  endforeach()<br>
+if(LLVM_ENABLE_TERMINFO STREQUAL FORCE_ON)<br>
+  set(MAYBE_REQUIRED REQUIRED)<br>
+else()<br>
+  set(MAYBE_REQUIRED)<br>
+endif()<br>
+find_library(COMPILER_RT_TERMINFO_LIB NAMES terminfo tinfo curses ncurses ncursesw ${MAYBE_REQUIRED})<br>
+if(COMPILER_RT_TERMINFO_LIB)<br>
+  set(LLVM_ENABLE_TERMINFO 1)<br>
+else()<br>
+  set(LLVM_ENABLE_TERMINFO 0)<br>
 endif()<br>
<br>
 if (ANDROID AND COMPILER_RT_HAS_LIBDL)<br>
<br>
diff  --git a/compiler-rt/lib/xray/tests/CMakeLists.txt b/compiler-rt/lib/xray/tests/CMakeLists.txt<br>
index a1fbccaeb6d2..96a9db1ef877 100644<br>
--- a/compiler-rt/lib/xray/tests/CMakeLists.txt<br>
+++ b/compiler-rt/lib/xray/tests/CMakeLists.txt<br>
@@ -55,7 +55,7 @@ set(XRAY_UNITTEST_LINK_FLAGS<br>
 if (NOT APPLE)<br>
   # Needed by LLVMSupport.<br>
   append_list_if(<br>
-    COMPILER_RT_HAS_TERMINFO<br>
+    LLVM_ENABLE_TERMINFO<br>
     -l${COMPILER_RT_TERMINFO_LIB} XRAY_UNITTEST_LINK_FLAGS)<br>
<br>
   if (COMPILER_RT_STANDALONE_BUILD)<br>
<br>
diff  --git a/lldb/source/Core/CMakeLists.txt b/lldb/source/Core/CMakeLists.txt<br>
index a4057d11077f..01a25045081f 100644<br>
--- a/lldb/source/Core/CMakeLists.txt<br>
+++ b/lldb/source/Core/CMakeLists.txt<br>
@@ -11,8 +11,8 @@ set(LLDB_LIBEDIT_LIBS)<br>
<br>
 if (LLDB_ENABLE_CURSES)<br>
   list(APPEND LLDB_CURSES_LIBS ${CURSES_LIBRARIES} ${PANEL_LIBRARIES})<br>
-  if(LLVM_ENABLE_TERMINFO AND HAVE_TERMINFO)<br>
-    list(APPEND LLDB_CURSES_LIBS ${TERMINFO_LIBS})<br>
+  if(LLVM_ENABLE_TERMINFO)<br>
+    list(APPEND LLDB_CURSES_LIBS ${TERMINFO_LIB})<br>
   endif()<br>
   if (LLVM_BUILD_STATIC)<br>
     list(APPEND LLDB_CURSES_LIBS gpm)<br>
<br>
diff  --git a/llvm/cmake/config-ix.cmake b/llvm/cmake/config-ix.cmake<br>
index 2c20a1afeec0..67e2eb1cec14 100644<br>
--- a/llvm/cmake/config-ix.cmake<br>
+++ b/llvm/cmake/config-ix.cmake<br>
@@ -147,19 +147,16 @@ if(NOT LLVM_USE_SANITIZER MATCHES "Memory.*")<br>
     else()<br>
       set(HAVE_LIBEDIT 0)<br>
     endif()<br>
-    if(LLVM_ENABLE_TERMINFO)<br>
-      set(HAVE_TERMINFO 0)<br>
-      foreach(library terminfo tinfo curses ncurses ncursesw)<br>
-        string(TOUPPER ${library} library_suffix)<br>
-        check_library_exists(${library} setupterm "" HAVE_TERMINFO_${library_suffix})<br>
-        if(HAVE_TERMINFO_${library_suffix})<br>
-          set(HAVE_TERMINFO 1)<br>
-          set(TERMINFO_LIBS "${library}")<br>
-          break()<br>
-        endif()<br>
-      endforeach()<br>
+    if(LLVM_ENABLE_TERMINFO STREQUAL FORCE_ON)<br>
+      set(MAYBE_REQUIRED REQUIRED)<br>
+    else()<br>
+      set(MAYBE_REQUIRED)<br>
+    endif()<br>
+    find_library(TERMINFO_LIB NAMES terminfo tinfo curses ncurses ncursesw ${MAYBE_REQUIRED})<br>
+    if(TERMINFO_LIB)<br>
+      set(LLVM_ENABLE_TERMINFO 1)<br>
     else()<br>
-      set(HAVE_TERMINFO 0)<br>
+      set(LLVM_ENABLE_TERMINFO 0)<br>
     endif()<br>
<br>
     find_library(ICONV_LIBRARY_PATH NAMES iconv libiconv libiconv-2 c)<br>
<br>
diff  --git a/llvm/include/llvm/Config/config.h.cmake b/llvm/include/llvm/Config/config.h.cmake<br>
index b8c7e070eb34..a65947bf24c4 100644<br>
--- a/llvm/include/llvm/Config/config.h.cmake<br>
+++ b/llvm/include/llvm/Config/config.h.cmake<br>
@@ -209,7 +209,7 @@<br>
 #cmakedefine HAVE_SYS_TYPES_H ${HAVE_SYS_TYPES_H}<br>
<br>
 /* Define if the setupterm() function is supported this platform. */<br>
-#cmakedefine HAVE_TERMINFO ${HAVE_TERMINFO}<br>
+#cmakedefine LLVM_ENABLE_TERMINFO ${LLVM_ENABLE_TERMINFO}<br>
<br>
 /* Define if the xar_open() function is supported this platform. */<br>
 #cmakedefine HAVE_LIBXAR ${HAVE_LIBXAR}<br>
<br>
diff  --git a/llvm/lib/Support/CMakeLists.txt b/llvm/lib/Support/CMakeLists.txt<br>
index 7b45dc628160..b895f02a9df7 100644<br>
--- a/llvm/lib/Support/CMakeLists.txt<br>
+++ b/llvm/lib/Support/CMakeLists.txt<br>
@@ -21,10 +21,8 @@ elseif( CMAKE_HOST_UNIX )<br>
     STRING(REGEX REPLACE "^lib" "" Backtrace_LIBFILE ${Backtrace_LIBFILE})<br>
     set(system_libs ${system_libs} ${Backtrace_LIBFILE})<br>
   endif()<br>
-  if(LLVM_ENABLE_TERMINFO)<br>
-    if(HAVE_TERMINFO)<br>
-      set(system_libs ${system_libs} ${TERMINFO_LIBS})<br>
-    endif()<br>
+  if( LLVM_ENABLE_TERMINFO )<br>
+    set(system_libs ${system_libs} ${TERMINFO_LIB})<br>
   endif()<br>
   if( LLVM_ENABLE_THREADS AND (HAVE_LIBATOMIC OR HAVE_CXX_LIBATOMICS64) )<br>
     set(system_libs ${system_libs} atomic)<br>
<br>
diff  --git a/llvm/lib/Support/Unix/Process.inc b/llvm/lib/Support/Unix/Process.inc<br>
index 24f16b51af7b..7425d084da27 100644<br>
--- a/llvm/lib/Support/Unix/Process.inc<br>
+++ b/llvm/lib/Support/Unix/Process.inc<br>
@@ -313,7 +313,7 @@ unsigned Process::StandardErrColumns() {<br>
   return getColumns();<br>
 }<br>
<br>
-#ifdef HAVE_TERMINFO<br>
+#ifdef LLVM_ENABLE_TERMINFO<br>
 // We manually declare these extern functions because finding the correct<br>
 // headers from various terminfo, curses, or other sources is harder than<br>
 // writing their specs down.<br>
@@ -323,12 +323,12 @@ extern "C" int del_curterm(struct term *termp);<br>
 extern "C" int tigetnum(char *capname);<br>
 #endif<br>
<br>
-#ifdef HAVE_TERMINFO<br>
+#ifdef LLVM_ENABLE_TERMINFO<br>
 static ManagedStatic<std::mutex> TermColorMutex;<br>
 #endif<br>
<br>
 static bool terminalHasColors(int fd) {<br>
-#ifdef HAVE_TERMINFO<br>
+#ifdef LLVM_ENABLE_TERMINFO<br>
   // First, acquire a global lock because these C routines are thread hostile.<br>
   std::lock_guard<std::mutex> G(*TermColorMutex);<br>
<br>
<br>
diff  --git a/llvm/utils/gn/secondary/llvm/include/llvm/Config/BUILD.gn b/llvm/utils/gn/secondary/llvm/include/llvm/Config/BUILD.gn<br>
index c9e7c45fc118..35c6890efd6d 100644<br>
--- a/llvm/utils/gn/secondary/llvm/include/llvm/Config/BUILD.gn<br>
+++ b/llvm/utils/gn/secondary/llvm/include/llvm/Config/BUILD.gn<br>
@@ -284,9 +284,9 @@ write_cmake_config("config") {<br>
   }<br>
<br>
   if (llvm_enable_terminfo) {<br>
-    values += [ "HAVE_TERMINFO=1" ]<br>
+    values += [ "LLVM_ENABLE_TERMINFO=1" ]<br>
   } else {<br>
-    values += [ "HAVE_TERMINFO=" ]<br>
+    values += [ "LLVM_ENABLE_TERMINFO=" ]<br>
   }<br>
<br>
   if (llvm_enable_dia_sdk) {<br>
<br>
<br>
<br>
_______________________________________________<br>
lldb-commits mailing list<br>
<a href="mailto:lldb-commits@lists.llvm.org" target="_blank">lldb-commits@lists.llvm.org</a><br>
<a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits" rel="noreferrer" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits</a><br>
</blockquote></div>