Skip to content
This repository has been archived by the owner on Apr 2, 2020. It is now read-only.

Commit

Permalink
Merge pull request #118 from llvm-beanz/CMake-Patches-From-Upstream
Browse files Browse the repository at this point in the history
Merge CMake patches from upstream
  • Loading branch information
Chris B committed Jan 11, 2017
2 parents adaace4 + e721a4a commit 4b2d389
Show file tree
Hide file tree
Showing 14 changed files with 93 additions and 68 deletions.
6 changes: 6 additions & 0 deletions CMakeLists.txt
Expand Up @@ -69,6 +69,12 @@ if (NOT LLDB_DISABLE_PYTHON)
# Ensure we do the python post-build step when building lldb.
add_dependencies(lldb finish_swig)

if(LLDB_BUILD_FRAMEWORK)
# The target to install libLLDB needs to depend on finish swig so that the
# framework build properly copies over the Python files.
add_dependencies(install-liblldb finish_swig)
endif()

# Add a Post-Build Event to copy the custom Python DLL to the lldb binaries dir so that Windows can find it when launching
# lldb.exe or any other executables that were linked with liblldb.
if (WIN32 AND NOT "${PYTHON_DLL}" STREQUAL "")
Expand Down
60 changes: 50 additions & 10 deletions cmake/modules/AddLLDB.cmake
Expand Up @@ -17,13 +17,13 @@ function(lldb_link_common_libs name targetkind)
endif()
endfunction(lldb_link_common_libs)

macro(add_lldb_library name)
function(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"
""
""
"DEPENDS"
${ARGN})
llvm_process_sources(srcs ${PARAM_UNPARSED_ARGUMENTS})

Expand Down Expand Up @@ -62,14 +62,16 @@ macro(add_lldb_library name)
-Wl,--start-group ${LLDB_USED_LIBS} -Wl,--end-group
-Wl,--start-group ${SWIFT_ALL_LIBS} -Wl,--end-group
-Wl,--start-group ${CLANG_ALL_LIBS} -Wl,--end-group
DEPENDS ${PARAM_DEPENDS}
)
else()
llvm_add_library(${name} ${libkind} ${srcs} LINK_LIBS
${LLDB_USED_LIBS} ${SWIFT_ALL_LIBS} ${CLANG_ALL_LIBS}
DEPENDS ${PARAM_DEPENDS}
)
endif()
else()
llvm_add_library(${name} ${libkind} ${srcs})
llvm_add_library(${name} ${libkind} ${srcs} DEPENDS ${PARAM_DEPENDS})
endif()

if (${name} STREQUAL "liblldb")
Expand All @@ -79,14 +81,23 @@ macro(add_lldb_library name)
set(out_dir ${LLDB_FRAMEWORK_INSTALL_DIR})
endif()
install(TARGETS ${name}
COMPONENT ${name}
RUNTIME DESTINATION bin
LIBRARY DESTINATION ${out_dir}
ARCHIVE DESTINATION ${out_dir})
else()
install(TARGETS ${name}
COMPONENT ${name}
LIBRARY DESTINATION lib${LLVM_LIBDIR_SUFFIX}
ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX})
endif()
if (NOT CMAKE_CONFIGURATION_TYPES)
add_custom_target(install-${name}
DEPENDS ${name}
COMMAND "${CMAKE_COMMAND}"
-DCMAKE_INSTALL_COMPONENT=${name}
-P "${CMAKE_BINARY_DIR}/cmake_install.cmake")
endif()
endif()
endif()

Expand All @@ -99,10 +110,10 @@ macro(add_lldb_library name)
endif()

set_target_properties(${name} PROPERTIES FOLDER "lldb libraries")
endmacro(add_lldb_library)
endfunction(add_lldb_library)

macro(add_lldb_executable name)
cmake_parse_arguments(ARG "INCLUDE_IN_FRAMEWORK" "" "" ${ARGN})
function(add_lldb_executable name)
cmake_parse_arguments(ARG "INCLUDE_IN_FRAMEWORK;GENERATE_INSTALL" "" "" ${ARGN})
add_llvm_executable(${name} DISABLE_LLVM_LINK_LLVM_DYLIB ${ARG_UNPARSED_ARGUMENTS})
set_target_properties(${name} PROPERTIES
FOLDER "lldb executables")
Expand All @@ -114,20 +125,49 @@ macro(add_lldb_executable name)
RUNTIME_OUTPUT_DIRECTORY $<TARGET_FILE_DIR:liblldb>/Resources
BUILD_WITH_INSTALL_RPATH On
INSTALL_RPATH "@loader_path/../../../../${_dots}/${LLDB_FRAMEWORK_INSTALL_DIR}")

