diff options
2018 files changed, 53385 insertions, 42820 deletions
diff --git a/.gitignore b/.gitignore index 29f407fb3fb3..35da4f658fcc 100644 --- a/.gitignore +++ b/.gitignore @@ -37,8 +37,6 @@ ninja/ *xcuserdata test/20* __pycache__/ -*.lock -*.so clang-module-cache @@ -53,7 +51,3 @@ tags # Ignore test trace directories. 20??-??-??-??_??_??/ -# Ignore crashlog support files. -crashinfo.lock -crashinfo.so - diff --git a/CMakeLists.txt b/CMakeLists.txt index c6b082e104e5..00ddcdc1488f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -29,13 +29,39 @@ endif () set(LLDB_DISABLE_LIBEDIT ${LLDB_DEFAULT_DISABLE_LIBEDIT} CACHE BOOL "Disables the use of editline.") if (LLDB_DISABLE_LIBEDIT) add_definitions( -DLLDB_DISABLE_LIBEDIT ) +else() + find_package(LibEdit REQUIRED) endif() if(APPLE) add_definitions(-DLLDB_USE_OS_LOG) endif() -# add_subdirectory(include) +# lldb-suite is a dummy target that encompasses all the necessary tools and +# libraries for building a fully-functioning liblldb. +add_custom_target(lldb-suite) +set(LLDB_SUITE_TARGET lldb-suite) + +option(LLDB_BUILD_FRAMEWORK "Build the Darwin LLDB.framework" Off) +if(LLDB_BUILD_FRAMEWORK) + if (CMAKE_VERSION VERSION_LESS 3.7) + message(FATAL_ERROR "LLDB_BUILD_FRAMEWORK is not supported on CMake < 3.7") + endif() + if (NOT APPLE) + message(FATAL_ERROR "LLDB.framework can only be generated when targeting Apple platforms") + endif() + + # These are used to fill out LLDB-Info.plist. These are relevant when building + # the framework, and must be defined before building liblldb. + set(PRODUCT_NAME "LLDB") + set(EXECUTABLE_NAME "LLDB") + set(CURRENT_PROJECT_VERSION "360.99.0") + set(LLDB_SUITE_TARGET lldb-framework) + + set(LLDB_FRAMEWORK_DIR + ${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/${LLDB_FRAMEWORK_INSTALL_DIR}) +endif() + add_subdirectory(docs) if (NOT LLDB_DISABLE_PYTHON) if(LLDB_USE_SYSTEM_SIX) @@ -45,8 +71,7 @@ if (NOT LLDB_DISABLE_PYTHON) set(LLDB_PYTHON_TARGET_DIR ${LLDB_BINARY_DIR}/scripts) set(LLDB_WRAP_PYTHON ${LLDB_BINARY_DIR}/scripts/LLDBWrapPython.cpp) if(LLDB_BUILD_FRAMEWORK) - set(LLDB_PYTHON_TARGET_DIR - ${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/${LLDB_FRAMEWORK_INSTALL_DIR}) + set(LLDB_PYTHON_TARGET_DIR ${LLDB_FRAMEWORK_DIR}) set(LLDB_WRAP_PYTHON ${LLDB_PYTHON_TARGET_DIR}/LLDBWrapPython.cpp) else() # Don't set -m when building the framework. @@ -56,31 +81,90 @@ if (NOT LLDB_DISABLE_PYTHON) add_subdirectory(scripts) endif () + add_subdirectory(source) add_subdirectory(tools) option(LLDB_INCLUDE_TESTS "Generate build targets for the LLDB unit tests." ${LLVM_INCLUDE_TESTS}) +option(LLDB_TEST_USE_CUSTOM_C_COMPILER "Use the C compiler provided via LLDB_TEST_C_COMPILER for building test inferiors (instead of the just-built compiler). Defaults to OFF." OFF) +option(LLDB_TEST_USE_CUSTOM_CXX_COMPILER "Use the C++ compiler provided via LLDB_TEST_CXX_COMPILER for building test inferiors (instead of the just-built compiler). Defaults to OFF." OFF) if(LLDB_INCLUDE_TESTS) - if (TARGET clang) - set(LLDB_DEFAULT_TEST_C_COMPILER "${LLVM_BINARY_DIR}/bin/clang${CMAKE_EXECUTABLE_SUFFIX}") - set(LLDB_DEFAULT_TEST_CXX_COMPILER "${LLVM_BINARY_DIR}/bin/clang++${CMAKE_EXECUTABLE_SUFFIX}") + + # The difference between the following two paths is significant. The path to + # LLDB will point to LLDB's binary directory, while the other will point to + # LLVM's binary directory in case the two differ. + set(LLDB_DEFAULT_TEST_EXECUTABLE "${LLVM_RUNTIME_OUTPUT_INTDIR}/lldb${CMAKE_EXECUTABLE_SUFFIX}") + set(LLDB_DEFAULT_TEST_DSYMUTIL "${LLVM_BINARY_DIR}/${CMAKE_CFG_INTDIR}/bin/dsymutil${CMAKE_EXECUTABLE_SUFFIX}") + + if (NOT LLDB_TEST_USE_CUSTOM_C_COMPILER AND TARGET clang) + set(LLDB_DEFAULT_TEST_C_COMPILER "${LLVM_BINARY_DIR}/${CMAKE_CFG_INTDIR}/bin/clang${CMAKE_EXECUTABLE_SUFFIX}") else() set(LLDB_DEFAULT_TEST_C_COMPILER "") + endif() + + if (NOT LLDB_TEST_USE_CUSTOM_CXX_COMPILER AND TARGET clang) + set(LLDB_DEFAULT_TEST_CXX_COMPILER "${LLVM_BINARY_DIR}/${CMAKE_CFG_INTDIR}/bin/clang++${CMAKE_EXECUTABLE_SUFFIX}") + else() set(LLDB_DEFAULT_TEST_CXX_COMPILER "") endif() + set(LLDB_TEST_EXECUTABLE "${LLDB_DEFAULT_TEST_EXECUTABLE}" CACHE PATH "lldb executable used for testing") set(LLDB_TEST_C_COMPILER "${LLDB_DEFAULT_TEST_C_COMPILER}" CACHE PATH "C Compiler to use for building LLDB test inferiors") set(LLDB_TEST_CXX_COMPILER "${LLDB_DEFAULT_TEST_CXX_COMPILER}" CACHE PATH "C++ Compiler to use for building LLDB test inferiors") + set(LLDB_TEST_DSYMUTIL "${LLDB_DEFAULT_TEST_DSYMUTIL}" CACHE PATH "dsymutil used for generating dSYM bundles") if (("${LLDB_TEST_C_COMPILER}" STREQUAL "") OR ("${LLDB_TEST_CXX_COMPILER}" STREQUAL "")) message(FATAL_ERROR "LLDB test compilers not specified. Tests will not run") endif() + set(LLDB_TEST_DEPS lldb) + + # darwin-debug is an hard dependency for the testsuite. + if (CMAKE_SYSTEM_NAME MATCHES "Darwin") + list(APPEND LLDB_TEST_DEPS darwin-debug) + endif() + + if(TARGET lldb-server) + list(APPEND LLDB_TEST_DEPS lldb-server) + endif() + + if(TARGET debugserver) + if(NOT CMAKE_HOST_APPLE OR LLDB_CODESIGN_IDENTITY) + list(APPEND LLDB_TEST_DEPS debugserver) + endif() + endif() + + if(TARGET lldb-mi) + list(APPEND LLDB_TEST_DEPS lldb-mi) + endif() + + if(NOT LLDB_BUILT_STANDALONE) + list(APPEND LLDB_TEST_DEPS yaml2obj) + endif() + + if(TARGET liblldb) + list(APPEND LLDB_TEST_DEPS liblldb) + endif() + + if(TARGET clang) + list(APPEND LLDB_TEST_DEPS clang) + endif() + + if(TARGET dsymutil) + list(APPEND LLDB_TEST_DEPS dsymutil) + endif() + add_subdirectory(test) add_subdirectory(unittests) add_subdirectory(lit) + add_subdirectory(utils/lldb-dotest) +endif() + +if (LLDB_BUILD_FRAMEWORK) + add_custom_target(lldb-framework) + include(LLDBFramework) endif() if (NOT LLDB_DISABLE_PYTHON) @@ -91,7 +175,7 @@ if (NOT LLDB_DISABLE_PYTHON) ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/scripts/finishSwigWrapperClasses.py --srcRoot=${LLDB_SOURCE_DIR} --targetDir=${LLDB_PYTHON_TARGET_DIR} - --cfgBldDir=${CMAKE_CURRENT_BINARY_DIR}/scripts + --cfgBldDir=${LLDB_PYTHON_TARGET_DIR} --prefix=${CMAKE_BINARY_DIR} --cmakeBuildConfiguration=${CMAKE_CFG_INTDIR} --lldbLibDir=lib${LLVM_LIBDIR_SUFFIX} @@ -99,10 +183,11 @@ if (NOT LLDB_DISABLE_PYTHON) ${FINISH_EXTRA_ARGS} VERBATIM DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/scripts/finishSwigWrapperClasses.py - DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/scripts/lldb.py + DEPENDS ${LLDB_PYTHON_TARGET_DIR}/lldb.py COMMENT "Python script sym-linking LLDB Python API") - # We depend on liblldb being built before we can do this step. - add_dependencies(finish_swig liblldb lldb-argdumper) + + # We depend on liblldb and lldb-argdumper being built before we can do this step. + add_dependencies(finish_swig ${LLDB_SUITE_TARGET}) # If we build the readline module, we depend on that happening # first. @@ -113,8 +198,8 @@ if (NOT LLDB_DISABLE_PYTHON) # Ensure we do the python post-build step when building lldb. add_dependencies(lldb finish_swig) - if(LLDB_BUILD_FRAMEWORK) - # The target to install libLLDB needs to depend on finish swig so that the + if (LLDB_BUILD_FRAMEWORK) + # The target to install libLLDB needs to depend on finish_swig so that the # framework build properly copies over the Python files. add_dependencies(install-liblldb finish_swig) endif() diff --git a/CODE_OWNERS.txt b/CODE_OWNERS.txt index dac886870779..8ee04557af61 100644 --- a/CODE_OWNERS.txt +++ b/CODE_OWNERS.txt @@ -17,7 +17,7 @@ D: Build scripts, Test suite, Platform, gdb-remote, Anything not covered by this N: Jim Ingham E: jingham@apple.com D: Overall LLDB architecture, Thread plans, Expression parser, ValueObject, Breakpoints, ABI -D: Watchpoints, Trampolines, Target, Command Interpreter, C++ / Objective C Language runtime +D: Watchpoints, Trampolines, Target, Command Interpreter, C++ / Objective-C Language runtime D: Expression evaluator, IR interpreter, Clang integration D: Data Formatters diff --git a/cmake/modules/AddLLDB.cmake b/cmake/modules/AddLLDB.cmake index 2fd8b384d9e3..129a5ef7500d 100644 --- a/cmake/modules/AddLLDB.cmake +++ b/cmake/modules/AddLLDB.cmake @@ -86,7 +86,7 @@ endfunction(add_lldb_library) function(add_lldb_executable name) cmake_parse_arguments(ARG - "INCLUDE_IN_FRAMEWORK;GENERATE_INSTALL" + "INCLUDE_IN_SUITE;GENERATE_INSTALL" "" "LINK_LIBS;LINK_COMPONENTS" ${ARGN} @@ -99,8 +99,9 @@ function(add_lldb_executable name) set_target_properties(${name} PROPERTIES FOLDER "lldb executables") - if(LLDB_BUILD_FRAMEWORK) - if(ARG_INCLUDE_IN_FRAMEWORK) + if(ARG_INCLUDE_IN_SUITE) + add_dependencies(lldb-suite ${name}) + if(LLDB_BUILD_FRAMEWORK) if(NOT IOS) set(resource_dir "/Resources") set(resource_dots "../") @@ -110,29 +111,23 @@ function(add_lldb_executable name) RUNTIME_OUTPUT_DIRECTORY $<TARGET_FILE_DIR:liblldb>${resource_dir} BUILD_WITH_INSTALL_RPATH On INSTALL_RPATH "@loader_path/../../../${resource_dots}${_dots}/${LLDB_FRAMEWORK_INSTALL_DIR}") - # For things inside the framework we don't need functional install targets - # because CMake copies the resources and headers from the build directory. - # But we still need this target to exist in order to use the - # LLVM_DISTRIBUTION_COMPONENTS build option. We also need the - # install-liblldb target to depend on this tool, so that it gets put into - # the Resources directory before the framework is installed. - if(ARG_GENERATE_INSTALL) - add_custom_target(install-${name} DEPENDS ${name}) - add_dependencies(install-liblldb ${name}) - add_custom_target(install-${name}-stripped DEPENDS ${name}) - add_dependencies(install-liblldb-stripped ${name}) - endif() - else() - set_target_properties(${name} PROPERTIES - BUILD_WITH_INSTALL_RPATH On - INSTALL_RPATH "@loader_path/../${LLDB_FRAMEWORK_INSTALL_DIR}") endif() endif() - if(ARG_GENERATE_INSTALL AND NOT (ARG_INCLUDE_IN_FRAMEWORK AND LLDB_BUILD_FRAMEWORK )) + if(LLDB_BUILD_FRAMEWORK AND NOT ARG_INCLUDE_IN_SUITE) + set_target_properties(${name} PROPERTIES + BUILD_WITH_INSTALL_RPATH On + INSTALL_RPATH "@loader_path/../${LLDB_FRAMEWORK_INSTALL_DIR}") + endif() + + if(ARG_GENERATE_INSTALL) + set(out_dir "bin") + if (LLDB_BUILD_FRAMEWORK AND ARG_INCLUDE_IN_SUITE) + set(out_dir ${LLDB_FRAMEWORK_INSTALL_DIR}/${LLDB_FRAMEWORK_RESOURCE_DIR}) + endif() install(TARGETS ${name} COMPONENT ${name} - RUNTIME DESTINATION bin) + RUNTIME DESTINATION ${out_dir}) if (NOT CMAKE_CONFIGURATION_TYPES) add_llvm_install_targets(install-${name} DEPENDS ${name} @@ -140,7 +135,7 @@ function(add_lldb_executable name) endif() endif() - if(ARG_INCLUDE_IN_FRAMEWORK AND LLDB_BUILD_FRAMEWORK) + if(ARG_INCLUDE_IN_SUITE AND LLDB_BUILD_FRAMEWORK) add_llvm_tool_symlink(${name} ${name} ALWAYS_GENERATE SKIP_INSTALL OUTPUT_DIR ${LLVM_RUNTIME_OUTPUT_INTDIR}) endif() diff --git a/cmake/modules/FindLibEdit.cmake b/cmake/modules/FindLibEdit.cmake new file mode 100644 index 000000000000..81204d42f1d0 --- /dev/null +++ b/cmake/modules/FindLibEdit.cmake @@ -0,0 +1,62 @@ +#.rst: +# FindLibEdit +# ----------- +# +# Find libedit library and headers +# +# The module defines the following variables: +# +# :: +# +# libedit_FOUND - true if libedit was found +# libedit_INCLUDE_DIRS - include search path +# libedit_LIBRARIES - libraries to link +# libedit_VERSION - version number + +if(libedit_INCLUDE_DIRS AND libedit_LIBRARIES) + set(libedit_FOUND TRUE) +else() + find_package(PkgConfig QUIET) + pkg_check_modules(PC_LIBEDIT QUIET libedit) + + find_path(libedit_INCLUDE_DIRS + NAMES + histedit.h + HINTS + ${PC_LIBEDIT_INCLUDEDIR} + ${PC_LIBEDIT_INCLUDE_DIRS} + ${CMAKE_INSTALL_FULL_INCLUDEDIR}) + find_library(libedit_LIBRARIES + NAMES + edit libedit + HINTS + ${PC_LIBEDIT_LIBDIR} + ${PC_LIBEDIT_LIBRARY_DIRS} + ${CMAKE_INSTALL_FULL_LIBDIR}) + + if(libedit_INCLUDE_DIRS AND EXISTS "${libedit_INCLUDE_DIRS}/histedit.h") + file(STRINGS "${libedit_INCLUDE_DIRS}/histedit.h" + libedit_major_version_str + REGEX "^#define[ \t]+LIBEDIT_MAJOR[ \t]+[0-9]+") + string(REGEX REPLACE "^#define[ \t]+LIBEDIT_MAJOR[ \t]+([0-9]+)" "\\1" + LIBEDIT_MAJOR_VERSION "${libedit_major_version_str}") + + file(STRINGS "${libedit_INCLUDE_DIRS}/histedit.h" + libedit_minor_version_str + REGEX "^#define[ \t]+LIBEDIT_MINOR[ \t]+[0-9]+") + string(REGEX REPLACE "^#define[ \t]+LIBEDIT_MINOR[ \t]+([0-9]+)" "\\1" + LIBEDIT_MINOR_VERSION "${libedit_minor_version_str}") + + set(libedit_VERSION_STRING "${libedit_major_version}.${libedit_minor_version}") + endif() + + include(FindPackageHandleStandardArgs) + find_package_handle_standard_args(libedit + REQUIRED_VARS + libedit_INCLUDE_DIRS + libedit_LIBRARIES + VERSION_VAR + libedit_VERSION_STRING) + mark_as_advanced(libedit_INCLUDE_DIRS libedit_LIBRARIES) +endif() + diff --git a/cmake/modules/LLDBConfig.cmake b/cmake/modules/LLDBConfig.cmake index 8f75880dfbff..dae6e365da38 100644 --- a/cmake/modules/LLDBConfig.cmake +++ b/cmake/modules/LLDBConfig.cmake @@ -277,27 +277,31 @@ include_directories(BEFORE if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY) install(DIRECTORY include/ - COMPONENT lldb_headers + COMPONENT lldb-headers DESTINATION include FILES_MATCHING PATTERN "*.h" PATTERN ".svn" EXCLUDE PATTERN ".cmake" EXCLUDE PATTERN "Config.h" EXCLUDE - PATTERN "lldb-*.h" EXCLUDE - PATTERN "API/*.h" EXCLUDE ) install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/include/ - COMPONENT lldb_headers + COMPONENT lldb-headers DESTINATION include FILES_MATCHING PATTERN "*.h" PATTERN ".svn" EXCLUDE PATTERN ".cmake" EXCLUDE - PATTERN "lldb-*.h" EXCLUDE - PATTERN "API/*.h" EXCLUDE ) + + add_custom_target(lldb-headers) + set_target_properties(lldb-headers PROPERTIES FOLDER "Misc") + + if (NOT CMAKE_CONFIGURATION_TYPES) + add_llvm_install_targets(install-lldb-headers + COMPONENT lldb-headers) + endif() endif() if (NOT LIBXML2_FOUND AND NOT (CMAKE_SYSTEM_NAME MATCHES "Windows")) @@ -342,14 +346,18 @@ else() endif() -if (HAVE_LIBPTHREAD) - list(APPEND system_libs pthread) -endif(HAVE_LIBPTHREAD) +if( WIN32 AND NOT CYGWIN ) + set(PURE_WINDOWS 1) +endif() -if (HAVE_LIBDL) - list(APPEND system_libs ${CMAKE_DL_LIBS}) +if(NOT PURE_WINDOWS) + set(CMAKE_THREAD_PREFER_PTHREAD TRUE) + find_package(Threads REQUIRED) + list(APPEND system_libs ${CMAKE_THREAD_LIBS_INIT}) endif() +list(APPEND system_libs ${CMAKE_DL_LIBS}) + # Figure out if lldb could use lldb-server. If so, then we'll # ensure we build lldb-server when an lldb target is being built. if (CMAKE_SYSTEM_NAME MATCHES "Android|Darwin|FreeBSD|Linux|NetBSD") @@ -403,15 +411,6 @@ if(LLDB_USING_LIBSTDCXX) endif() endif() -if(MSVC) - set(LLDB_USE_BUILTIN_DEMANGLER ON) -else() - option(LLDB_USE_BUILTIN_DEMANGLER "Use lldb's builtin demangler instead of the system one" ON) -endif() -if(LLDB_USE_BUILTIN_DEMANGLER) - add_definitions(-DLLDB_USE_BUILTIN_DEMANGLER) -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/cmake/modules/LLDBFramework.cmake b/cmake/modules/LLDBFramework.cmake new file mode 100644 index 000000000000..abacee89d9ac --- /dev/null +++ b/cmake/modules/LLDBFramework.cmake @@ -0,0 +1,44 @@ +file(GLOB public_headers ${LLDB_SOURCE_DIR}/include/lldb/API/*.h) +file(GLOB root_public_headers ${LLDB_SOURCE_DIR}/include/lldb/lldb-*.h) +file(GLOB root_private_headers ${LLDB_SOURCE_DIR}/include/lldb/lldb-private*.h) +list(REMOVE_ITEM root_public_headers ${root_private_headers}) +foreach(header + ${public_headers} + ${root_public_headers} + ${LLDB_SOURCE_DIR}/include/lldb/Utility/SharingPtr.h) + get_filename_component(basename ${header} NAME) + add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/FrameworkHeaders/${basename} + DEPENDS ${header} + COMMAND ${CMAKE_COMMAND} -E copy ${header} ${CMAKE_CURRENT_BINARY_DIR}/FrameworkHeaders/${basename}) + list(APPEND framework_headers ${CMAKE_CURRENT_BINARY_DIR}/FrameworkHeaders/${basename}) +endforeach() + +add_custom_target(lldb-framework-headers DEPENDS ${framework_headers}) + +add_custom_command(TARGET lldb-framework POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_BINARY_DIR}/FrameworkHeaders $<TARGET_FILE_DIR:liblldb>/Headers + COMMAND ${LLDB_SOURCE_DIR}/scripts/framework-header-fix.sh $<TARGET_FILE_DIR:liblldb>/Headers ${LLDB_VERSION} +) + +if (NOT IOS) + if (NOT LLDB_BUILT_STANDALONE) + add_dependencies(lldb-framework clang-headers) + endif() + add_custom_command(TARGET lldb-framework POST_BUILD + COMMAND ${CMAKE_COMMAND} -E create_symlink Versions/Current/Headers ${LLDB_FRAMEWORK_DIR}/LLDB.framework/Headers + COMMAND ${CMAKE_COMMAND} -E create_symlink ${LLDB_FRAMEWORK_VERSION} ${LLDB_FRAMEWORK_DIR}/LLDB.framework/Versions/Current + COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_BINARY_DIR}/lib${LLVM_LIBDIR_SUFFIX}/clang/${LLDB_VERSION} $<TARGET_FILE_DIR:liblldb>/Resources/Clang + ) +endif() + +set_target_properties(liblldb PROPERTIES + OUTPUT_NAME LLDB + FRAMEWORK On + FRAMEWORK_VERSION ${LLDB_FRAMEWORK_VERSION} + MACOSX_FRAMEWORK_INFO_PLIST ${LLDB_SOURCE_DIR}/resources/LLDB-Info.plist + LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${LLDB_FRAMEWORK_INSTALL_DIR} + PUBLIC_HEADER "${framework_headers}") + +add_dependencies(lldb-framework + lldb-framework-headers + lldb-suite) diff --git a/cmake/modules/LLDBGenerateConfig.cmake b/cmake/modules/LLDBGenerateConfig.cmake index ca2d5842a806..7586eda30d68 100644 --- a/cmake/modules/LLDBGenerateConfig.cmake +++ b/cmake/modules/LLDBGenerateConfig.cmake @@ -4,6 +4,7 @@ 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) @@ -14,14 +15,8 @@ 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_source_compiles(" - #include <sys/uio.h> - int main() { process_vm_readv(0, nullptr, 0, nullptr, 0, 0); return 0; }" - HAVE_PROCESS_VM_READV) -check_cxx_source_compiles(" - #include <sys/syscall.h> - int main() { return __NR_process_vm_readv; }" - HAVE_NR_PROCESS_VM_READV) +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) @@ -33,6 +28,24 @@ |