| 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 () |
| |
| # Need to export the API in the liblldb.dll for Windows |
| # The lldbAPI source files are added directly in liblldb |
| if (NOT CMAKE_SYSTEM_NAME MATCHES "Windows" ) |
| add_subdirectory(API) |
| endif () |
| 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 |
| lldbBreakpoint |
| lldbCommands |
| lldbDataFormatters |
| lldbHostCommon |
| lldbCore |
| lldbExpression |
| lldbInterpreter |
| lldbSymbol |
| lldbTarget |
| lldbUtility |
| |
| # Plugins |
| lldbPluginDisassemblerLLVM |
| lldbPluginSymbolFileDWARF |
| lldbPluginSymbolFileSymtab |
| lldbPluginDynamicLoaderStatic |
| lldbPluginDynamicLoaderPosixDYLD |
| lldbPluginDynamicLoaderHexagonDYLD |
| |
| lldbPluginObjectFileMachO |
| lldbPluginObjectFileELF |
| lldbPluginObjectFileJIT |
| lldbPluginSymbolVendorELF |
| lldbPluginObjectContainerBSDArchive |
| lldbPluginObjectContainerMachOArchive |
| lldbPluginProcessGDBRemote |
| lldbPluginProcessMachCore |
| lldbPluginProcessUtility |
| lldbPluginPlatformGDB |
| lldbPluginPlatformFreeBSD |
| lldbPluginPlatformKalimba |
| lldbPluginPlatformLinux |
| lldbPluginPlatformPOSIX |
| lldbPluginPlatformWindows |
| lldbPluginObjectFileMachO |
| lldbPluginObjectContainerMachOArchive |
| lldbPluginObjectContainerBSDArchive |
| lldbPluginPlatformMacOSX |
| lldbPluginDynamicLoaderMacOSXDYLD |
| lldbPluginUnwindAssemblyInstEmulation |
| lldbPluginUnwindAssemblyX86 |
| lldbPluginAppleObjCRuntime |
| lldbPluginCXXItaniumABI |
| lldbPluginABIMacOSX_arm |
| lldbPluginABIMacOSX_arm64 |
| lldbPluginABIMacOSX_i386 |
| lldbPluginABISysV_x86_64 |
| lldbPluginABISysV_hexagon |
| lldbPluginInstructionARM |
| lldbPluginInstructionARM64 |
| lldbPluginObjectFilePECOFF |
| lldbPluginOSPython |
| ) |
| |
| # Need to export the API in the liblldb.dll for Windows |
| # The lldbAPI source files are added directly in liblldb |
| if (NOT CMAKE_SYSTEM_NAME MATCHES "Windows" ) |
| list(APPEND LLDB_USED_LIBS |
| lldbAPI |
| ) |
| endif () |
| |
| # Windows-only libraries |
| if ( CMAKE_SYSTEM_NAME MATCHES "Windows" ) |
| list(APPEND LLDB_USED_LIBS |
| lldbHostWindows |
| lldbPluginProcessElfCore |
| lldbPluginJITLoaderGDB |
| Ws2_32 |
| ) |
| endif () |
| |
| # Linux-only libraries |
| if ( CMAKE_SYSTEM_NAME MATCHES "Linux" ) |
| list(APPEND LLDB_USED_LIBS |
| lldbHostLinux |
| lldbPluginProcessLinux |
| lldbPluginProcessPOSIX |
| lldbPluginProcessElfCore |
| lldbPluginJITLoaderGDB |
| ) |
| endif () |
| |
| # FreeBSD-only libraries |
| if ( CMAKE_SYSTEM_NAME MATCHES "FreeBSD" ) |
| list(APPEND LLDB_USED_LIBS |
| lldbHostFreeBSD |
| lldbPluginProcessFreeBSD |
| lldbPluginProcessPOSIX |
| lldbPluginProcessElfCore |
| lldbPluginJITLoaderGDB |
| ) |
| 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 liblldb_core |
| > ${LLDB_VERS_GENERATED_FILE}) |
| |
| set_source_files_properties(${LLDB_VERS_GENERATED_FILE} PROPERTIES GENERATED 1) |
| list(APPEND LLDB_USED_LIBS |
| lldbHostMacOSX |
| lldbPluginDynamicLoaderDarwinKernel |
| lldbPluginProcessMacOSXKernel |
| lldbPluginSymbolVendorMacOSX |
| lldbPluginSystemRuntimeMacOSX |
| lldbPluginProcessPOSIX |
| lldbPluginProcessElfCore |
| lldbPluginJITLoaderGDB |
| ) |
| endif() |
| |
| set( CLANG_USED_LIBS |
| clangAnalysis |
| clangAST |
| clangBasic |
| clangCodeGen |
| clangDriver |
| clangEdit |
| clangFrontend |
| clangLex |
| clangParse |
| clangRewrite |
| clangRewriteFrontend |
| clangSema |
| clangSerialization |
| ) |
| |
| set(LLDB_SYSTEM_LIBS) |
| if (NOT CMAKE_SYSTEM_NAME MATCHES "Windows") |
| list(APPEND LLDB_SYSTEM_LIBS edit panel ncurses) |
| endif() |
| # On FreeBSD backtrace() is provided by libexecinfo, not libc. |
| if (CMAKE_SYSTEM_NAME MATCHES "FreeBSD") |
| list(APPEND LLDB_SYSTEM_LIBS execinfo) |
| endif() |
| |
| if (NOT LLDB_DISABLE_PYTHON) |
| list(APPEND LLDB_SYSTEM_LIBS ${PYTHON_LIBRARIES}) |
| endif() |
| |
| list(APPEND LLDB_SYSTEM_LIBS ${system_libs}) |
| |
| set( LLVM_LINK_COMPONENTS |
| ${LLVM_TARGETS_TO_BUILD} |
| jit |
| interpreter |
| asmparser |
| bitreader |
| bitwriter |
| codegen |
| ipo |
| selectiondag |
| bitreader |
| mc |
| mcjit |
| core |
| mcdisassembler |
| executionengine |
| option |
| ) |
| |
| |
| if ( NOT LLDB_DISABLE_PYTHON ) |
| set(LLDB_WRAP_PYTHON ${LLDB_BINARY_DIR}/scripts/LLDBWrapPython.cpp) |
| |
| set_source_files_properties(${LLDB_WRAP_PYTHON} PROPERTIES GENERATED 1) |
| if (LLVM_COMPILER_IS_GCC_COMPATIBLE AND |
| NOT "${CMAKE_SYSTEM_NAME}" MATCHES "Darwin") |
| set_property(SOURCE ${LLDB_WRAP_PYTHON} |
| APPEND_STRING PROPERTY COMPILE_FLAGS " -Wno-sequence-point") |
| endif () |
| endif() |
| set(SHARED_LIBRARY 1) |
| |
| if ( CMAKE_SYSTEM_NAME MATCHES "Windows" ) |
| add_definitions( -DEXPORT_LIBLLDB ) |
| endif() |
| |
| # Need to export the API in the liblldb.dll for Windows |
| # The lldbAPI source files are added directly in liblldb |
| if ( CMAKE_SYSTEM_NAME MATCHES "Windows" ) |
| # On Non-Windows, the corresponding file list is maintained in |
| # source\API\CMakeLists.txt. When editing this list, do not forget to make a |
| # corresponding change in that file as well (when appropriate). |
| add_lldb_library(liblldb |
| lldb.cpp |
| lldb-log.cpp |
| API/SBAddress.cpp |
| API/SBBlock.cpp |
| API/SBBreakpoint.cpp |
| API/SBBreakpointLocation.cpp |
| API/SBBroadcaster.cpp |
| API/SBCommandInterpreter.cpp |
| API/SBCommandReturnObject.cpp |
| API/SBCommunication.cpp |
| API/SBCompileUnit.cpp |
| API/SBData.cpp |
| API/SBDebugger.cpp |
| API/SBDeclaration.cpp |
| API/SBError.cpp |
| API/SBEvent.cpp |
| API/SBExpressionOptions.cpp |
| API/SBFileSpec.cpp |
| API/SBFileSpecList.cpp |
| API/SBFrame.cpp |
| API/SBFunction.cpp |
| API/SBHostOS.cpp |
| API/SBInstruction.cpp |
| API/SBInstructionList.cpp |
| API/SBLineEntry.cpp |
| API/SBListener.cpp |
| API/SBModule.cpp |
| API/SBModuleSpec.cpp |
| API/SBPlatform.cpp |
| API/SBProcess.cpp |
| API/SBQueue.cpp |
| API/SBQueueItem.cpp |
| API/SBSection.cpp |
| API/SBSourceManager.cpp |
| API/SBStream.cpp |
| API/SBStringList.cpp |
| API/SBSymbol.cpp |
| API/SBSymbolContext.cpp |
| API/SBSymbolContextList.cpp |
| API/SBTarget.cpp |
| API/SBThread.cpp |
| API/SBType.cpp |
| API/SBTypeCategory.cpp |
| API/SBTypeEnumMember.cpp |
| API/SBTypeFilter.cpp |
| API/SBTypeFormat.cpp |
| API/SBTypeNameSpecifier.cpp |
| API/SBTypeSummary.cpp |
| API/SBTypeSynthetic.cpp |
| API/SBUnixSignals.cpp |
| API/SBValue.cpp |
| API/SBValueList.cpp |
| API/SBWatchpoint.cpp |
| Host/Windows/getopt/GetOptInc.cpp |
| ${LLDB_WRAP_PYTHON} |
| ${LLDB_VERS_GENERATED_FILE} |
| ) |
| else () |
| add_lldb_library(liblldb |
| lldb.cpp |
| lldb-log.cpp |
| ${LLDB_WRAP_PYTHON} |
| ${LLDB_VERS_GENERATED_FILE} |
| ) |
| endif () |
| |
| if ( CMAKE_SYSTEM_NAME MATCHES "Windows" ) |
| set_target_properties(liblldb |
| PROPERTIES |
| OUTPUT_NAME liblldb |
| VERSION ${LLDB_VERSION} |
| ) |
| else() |
| set_target_properties(liblldb |
| PROPERTIES |
| OUTPUT_NAME lldb |
| VERSION ${LLDB_VERSION} |
| ) |
| endif() |
| |
| if (LLDB_WRAP_PYTHON OR LLDB_VERS_GENERATED_FILE) |
| add_dependencies(liblldb |
| swig_wrapper |
| ${LLDB_WRAP_PYTHON} |
| ${LLDB_VERS_GENERATED_FILE} |
| ) |
| endif() |
| target_link_libraries(liblldb ${cmake_2_8_12_PRIVATE} ${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. |
| |
| if ( LLDB_ENABLE_PYTHON_SCRIPTS_SWIG_API_GENERATION ) |
| # Add a Post-Build Event to copy over Python files and create the symlink to liblldb.so for the Python API(hardlink on Windows) |
| if ( NOT LLDB_DISABLE_PYTHON ) |
| add_custom_command( TARGET liblldb |
| POST_BUILD |
| DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/../scripts/finishSwigWrapperClasses.py |
| COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/../scripts/finishSwigWrapperClasses.py --buildConfig=${CMAKE_BUILD_TYPE} "--srcRoot=${LLDB_SOURCE_DIR}" "--targetDir=${CMAKE_CURRENT_BINARY_DIR}/../scripts" "--cfgBldDir=${CMAKE_CURRENT_BINARY_DIR}/../scripts" "--prefix=${CMAKE_BINARY_DIR}" "--cmakeBuildConfiguration=${CMAKE_CFG_INTDIR}" -m |
| COMMENT "Python script sym-linking LLDB Python API") |
| endif () |
| endif () |
| |
| install(TARGETS liblldb |
| RUNTIME DESTINATION bin |
| LIBRARY DESTINATION lib |
| ARCHIVE DESTINATION lib) |