[Lldb-commits] [lldb] r230380 - [CMake] Change lldbAPI to be a CMake OBJECT library.

Zachary Turner zturner at google.com
Tue Feb 24 12:58:40 PST 2015


Author: zturner
Date: Tue Feb 24 14:58:39 2015
New Revision: 230380

URL: http://llvm.org/viewvc/llvm-project?rev=230380&view=rev
Log:
[CMake] Change lldbAPI to be a CMake OBJECT library.

An OBJECT library is a special type of CMake library that produces
no archive, has no link interface, and no link inputs.  It is like
a regular archive, just without the physical output.  To link
against an OBJECT library, you reference it in the *source* file
list of a library using the special syntax $<TARGET_OBJECTS:lldbAPI>.
This will cause every object file to be passed to the linker
independently, as opposed to a single archive being passed to the
linker.

This is *extremely* important on Windows.  lldbAPI exports all of the
SB classes using __declspec(dllexport).  Unfortunately for technical
reasons it is not possible (well, extremely difficult) to get the
linker to propagate a __declspec(dllexport) attribute from a symbol
in an object file in an archive to a DLL that links against that
archive.  The solution to this is for the DLL to link the object files
directly.  So lldbAPI must be an OBJECT library.

This fixes an issue that has been present since the duplicated
lldbAPI file lists were removed, which would cause linker failures.

As a side effect, this also makes LLDB_DISABLE_PYTHON=1 work again
on Windows, which was previously totally broken.

Modified:
    lldb/trunk/CMakeLists.txt
    lldb/trunk/cmake/LLDBDependencies.cmake
    lldb/trunk/source/API/CMakeLists.txt
    lldb/trunk/source/CMakeLists.txt
    lldb/trunk/tools/driver/CMakeLists.txt
    lldb/trunk/tools/lldb-mi/CMakeLists.txt