add_llvm_tool_symlink(${name} ${name} ARG_ALWAYS_GENERATE
OUTPUT_DIR ${LLVM_RUNTIME_OUTPUT_INTDIR})
# For things inside the framework we don't need functional install targets
# because CMake copies the resources and headers from the build directory.
# But we still need this target to exist in order to use the
# LLVM_DISTRIBUTION_COMPONENTS build option. We also need the
# install-liblldb target to depend on this tool, so that it gets put into
# the Resources directory before the framework is installed.
if(ARG_GENERATE_INSTALL)
add_custom_target(install-${name} DEPENDS ${name})
add_dependencies(install-liblldb ${name})
endif()
else()
set_target_properties(${name} PROPERTIES
BUILD_WITH_INSTALL_RPATH On
INSTALL_RPATH "@loader_path/../${LLDB_FRAMEWORK_INSTALL_DIR}")
endif()
endif()

if(ARG_GENERATE_INSTALL AND NOT (ARG_INCLUDE_IN_FRAMEWORK AND LLDB_BUILD_FRAMEWORK ))
install(TARGETS ${name}
COMPONENT ${name}
RUNTIME DESTINATION bin)
if (NOT CMAKE_CONFIGURATION_TYPES)
add_custom_target(install-${name}
DEPENDS ${name}
COMMAND "${CMAKE_COMMAND}"
-DCMAKE_INSTALL_COMPONENT=${name}
-P "${CMAKE_BINARY_DIR}/cmake_install.cmake")
endif()
endif()

# Might need the following in an else clause for above to cover non-Apple
# set(rpath_prefix "$ORIGIN")
# set_target_properties(${name} PROPERTIES INSTALL_RPATH "${rpath_prefix}/../lib")
endmacro(add_lldb_executable)

if(ARG_INCLUDE_IN_FRAMEWORK AND LLDB_BUILD_FRAMEWORK)
add_llvm_tool_symlink(${name} ${name} ALWAYS_GENERATE SKIP_INSTALL
OUTPUT_DIR ${LLVM_RUNTIME_OUTPUT_INTDIR})
endif()
endfunction(add_lldb_executable)

function(add_lldb_tool name)
add_lldb_executable(${name} GENERATE_INSTALL ${ARGN})
endfunction()

# Support appending linker flags to an existing target.
# This will preserve the existing linker flags on the
Expand Down
1 change: 1 addition & 0 deletions cmake/modules/LLDBConfig.cmake
Expand Up @@ -286,6 +286,7 @@ include_directories(BEFORE

if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY)
install(DIRECTORY include/
COMPONENT lldb_headers
DESTINATION include
FILES_MATCHING
PATTERN "*.h"
Expand Down
25 changes: 8 additions & 17 deletions source/API/CMakeLists.txt
Expand Up @@ -13,6 +13,10 @@ include(${LLDB_PROJECT_ROOT}/cmake/LLDBDependencies.cmake)

option(LLDB_BUILD_FRAMEWORK "Build the Darwin LLDB.framework" Off)

if(LLDB_BUILD_FRAMEWORK AND CMAKE_VERSION VERSION_LESS 3.7)
message(FATAL_ERROR "LLDB_BUILD_FRAMEWORK is not supported on CMake < 3.7")
endif()

if (LLDB_BUILD_FRAMEWORK AND NOT APPLE)
message(FATAL_ERROR "LLDB.framework cannot be generated unless targeting Apple platforms.")
endif()
Expand Down Expand Up @@ -160,25 +164,12 @@ if(LLDB_BUILD_FRAMEWORK)
LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${LLDB_FRAMEWORK_INSTALL_DIR}
PUBLIC_HEADER "${public_headers}")

