Build liblldb.dll in Windows

llvm-svn: 202724
This commit is contained in:
Deepak Panickal 2014-03-03 15:50:36 +00:00
parent 99fbc07600
commit 627f4ae811
6 changed files with 152 additions and 61 deletions

View File

@ -21,62 +21,65 @@
#include "lldb/lldb-types.h"
#include "lldb/lldb-versioning.h"
// Forward Declarations
#ifdef SWIG
#define LLDB_API
#endif
// Forward Declarations
namespace lldb {
class SBAddress;
class SBBlock;
class SBBreakpoint;
class SBBreakpointLocation;
class SBBroadcaster;
class SBCommand;
class SBCommandInterpreter;
class SBCommandPluginInterface;
class SBCommandReturnObject;
class SBCommunication;
class SBCompileUnit;
class SBData;
class SBDebugger;
class SBDeclaration;
class SBError;
class SBEvent;
class SBEventList;
class SBExpressionOptions;
class SBFileSpec;
class SBFileSpecList;
class SBFrame;
class SBFunction;
class SBHostOS;
class SBInstruction;
class SBInstructionList;
class SBLineEntry;
class SBListener;
class SBModule;
class SBModuleSpec;
class SBModuleSpecList;
class SBProcess;
class SBSourceManager;
class SBStream;
class SBStringList;
class SBSymbol;
class SBSymbolContext;
class SBSymbolContextList;
class SBTarget;
class SBThread;
class SBType;
class SBTypeCategory;
class SBTypeFilter;
class SBTypeFormat;
class SBTypeNameSpecifier;
class SBTypeSummary;
class LLDB_API SBAddress;
class LLDB_API SBBlock;
class LLDB_API SBBreakpoint;
class LLDB_API SBBreakpointLocation;
class LLDB_API SBBroadcaster;
class LLDB_API SBCommand;
class LLDB_API SBCommandInterpreter;
class LLDB_API SBCommandPluginInterface;
class LLDB_API SBCommandReturnObject;
class LLDB_API SBCommunication;
class LLDB_API SBCompileUnit;
class LLDB_API SBData;
class LLDB_API SBDebugger;
class LLDB_API SBDeclaration;
class LLDB_API SBError;
class LLDB_API SBEvent;
class LLDB_API SBEventList;
class LLDB_API SBExpressionOptions;
class LLDB_API SBFileSpec;
class LLDB_API SBFileSpecList;
class LLDB_API SBFrame;
class LLDB_API SBFunction;
class LLDB_API SBHostOS;
class LLDB_API SBInstruction;
class LLDB_API SBInstructionList;
class LLDB_API SBLineEntry;
class LLDB_API SBListener;
class LLDB_API SBModule;
class LLDB_API SBModuleSpec;
class LLDB_API SBModuleSpecList;
class LLDB_API SBProcess;
class LLDB_API SBSourceManager;
class LLDB_API SBStream;
class LLDB_API SBStringList;
class LLDB_API SBSymbol;
class LLDB_API SBSymbolContext;
class LLDB_API SBSymbolContextList;
class LLDB_API SBTarget;
class LLDB_API SBThread;
class LLDB_API SBType;
class LLDB_API SBTypeCategory;
class LLDB_API SBTypeFilter;
class LLDB_API SBTypeFormat;
class LLDB_API SBTypeNameSpecifier;
class LLDB_API SBTypeSummary;
#ifndef LLDB_DISABLE_PYTHON
class SBTypeSynthetic;
class LLDB_API SBTypeSynthetic;
#endif
class SBTypeList;
class SBValue;
class SBValueList;
class SBWatchpoint;
class LLDB_API SBTypeList;
class LLDB_API SBValue;
class LLDB_API SBValueList;
class LLDB_API SBWatchpoint;
}

View File

@ -15,6 +15,6 @@
#else
#include <lldb/Host/windows/GetOptInc.h>
#include <lldb/Host/windows/getopt/GetOptInc.h>
#endif

View File

@ -11,6 +11,7 @@
#define LLDB_lldb_defines_h_
#include "lldb/lldb-types.h"
#include "lldb/lldb-dll-export.h"
#if !defined(UINT32_MAX)
#define UINT32_MAX 4294967295U

View File

@ -14,7 +14,11 @@ include_directories(
)
endif ()
add_subdirectory(API)
# 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)
@ -28,7 +32,6 @@ add_subdirectory(Target)
add_subdirectory(Utility)
set( LLDB_USED_LIBS
lldbAPI
lldbBreakpoint
lldbCommands
lldbDataFormatters
@ -77,6 +80,14 @@ set( LLDB_USED_LIBS
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
@ -171,29 +182,102 @@ set( LLVM_LINK_COMPONENTS
option
)
set_source_files_properties(${LLDB_BINARY_DIR}/scripts/LLDBWrapPython.cpp PROPERTIES GENERATED 1)
if(NOT CMAKE_SYSTEM_NAME MATCHES "Windows")
set(SHARED_LIBRARY 1)
endif()
if(NOT CMAKE_SYSTEM_NAME MATCHES "Windows")
if ( NOT LLDB_DISABLE_PYTHON )
set_source_files_properties(${LLDB_BINARY_DIR}/scripts/LLDBWrapPython.cpp PROPERTIES GENERATED 1)
set(LLDB_WRAP_PYTHON ${LLDB_BINARY_DIR}/scripts/LLDBWrapPython.cpp)
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" )
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/SBTypeFilter.cpp
API/SBTypeFormat.cpp
API/SBTypeNameSpecifier.cpp
API/SBTypeSummary.cpp
API/SBTypeSynthetic.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}
)

View File

@ -7,5 +7,4 @@ add_lldb_library(lldbHostWindows
Condition.cpp
Windows.cpp
EditLineWin.cpp
GetOptInc.cpp
)

View File

@ -4,6 +4,10 @@ add_lldb_executable(lldb
Platform.cpp
)
if ( CMAKE_SYSTEM_NAME MATCHES "Windows" )
add_definitions( -DIMPORT_LIBLLDB )
endif()
target_link_libraries(lldb liblldb)
# TODO: why isn't this done by add_lldb_executable?
#target_link_libraries(lldb ${LLDB_USED_LIBS})