summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lldb/cmake/modules/FindCursesAndPanel.cmake24
-rw-r--r--lldb/cmake/modules/LLDBConfig.cmake74
-rw-r--r--lldb/source/Core/CMakeLists.txt4
-rw-r--r--lldb/test/CMakeLists.txt1
4 files changed, 57 insertions, 46 deletions
diff --git a/lldb/cmake/modules/FindCursesAndPanel.cmake b/lldb/cmake/modules/FindCursesAndPanel.cmake
new file mode 100644
index 00000000000..aaadf214bf5
--- /dev/null
+++ b/lldb/cmake/modules/FindCursesAndPanel.cmake
@@ -0,0 +1,24 @@
+#.rst:
+# FindCursesAndPanel
+# -----------
+#
+# Find the curses and panel library as a whole.
+
+if(CURSES_INCLUDE_DIRS AND CURSES_LIBRARIES AND PANEL_LIBRARIES)
+ set(CURSESANDPANEL_FOUND TRUE)
+else()
+ find_package(Curses QUIET)
+ find_library(PANEL_LIBRARIES NAMES panel DOC "The curses panel library" QUIET)
+ include(FindPackageHandleStandardArgs)
+ find_package_handle_standard_args(CursesAndPanel
+ FOUND_VAR
+ CURSESANDPANEL_FOUND
+ REQUIRED_VARS
+ CURSES_INCLUDE_DIRS
+ CURSES_LIBRARIES
+ PANEL_LIBRARIES)
+ if(CURSES_FOUND AND PANEL_LIBRARIES)
+ mark_as_advanced(CURSES_INCLUDE_DIRS CURSES_LIBRARIES PANEL_LIBRARIES)
+ endif()
+endif()
+
diff --git a/lldb/cmake/modules/LLDBConfig.cmake b/lldb/cmake/modules/LLDBConfig.cmake
index 16465ded052..3fc466b8f35 100644
--- a/lldb/cmake/modules/LLDBConfig.cmake
+++ b/lldb/cmake/modules/LLDBConfig.cmake
@@ -18,39 +18,43 @@ if(CMAKE_SOURCE_DIR STREQUAL CMAKE_BINARY_DIR)
"`CMakeFiles'. Please delete them.")
endif()
-set(default_enable_python ON)
-set(default_enable_lua OFF) # Experimental
-set(default_enable_libedit ON)
-set(default_enable_curses ON)
-
-# Temporarily support the old LLDB_DISABLE_* variables
-if (DEFINED LLDB_DISABLE_PYTHON)
- if (LLDB_DISABLE_PYTHON)
- set(default_enable_python OFF)
- endif()
+set(LLDB_LINKER_SUPPORTS_GROUPS OFF)
+if (LLVM_COMPILER_IS_GCC_COMPATIBLE AND NOT "${CMAKE_SYSTEM_NAME}" MATCHES "Darwin")
+ # The Darwin linker doesn't understand --start-group/--end-group.
+ set(LLDB_LINKER_SUPPORTS_GROUPS ON)
endif()
-if(DEFINED LLVM_ENABLE_LIBEDIT AND NOT LLVM_ENABLE_LIBEDIT)
- set(default_disable_libedit ON)
-endif()
+macro(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}}")
+endmacro()
+
+add_optional_dependency(LLDB_ENABLE_LIBEDIT "Enable editline support." LibEdit libedit_FOUND)
+add_optional_dependency(LLDB_ENABLE_CURSES "Enable curses support." CursesAndPanel CURSESANDPANEL_FOUND)
+add_optional_dependency(LLDB_ENABLE_LZMA "Enable LZMA compression support." LibLZMA LIBLZMA_FOUND)
+add_optional_dependency(LLDB_ENABLE_LUA "Enable Lua scripting support." Lua LUA_FOUND)
-if(CMAKE_SYSTEM_NAME MATCHES "Windows")
- set(default_enable_libedit OFF)
- set(default_enable_curses OFF)
-elseif(CMAKE_SYSTEM_NAME MATCHES "Android")
+set(default_enable_python ON)
+
+if(CMAKE_SYSTEM_NAME MATCHES "Android")
set(default_enable_python OFF)
- set(default_enable_lua OFF)
- set(default_enable_libedit OFF)
- set(default_enable_curses OFF)
elseif(IOS)
set(default_enable_python OFF)
- set(default_enable_lua OFF)
endif()
option(LLDB_ENABLE_PYTHON "Enable Python scripting integration." ${default_enable_python})
-option(LLDB_ENABLE_PYTHON "Enable Lua scripting integration." ${default_enable_lua})
-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)
@@ -113,15 +117,9 @@ if ((NOT MSVC) OR MSVC12)
add_definitions( -DHAVE_ROUND )
endif()
-if (LLDB_ENABLE_LUA)
- find_package(Lua REQUIRED)
-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)
@@ -137,7 +135,6 @@ if (LLDB_ENABLE_LIBEDIT)
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
@@ -398,12 +395,9 @@ endif()
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
@@ -493,14 +487,6 @@ else()
set(LLDB_CAN_USE_DEBUGSERVER OFF)
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.")
- endif ()
-endif ()
-
if ((CMAKE_SYSTEM_NAME MATCHES "Android") AND LLVM_BUILD_STATIC AND
((ANDROID_ABI MATCHES "armeabi") OR (ANDROID_ABI MATCHES "mips")))
add_definitions(-DANDROID_USE_ACCEPT_WORKAROUND)
diff --git a/lldb/source/Core/CMakeLists.txt b/lldb/source/Core/CMakeLists.txt
index ff2355a3927..c4be006d1a1 100644
--- a/lldb/source/Core/CMakeLists.txt
+++ b/lldb/source/Core/CMakeLists.txt
@@ -10,7 +10,7 @@ set(LLDB_CURSES_LIBS)
set(LLDB_LIBEDIT_LIBS)
if (LLDB_ENABLE_CURSES)
- list(APPEND LLDB_CURSES_LIBS ${CURSES_LIBRARIES} ${CURSES_PANEL_LIBRARY})
+ list(APPEND LLDB_CURSES_LIBS ${CURSES_LIBRARIES} ${PANEL_LIBRARIES})
if(LLVM_ENABLE_TERMINFO AND HAVE_TERMINFO)
list(APPEND LLDB_CURSES_LIBS ${TERMINFO_LIBS})
endif()
@@ -103,5 +103,5 @@ if (LLDB_ENABLE_LIBEDIT)
endif()
if (LLDB_ENABLE_CURSES)
- target_include_directories(lldbCore PRIVATE ${CURSES_INCLUDE_DIR})
+ target_include_directories(lldbCore PRIVATE ${CURSES_INCLUDE_DIRS})
endif()
diff --git a/lldb/test/CMakeLists.txt b/lldb/test/CMakeLists.txt
index b22ef6b79d5..4d9dfa56178 100644
--- a/lldb/test/CMakeLists.txt
+++ b/lldb/test/CMakeLists.txt
@@ -145,6 +145,7 @@ endif()
llvm_canonicalize_cmake_booleans(
LLDB_ENABLE_PYTHON
LLDB_ENABLE_LUA
+ LLDB_ENABLE_LZMA
LLVM_ENABLE_ZLIB
LLVM_ENABLE_SHARED_LIBS
LLDB_IS_64_BITS)
OpenPOWER on IntegriCloud