Index: lldb/trunk/source/Breakpoint/CMakeLists.txt =================================================================== --- lldb/trunk/source/Breakpoint/CMakeLists.txt +++ lldb/trunk/source/Breakpoint/CMakeLists.txt @@ -20,4 +20,16 @@ Watchpoint.cpp WatchpointList.cpp WatchpointOptions.cpp + + LINK_LIBS + lldbCore + lldbExpression + lldbInterpreter + lldbSymbol + lldbTarget + lldbPluginCPlusPlusLanguage + lldbPluginObjCLanguage + + LINK_COMPONENTS + Support ) Index: lldb/trunk/source/Commands/CMakeLists.txt =================================================================== --- lldb/trunk/source/Commands/CMakeLists.txt +++ lldb/trunk/source/Commands/CMakeLists.txt @@ -29,4 +29,19 @@ CommandObjectWatchpoint.cpp CommandObjectWatchpointCommand.cpp CommandObjectLanguage.cpp + + LINK_LIBS + lldbBreakpoint + lldbCore + lldbDataFormatters + lldbExpression + lldbHost + lldbInterpreter + lldbSymbol + lldbTarget + lldbUtility + lldbPluginExpressionParserClang + + LINK_COMPONENTS + Support ) Index: lldb/trunk/source/Core/CMakeLists.txt =================================================================== --- lldb/trunk/source/Core/CMakeLists.txt +++ lldb/trunk/source/Core/CMakeLists.txt @@ -69,5 +69,24 @@ ValueObjectSyntheticFilter.cpp ValueObjectVariable.cpp VMRange.cpp + + LINK_LIBS + lldbBreakpoint + lldbDataFormatters + lldbExpression + lldbHost + lldbInterpreter + lldbSymbol + lldbTarget + lldbUtility + lldbPluginProcessUtility + lldbPluginCPlusPlusLanguage + lldbPluginObjCLanguage + lldbPluginObjectFileJIT + lldbPluginExpressionParserClang + + LINK_COMPONENTS + Support + Demangle ) Index: lldb/trunk/source/DataFormatters/CMakeLists.txt =================================================================== --- lldb/trunk/source/DataFormatters/CMakeLists.txt +++ lldb/trunk/source/DataFormatters/CMakeLists.txt @@ -16,4 +16,14 @@ TypeValidator.cpp ValueObjectPrinter.cpp VectorType.cpp + + LINK_LIBS + lldbCore + lldbInterpreter + lldbSymbol + lldbTarget + lldbUtility + + LINK_COMPONENTS + Support ) Index: lldb/trunk/source/Expression/CMakeLists.txt =================================================================== --- lldb/trunk/source/Expression/CMakeLists.txt +++ lldb/trunk/source/Expression/CMakeLists.txt @@ -21,4 +21,18 @@ DEPENDS ${tablegen_deps} + + LINK_LIBS + lldbCore + lldbHost + lldbInterpreter + lldbSymbol + lldbTarget + lldbUtility + lldbPluginExpressionParserClang + + LINK_COMPONENTS + Core + ExecutionEngine + Support ) Index: lldb/trunk/source/Host/CMakeLists.txt =================================================================== --- lldb/trunk/source/Host/CMakeLists.txt +++ lldb/trunk/source/Host/CMakeLists.txt @@ -55,6 +55,10 @@ posix/ConnectionFileDescriptorPosix.cpp ) +if(NOT LLDB_DISABLE_PYTHON) + list(APPEND LLDB_PLUGINS lldbPluginScriptInterpreterPython) +endif() + if (CMAKE_SYSTEM_NAME MATCHES "Windows") add_host_subdirectory(windows windows/ConnectionGenericFileWindows.cpp @@ -110,6 +114,7 @@ macosx/cfcpp/CFCString.cpp ) + elseif (CMAKE_SYSTEM_NAME MATCHES "Linux|Android") add_host_subdirectory(linux linux/AbstractSocket.cpp @@ -120,6 +125,7 @@ linux/ProcessLauncherLinux.cpp linux/ThisThread.cpp ) + list(APPEND LLDB_PLUGINS lldbPluginProcessLinux) if (CMAKE_SYSTEM_NAME MATCHES "Android") add_host_subdirectory(android android/HostInfoAndroid.cpp @@ -157,7 +163,20 @@ endif() endif() -add_lldb_library(lldbHost ${HOST_SOURCES}) +add_lldb_library(lldbHost + ${HOST_SOURCES} + + LINK_LIBS + lldbCore + lldbInterpreter + lldbSymbol + lldbTarget + lldbUtility + ${LLDB_PLUGINS} + + LINK_COMPONENTS + Support + ) if (CMAKE_SYSTEM_NAME MATCHES "NetBSD") target_link_libraries(lldbHost kvm) Index: lldb/trunk/source/Initialization/CMakeLists.txt =================================================================== --- lldb/trunk/source/Initialization/CMakeLists.txt +++ lldb/trunk/source/Initialization/CMakeLists.txt @@ -1,5 +1,36 @@ +if ( CMAKE_SYSTEM_NAME MATCHES "Darwin" ) + list(APPEND EXTRA_PLUGINS lldbPluginObjectFileMachO) +endif() + +if ( CMAKE_SYSTEM_NAME MATCHES "Linux|Android|FreeBSD|NetBSD" ) + list(APPEND EXTRA_PLUGINS lldbPluginProcessPOSIX) +endif() + +if ( CMAKE_SYSTEM_NAME MATCHES "Windows" ) + list(APPEND LLDB_USED_LIBS + lldbPluginProcessWindowsCommon + ws2_32 + rpcrt4 + ) +endif () + add_lldb_library(lldbInitialization SystemInitializerCommon.cpp SystemInitializer.cpp SystemLifetimeManager.cpp + + LINK_LIBS + lldbCore + lldbHost + lldbPluginInstructionARM + lldbPluginInstructionMIPS + lldbPluginInstructionMIPS64 + lldbPluginObjectContainerBSDArchive + lldbPluginObjectContainerMachOArchive + lldbPluginObjectFileELF + lldbPluginObjectFilePECOFF + lldbPluginProcessGDBRemote + ${EXTRA_PLUGINS} + LINK_COMPONENTS + Support ) Index: lldb/trunk/source/Interpreter/CMakeLists.txt =================================================================== --- lldb/trunk/source/Interpreter/CMakeLists.txt +++ lldb/trunk/source/Interpreter/CMakeLists.txt @@ -43,4 +43,15 @@ Options.cpp Property.cpp ScriptInterpreter.cpp + + LINK_LIBS + lldbCommands + lldbCore + lldbDataFormatters + lldbHost + lldbTarget + lldbUtility + + LINK_COMPONENTS + Support ) Index: lldb/trunk/source/Symbol/CMakeLists.txt =================================================================== --- lldb/trunk/source/Symbol/CMakeLists.txt +++ lldb/trunk/source/Symbol/CMakeLists.txt @@ -36,4 +36,25 @@ Variable.cpp VariableList.cpp VerifyDecl.cpp + + LINK_LIBS + clangAST + clangBasic + clangFrontend + lldbCore + lldbDataFormatters + lldbExpression + lldbHost + lldbTarget + lldbUtility + lldbPluginExpressionParserClang + lldbPluginExpressionParserGo + lldbPluginSymbolFileDWARF + lldbPluginSymbolFilePDB + lldbPluginObjectContainerBSDArchive + lldbPluginCPlusPlusLanguage + lldbPluginObjCLanguage + + LINK_COMPONENTS + Support ) Index: lldb/trunk/source/Target/CMakeLists.txt =================================================================== --- lldb/trunk/source/Target/CMakeLists.txt +++ lldb/trunk/source/Target/CMakeLists.txt @@ -58,4 +58,20 @@ ThreadSpec.cpp UnixSignals.cpp UnwindAssembly.cpp + + LINK_LIBS + lldbBreakpoint + lldbCore + lldbExpression + lldbHost + lldbInterpreter + lldbSymbol + lldbUtility + lldbPluginExpressionParserClang + lldbPluginCPlusPlusLanguage + lldbPluginObjCLanguage + lldbPluginProcessUtility + + LINK_COMPONENTS + Support ) Index: lldb/trunk/source/Utility/CMakeLists.txt =================================================================== --- lldb/trunk/source/Utility/CMakeLists.txt +++ lldb/trunk/source/Utility/CMakeLists.txt @@ -16,4 +16,12 @@ StringLexer.cpp TaskPool.cpp UriParser.cpp + + LINK_LIBS + lldbCore + lldbHost + lldbTarget + + LINK_COMPONENTS + Support ) Index: lldb/trunk/tools/argdumper/CMakeLists.txt =================================================================== --- lldb/trunk/tools/argdumper/CMakeLists.txt +++ lldb/trunk/tools/argdumper/CMakeLists.txt @@ -2,12 +2,9 @@ add_lldb_tool(lldb-argdumper INCLUDE_IN_FRAMEWORK argdumper.cpp - ) -if (LLDB_LINKER_SUPPORTS_GROUPS) - target_link_libraries(lldb-argdumper -Wl,--start-group ${LLDB_USED_LIBS} -Wl,--end-group) -else() - target_link_libraries(lldb-argdumper ${LLDB_USED_LIBS}) -endif() -llvm_config(lldb-argdumper ${LLVM_LINK_COMPONENTS}) + LINK_LIBS + lldbCore + lldbUtility + ) Index: lldb/trunk/tools/debugserver/source/CMakeLists.txt =================================================================== --- lldb/trunk/tools/debugserver/source/CMakeLists.txt +++ lldb/trunk/tools/debugserver/source/CMakeLists.txt @@ -33,7 +33,12 @@ ) endif () -add_library(lldbDebugserverCommon +if (CMAKE_SYSTEM_NAME MATCHES "Darwin") + find_library(COCOA_LIBRARY Cocoa) + add_subdirectory(MacOSX) +endif() + +add_lldb_library(lldbDebugserverCommon debugserver.cpp DNBArch.cpp DNBBreakpoint.cpp @@ -58,11 +63,13 @@ RNBSocket.cpp SysSignal.cpp TTYState.cpp + + LINK_LIBS + lldbHost + ${COCOA_LIBRARY} ) -if (CMAKE_SYSTEM_NAME MATCHES "Darwin") - find_library(COCOA_LIBRARY Cocoa) - target_link_libraries(lldbDebugserverCommon ${COCOA_LIBRARY}) - add_subdirectory(MacOSX) -endif() + + + Index: lldb/trunk/tools/debugserver/source/MacOSX/CMakeLists.txt =================================================================== --- lldb/trunk/tools/debugserver/source/MacOSX/CMakeLists.txt +++ lldb/trunk/tools/debugserver/source/MacOSX/CMakeLists.txt @@ -28,14 +28,6 @@ ${LLDB_SOURCE_DIR}/lldb.xcodeproj/project.pbxproj ) -set(DEBUGSERVER_USED_LIBS - lldbDebugserverCommon - lldbUtility - lldbDebugserverMacOSX_I386 - lldbDebugserverMacOSX_X86_64 - lldbDebugserverMacOSX_DarwinLog - ) - add_lldb_tool(debugserver INCLUDE_IN_FRAMEWORK HasAVX.s CFBundle.cpp @@ -51,6 +43,12 @@ OsLogger.cpp ${generated_mach_interfaces} ${DEBUGSERVER_VERS_GENERATED_FILE} + + LINK_LIBS + lldbDebugserverCommon + lldbDebugserverMacOSX_I386 + lldbDebugserverMacOSX_X86_64 + lldbDebugserverMacOSX_DarwinLog ) set_source_files_properties( @@ -59,8 +57,6 @@ PROPERTIES LANGUAGE C COMPILE_FLAGS "-x assembler-with-cpp" ) -target_link_libraries(debugserver ${DEBUGSERVER_USED_LIBS}) - 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 "")) Index: lldb/trunk/tools/driver/CMakeLists.txt =================================================================== --- lldb/trunk/tools/driver/CMakeLists.txt +++ lldb/trunk/tools/driver/CMakeLists.txt @@ -1,8 +1,25 @@ include(${LLDB_PROJECT_ROOT}/cmake/LLDBDependencies.cmake) +if ((CMAKE_SYSTEM_NAME MATCHES "Windows") OR + (CMAKE_SYSTEM_NAME MATCHES "NetBSD" )) + # These targets do not have getopt support, so they rely on the one provided by + # liblldb. However, getopt is not a part of the liblldb interface, so we have + # to link against the constituent libraries manually. Note that this is + # extremely scary as it introduces ODR violations, and it should go away as + # soon as possible. + set(host_lib lldbHost) +endif() + add_lldb_tool(lldb Driver.cpp Platform.cpp + + LINK_LIBS + liblldb + ${host_lib} + + LINK_COMPONENTS + Support ) if ( CMAKE_SYSTEM_NAME MATCHES "Windows" ) @@ -19,16 +36,5 @@ add_dependencies(lldb debugserver) endif() -target_link_libraries(lldb liblldb) -if ((CMAKE_SYSTEM_NAME MATCHES "Windows") OR - (CMAKE_SYSTEM_NAME MATCHES "NetBSD" )) - # These targets do not have getopt support, so they rely on the one provided by - # liblldb. However, getopt is not a part of the liblldb interface, so we have - # to link against the constituent libraries manually. Note that this is - # extremely scary as it introduces ODR violations, and it should go away as - # soon as possible. - target_link_libraries(lldb ${LLDB_USED_LIBS}) -endif() - set_target_properties(lldb PROPERTIES VERSION ${LLDB_VERSION}) Index: lldb/trunk/tools/lldb-mi/CMakeLists.txt =================================================================== --- lldb/trunk/tools/lldb-mi/CMakeLists.txt +++ lldb/trunk/tools/lldb-mi/CMakeLists.txt @@ -1,4 +1,16 @@ -set(LLDB_MI_SOURCES +if ( CMAKE_SYSTEM_NAME MATCHES "Windows" OR CMAKE_SYSTEM_NAME MATCHES "NetBSD" ) + add_definitions( -DIMPORT_LIBLLDB ) + list(APPEND extra_libs lldbHost) +endif () + +if (HAVE_LIBPTHREAD) + list(APPEND extra_libs pthread) +endif () + +# We need to include the llvm components we depend on manually, as liblldb does +# not re-export those. +set(LLVM_LINK_COMPONENTS Support) +add_lldb_tool(lldb-mi MICmdArgContext.cpp MICmdArgSet.cpp MICmdArgValBase.cpp @@ -72,23 +84,14 @@ MIUtilString.cpp MIUtilThreadBaseStd.cpp MIUtilVariant.cpp - ) -if ( CMAKE_SYSTEM_NAME MATCHES "Windows" OR CMAKE_SYSTEM_NAME MATCHES "NetBSD" ) - add_definitions( -DIMPORT_LIBLLDB ) - list(APPEND LLDB_MI_SOURCES - ${LLDB_SOURCE_ROOT}/Host/common/GetOptInc.cpp - ) -endif () - -# We need to include the llvm components we depend on manually, as liblldb does -# not re-export those. -set(LLVM_LINK_COMPONENTS Support) -add_lldb_tool(lldb-mi ${LLDB_MI_SOURCES}) + LINK_LIBS + liblldb + ${host_lib} + ${extra_libs} -target_link_libraries(lldb-mi liblldb) -if (HAVE_LIBPTHREAD) - target_link_libraries(lldb-mi pthread) -endif () + LINK_COMPONENTS + Support + ) set_target_properties(lldb-mi PROPERTIES VERSION ${LLDB_VERSION}) Index: lldb/trunk/tools/lldb-server/CMakeLists.txt =================================================================== --- lldb/trunk/tools/lldb-server/CMakeLists.txt +++ lldb/trunk/tools/lldb-server/CMakeLists.txt @@ -23,90 +23,6 @@ include_directories(../../source) - -set( LLDB_USED_LIBS - lldbBase - lldbBreakpoint - lldbCommands - lldbDataFormatters - lldbHost - lldbCore - lldbExpression - lldbInitialization - lldbInterpreter - lldbSymbol - lldbTarget - lldbUtility - - # Plugins - lldbPluginDisassemblerLLVM - lldbPluginSymbolFileDWARF - lldbPluginSymbolFilePDB - lldbPluginSymbolFileSymtab - lldbPluginDynamicLoaderPosixDYLD - - lldbPluginCPlusPlusLanguage - lldbPluginGoLanguage - lldbPluginJavaLanguage - lldbPluginObjCLanguage - lldbPluginObjCPlusPlusLanguage - lldbPluginOCamlLanguage - - lldbPluginObjectFileELF - lldbPluginObjectFileJIT - lldbPluginSymbolVendorELF - lldbPluginPlatformPOSIX - lldbPluginObjectContainerBSDArchive - lldbPluginObjectContainerMachOArchive - lldbPluginProcessGDBRemote - lldbPluginProcessUtility - lldbPluginObjectContainerMachOArchive - lldbPluginObjectContainerBSDArchive - lldbPluginPlatformMacOSX - lldbPluginUnwindAssemblyInstEmulation - lldbPluginUnwindAssemblyX86 - lldbPluginAppleObjCRuntime - lldbPluginCXXItaniumABI - lldbPluginInstructionARM - lldbPluginInstructionARM64 - lldbPluginInstructionMIPS - lldbPluginInstructionMIPS64 - lldbPluginObjectFilePECOFF - lldbPluginExpressionParserClang - lldbPluginExpressionParserGo - ) - -# Linux-only libraries -if ( CMAKE_SYSTEM_NAME MATCHES "Linux|Android" ) - list(APPEND LLDB_USED_LIBS - lldbPluginProcessLinux - lldbPluginProcessPOSIX - ) -endif () - -# Darwin-only libraries -if ( CMAKE_SYSTEM_NAME MATCHES "Darwin" ) - list(APPEND LLDB_USED_LIBS - lldbPluginObjectFileMachO - ) -endif() - -set( CLANG_USED_LIBS - clangAnalysis - clangAST - clangBasic - clangCodeGen - clangDriver - clangEdit - clangFrontend - clangLex - clangParse - clangRewrite - clangRewriteFrontend - clangSema - clangSerialization - ) - set(LLDB_SYSTEM_LIBS) if (NOT LLDB_DISABLE_LIBEDIT) list(APPEND LLDB_SYSTEM_LIBS edit) @@ -142,54 +58,25 @@ endif() endif() -set(LLVM_LINK_COMPONENTS - ${LLVM_TARGETS_TO_BUILD} - interpreter - asmparser - bitreader - bitwriter - codegen - demangle - ipo - selectiondag - bitreader - mc - mcjit - core - mcdisassembler - executionengine - runtimedyld - option - support - coverage - target - ) - add_lldb_tool(lldb-server INCLUDE_IN_FRAMEWORK Acceptor.cpp lldb-gdbserver.cpp lldb-platform.cpp lldb-server.cpp LLDBServerUtilities.cpp -) -# The Darwin linker doesn't understand --start-group/--end-group. -if (LLDB_LINKER_SUPPORTS_GROUPS) - target_link_libraries(lldb-server - -Wl,--start-group ${LLDB_USED_LIBS} -Wl,--end-group) - target_link_libraries(lldb-server - -Wl,--start-group ${CLANG_USED_LIBS} -Wl,--end-group) -else() - target_link_libraries(lldb-server ${LLDB_USED_LIBS}) - target_link_libraries(lldb-server ${CLANG_USED_LIBS}) -endif() -if(NOT LLVM_LINK_LLVM_DYLIB) - # This is necessary in !LLVM_LINK_LLVM_DYLIB as LLDB's libs do not track their - # dependencies properly. It is conditional because in a LLVM_LINK_LLVM_DYLIB - # build it would introduce duplicate symbols (add_lldb_tool links to libLLVM, - # and this would add the individual .a files as well). - llvm_config(lldb-server ${LLVM_LINK_COMPONENTS}) -endif() + LINK_LIBS + lldbBase + lldbCore + lldbHost + lldbInitialization + lldbInterpreter + ${LLDB_SYSTEM_LIBS} + + LINK_COMPONENTS + Support + MCJIT # TODO: Remove this after the plugins are updated +) target_link_libraries(lldb-server ${LLDB_SYSTEM_LIBS})