Revert "Use find_library for ncurses"

The introduction of find_library for ncurses caused more issues than it solved problems. The current open issue is it makes the static build of LLVM fail. It is better to revert for now, and get back to it later.

Revert "[CMake] Fix an issue where get_system_libname creates an empty regex capture on windows"
This reverts commit 1ed1e16ab8.

Revert "Fix msan build"
This reverts commit 34fe9613dd.

Revert "[CMake] Always mark terminfo as unavailable on Windows"
This reverts commit 76bf26236f.

Revert "[CMake] Fix OCaml build failure because of absolute path in system libs"
This reverts commit 8e4acb82f7.

Revert "[CMake] Don't look for terminfo libs when LLVM_ENABLE_TERMINFO=OFF"
This reverts commit 495f91fd33.

Revert "Use find_library for ncurses"
This reverts commit a52173a3e5.

Differential revision: https://reviews.llvm.org/D86521
This commit is contained in:
Harmen Stoppels 2020-08-27 17:57:26 -07:00 committed by Galina Kistanova
parent ae8fa1d8a6
commit cdcb9ab10e
8 changed files with 45 additions and 55 deletions

View File

@ -133,18 +133,17 @@ check_library_exists(pthread pthread_create "" COMPILER_RT_HAS_LIBPTHREAD)
check_library_exists(execinfo backtrace "" COMPILER_RT_HAS_LIBEXECINFO)
# Look for terminfo library, used in unittests that depend on LLVMSupport.
if(LLVM_ENABLE_TERMINFO STREQUAL FORCE_ON)
set(MAYBE_REQUIRED REQUIRED)
else()
set(MAYBE_REQUIRED)
endif()
if(LLVM_ENABLE_TERMINFO)
find_library(COMPILER_RT_TERMINFO_LIB NAMES terminfo tinfo curses ncurses ncursesw ${MAYBE_REQUIRED})
endif()
if(COMPILER_RT_TERMINFO_LIB)
set(LLVM_ENABLE_TERMINFO 1)
else()
set(LLVM_ENABLE_TERMINFO 0)
foreach(library terminfo tinfo curses ncurses ncursesw)
string(TOUPPER ${library} library_suffix)
check_library_exists(
${library} setupterm "" COMPILER_RT_HAS_TERMINFO_${library_suffix})
if(COMPILER_RT_HAS_TERMINFO_${library_suffix})
set(COMPILER_RT_HAS_TERMINFO TRUE)
set(COMPILER_RT_TERMINFO_LIB "${library}")
break()
endif()
endforeach()
endif()
if (ANDROID AND COMPILER_RT_HAS_LIBDL)

View File