Modified: lldb/trunk/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/CMakeLists.txt?rev=230380&r1=230379&r2=230380&view=diff
==============================================================================
--- lldb/trunk/CMakeLists.txt (original)
+++ lldb/trunk/CMakeLists.txt Tue Feb 24 14:58:39 2015
@@ -111,9 +111,6 @@ if (CMAKE_SOURCE_DIR STREQUAL CMAKE_CURR
 endif()
 
 set(LLDB_DISABLE_PYTHON 0 CACHE BOOL "Disables the Python scripting integration.")
-if (LLDB_DISABLE_PYTHON)
-  add_definitions( -DLLDB_DISABLE_PYTHON )
-endif()
 
 if ((NOT MSVC) OR MSVC12)
   add_definitions( -DHAVE_ROUND )
@@ -139,9 +136,10 @@ if (NOT LLDB_DISABLE_PYTHON)
     endif()
   endif()
   if (MSVC)
-    if (PYTHON_INCLUDE_DIR STREQUAL "" OR PYTHON_LIBRARY STREQUAL "")
-      message(FATAL_ERROR "Building on MSVC requires manual specification of "
-                          "PYTHON_INCLUDE_DIR and PYTHON_LIBRARY")
+    if ("${PYTHON_INCLUDE_DIR}" STREQUAL "" OR "${PYTHON_LIBRARY}" STREQUAL "")
+      message("-- LLDB Embedded python disabled.  Embedding python on Windows requires "
+              "manually specifying PYTHON_INCLUDE_DIR *and* PYTHON_LIBRARY")
+      set(LLDB_DISABLE_PYTHON 1)
     else()
       message("-- Found PythonLibs: ${PYTHON_LIBRARY}")
       include_directories(${PYTHON_INCLUDE_DIR})
@@ -152,6 +150,12 @@ if (NOT LLDB_DISABLE_PYTHON)
   endif()
 endif()
 
+if (LLDB_DISABLE_PYTHON)
+  unset(PYTHON_INCLUDE_DIR)
+  unset(PYTHON_LIBRARY)
+  add_definitions( -DLLDB_DISABLE_PYTHON )
+endif()
+
 include_directories(../clang/include)
 include_directories("${CMAKE_CURRENT_BINARY_DIR}/../clang/include")
 
@@ -251,12 +255,12 @@ macro(add_lldb_library name)
   # only supported parameters to this macro are the optional 
   # MODULE;SHARED;STATIC library type and source files
   cmake_parse_arguments(PARAM
-    "MODULE;SHARED;STATIC"
+    "MODULE;SHARED;STATIC;OBJECT"
     ""
     ""
     ${ARGN})
   llvm_process_sources(srcs ${PARAM_UNPARSED_ARGUMENTS})
-  
+
   if (MSVC_IDE OR XCODE)
     string(REGEX MATCHALL "/[^/]+" split_path ${CMAKE_CURRENT_SOURCE_DIR})
     list(GET split_path -1 dir)
@@ -270,6 +274,8 @@ macro(add_lldb_library name)
     set(libkind SHARED)
   elseif (PARAM_STATIC)
     set(libkind STATIC)
+  elseif (PARAM_OBJECT)
+    set(libkind OBJECT)
   else ()
     # library type unspecified - controlled by BUILD_SHARED_LIBS
     unset(libkind)
@@ -279,45 +285,43 @@ macro(add_lldb_library name)
   if (NOT MSVC)
     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC")
   endif()
-  llvm_add_library(${name} ${libkind} ${srcs})
-  #if (LLVM_COMMON_DEPENDS)
-  ##add_dependencies(${name} ${LLVM_COMMON_DEPENDS})
-  #endif()
 
-  if ("${libkind}" STREQUAL "STATIC")
-    set(lldb_library_keyword ${cmake_2_8_12_INTERFACE})
-  else ()
-    set(lldb_library_keyword ${cmake_2_8_12_PUBLIC})
-  endif ()
+  if (PARAM_OBJECT)
+    add_library(${name} ${libkind} ${srcs})
+  else()
+    llvm_add_library(${name} ${libkind} ${srcs})
 
-  if(LLDB_USED_LIBS)
-    # The Darwin linker doesn't understand --start-group/--end-group.
-    if (LLVM_COMPILER_IS_GCC_COMPATIBLE AND NOT "${CMAKE_SYSTEM_NAME}" MATCHES "Darwin")
-      target_link_libraries(${name} ${lldb_library_keyword}
-                            -Wl,--start-group ${LLDB_USED_LIBS} -Wl,--end-group)
-    else()
-      target_link_libraries(${name} ${lldb_library_keyword} ${LLDB_USED_LIBS})
+    if (PARAM_STATIC)
+      set(lldb_library_keyword ${cmake_2_8_12_INTERFACE})
+    else ()
+      set(lldb_library_keyword ${cmake_2_8_12_PUBLIC})
+    endif ()
+
+    if(LLDB_USED_LIBS)
+      # The Darwin linker doesn't understand --start-group/--end-group.
+      if (LLVM_COMPILER_IS_GCC_COMPATIBLE AND NOT "${CMAKE_SYSTEM_NAME}" MATCHES "Darwin")
+        target_link_libraries(${name} ${lldb_library_keyword}
+                              -Wl,--start-group ${LLDB_USED_LIBS} -Wl,--end-group)
+      else()
+        target_link_libraries(${name} ${lldb_library_keyword} ${LLDB_USED_LIBS})
+      endif()
     endif()
-  endif()
-  target_link_libraries(${name} ${lldb_library_keyword} ${CLANG_USED_LIBS})
-  target_link_libraries(${name} ${lldb_library_keyword} ${LLVM_USED_LIBS})
-  llvm_config(${name} ${LLVM_LINK_COMPONENTS})
-  target_link_libraries(${name} ${lldb_library_keyword} ${LLVM_COMMON_LIBS})
-  if (LLVM_COMMON_DEPENDS)
-    add_dependencies(${name} ${LLVM_COMMON_DEPENDS})
+
+    target_link_libraries(${name} ${lldb_library_keyword} ${CLANG_USED_LIBS})
+    target_link_libraries(${name} ${lldb_library_keyword} ${LLVM_USED_LIBS})
+    llvm_config(${name} ${LLVM_LINK_COMPONENTS})
+    target_link_libraries(${name} ${lldb_library_keyword} ${LLVM_COMMON_LIBS})
+
+    install(TARGETS ${name}
+      LIBRARY DESTINATION lib${LLVM_LIBDIR_SUFFIX}
+      ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX})
   endif()
 
   # Hack: only some LLDB libraries depend on the clang autogenerated headers,
   # but it is simple enough to make all of LLDB depend on some of those
   # headers without negatively impacting much of anything.
