include_directories(.) | |
if ( CMAKE_SYSTEM_NAME MATCHES "Linux" ) | |
include_directories( | |
Plugins/Process/Linux | |
Plugins/Process/POSIX | |
) | |
endif () | |
if ( CMAKE_SYSTEM_NAME MATCHES "FreeBSD" ) | |
include_directories( | |
Plugins/Process/FreeBSD | |
Plugins/Process/POSIX | |
) | |
endif () | |
add_subdirectory(API) | |
add_subdirectory(Breakpoint) | |
add_subdirectory(Commands) | |
add_subdirectory(Core) | |
add_subdirectory(DataFormatters) | |
add_subdirectory(Expression) | |
add_subdirectory(Host) | |
add_subdirectory(Interpreter) | |
add_subdirectory(Plugins) | |
add_subdirectory(Symbol) | |
add_subdirectory(Target) | |
add_subdirectory(Utility) | |
set( LLDB_USED_LIBS | |
lldbAPI | |
lldbBreakpoint | |
lldbCommands | |
lldbDataFormatters | |
lldbHostCommon | |
lldbCore | |
lldbExpression | |
lldbInterpreter | |
lldbSymbol | |
lldbTarget | |
lldbUtility | |
# Plugins | |
lldbPluginDisassemblerLLVM | |
lldbPluginSymbolFileDWARF | |
lldbPluginSymbolFileSymtab | |
lldbPluginDynamicLoaderStatic | |
lldbPluginDynamicLoaderPosixDYLD | |
lldbPluginObjectFileMachO | |
lldbPluginObjectFileELF | |
lldbPluginSymbolVendorELF | |
lldbPluginObjectContainerBSDArchive | |
lldbPluginObjectContainerMachOArchive | |
lldbPluginProcessGDBRemote | |
lldbPluginProcessMachCore | |
lldbPluginProcessUtility | |
lldbPluginPlatformGDB | |
lldbPluginPlatformFreeBSD | |
lldbPluginPlatformLinux | |
lldbPluginObjectFileMachO | |
lldbPluginObjectContainerMachOArchive | |
lldbPluginObjectContainerBSDArchive | |
lldbPluginPlatformMacOSX | |
lldbPluginDynamicLoaderMacOSXDYLD | |
lldbPluginUnwindAssemblyInstEmulation | |
lldbPluginUnwindAssemblyX86 | |
lldbPluginAppleObjCRuntime | |
lldbPluginCXXItaniumABI | |
lldbPluginABIMacOSX_arm | |
lldbPluginABIMacOSX_i386 | |
lldbPluginABISysV_x86_64 | |
lldbPluginInstructionARM | |
lldbPluginObjectFilePECOFF | |
lldbPluginOSPython | |
) | |
# Windows-only libraries | |
if ( CMAKE_SYSTEM_NAME MATCHES "Windows" ) | |
list(APPEND LLDB_USED_LIBS | |
#lldbHostWindows | |
#lldbPluginPlatformWindows | |
#Ws2_32 | |
) | |
endif () | |
# Linux-only libraries | |
if ( CMAKE_SYSTEM_NAME MATCHES "Linux" ) | |
list(APPEND LLDB_USED_LIBS | |
lldbHostLinux | |
lldbPluginProcessLinux | |
lldbPluginProcessPOSIX | |
lldbPluginProcessElfCore | |
) | |
endif () | |
# FreeBSD-only libraries | |
if ( CMAKE_SYSTEM_NAME MATCHES "FreeBSD" ) | |
list(APPEND LLDB_USED_LIBS | |
lldbHostFreeBSD | |
lldbPluginProcessFreeBSD | |
lldbPluginProcessPOSIX | |
lldbPluginProcessElfCore | |
) | |
endif () | |
# Darwin-only libraries | |
if ( CMAKE_SYSTEM_NAME MATCHES "Darwin" ) | |
set(LLDB_VERS_GENERATED_FILE ${LLDB_BINARY_DIR}/source/LLDB_vers.c) | |
add_custom_command(OUTPUT ${LLDB_VERS_GENERATED_FILE} | |
COMMAND ${LLDB_SOURCE_DIR}/scripts/generate-vers.pl | |
${LLDB_SOURCE_DIR}/lldb.xcodeproj/project.pbxproj | |
> ${LLDB_VERS_GENERATED_FILE}) | |
set_source_files_properties(${LLDB_VERS_GENERATED_FILE} PROPERTIES GENERATED 1) | |
list(APPEND LLDB_USED_LIBS | |
lldbHostMacOSX | |
lldbPluginDynamicLoaderDarwinKernel | |
lldbPluginProcessMacOSXKernel | |
lldbPluginSymbolVendorMacOSX | |
) | |
endif() | |
set( CLANG_USED_LIBS | |
clangAnalysis | |
clangAST | |
clangBasic | |
clangCodeGen | |
clangDriver | |
clangEdit | |
clangFrontend | |
clangLex | |
clangParse | |
clangRewriteCore | |
clangRewriteFrontend | |
clangSema | |
clangSerialization | |
) | |
set( LLDB_SYSTEM_LIBS | |
edit | |
python2.7 | |
) | |
set( LLVM_LINK_COMPONENTS | |
${LLVM_TARGETS_TO_BUILD} | |
jit | |
interpreter | |
nativecodegen | |
asmparser | |
bitreader | |
bitwriter | |
codegen | |
ipo | |
selectiondag | |
bitreader | |
mc | |
mcjit | |
core | |
mcdisassembler | |
executionengine | |
) | |
set_source_files_properties(${LLDB_BINARY_DIR}/scripts/LLDBWrapPython.cpp PROPERTIES GENERATED 1) | |
set(SHARED_LIBRARY 1) | |
add_lldb_library(liblldb | |
lldb.cpp | |
lldb-log.cpp | |
${LLDB_BINARY_DIR}/scripts/LLDBWrapPython.cpp | |
${LLDB_VERS_GENERATED_FILE} | |
) | |
set_target_properties(liblldb | |
PROPERTIES | |
OUTPUT_NAME lldb | |
VERSION ${LLDB_VERSION} | |
) | |
add_dependencies(liblldb | |
${LLDB_BINARY_DIR}/scripts/LLDBWrapPython.cpp | |
${LLDB_VERS_GENERATED_FILE} | |
) | |
target_link_libraries(liblldb ${LLDB_SYSTEM_LIBS}) | |
# Determine LLDB revision and repository. GetSourceVersion and GetRepositoryPath are shell-scripts, and as | |
# such will not work on Windows. | |
if ( NOT CMAKE_SYSTEM_NAME MATCHES "Windows" ) | |
execute_process(COMMAND ${CMAKE_SOURCE_DIR}/utils/GetSourceVersion ${LLDB_SOURCE_DIR} | |
OUTPUT_VARIABLE LLDB_REVISION) | |
if ( LLDB_REVISION ) | |
string(REGEX REPLACE "(\r?\n)+$" "" LLDB_REVISION ${LLDB_REVISION}) | |
endif() | |
execute_process(COMMAND ${CMAKE_SOURCE_DIR}/utils/GetRepositoryPath ${LLDB_SOURCE_DIR} | |
OUTPUT_VARIABLE LLDB_REPOSITORY) | |
if ( LLDB_REPOSITORY ) | |
# Replace newline characters with spaces | |
string(REGEX REPLACE "(\r?\n)+" " " LLDB_REPOSITORY ${LLDB_REPOSITORY}) | |
# Remove trailing spaces | |
string(REGEX REPLACE "(\ )+$" "" LLDB_REPOSITORY ${LLDB_REPOSITORY}) | |
endif() | |
set_property( | |
SOURCE lldb.cpp | |
PROPERTY COMPILE_DEFINITIONS "LLDB_REVISION=\"${LLDB_REVISION}\"" "LLDB_REPOSITORY=\"${LLDB_REPOSITORY}\"") | |
endif () | |
# FIXME: implement svn/git revision and repository parsing solution on Windows. There is an SVN-only | |
# revision parsing solution in tools/clang/lib/Basic/CMakelists.txt. | |
install(TARGETS liblldb | |
LIBRARY DESTINATION lib) |