set(symlink_commands
COMMAND ${CMAKE_COMMAND} -E make_directory $<TARGET_FILE_DIR:liblldb>
COMMAND ${CMAKE_COMMAND} -E create_symlink ${LLDB_SOURCE_DIR}/include/lldb/API $<TARGET_FILE_DIR:liblldb>/Headers
add_custom_command(TARGET liblldb POST_BUILD
COMMAND ${CMAKE_COMMAND} -E make_directory $<TARGET_FILE_DIR:liblldb>/Versions/${LLDB_FRAMEWORK_VERSION}
COMMAND ${CMAKE_COMMAND} -E copy_directory ${LLDB_SOURCE_DIR}/include/lldb/API $<TARGET_FILE_DIR:liblldb>/Headers
COMMAND ${CMAKE_COMMAND} -E create_symlink Versions/Current/Headers ${CMAKE_BINARY_DIR}/${LLDB_FRAMEWORK_INSTALL_DIR}/LLDB.framework/Headers
COMMAND ${CMAKE_COMMAND} -E create_symlink ${CMAKE_BINARY_DIR}/lib${LLVM_LIBDIR_SUFFIX}/clang/${LLDB_VERSION} $<TARGET_FILE_DIR:liblldb>/Resources/Clang
COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_BINARY_DIR}/lib${LLVM_LIBDIR_SUFFIX}/clang/${LLDB_VERSION} $<TARGET_FILE_DIR:liblldb>/Resources/Clang
)