-  set (LLDB_DEPENDENCIES
-    libclang
-    )
-  add_dependencies(${name} ${LLDB_DEPENDENCIES})
+  add_dependencies(${name} libclang)
 
-  install(TARGETS ${name}
-    LIBRARY DESTINATION lib${LLVM_LIBDIR_SUFFIX}
-    ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX})
   set_target_properties(${name} PROPERTIES FOLDER "lldb libraries")
 endmacro(add_lldb_library)
 

Modified: lldb/trunk/cmake/LLDBDependencies.cmake
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/cmake/LLDBDependencies.cmake?rev=230380&r1=230379&r2=230380&view=diff
==============================================================================
--- lldb/trunk/cmake/LLDBDependencies.cmake (original)
+++ lldb/trunk/cmake/LLDBDependencies.cmake Tue Feb 24 14:58:39 2015
@@ -55,14 +55,6 @@ set( LLDB_USED_LIBS
   lldbPluginInstrumentationRuntimeAddressSanitizer
   )
 
-# 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

Modified: lldb/trunk/source/API/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/API/CMakeLists.txt?rev=230380&r1=230379&r2=230380&view=diff
==============================================================================
--- lldb/trunk/source/API/CMakeLists.txt (original)
+++ lldb/trunk/source/API/CMakeLists.txt Tue Feb 24 14:58:39 2015
@@ -1,10 +1,25 @@
 set(LLVM_NO_RTTI 1)
 
 if ( CMAKE_SYSTEM_NAME MATCHES "Windows" )
-add_definitions( -DEXPORT_LIBLLDB )
+  add_definitions( -DEXPORT_LIBLLDB )
 endif()
 
