Index: lldb/cmake/modules/FindCursesAndPanel.cmake =================================================================== --- /dev/null +++ lldb/cmake/modules/FindCursesAndPanel.cmake @@ -0,0 +1,16 @@ +#.rst: +# FindCursesAndPanel +# ----------- +# +# Find the curses and panel library as a whole. + +if(CURSES_INCLUDE_DIRS AND CURSES_LIBRARIES AND PANEL_LIBRARIES) + set(CURSES_PANEL_FOUND TRUE) +else() + find_package(Curses QUIET) + find_library(PANEL_LIBRARIES NAMES panel DOC "The curses panel library" QUIET) + if(CURSES_FOUND AND PANEL_LIBRARIES) + mark_as_advanced(CURSES_INCLUDE_DIRS CURSES_LIBRARIES PANEL_LIBRARIES) + endif() +endif() + Index: lldb/cmake/modules/LLDBConfig.cmake =================================================================== --- lldb/cmake/modules/LLDBConfig.cmake +++ lldb/cmake/modules/LLDBConfig.cmake @@ -24,40 +24,43 @@ set(LLDB_LINKER_SUPPORTS_GROUPS ON) endif() +function(add_optional_dependency variable description package found) + set(${variable} "Auto" CACHE STRING "${description} On, Off or Auto (default)") + string(TOUPPER "${${variable}}" ${variable}) + + if("${${variable}}" STREQUAL "AUTO") + set(maybe_required) + elseif(${${variable}}) + set(maybe_required REQUIRED) + else() + set(${variable} OFF PARENT_SCOPE) + return() + endif() + + find_package(${package} ${maybe_required}) + set(${variable} ${${found}} PARENT_SCOPE) +endfunction() + +add_optional_dependency(LLDB_ENABLE_LIBEDIT "Enable editline support." LibEdit libedit_FOUND) +add_optional_dependency(LLDB_ENABLE_CURSES "Enable curses support." CursesAndPanel CURSES_PANEL_FOUND) +add_optional_dependency(LLDB_ENABLE_LZMA "Enable LZMA compression support." LibLZMA LIBLZMA_FOUND) + set(default_enable_python ON) -set(default_enable_libedit ON) -set(default_enable_curses ON) # Temporary support the old LLDB_DISABLE_* variables -if (DEFINED LLDB_DISABLE_CURSES) - if (LLDB_DISABLE_CURSES) - set(default_enable_curses OFF) - endif() -endif() if (DEFINED LLDB_DISABLE_PYTHON) if (LLDB_DISABLE_PYTHON) set(default_enable_python OFF) endif() endif() -if(DEFINED LLVM_ENABLE_LIBEDIT AND NOT LLVM_ENABLE_LIBEDIT) - set(default_disable_libedit ON) -endif() - -if(CMAKE_SYSTEM_NAME MATCHES "Windows") - set(default_enable_libedit OFF) - set(default_enable_curses OFF) -elseif(CMAKE_SYSTEM_NAME MATCHES "Android") +if(CMAKE_SYSTEM_NAME MATCHES "Android") set(default_enable_python OFF) - set(default_enable_libedit OFF) - set(default_enable_curses OFF) elseif(IOS) set(default_enable_python OFF) endif() option(LLDB_ENABLE_PYTHON "Enable Python scripting integration." ${default_enable_python}) -option(LLDB_ENABLE_LIBEDIT "Enable the use of editline." ${default_enable_libedit}) -option(LLDB_ENABLE_CURSES "Enable Curses integration." ${default_enable_curses}) option(LLDB_RELOCATABLE_PYTHON "Use the PYTHONHOME environment variable to locate Python." OFF) option(LLDB_USE_SYSTEM_SIX "Use six.py shipped with system and do not install a copy of it" OFF) option(LLDB_USE_ENTITLEMENTS "When codesigning, use entitlements if available" ON) @@ -120,12 +123,9 @@ add_definitions( -DHAVE_ROUND ) endif() - +# Check if we libedit capable of handling wide characters (built with +# '--enable-widec'). if (LLDB_ENABLE_LIBEDIT) - find_package(LibEdit REQUIRED) - - # Check if we libedit capable of handling wide characters (built with - # '--enable-widec'). set(CMAKE_REQUIRED_LIBRARIES ${libedit_LIBRARIES}) set(CMAKE_REQUIRED_INCLUDES ${libedit_INCLUDE_DIRS}) check_symbol_exists(el_winsertstr histedit.h LLDB_EDITLINE_USE_WCHAR) @@ -141,7 +141,6 @@ set(CMAKE_EXTRA_INCLUDE_FILES) endif() - # On Windows, we can't use the normal FindPythonLibs module that comes with CMake, # for a number of reasons. # 1) Prior to MSVC 2015, it is only possible to embed Python if python itself was @@ -402,12 +401,9 @@ set(LLDB_VERSION "${LLDB_VERSION_MAJOR}.${LLDB_VERSION_MINOR}.${LLDB_VERSION_PATCH}${LLDB_VERSION_SUFFIX}") message(STATUS "LLDB version: ${LLDB_VERSION}") -find_package(LibLZMA) -cmake_dependent_option(LLDB_ENABLE_LZMA "Support LZMA compression" ON "LIBLZMA_FOUND" OFF) if (LLDB_ENABLE_LZMA) include_directories(${LIBLZMA_INCLUDE_DIRS}) endif() -llvm_canonicalize_cmake_booleans(LLDB_ENABLE_LZMA) include_directories(BEFORE ${CMAKE_CURRENT_BINARY_DIR}/include @@ -498,10 +494,10 @@ endif() if (LLDB_ENABLE_CURSES) - find_package(Curses REQUIRED) find_library(CURSES_PANEL_LIBRARY NAMES panel DOC "The curses panel library") if (NOT CURSES_PANEL_LIBRARY) - message(FATAL_ERROR "A required curses' panel library not found.") + set(LLDB_ENABLE_CURSES OFF) + message(WARNING "Curses panel library not found.") endif () endif () Index: lldb/test/CMakeLists.txt =================================================================== --- lldb/test/CMakeLists.txt +++ lldb/test/CMakeLists.txt @@ -144,6 +144,7 @@ # These values are not canonicalized within LLVM. llvm_canonicalize_cmake_booleans( LLDB_ENABLE_PYTHON + LLDB_ENABLE_LZMA LLVM_ENABLE_ZLIB LLVM_ENABLE_SHARED_LIBS LLDB_IS_64_BITS)