# This works around a CMake bug where POST_BUILD steps are not applied to
# framework targets. This fix is merged into the CMake release branch and
# should be available with CMake 3.7 rc2:
# https://gitlab.kitware.com/cmake/cmake/issues/16363
if(CMAKE_VERSION VERSION_GREATER 3.6.99)
add_custom_command(TARGET liblldb POST_BUILD ${symlink_commands})
else()
add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/${LLDB_FRAMEWORK_INSTALL_DIR}/LLDB.framework/Versions/${LLDB_FRAMEWORK_VERSION}/Headers
${symlink_commands})
add_custom_target(lldb_header_symlink
DEPENDS ${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/${LLDB_FRAMEWORK_INSTALL_DIR}/LLDB.framework/Versions/${LLDB_FRAMEWORK_VERSION}/Headers)
endif()
endif()

install(
Expand Down
11 changes: 7 additions & 4 deletions source/Expression/CMakeLists.txt
@@ -1,3 +1,7 @@
if(NOT LLDB_BUILT_STANDALONE)
set(tablegen_deps intrinsics_gen)
endif()

add_lldb_library(lldbExpression
DiagnosticManager.cpp
DWARFExpression.cpp
Expand All @@ -14,8 +18,7 @@ add_lldb_library(lldbExpression
REPL.cpp
UserExpression.cpp
UtilityFunction.cpp
)

if(NOT LLDB_BUILT_STANDALONE)
add_dependencies(lldbExpression intrinsics_gen)
endif()
DEPENDS
${tablegen_deps}
)
11 changes: 7 additions & 4 deletions source/Plugins/ExpressionParser/Clang/CMakeLists.txt
@@ -1,3 +1,7 @@
if(NOT LLDB_BUILT_STANDALONE)
set(tablegen_deps intrinsics_gen)
endif()

add_lldb_library(lldbPluginExpressionParserClang
ASTDumper.cpp
ASTResultSynthesizer.cpp
Expand All @@ -12,8 +16,7 @@ add_lldb_library(lldbPluginExpressionParserClang
ClangUserExpression.cpp
ClangUtilityFunction.cpp
IRForTarget.cpp
)

if(NOT LLDB_BUILT_STANDALONE)
add_dependencies(lldbPluginExpressionParserClang intrinsics_gen)
endif()
DEPENDS
${tablegen_deps}
)
@@ -1,9 +1,13 @@
if(NOT LLDB_BUILT_STANDALONE)
set(tablegen_deps intrinsics_gen)
endif()


add_lldb_library(lldbPluginRenderScriptRuntime
RenderScriptRuntime.cpp
RenderScriptExpressionOpts.cpp
RenderScriptx86ABIFixups.cpp
)

if(NOT LLDB_BUILT_STANDALONE)
add_dependencies(lldbPluginRenderScriptRuntime intrinsics_gen)
endif()
DEPENDS
${tablegen_deps}
)
5 changes: 0 additions & 5 deletions test/CMakeLists.txt
Expand Up @@ -27,11 +27,6 @@ if(TARGET lldb-mi)
list(APPEND LLDB_TEST_DEPS lldb-mi)
endif()

# This target will only exist if the user is using a CMake older than 3.7
if(TARGET lldb_header_symlink)
list(APPEND LLDB_TEST_DEPS lldb_header_symlink)
endif()

if ("${LLDB_TEST_COMPILER}" STREQUAL "")
string(REGEX REPLACE ".*ccache\ +" "" LLDB_TEST_COMPILER ${CMAKE_C_COMPILER} ${CMAKE_C_COMPILER_ARG1})
endif()
Expand Down
5 changes: 1 addition & 4 deletions tools/argdumper/CMakeLists.txt
@@ -1,6 +1,6 @@
include(${LLDB_PROJECT_ROOT}/cmake/LLDBDependencies.cmake)

add_lldb_executable(lldb-argdumper INCLUDE_IN_FRAMEWORK
add_lldb_tool(lldb-argdumper INCLUDE_IN_FRAMEWORK
argdumper.cpp
)

Expand All @@ -11,6 +11,3 @@ else()
endif()
llvm_config(lldb-argdumper ${LLVM_LINK_COMPONENTS})


install(TARGETS lldb-argdumper
RUNTIME DESTINATION bin)
5 changes: 1 addition & 4 deletions tools/darwin-debug/CMakeLists.txt
@@ -1,6 +1,3 @@
add_lldb_executable(darwin-debug INCLUDE_IN_FRAMEWORK
add_lldb_tool(darwin-debug INCLUDE_IN_FRAMEWORK
darwin-debug.cpp
)

install(TARGETS darwin-debug
RUNTIME DESTINATION bin)
6 changes: 1 addition & 5 deletions tools/debugserver/source/MacOSX/CMakeLists.txt
Expand Up @@ -36,7 +36,7 @@ set(DEBUGSERVER_USED_LIBS
lldbDebugserverMacOSX_DarwinLog
)

add_lldb_executable(debugserver INCLUDE_IN_FRAMEWORK
add_lldb_tool(debugserver INCLUDE_IN_FRAMEWORK
HasAVX.s
CFBundle.cpp
CFString.cpp
Expand Down Expand Up @@ -78,7 +78,3 @@ if (NOT ("${LLDB_CODESIGN_IDENTITY}" STREQUAL ""))
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/bin
)
endif()

install(TARGETS debugserver
RUNTIME DESTINATION bin
)
4 changes: 1 addition & 3 deletions tools/driver/CMakeLists.txt
@@ -1,6 +1,6 @@
include(${LLDB_PROJECT_ROOT}/cmake/LLDBDependencies.cmake)

add_lldb_executable(lldb
add_lldb_tool(lldb
Driver.cpp
Platform.cpp
)
Expand Down Expand Up @@ -32,5 +32,3 @@ endif()

set_target_properties(lldb PROPERTIES VERSION ${LLDB_VERSION})

install(TARGETS lldb
RUNTIME DESTINATION bin)
5 changes: 1 addition & 4 deletions tools/lldb-mi/CMakeLists.txt
Expand Up @@ -83,7 +83,7 @@ if ( CMAKE_SYSTEM_NAME MATCHES "Windows" OR CMAKE_SYSTEM_NAME MATCHES "NetBSD" )
)
endif ()

add_lldb_executable(lldb-mi ${LLDB_MI_SOURCES})
add_lldb_tool(lldb-mi ${LLDB_MI_SOURCES})

target_link_libraries(lldb-mi liblldb)
if ( NOT CMAKE_SYSTEM_NAME MATCHES "Windows" )
Expand All @@ -93,6 +93,3 @@ endif ()
llvm_config(lldb-mi ${LLVM_LINK_COMPONENTS})

set_target_properties(lldb-mi PROPERTIES VERSION ${LLDB_VERSION})

install(TARGETS lldb-mi
RUNTIME DESTINATION bin)
5 changes: 1 addition & 4 deletions tools/lldb-server/CMakeLists.txt
Expand Up @@ -25,7 +25,7 @@ include_directories(../../source)

include(../../cmake/LLDBDependencies.cmake)

add_lldb_executable(lldb-server INCLUDE_IN_FRAMEWORK
add_lldb_tool(lldb-server INCLUDE_IN_FRAMEWORK
Acceptor.cpp
lldb-gdbserver.cpp
lldb-platform.cpp
Expand Down Expand Up @@ -59,6 +59,3 @@ else()
endif()

set_target_properties(lldb-server PROPERTIES VERSION ${LLDB_VERSION})

install(TARGETS lldb-server
RUNTIME DESTINATION bin)

0 comments on commit 4b2d389

Please sign in to comment.