-add_lldb_library(lldbAPI
+# An OBJECT library is a special type of CMake library that produces
+# no archive, has no link interface, and no link inputs.  It is like
+# a regular archive, just without the physical output.  To link against
+# an OBJECT library, you reference it in the *source* file list of a
+# library using the special syntax $<TARGET_OBJECTS:lldbAPI>.  This will
+# cause every object file to be passed to the linker independently, as
+# opposed to a single archive being passed to the linker.
+#
+# This is *extremely* important on Windows.  lldbAPI exports all of the
+# SB classes using __declspec(dllexport).  Unfortunately for technical
+# reasons it is not possible (well, extremely difficult) to get the linker
+# to propagate a __declspec(dllexport) attribute from a symbol in an
+# object file in an archive to a DLL that links against that archive.
+# The solution to this is for the DLL to link the object file directly.
+# So lldbAPI must be an OBJECT library.
+add_lldb_library(lldbAPI OBJECT
   SBAddress.cpp
   SBAttachInfo.cpp
   SBBlock.cpp

Modified: lldb/trunk/source/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/CMakeLists.txt?rev=230380&r1=230379&r2=230380&view=diff
==============================================================================
--- lldb/trunk/source/CMakeLists.txt (original)
+++ lldb/trunk/source/CMakeLists.txt Tue Feb 24 14:58:39 2015
@@ -43,29 +43,26 @@ include(../cmake/LLDBDependencies.cmake)
 add_lldb_library(liblldb SHARED
   lldb.cpp
   lldb-log.cpp
+  $<TARGET_OBJECTS:lldbAPI>
   ${LLDB_WRAP_PYTHON}
   ${LLDB_VERS_GENERATED_FILE}
   )
 
+set_target_properties(liblldb
+  PROPERTIES
+  VERSION ${LLDB_VERSION}
+  )
 
 if ( CMAKE_SYSTEM_NAME MATCHES "Windows" )
-  target_link_libraries(liblldb PRIVATE lldbAPI)
-  # Only MSVC has the ABI compatibility and avoids using FindPythonLibs,
+  # Only MSVC has the ABI compatibility problem and avoids using FindPythonLibs,
   # so only it needs to explicitly link against ${PYTHON_LIBRARY}
-  if (MSVC)
+  if (MSVC AND NOT LLDB_DISABLE_PYTHON)
     target_link_libraries(liblldb PRIVATE ${PYTHON_LIBRARY})
   endif()
-
-  set_target_properties(liblldb
-    PROPERTIES
-    OUTPUT_NAME liblldb
-    VERSION ${LLDB_VERSION}
-    )
 else()
   set_target_properties(liblldb
     PROPERTIES
     OUTPUT_NAME lldb
-    VERSION ${LLDB_VERSION}
     )
 endif()
 

Modified: lldb/trunk/tools/driver/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/tools/driver/CMakeLists.txt?rev=230380&r1=230379&r2=230380&view=diff
==============================================================================
--- lldb/trunk/tools/driver/CMakeLists.txt (original)
+++ lldb/trunk/tools/driver/CMakeLists.txt Tue Feb 24 14:58:39 2015
@@ -5,7 +5,7 @@ add_lldb_executable(lldb
   )
 
 if ( CMAKE_SYSTEM_NAME MATCHES "Windows" )
-add_definitions( -DIMPORT_LIBLLDB )
+  add_definitions( -DIMPORT_LIBLLDB )
 endif()
 
 target_link_libraries(lldb liblldb)

Modified: lldb/trunk/tools/lldb-mi/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/tools/lldb-mi/CMakeLists.txt?rev=230380&r1=230379&r2=230380&view=diff
==============================================================================
--- lldb/trunk/tools/lldb-mi/CMakeLists.txt (original)
+++ lldb/trunk/tools/lldb-mi/CMakeLists.txt Tue Feb 24 14:58:39 2015
@@ -1,165 +1,167 @@
 set(LLVM_NO_RTTI 1)
 if ( CMAKE_SYSTEM_NAME MATCHES "Windows" )
-add_lldb_executable(lldb-mi
-  Driver.cpp
-  ../../source/Host/windows/getopt/GetOptInc.cpp
-  MICmdArgContext.cpp
-  MICmdArgSet.cpp
-  MICmdArgValBase.cpp
-  MICmdArgValConsume.cpp
-  MICmdArgValFile.cpp
-  MICmdArgValListBase.cpp
-  MICmdArgValListOfN.cpp
-  MICmdArgValNumber.cpp
-  MICmdArgValOptionLong.cpp
-  MICmdArgValOptionShort.cpp
-  MICmdArgValString.cpp
-  MICmdArgValThreadGrp.cpp
-  MICmdBase.cpp
-  MICmdCommands.cpp
-  MICmdCmd.cpp
-  MICmdCmdBreak.cpp
-  MICmdCmdData.cpp
-  MICmdCmdEnviro.cpp
-  MICmdCmdExec.cpp
-  MICmdCmdFile.cpp
-  MICmdCmdGdbInfo.cpp
-  MICmdCmdGdbSet.cpp
-  MICmdCmdGdbThread.cpp
-  MICmdCmdMiscellanous.cpp
-  MICmdCmdStack.cpp
-  MICmdCmdSupportInfo.cpp
-  MICmdCmdSupportList.cpp
-  MICmdCmdSymbol.cpp
-  MICmdCmdTarget.cpp
-  MICmdCmdThread.cpp
-  MICmdCmdTrace.cpp
-  MICmdCmdVar.cpp
-  MICmdData.cpp
-  MICmdFactory.cpp
-  MICmdInterpreter.cpp
-  MICmdInvoker.cpp
-  MICmdMgr.cpp
-  MICmdMgrSetCmdDeleteCallback.cpp
-  MICmnBase.cpp
-  MICmnLLDBBroadcaster.cpp
-  MICmnLLDBDebugger.cpp
-  MICmnLLDBDebuggerHandleEvents.cpp
-  MICmnLLDBDebugSessionInfo.cpp
-  MICmnLLDBDebugSessionInfoVarObj.cpp
-  MICmnLLDBProxySBValue.cpp
-  MICmnLLDBUtilSBValue.cpp
-  MICmnLog.cpp
-  MICmnLogMediumFile.cpp
-  MICmnMIOutOfBandRecord.cpp
-  MICmnMIResultRecord.cpp
-  MICmnMIValue.cpp
-  MICmnMIValueConst.cpp
-  MICmnMIValueList.cpp
-  MICmnMIValueResult.cpp
-  MICmnMIValueTuple.cpp
-  MICmnResources.cpp
-  MICmnStreamStderr.cpp
-  MICmnStreamStdin.cpp
-  MICmnStreamStdout.cpp
-  MICmnThreadMgrStd.cpp
-  MIDriver.cpp
-  MIDriverBase.cpp
-  MIDriverMain.cpp
-  MIDriverMgr.cpp
-  MIUtilDateTimeStd.cpp
-  MIUtilDebug.cpp
-  MIUtilFileStd.cpp
-  MIUtilMapIdToVariant.cpp
-  MIUtilString.cpp
-  MIUtilSystemLinux.cpp
-  MIUtilSystemOsx.cpp
-  MIUtilSystemWindows.cpp
-  MIUtilTermios.cpp
-  MIUtilThreadBaseStd.cpp
-  MIUtilVariant.cpp
-  Platform.cpp
-  )
+  add_definitions( -DIMPORT_LIBLLDB )
+
+  add_lldb_executable(lldb-mi
+    Driver.cpp
+    ../../source/Host/windows/getopt/GetOptInc.cpp
+    MICmdArgContext.cpp
+    MICmdArgSet.cpp
+    MICmdArgValBase.cpp
+    MICmdArgValConsume.cpp
+    MICmdArgValFile.cpp
+    MICmdArgValListBase.cpp
+    MICmdArgValListOfN.cpp
+    MICmdArgValNumber.cpp
+    MICmdArgValOptionLong.cpp
+    MICmdArgValOptionShort.cpp
+    MICmdArgValString.cpp
+    MICmdArgValThreadGrp.cpp
+    MICmdBase.cpp
+    MICmdCommands.cpp
+    MICmdCmd.cpp
+    MICmdCmdBreak.cpp
+    MICmdCmdData.cpp
+    MICmdCmdEnviro.cpp
+    MICmdCmdExec.cpp
+    MICmdCmdFile.cpp
+    MICmdCmdGdbInfo.cpp
+    MICmdCmdGdbSet.cpp
+    MICmdCmdGdbThread.cpp
+    MICmdCmdMiscellanous.cpp
+    MICmdCmdStack.cpp
+    MICmdCmdSupportInfo.cpp
+    MICmdCmdSupportList.cpp
+    MICmdCmdSymbol.cpp
+    MICmdCmdTarget.cpp
+    MICmdCmdThread.cpp
+    MICmdCmdTrace.cpp
+    MICmdCmdVar.cpp
+    MICmdData.cpp
+    MICmdFactory.cpp
+    MICmdInterpreter.cpp
+    MICmdInvoker.cpp
+    MICmdMgr.cpp
+    MICmdMgrSetCmdDeleteCallback.cpp
+    MICmnBase.cpp
+    MICmnLLDBBroadcaster.cpp
+    MICmnLLDBDebugger.cpp
+    MICmnLLDBDebuggerHandleEvents.cpp
+    MICmnLLDBDebugSessionInfo.cpp
+    MICmnLLDBDebugSessionInfoVarObj.cpp
+    MICmnLLDBProxySBValue.cpp
+    MICmnLLDBUtilSBValue.cpp
+    MICmnLog.cpp
+    MICmnLogMediumFile.cpp
+    MICmnMIOutOfBandRecord.cpp
+    MICmnMIResultRecord.cpp
+    MICmnMIValue.cpp
+    MICmnMIValueConst.cpp
+    MICmnMIValueList.cpp
+    MICmnMIValueResult.cpp
+    MICmnMIValueTuple.cpp
+    MICmnResources.cpp
+    MICmnStreamStderr.cpp
+    MICmnStreamStdin.cpp
+    MICmnStreamStdout.cpp
+    MICmnThreadMgrStd.cpp
+    MIDriver.cpp
+    MIDriverBase.cpp
+    MIDriverMain.cpp
+    MIDriverMgr.cpp
+    MIUtilDateTimeStd.cpp
+    MIUtilDebug.cpp
+    MIUtilFileStd.cpp
+    MIUtilMapIdToVariant.cpp
+    MIUtilString.cpp
+    MIUtilSystemLinux.cpp
+    MIUtilSystemOsx.cpp
+    MIUtilSystemWindows.cpp
+    MIUtilTermios.cpp
+    MIUtilThreadBaseStd.cpp
+    MIUtilVariant.cpp
+    Platform.cpp
+    )
 else ()
-add_lldb_executable(lldb-mi
-  Driver.cpp
-  MICmdArgContext.cpp
-  MICmdArgSet.cpp
-  MICmdArgValBase.cpp
-  MICmdArgValConsume.cpp
-  MICmdArgValFile.cpp
-  MICmdArgValListBase.cpp
-  MICmdArgValListOfN.cpp
-  MICmdArgValNumber.cpp
-  MICmdArgValOptionLong.cpp
-  MICmdArgValOptionShort.cpp
-  MICmdArgValString.cpp
-  MICmdArgValThreadGrp.cpp
-  MICmdBase.cpp
-  MICmdCommands.cpp
-  MICmdCmd.cpp
-  MICmdCmdBreak.cpp
-  MICmdCmdData.cpp
-  MICmdCmdEnviro.cpp
-  MICmdCmdExec.cpp
-  MICmdCmdFile.cpp
-  MICmdCmdGdbInfo.cpp
-  MICmdCmdGdbSet.cpp
-  MICmdCmdGdbThread.cpp
-  MICmdCmdMiscellanous.cpp
-  MICmdCmdStack.cpp
-  MICmdCmdSupportInfo.cpp
-  MICmdCmdSupportList.cpp
-  MICmdCmdSymbol.cpp
-  MICmdCmdTarget.cpp
-  MICmdCmdThread.cpp
-  MICmdCmdTrace.cpp
-  MICmdCmdVar.cpp
-  MICmdData.cpp
-  MICmdFactory.cpp
-  MICmdInterpreter.cpp
-  MICmdInvoker.cpp
-  MICmdMgr.cpp
-  MICmdMgrSetCmdDeleteCallback.cpp
-  MICmnBase.cpp
-  MICmnLLDBBroadcaster.cpp
-  MICmnLLDBDebugger.cpp
-  MICmnLLDBDebuggerHandleEvents.cpp
-  MICmnLLDBDebugSessionInfo.cpp
-  MICmnLLDBDebugSessionInfoVarObj.cpp
-  MICmnLLDBProxySBValue.cpp
-  MICmnLLDBUtilSBValue.cpp
-  MICmnLog.cpp
-  MICmnLogMediumFile.cpp
-  MICmnMIOutOfBandRecord.cpp
-  MICmnMIResultRecord.cpp
-  MICmnMIValue.cpp
-  MICmnMIValueConst.cpp
-  MICmnMIValueList.cpp
-  MICmnMIValueResult.cpp
-  MICmnMIValueTuple.cpp
-  MICmnResources.cpp
-  MICmnStreamStderr.cpp
-  MICmnStreamStdin.cpp
-  MICmnStreamStdout.cpp
-  MICmnThreadMgrStd.cpp
-  MIDriver.cpp
-  MIDriverBase.cpp
-  MIDriverMain.cpp
-  MIDriverMgr.cpp
-  MIUtilDateTimeStd.cpp
-  MIUtilDebug.cpp
-  MIUtilFileStd.cpp
-  MIUtilMapIdToVariant.cpp
-  MIUtilString.cpp
-  MIUtilSystemLinux.cpp
-  MIUtilSystemOsx.cpp
-  MIUtilSystemWindows.cpp
-  MIUtilTermios.cpp
-  MIUtilThreadBaseStd.cpp
-  MIUtilVariant.cpp
-  Platform.cpp
-  )
+  add_lldb_executable(lldb-mi
+    Driver.cpp
+    MICmdArgContext.cpp
+    MICmdArgSet.cpp
+    MICmdArgValBase.cpp
+    MICmdArgValConsume.cpp
+    MICmdArgValFile.cpp
+    MICmdArgValListBase.cpp
+    MICmdArgValListOfN.cpp
+    MICmdArgValNumber.cpp
+    MICmdArgValOptionLong.cpp
+    MICmdArgValOptionShort.cpp
+    MICmdArgValString.cpp
+    MICmdArgValThreadGrp.cpp
+    MICmdBase.cpp
+    MICmdCommands.cpp
+    MICmdCmd.cpp
+    MICmdCmdBreak.cpp
+    MICmdCmdData.cpp
+    MICmdCmdEnviro.cpp
+    MICmdCmdExec.cpp
+    MICmdCmdFile.cpp
+    MICmdCmdGdbInfo.cpp
+    MICmdCmdGdbSet.cpp
+    MICmdCmdGdbThread.cpp
+    MICmdCmdMiscellanous.cpp
+    MICmdCmdStack.cpp
+    MICmdCmdSupportInfo.cpp
+    MICmdCmdSupportList.cpp
+    MICmdCmdSymbol.cpp
+    MICmdCmdTarget.cpp
+    MICmdCmdThread.cpp
+    MICmdCmdTrace.cpp
+    MICmdCmdVar.cpp
+    MICmdData.cpp
+    MICmdFactory.cpp
+    MICmdInterpreter.cpp
+    MICmdInvoker.cpp
+    MICmdMgr.cpp
+    MICmdMgrSetCmdDeleteCallback.cpp
+    MICmnBase.cpp
+    MICmnLLDBBroadcaster.cpp
+    MICmnLLDBDebugger.cpp
+    MICmnLLDBDebuggerHandleEvents.cpp
+    MICmnLLDBDebugSessionInfo.cpp
+    MICmnLLDBDebugSessionInfoVarObj.cpp
+    MICmnLLDBProxySBValue.cpp
+    MICmnLLDBUtilSBValue.cpp
+    MICmnLog.cpp
+    MICmnLogMediumFile.cpp
+    MICmnMIOutOfBandRecord.cpp
+    MICmnMIResultRecord.cpp
+    MICmnMIValue.cpp
+    MICmnMIValueConst.cpp
+    MICmnMIValueList.cpp
+    MICmnMIValueResult.cpp
+    MICmnMIValueTuple.cpp
+    MICmnResources.cpp
+    MICmnStreamStderr.cpp
+    MICmnStreamStdin.cpp
+    MICmnStreamStdout.cpp
+    MICmnThreadMgrStd.cpp
+    MIDriver.cpp
+    MIDriverBase.cpp
+    MIDriverMain.cpp
+    MIDriverMgr.cpp
+    MIUtilDateTimeStd.cpp
+    MIUtilDebug.cpp
+    MIUtilFileStd.cpp
+    MIUtilMapIdToVariant.cpp
+    MIUtilString.cpp
+    MIUtilSystemLinux.cpp
+    MIUtilSystemOsx.cpp
+    MIUtilSystemWindows.cpp
+    MIUtilTermios.cpp
+    MIUtilThreadBaseStd.cpp
+    MIUtilVariant.cpp
+    Platform.cpp
+    )
 endif ()
 
 target_link_libraries(lldb-mi liblldb)





More information about the lldb-commits mailing list