diff options
| author | Zachary Turner <zturner@google.com> | 2015-02-24 21:28:01 +0000 |
|---|---|---|
| committer | Zachary Turner <zturner@google.com> | 2015-02-24 21:28:01 +0000 |
| commit | 0980447a5f8e4b48158c0b68a09fa8a1c876861d (patch) | |
| tree | 1c0251e7f447a8e4f507be3502afed532ace0229 | |
| parent | d3f2d321d76fa231d82959769b9d71b16374aef1 (diff) | |
| download | bcm5719-llvm-0980447a5f8e4b48158c0b68a09fa8a1c876861d.tar.gz bcm5719-llvm-0980447a5f8e4b48158c0b68a09fa8a1c876861d.zip | |
Revert "[CMake] Change lldbAPI to be a CMake OBJECT library."
This reverts commit r230380. It causes CMake to fail on certain
machines with an error about needing to use string(STRIP_GENEX).
llvm-svn: 230382
| -rw-r--r-- | lldb/CMakeLists.txt | 82 | ||||
| -rw-r--r-- | lldb/cmake/LLDBDependencies.cmake | 8 | ||||
| -rw-r--r-- | lldb/source/API/CMakeLists.txt | 19 | ||||
| -rw-r--r-- | lldb/source/CMakeLists.txt | 17 | ||||
| -rw-r--r-- | lldb/tools/driver/CMakeLists.txt | 2 | ||||
| -rw-r--r-- | lldb/tools/lldb-mi/CMakeLists.txt | 320 |
6 files changed, 219 insertions, 229 deletions
diff --git a/lldb/CMakeLists.txt b/lldb/CMakeLists.txt index 8b6ea3e6316..a37147c672c 100644 --- a/lldb/CMakeLists.txt +++ b/lldb/CMakeLists.txt @@ -111,6 +111,9 @@ if (CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR) 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 ) @@ -136,10 +139,9 @@ if (NOT LLDB_DISABLE_PYTHON) endif() endif() if (MSVC) - 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) + 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") else() message("-- Found PythonLibs: ${PYTHON_LIBRARY}") include_directories(${PYTHON_INCLUDE_DIR}) @@ -150,12 +152,6 @@ 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") @@ -255,12 +251,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;OBJECT" + "MODULE;SHARED;STATIC" "" "" ${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) @@ -274,8 +270,6 @@ 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) @@ -285,43 +279,45 @@ 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 (PARAM_OBJECT) - add_library(${name} ${libkind} ${srcs}) - else() - llvm_add_library(${name} ${libkind} ${srcs}) - - 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() - - 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 ("${libkind}" STREQUAL "STATIC") + set(lldb_library_keyword ${cmake_2_8_12_INTERFACE}) + else () + set(lldb_library_keyword ${cmake_2_8_12_PUBLIC}) + endif () - install(TARGETS ${name} - LIBRARY DESTINATION lib${LLVM_LIBDIR_SUFFIX} - ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX}) + 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() + 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}) 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. - add_dependencies(${name} libclang) + set (LLDB_DEPENDENCIES + libclang + ) + add_dependencies(${name} ${LLDB_DEPENDENCIES}) + 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) diff --git a/lldb/cmake/LLDBDependencies.cmake b/lldb/cmake/LLDBDependencies.cmake index 82e0ed044ce..0fd25a08c78 100644 --- a/lldb/cmake/LLDBDependencies.cmake +++ b/lldb/cmake/LLDBDependencies.cmake @@ -55,6 +55,14 @@ 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 diff --git a/lldb/source/API/CMakeLists.txt b/lldb/source/API/CMakeLists.txt index a6f4349b7b7..65ce88e4b97 100644 --- a/lldb/source/API/CMakeLists.txt +++ b/lldb/source/API/CMakeLists.txt @@ -1,25 +1,10 @@ set(LLVM_NO_RTTI 1) if ( CMAKE_SYSTEM_NAME MATCHES "Windows" ) - add_definitions( -DEXPORT_LIBLLDB ) +add_definitions( -DEXPORT_LIBLLDB ) endif() -# 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 +add_lldb_library(lldbAPI SBAddress.cpp SBAttachInfo.cpp SBBlock.cpp diff --git a/lldb/source/CMakeLists.txt b/lldb/source/CMakeLists.txt index 93ed716e5f1..cd5730f1b5b 100644 --- a/lldb/source/CMakeLists.txt +++ b/lldb/source/CMakeLists.txt @@ -43,26 +43,29 @@ 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" ) - # Only MSVC has the ABI compatibility problem and avoids using FindPythonLibs, + target_link_libraries(liblldb PRIVATE lldbAPI) + # Only MSVC has the ABI compatibility and avoids using FindPythonLibs, # so only it needs to explicitly link against ${PYTHON_LIBRARY} - if (MSVC AND NOT LLDB_DISABLE_PYTHON) + if (MSVC) 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() diff --git a/lldb/tools/driver/CMakeLists.txt b/lldb/tools/driver/CMakeLists.txt index aa6db8c4ffd..30d6fef9c27 100644 --- a/lldb/tools/driver/CMakeLists.txt +++ b/lldb/tools/driver/CMakeLists.txt @@ -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) diff --git a/lldb/tools/lldb-mi/CMakeLists.txt b/lldb/tools/lldb-mi/CMakeLists.txt index 08f67050df7..68c2a9f3203 100644 --- a/lldb/tools/lldb-mi/CMakeLists.txt +++ b/lldb/tools/lldb-mi/CMakeLists.txt @@ -1,167 +1,165 @@ set(LLVM_NO_RTTI 1) if ( CMAKE_SYSTEM_NAME MATCHES "Windows" ) - 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 - ) +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) |

