Summary: Instead of hardcoding a list of platforms where libedit is known to have wide char support we detect this in cmake. The main motivation for this is attempting to improve compatibility with different versions of libedit, as the interface of non-wide-char functions varies slightly between versions. Reviewers: krytarowski, uweigand, jankratochvil, timshen, beanz Subscribers: mgorny, lldb-commits Differential Revision: https://reviews.llvm.org/D47625 llvm-svn: 334393
62 lines
2.1 KiB
CMake
62 lines
2.1 KiB
CMake
# This file contains all the logic for running configure-time checks
|
|
|
|
include(CheckSymbolExists)
|
|
include(CheckIncludeFile)
|
|
include(CheckIncludeFiles)
|
|
include(CheckLibraryExists)
|
|
include(CheckTypeSize)
|
|
|
|
set(CMAKE_REQUIRED_DEFINITIONS -D_GNU_SOURCE)
|
|
check_symbol_exists(ppoll poll.h HAVE_PPOLL)
|
|
set(CMAKE_REQUIRED_DEFINITIONS)
|
|
check_symbol_exists(sigaction signal.h HAVE_SIGACTION)
|
|
check_cxx_symbol_exists(accept4 "sys/socket.h" HAVE_ACCEPT4)
|
|
|
|
check_include_file(termios.h HAVE_TERMIOS_H)
|
|
check_include_files("sys/types.h;sys/event.h" HAVE_SYS_EVENT_H)
|
|
|
|
check_cxx_symbol_exists(process_vm_readv "sys/uio.h" HAVE_PROCESS_VM_READV)
|
|
check_cxx_symbol_exists(__NR_process_vm_readv "sys/syscall.h" HAVE_NR_PROCESS_VM_READV)
|
|
|
|
check_library_exists(compression compression_encode_buffer "" HAVE_LIBCOMPRESSION)
|
|
|
|
# These checks exist in LLVM's configuration, so I want to match the LLVM names
|
|
# so that the check isn't duplicated, but we translate them into the LLDB names
|
|
# so that I don't have to change all the uses at the moment.
|
|
set(LLDB_CONFIG_TERMIOS_SUPPORTED ${HAVE_TERMIOS_H})
|
|
if(NOT UNIX)
|
|
set(LLDB_DISABLE_POSIX 1)
|
|
endif()
|
|
|
|
if (NOT LLDB_DISABLE_LIBEDIT)
|
|
# 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)
|
|
set(CMAKE_EXTRA_INCLUDE_FILES histedit.h)
|
|
check_type_size(el_rfunc_t LLDB_EL_RFUNC_T_SIZE)
|
|
if (LLDB_EL_RFUNC_T_SIZE STREQUAL "")
|
|
set(LLDB_HAVE_EL_RFUNC_T 0)
|
|
else()
|
|
set(LLDB_HAVE_EL_RFUNC_T 1)
|
|
endif()
|
|
set(CMAKE_REQUIRED_LIBRARIES)
|
|
set(CMAKE_REQUIRED_INCLUDES)
|
|
set(CMAKE_EXTRA_INCLUDE_FILES)
|
|
endif()
|
|
|
|
if(NOT LLDB_CONFIG_HEADER_INPUT)
|
|
set(LLDB_CONFIG_HEADER_INPUT ${LLDB_INCLUDE_ROOT}/lldb/Host/Config.h.cmake)
|
|
endif()
|
|
|
|
if(NOT LLDB_CONFIG_HEADER_OUTPUT)
|
|
set(LLDB_CONFIG_HEADER_OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/include/lldb/Host/Config.h)
|
|
endif()
|
|
|
|
# This should be done at the end
|
|
configure_file(
|
|
${LLDB_CONFIG_HEADER_INPUT}
|
|
${LLDB_CONFIG_HEADER_OUTPUT}
|
|
)
|