Summary: This patch refactors the CMake build system's support for building debugserver to allow us to build the majority of debugserver's sources into the debugserverCommon library which can then be reused by unit tests. The first unit test I've written tests debug server's ability to accept incoming connections from LLDB. The test forks the process, and one side creates a listening socket using debugserver's socket API, the other side creates a transmitting socket using LLDB's TCPSocket class. I have no clue where to even start getting this connected into the LLDB Xcode project, so for now these tests are CMake-only. Reviewers: zturner, labath, jasonmolenda Subscribers: lldb-commits, mgorny Differential Revision: https://reviews.llvm.org/D31357 llvm-svn: 300111
127 lines
4.0 KiB
CMake
127 lines
4.0 KiB
CMake
include_directories(${CMAKE_CURRENT_BINARY_DIR}/..)
|
|
include_directories(${LLDB_SOURCE_DIR}/source)
|
|
include_directories(MacOSX/DarwinLog)
|
|
|
|
include_directories(MacOSX)
|
|
#include_directories(${CMAKE_CURRENT_BINARY_DIR}/MacOSX)
|
|
|
|
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -stdlib=libc++ -Wl,-sectcreate,__TEXT,__info_plist,${CMAKE_CURRENT_SOURCE_DIR}/../resources/lldb-debugserver-Info.plist")
|
|
|
|
check_cxx_compiler_flag("-Wno-gnu-zero-variadic-macro-arguments"
|
|
CXX_SUPPORTS_NO_GNU_ZERO_VARIADIC_MACRO_ARGUMENTS)
|
|
if (CXX_SUPPORTS_NO_GNU_ZERO_VARIADIC_MACRO_ARGUMENTS)
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-gnu-zero-variadic-macro-arguments")
|
|
endif ()
|
|
|
|
check_cxx_compiler_flag("-Wno-zero-length-array"
|
|
CXX_SUPPORTS_NO_ZERO_LENGTH_ARRAY)
|
|
if (CXX_SUPPORTS_NO_ZERO_LENGTH_ARRAY)
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-zero-length-array")
|
|
endif ()
|
|
|
|
check_cxx_compiler_flag("-Wno-extended-offsetof"
|
|
CXX_SUPPORTS_NO_EXTENDED_OFFSETOF)
|
|
if (CXX_SUPPORTS_NO_EXTENDED_OFFSETOF)
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-extended-offsetof")
|
|
endif ()
|
|
|
|
find_library(COCOA_LIBRARY Cocoa)
|
|
add_subdirectory(MacOSX)
|
|
|
|
set(generated_mach_interfaces
|
|
${CMAKE_CURRENT_BINARY_DIR}/mach_exc.h
|
|
${CMAKE_CURRENT_BINARY_DIR}/mach_excServer.c
|
|
${CMAKE_CURRENT_BINARY_DIR}/mach_excUser.c
|
|
)
|
|
add_custom_command(OUTPUT ${generated_mach_interfaces}
|
|
COMMAND mig ${CMAKE_CURRENT_SOURCE_DIR}/MacOSX/dbgnub-mig.defs
|
|
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/MacOSX/dbgnub-mig.defs
|
|
)
|
|
|
|
set(DEBUGSERVER_VERS_GENERATED_FILE ${CMAKE_CURRENT_BINARY_DIR}/debugserver_vers.c)
|
|
set_source_files_properties(${DEBUGSERVER_VERS_GENERATED_FILE} PROPERTIES GENERATED 1)
|
|
|
|
add_custom_command(OUTPUT ${DEBUGSERVER_VERS_GENERATED_FILE}
|
|
COMMAND ${LLDB_SOURCE_DIR}/scripts/generate-vers.pl
|
|
${LLDB_SOURCE_DIR}/lldb.xcodeproj/project.pbxproj debugserver
|
|
> ${DEBUGSERVER_VERS_GENERATED_FILE}
|
|
DEPENDS ${LLDB_SOURCE_DIR}/scripts/generate-vers.pl
|
|
${LLDB_SOURCE_DIR}/lldb.xcodeproj/project.pbxproj
|
|
)
|
|
|
|
set(lldbDebugserverCommonSources
|
|
DNBArch.cpp
|
|
DNBBreakpoint.cpp
|
|
DNB.cpp
|
|
DNBDataRef.cpp
|
|
DNBError.cpp
|
|
DNBLog.cpp
|
|
DNBRegisterInfo.cpp
|
|
DNBThreadResumeActions.cpp
|
|
JSON.cpp
|
|
StdStringExtractor.cpp
|
|
# JSON reader depends on the following LLDB-common files
|
|
${LLDB_SOURCE_DIR}/source/Host/common/StringConvert.cpp
|
|
# end JSON reader dependencies
|
|
libdebugserver.cpp
|
|
PseudoTerminal.cpp
|
|
PThreadEvent.cpp
|
|
PThreadMutex.cpp
|
|
RNBContext.cpp
|
|
RNBRemote.cpp
|
|
RNBServices.cpp
|
|
RNBSocket.cpp
|
|
SysSignal.cpp
|
|
TTYState.cpp
|
|
|
|
MacOSX/CFBundle.cpp
|
|
MacOSX/CFString.cpp
|
|
MacOSX/Genealogy.cpp
|
|
MacOSX/MachException.cpp
|
|
MacOSX/MachProcess.mm
|
|
MacOSX/MachTask.mm
|
|
MacOSX/MachThread.cpp
|
|
MacOSX/MachThreadList.cpp
|
|
MacOSX/MachVMMemory.cpp
|
|
MacOSX/MachVMRegion.cpp
|
|
MacOSX/OsLogger.cpp
|
|
${generated_mach_interfaces}
|
|
${DEBUGSERVER_VERS_GENERATED_FILE})
|
|
|
|
add_library(lldbDebugserverCommon ${lldbDebugserverCommonSources})
|
|
|
|
target_link_libraries(lldbDebugserverCommon
|
|
INTERFACE ${COCOA_LIBRARY}
|
|
lldbDebugserverMacOSX_I386
|
|
lldbDebugserverMacOSX_X86_64
|
|
lldbDebugserverMacOSX_DarwinLog)
|
|
|
|
set(LLVM_OPTIONAL_SOURCES ${lldbDebugserverCommonSources})
|
|
add_lldb_tool(debugserver INCLUDE_IN_FRAMEWORK
|
|
debugserver.cpp
|
|
|
|
LINK_LIBS
|
|
lldbDebugserverCommon
|
|
)
|
|
|
|
set(LLDB_CODESIGN_IDENTITY "lldb_codesign"
|
|
CACHE STRING "Identity used for code signing. Set to empty string to skip the signing step.")
|
|
if (NOT ("${LLDB_CODESIGN_IDENTITY}" STREQUAL ""))
|
|
execute_process(
|
|
COMMAND xcrun -f codesign_allocate
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
OUTPUT_VARIABLE CODESIGN_ALLOCATE
|
|
)
|
|
add_custom_command(TARGET debugserver
|
|
POST_BUILD
|
|
COMMAND ${CMAKE_COMMAND} -E env CODESIGN_ALLOCATE=${CODESIGN_ALLOCATE}
|
|
codesign --force --sign ${LLDB_CODESIGN_IDENTITY}
|
|
$<TARGET_FILE:debugserver>
|
|
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/bin
|
|
)
|
|
endif()
|
|
|
|
|
|
|
|
|