@ -55,7 +55,7 @@ set(XRAY_UNITTEST_LINK_FLAGS
if (NOT APPLE)
# Needed by LLVMSupport.
append_list_if(
LLVM_ENABLE_TERMINFO
COMPILER_RT_HAS_TERMINFO
-l${COMPILER_RT_TERMINFO_LIB} XRAY_UNITTEST_LINK_FLAGS)
if (COMPILER_RT_STANDALONE_BUILD)

View File

@ -11,8 +11,8 @@ set(LLDB_LIBEDIT_LIBS)
if (LLDB_ENABLE_CURSES)
list(APPEND LLDB_CURSES_LIBS ${CURSES_LIBRARIES} ${PANEL_LIBRARIES})
if(LLVM_ENABLE_TERMINFO)
list(APPEND LLDB_CURSES_LIBS ${TERMINFO_LIB})
if(LLVM_ENABLE_TERMINFO AND HAVE_TERMINFO)
list(APPEND LLDB_CURSES_LIBS ${TERMINFO_LIBS})
endif()
if (LLVM_BUILD_STATIC)
list(APPEND LLDB_CURSES_LIBS gpm)

View File

@ -148,18 +148,19 @@ if(NOT LLVM_USE_SANITIZER MATCHES "Memory.*")
else()
set(HAVE_LIBEDIT 0)
endif()
if(LLVM_ENABLE_TERMINFO STREQUAL FORCE_ON)
set(MAYBE_REQUIRED REQUIRED)
else()
set(MAYBE_REQUIRED)
endif()
if(LLVM_ENABLE_TERMINFO)
find_library(TERMINFO_LIB NAMES terminfo tinfo curses ncurses ncursesw ${MAYBE_REQUIRED})
endif()
if(TERMINFO_LIB)
set(LLVM_ENABLE_TERMINFO 1)
set(HAVE_TERMINFO 0)
foreach(library terminfo tinfo curses ncurses ncursesw)
string(TOUPPER ${library} library_suffix)
check_library_exists(${library} setupterm "" HAVE_TERMINFO_${library_suffix})
if(HAVE_TERMINFO_${library_suffix})
set(HAVE_TERMINFO 1)
set(TERMINFO_LIBS "${library}")
break()
endif()
endforeach()
else()
set(LLVM_ENABLE_TERMINFO 0)
set(HAVE_TERMINFO 0)
endif()
find_library(ICONV_LIBRARY_PATH NAMES iconv libiconv libiconv-2 c)
@ -176,11 +177,7 @@ if(NOT LLVM_USE_SANITIZER MATCHES "Memory.*")
endif()
endif()
endif()
else()
set(LLVM_ENABLE_TERMINFO 0)
endif()
else()
set(LLVM_ENABLE_TERMINFO 0)
endif()
if (LLVM_ENABLE_LIBXML2 STREQUAL "FORCE_ON" AND NOT LLVM_LIBXML2_ENABLED)

View File

@ -212,7 +212,7 @@
#cmakedefine HAVE_SYSEXITS_H ${HAVE_SYSEXITS_H}
/* Define if the setupterm() function is supported this platform. */
#cmakedefine LLVM_ENABLE_TERMINFO ${LLVM_ENABLE_TERMINFO}
#cmakedefine HAVE_TERMINFO ${HAVE_TERMINFO}
/* Define if the xar_open() function is supported this platform. */
#cmakedefine HAVE_LIBXAR ${HAVE_LIBXAR}

View File

@ -2,19 +2,6 @@ if(LLVM_ENABLE_ZLIB)
set(imported_libs ZLIB::ZLIB)
endif()
function(get_system_libname libpath libname)
get_filename_component(libpath ${libpath} NAME)
if( CMAKE_FIND_LIBRARY_PREFIXES )
string(REPLACE ";" "|" PREFIXES "${CMAKE_FIND_LIBRARY_PREFIXES}")
string(REGEX REPLACE "^(${PREFIXES})" "" libpath ${libpath})
endif()
if( CMAKE_FIND_LIBRARY_SUFFIXES )
string(REPLACE ";" "|" SUFFIXES "${CMAKE_FIND_LIBRARY_SUFFIXES}")
string(REGEX REPLACE "(${SUFFIXES})$" "" libpath ${libpath})
endif()
set(${libname} "${libpath}" PARENT_SCOPE)
endfunction()
if( MSVC OR MINGW )
# libuuid required for FOLDERID_Profile usage in lib/Support/Windows/Path.inc.
# advapi32 required for CryptAcquireContextW in lib/Support/Windows/Path.inc.
@ -34,8 +21,10 @@ elseif( CMAKE_HOST_UNIX )
STRING(REGEX REPLACE "^lib" "" Backtrace_LIBFILE ${Backtrace_LIBFILE})
set(system_libs ${system_libs} ${Backtrace_LIBFILE})
endif()
if( LLVM_ENABLE_TERMINFO )
set(imported_libs ${imported_libs} "${TERMINFO_LIB}")
if(LLVM_ENABLE_TERMINFO)
if(HAVE_TERMINFO)
set(system_libs ${system_libs} ${TERMINFO_LIBS})
endif()
endif()
if( LLVM_ENABLE_THREADS AND (HAVE_LIBATOMIC OR HAVE_CXX_LIBATOMICS64) )
set(system_libs ${system_libs} atomic)
@ -248,15 +237,20 @@ if(LLVM_ENABLE_ZLIB)
if(NOT zlib_library)
get_property(zlib_library TARGET ZLIB::ZLIB PROPERTY LOCATION)
endif()
get_system_libname(${zlib_library} zlib_library)
get_filename_component(zlib_library ${zlib_library} NAME)
if(CMAKE_STATIC_LIBRARY_PREFIX AND CMAKE_STATIC_LIBRARY_SUFFIX AND
zlib_library MATCHES "^${CMAKE_STATIC_LIBRARY_PREFIX}.*${CMAKE_STATIC_LIBRARY_SUFFIX}$")
STRING(REGEX REPLACE "^${CMAKE_STATIC_LIBRARY_PREFIX}" "" zlib_library ${zlib_library})
STRING(REGEX REPLACE "${CMAKE_STATIC_LIBRARY_SUFFIX}$" "" zlib_library ${zlib_library})
endif()
if(CMAKE_SHARED_LIBRARY_PREFIX AND CMAKE_SHARED_LIBRARY_SUFFIX AND
zlib_library MATCHES "^${CMAKE_SHARED_LIBRARY_PREFIX}.*${CMAKE_SHARED_LIBRARY_SUFFIX}$")
STRING(REGEX REPLACE "^${CMAKE_SHARED_LIBRARY_PREFIX}" "" zlib_library ${zlib_library})
STRING(REGEX REPLACE "${CMAKE_SHARED_LIBRARY_SUFFIX}$" "" zlib_library ${zlib_library})
endif()
set(llvm_system_libs ${llvm_system_libs} "${zlib_library}")
endif()
if(LLVM_ENABLE_TERMINFO)
get_system_libname(${TERMINFO_LIB} terminfo_library)
set(llvm_system_libs ${llvm_system_libs} "${terminfo_library}")
endif()
set_property(TARGET LLVMSupport PROPERTY LLVM_SYSTEM_LIBS "${llvm_system_libs}")
if(LLVM_WITH_Z3)

View File

@ -313,7 +313,7 @@ unsigned Process::StandardErrColumns() {
return getColumns();
}
#ifdef LLVM_ENABLE_TERMINFO
#ifdef HAVE_TERMINFO
// We manually declare these extern functions because finding the correct
// headers from various terminfo, curses, or other sources is harder than
// writing their specs down.
@ -323,12 +323,12 @@ extern "C" int del_curterm(struct term *termp);
extern "C" int tigetnum(char *capname);
#endif
#ifdef LLVM_ENABLE_TERMINFO
#ifdef HAVE_TERMINFO
static ManagedStatic<std::mutex> TermColorMutex;
#endif
static bool terminalHasColors(int fd) {
#ifdef LLVM_ENABLE_TERMINFO
#ifdef HAVE_TERMINFO
// First, acquire a global lock because these C routines are thread hostile.
std::lock_guard<std::mutex> G(*TermColorMutex);

View File

@ -286,9 +286,9 @@ write_cmake_config("config") {
}
if (llvm_enable_terminfo) {
values += [ "LLVM_ENABLE_TERMINFO=1" ]
values += [ "HAVE_TERMINFO=1" ]
} else {
values += [ "LLVM_ENABLE_TERMINFO=" ]
values += [ "HAVE_TERMINFO=" ]
}
if (llvm_enable_dia_sdk) {