[Lldb-commits] [lldb] r350391 - [CMake] Revised LLDB.framework builds

Stefan Granitz via lldb-commits lldb-commits at lists.llvm.org
Fri Jan 4 04:46:50 PST 2019


Author: stefan.graenitz
Date: Fri Jan  4 04:46:50 2019
New Revision: 350391

URL: http://llvm.org/viewvc/llvm-project?rev=350391&view=rev
Log:
[CMake] Revised LLDB.framework builds

Summary:
Add features to LLDB CMake builds that have so far only been available in Xcode. Clean up a few inconveniences and prepare further improvements.

Options:
* `LLDB_FRAMEWORK_BUILD_DIR` determines target directory (in build-tree)
* `LLDB_FRAMEWORK_INSTALL_DIR` **only** determines target directory in install-tree
* `LLVM_EXTERNALIZE_DEBUGINFO` allows externalized debug info (dSYM on Darwin, emitted to `bin`)
* `LLDB_FRAMEWORK_TOOLS` determines which executables will be copied to the framework's Resources (dropped symlinking, removed INCLUDE_IN_SUITE, removed dummy targets)

Other changes:
* clean up `add_lldb_executable()`
* include `LLDBFramework.cmake` from `source/API/CMakeLists.txt`
* use `*.plist.in` files, which are typical for CMake and independent from Xcode
* add clang headers to the framework bundle

Reviewers: xiaobai, JDevlieghere, aprantl, davide, beanz, stella.stamenova, clayborg, labath

Reviewed By: aprantl

Subscribers: friss, mgorny, lldb-commits, #lldb

Differential Revision: https://reviews.llvm.org/D55328

Added:
    lldb/trunk/resources/LLDB-Info.plist.in
Modified:
    lldb/trunk/CMakeLists.txt
    lldb/trunk/cmake/modules/AddLLDB.cmake
    lldb/trunk/cmake/modules/LLDBConfig.cmake
    lldb/trunk/cmake/modules/LLDBFramework.cmake
    lldb/trunk/source/API/CMakeLists.txt
    lldb/trunk/test/CMakeLists.txt
    lldb/trunk/tools/argdumper/CMakeLists.txt
    lldb/trunk/tools/darwin-debug/CMakeLists.txt
    lldb/trunk/tools/debugserver/CMakeLists.txt
    lldb/trunk/tools/debugserver/source/CMakeLists.txt
    lldb/trunk/tools/driver/CMakeLists.txt
    lldb/trunk/tools/lldb-server/CMakeLists.txt

Modified: lldb/trunk/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/CMakeLists.txt?rev=350391&r1=350390&r2=350391&view=diff
==============================================================================
--- lldb/trunk/CMakeLists.txt (original)
+++ lldb/trunk/CMakeLists.txt Fri Jan  4 04:46:50 2019
@@ -28,46 +28,18 @@ if(APPLE)
   add_definitions(-DLLDB_USE_OS_LOG)
 endif()
 
-# lldb-suite is a dummy target that encompasses all the necessary tools and
-# libraries for building a fully-functioning liblldb.
-add_custom_target(lldb-suite)
-set(LLDB_SUITE_TARGET lldb-suite)
-
-if(LLDB_BUILD_FRAMEWORK)
-  add_custom_target(lldb-framework)
-
-  # These are used to fill out LLDB-Info.plist. These are relevant when building
-  # the framework, and must be defined before building liblldb.
-  set(PRODUCT_NAME "LLDB")
-  set(EXECUTABLE_NAME "LLDB")
-  set(CURRENT_PROJECT_VERSION "${LLDB_VERSION_MAJOR}.${LLDB_VERSION_MINOR}.${LLDB_VERSION_PATCH}")
-  set(LLDB_SUITE_TARGET lldb-framework)
-
-  set(LLDB_FRAMEWORK_DIR
-    ${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/${LLDB_FRAMEWORK_INSTALL_DIR})
-  include(LLDBFramework)
-endif()
-
 add_subdirectory(docs)
 if (NOT LLDB_DISABLE_PYTHON)
-  if(LLDB_USE_SYSTEM_SIX)
-    set(SIX_EXTRA_ARGS "--useSystemSix")
-  endif()
-
   set(LLDB_PYTHON_TARGET_DIR ${LLDB_BINARY_DIR}/scripts)
   set(LLDB_WRAP_PYTHON ${LLDB_BINARY_DIR}/scripts/LLDBWrapPython.cpp)
   if(LLDB_BUILD_FRAMEWORK)
-    set(LLDB_PYTHON_TARGET_DIR ${LLDB_FRAMEWORK_DIR})
+    set(LLDB_PYTHON_TARGET_DIR ${LLDB_FRAMEWORK_BUILD_DIR})
     set(LLDB_WRAP_PYTHON ${LLDB_PYTHON_TARGET_DIR}/LLDBWrapPython.cpp)
-  else()
-    # Don't set -m when building the framework.
-    set(FINISH_EXTRA_ARGS "-m")
   endif()
 
 
   add_subdirectory(scripts)
 endif ()
-
 add_subdirectory(source)
 add_subdirectory(tools)
 
@@ -154,8 +126,14 @@ if(LLDB_INCLUDE_TESTS)
   add_subdirectory(utils/lldb-dotest)
 endif()
 
-
 if (NOT LLDB_DISABLE_PYTHON)
+    if(NOT LLDB_BUILD_FRAMEWORK)
+      set(use_python_wrapper_from_src_dir -m)
+    endif()
+    if(LLDB_USE_SYSTEM_SIX)
+      set(use_six_py_from_system --useSystemSix)
+    endif()
+
     # Add a Post-Build Event to copy over Python files and create the symlink
     # to liblldb.so for the Python API(hardlink on Windows)
     add_custom_target(finish_swig ALL
@@ -167,29 +145,24 @@ if (NOT LLDB_DISABLE_PYTHON)
                --prefix=${CMAKE_BINARY_DIR}
                --cmakeBuildConfiguration=${CMAKE_CFG_INTDIR}
                --lldbLibDir=lib${LLVM_LIBDIR_SUFFIX}
-               ${SIX_EXTRA_ARGS}
-               ${FINISH_EXTRA_ARGS}
+               ${use_python_wrapper_from_src_dir}
+               ${use_six_py_from_system}
         VERBATIM
         DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/scripts/finishSwigWrapperClasses.py
         DEPENDS ${LLDB_PYTHON_TARGET_DIR}/lldb.py
         COMMENT "Python script sym-linking LLDB Python API")
 
-    # We depend on liblldb and lldb-argdumper being built before we can do this step.
-    add_dependencies(finish_swig ${LLDB_SUITE_TARGET})
 
-    # If we build the readline module, we depend on that happening
-    # first.
     if (TARGET readline)
-        add_dependencies(finish_swig readline)
+      set(readline_dep readline)
     endif()
+    add_dependencies(finish_swig swig_wrapper liblldb lldb-argdumper ${readline_dep})
 
     # 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)
+    if(LLDB_BUILD_FRAMEWORK)
+      add_dependencies(lldb-framework 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

Modified: lldb/trunk/cmake/modules/AddLLDB.cmake
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/cmake/modules/AddLLDB.cmake?rev=350391&r1=350390&r2=350391&view=diff
==============================================================================
--- lldb/trunk/cmake/modules/AddLLDB.cmake (original)
+++ lldb/trunk/cmake/modules/AddLLDB.cmake Fri Jan  4 04:46:50 2019
@@ -50,20 +50,20 @@ function(add_lldb_library name)
 
     if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY OR ${name} STREQUAL "liblldb")
       if (PARAM_SHARED)
-        set(out_dir lib${LLVM_LIBDIR_SUFFIX})
         if(${name} STREQUAL "liblldb" AND LLDB_BUILD_FRAMEWORK)
-          set(out_dir ${LLDB_FRAMEWORK_INSTALL_DIR})
-          # The framework that is generated will install with install-liblldb
-          # because we enable CMake's framework support. CMake will copy all the
-          # headers and resources for us.
-          add_dependencies(install-lldb-framework install-${name})
-          add_dependencies(install-lldb-framework-stripped install-${name}-stripped)
+          if(LLDB_FRAMEWORK_INSTALL_DIR)
+            set(install_dir ${LLDB_FRAMEWORK_INSTALL_DIR})
+          else()
+            set(install_dir ".")
+          endif()
+        else()
+          set(install_dir lib${LLVM_LIBDIR_SUFFIX})
         endif()
         install(TARGETS ${name}
           COMPONENT ${name}
           RUNTIME DESTINATION bin
-          LIBRARY DESTINATION ${out_dir}
-          ARCHIVE DESTINATION ${out_dir})
+          LIBRARY DESTINATION ${install_dir}
+          ARCHIVE DESTINATION ${install_dir})
       else()
         install(TARGETS ${name}
           COMPONENT ${name}
@@ -74,13 +74,6 @@ function(add_lldb_library name)
         add_llvm_install_targets(install-${name}
                                  DEPENDS $<TARGET_FILE:${name}>
                                  COMPONENT ${name})
-
-        # install-liblldb{,-stripped} is the actual target that will install the
-        # framework, so it must rely on the framework being fully built first.
-        if (LLDB_BUILD_FRAMEWORK AND ${name} STREQUAL "liblldb")
-          add_dependencies(install-${name} lldb-framework)
-          add_dependencies(install-${name}-stripped lldb-framework)
-        endif()
       endif()
     endif()
   endif()
@@ -99,7 +92,7 @@ endfunction(add_lldb_library)
 
 function(add_lldb_executable name)
   cmake_parse_arguments(ARG
-    "INCLUDE_IN_SUITE;GENERATE_INSTALL"
+    "GENERATE_INSTALL"
     "ENTITLEMENTS"
     "LINK_LIBS;LINK_COMPONENTS"
     ${ARGN}
@@ -109,53 +102,18 @@ function(add_lldb_executable name)
   add_llvm_executable(${name} ${ARG_UNPARSED_ARGUMENTS} ENTITLEMENTS ${ARG_ENTITLEMENTS})
 
   target_link_libraries(${name} PRIVATE ${ARG_LINK_LIBS})
-  set_target_properties(${name} PROPERTIES
-    FOLDER "lldb executables")
-
-  if(ARG_INCLUDE_IN_SUITE)
-    add_dependencies(lldb-suite ${name})
-    if(LLDB_BUILD_FRAMEWORK)
-      if(NOT IOS)
-        set(resource_dir "/Resources")
-        set(resource_dots "../")
-      endif()
-      string(REGEX REPLACE "[^/]+" ".." _dots ${LLDB_FRAMEWORK_INSTALL_DIR})
-      set_target_properties(${name} PROPERTIES
-            RUNTIME_OUTPUT_DIRECTORY $<TARGET_FILE_DIR:liblldb>${resource_dir}
-            BUILD_WITH_INSTALL_RPATH On
-            INSTALL_RPATH "@loader_path/../../../${resource_dots}${_dots}/${LLDB_FRAMEWORK_INSTALL_DIR}")
-    endif()
-  endif()
-
-  if(LLDB_BUILD_FRAMEWORK AND NOT ARG_INCLUDE_IN_SUITE)
-    set_target_properties(${name} PROPERTIES
-          BUILD_WITH_INSTALL_RPATH On
-          INSTALL_RPATH "@loader_path/../${LLDB_FRAMEWORK_INSTALL_DIR}")
-  endif()
+  set_target_properties(${name} PROPERTIES FOLDER "lldb executables")
 
   if(ARG_GENERATE_INSTALL)
-    set(out_dir "bin")
-    if (LLDB_BUILD_FRAMEWORK AND ARG_INCLUDE_IN_SUITE)
-      set(out_dir ${LLDB_FRAMEWORK_INSTALL_DIR}/${LLDB_FRAMEWORK_RESOURCE_DIR})
-      # While install-liblldb-stripped will handle copying the tools, it will
-      # not strip them. We depend on this target to guarantee a stripped version
-      # will get installed in the framework.
-      add_dependencies(install-lldb-framework-stripped install-${name}-stripped)
-    endif()
     install(TARGETS ${name}
-          COMPONENT ${name}
-          RUNTIME DESTINATION ${out_dir})
+            COMPONENT ${name}
+            RUNTIME DESTINATION bin)
     if (NOT CMAKE_CONFIGURATION_TYPES)
       add_llvm_install_targets(install-${name}
                                DEPENDS ${name}
                                COMPONENT ${name})
     endif()
   endif()
-
-  if(ARG_INCLUDE_IN_SUITE 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)

Modified: lldb/trunk/cmake/modules/LLDBConfig.cmake
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/cmake/modules/LLDBConfig.cmake?rev=350391&r1=350390&r2=350391&view=diff
==============================================================================
--- lldb/trunk/cmake/modules/LLDBConfig.cmake (original)
+++ lldb/trunk/cmake/modules/LLDBConfig.cmake Fri Jan  4 04:46:50 2019
@@ -4,6 +4,18 @@ set(LLDB_PROJECT_ROOT ${CMAKE_CURRENT_SO
 set(LLDB_SOURCE_ROOT "${CMAKE_CURRENT_SOURCE_DIR}/source")
 set(LLDB_INCLUDE_ROOT "${CMAKE_CURRENT_SOURCE_DIR}/include")
 
+set(LLDB_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
+set(LLDB_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR})
+
+if(CMAKE_SOURCE_DIR STREQUAL CMAKE_BINARY_DIR)
+  message(FATAL_ERROR
+    "In-source builds are not allowed. CMake would overwrite the makefiles "
+    "distributed with LLDB. Please create a directory and run cmake from "
+    "there, passing the path to this source directory as the last argument. "
+    "This process created the file `CMakeCache.txt' and the directory "
+    "`CMakeFiles'. Please delete them.")
+endif()
+
 set(LLDB_LINKER_SUPPORTS_GROUPS OFF)
 if (LLVM_COMPILER_IS_GCC_COMPATIBLE AND NOT "${CMAKE_SYSTEM_NAME}" MATCHES "Darwin")
   # The Darwin linker doesn't understand --start-group/--end-group.
@@ -45,6 +57,19 @@ if(LLDB_BUILD_FRAMEWORK)
   if(CMAKE_VERSION VERSION_LESS 3.7)
     message(FATAL_ERROR "LLDB_BUILD_FRAMEWORK is not supported on CMake < 3.7")
   endif()
+
+  set(LLDB_FRAMEWORK_VERSION A CACHE STRING "LLDB.framework version (default is A)")
+  set(LLDB_FRAMEWORK_BUILD_DIR bin CACHE STRING "Output directory for LLDB.framework")
+  set(LLDB_FRAMEWORK_INSTALL_DIR Library/Frameworks CACHE STRING "Install directory for LLDB.framework")
+  set(LLDB_FRAMEWORK_TOOLS darwin-debug;debugserver;lldb-argdumper;lldb-server CACHE INTERNAL
+      "List of tools to include in LLDB.framework/Resources")
+
+  # Set designated directory for all dSYMs. Essentially, this emits the
+  # framework's dSYM outside of the framework directory.
+  if(LLVM_EXTERNALIZE_DEBUGINFO)
+    set(LLVM_EXTERNALIZE_DEBUGINFO_OUTPUT_DIR ${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/bin CACHE STRING
+        "Directory to emit dSYM files stripped from executables and libraries (Darwin Only)")
+  endif()
 endif()
 
 if (NOT CMAKE_SYSTEM_NAME MATCHES "Windows")
@@ -269,17 +294,6 @@ if (CMAKE_SYSTEM_NAME MATCHES "Windows")
     add_definitions( -D_UNICODE -DUNICODE )
 endif()
 
-set(LLDB_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
-set(LLDB_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR})
-
-if (CMAKE_SOURCE_DIR STREQUAL CMAKE_BINARY_DIR)
-  message(FATAL_ERROR "In-source builds are not allowed. CMake would overwrite "
-"the makefiles distributed with LLDB. Please create a directory and run cmake "
-"from there, passing the path to this source directory as the last argument. "
-"This process created the file `CMakeCache.txt' and the directory "
-"`CMakeFiles'. Please delete them.")
-endif()
-
 # If LLDB_VERSION_* is specified, use it, if not use LLVM_VERSION_*.
 if(NOT DEFINED LLDB_VERSION_MAJOR)
   set(LLDB_VERSION_MAJOR ${LLVM_VERSION_MAJOR})
@@ -345,11 +359,6 @@ if (APPLE)
   find_library(CORE_FOUNDATION_LIBRARY CoreFoundation)
   find_library(SECURITY_LIBRARY Security)
 
-  set(LLDB_FRAMEWORK_INSTALL_DIR Library/Frameworks CACHE STRING "Output directory for LLDB.framework")
-  set(LLDB_FRAMEWORK_VERSION A CACHE STRING "LLDB.framework version (default is A)")
-  set(LLDB_FRAMEWORK_RESOURCE_DIR
-    LLDB.framework/Versions/${LLDB_FRAMEWORK_VERSION}/Resources)
-
   add_definitions( -DLIBXML2_DEFINED )
   list(APPEND system_libs xml2
        ${CURSES_LIBRARIES}

Modified: lldb/trunk/cmake/modules/LLDBFramework.cmake
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/cmake/modules/LLDBFramework.cmake?rev=350391&r1=350390&r2=350391&view=diff
==============================================================================
--- lldb/trunk/cmake/modules/LLDBFramework.cmake (original)
+++ lldb/trunk/cmake/modules/LLDBFramework.cmake Fri Jan  4 04:46:50 2019
@@ -1,39 +1,107 @@
+# Path relative to the root binary directory
+get_filename_component(
+  framework_target_dir ${LLDB_FRAMEWORK_BUILD_DIR} ABSOLUTE
+  BASE_DIR ${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}
+)
+
+message(STATUS "LLDB.framework: build path is '${framework_target_dir}'")
+message(STATUS "LLDB.framework: install path is '${LLDB_FRAMEWORK_INSTALL_DIR}'")
+message(STATUS "LLDB.framework: resources subdirectory is 'Versions/${LLDB_FRAMEWORK_VERSION}/Resources'")
+
+# Configure liblldb as a framework bundle
+set_target_properties(liblldb PROPERTIES
+  FRAMEWORK ON
+  FRAMEWORK_VERSION ${LLDB_FRAMEWORK_VERSION}
+
+  OUTPUT_NAME LLDB
+  VERSION ${LLDB_VERSION}
+  LIBRARY_OUTPUT_DIRECTORY ${framework_target_dir}
+
+  # Compatibility version
+  SOVERSION "1.0.0"
+
+  MACOSX_FRAMEWORK_IDENTIFIER com.apple.LLDB.framework
+  MACOSX_FRAMEWORK_BUNDLE_VERSION ${LLDB_VERSION}
+  MACOSX_FRAMEWORK_SHORT_VERSION_STRING ${LLDB_VERSION}
+  MACOSX_FRAMEWORK_INFO_PLIST ${LLDB_SOURCE_DIR}/resources/LLDB-Info.plist.in
+)
+
+# Affects the layout of the framework bundle (default is macOS layout).
+if(IOS)
+  set_target_properties(liblldb PROPERTIES
+    XCODE_ATTRIBUTE_IPHONEOS_DEPLOYMENT_TARGET "${IPHONEOS_DEPLOYMENT_TARGET}")
+else()
+  set_target_properties(liblldb PROPERTIES
+    XCODE_ATTRIBUTE_MACOSX_DEPLOYMENT_TARGET "${MACOSX_DEPLOYMENT_TARGET}")
+endif()
+
+# Target to capture extra steps for a fully functional framework bundle.
+add_custom_target(lldb-framework)
+add_dependencies(lldb-framework liblldb)
+
+# Dependencies are defined once tools are added (see AddLLDB.cmake)
+if(LLDB_FRAMEWORK_TOOLS)
+  foreach(tool ${LLDB_FRAMEWORK_TOOLS})
+    add_custom_command(TARGET lldb-framework POST_BUILD
+      COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:${tool}> $<TARGET_FILE_DIR:liblldb>/Resources
+      COMMENT "LLDB.framework: copy additional tool ${tool}"
+    )
+  endforeach()
+else()
+  message(WARNING "LLDB.framework: no additional tools configured (set via LLDB_FRAMEWORK_TOOLS)")
+endif()
+
+# Apart from this one, CMake creates all required symlinks in the framework bundle.
+add_custom_command(TARGET lldb-framework POST_BUILD
+  COMMAND ${CMAKE_COMMAND} -E create_symlink
+          Versions/Current/Headers
+          ${framework_target_dir}/LLDB.framework/Headers
+  COMMENT "LLDB.framework: create Headers symlink"
+)
+
+# At configuration time, collect headers for the framework bundle and copy them
+# into a staging directory. Later we can copy over the entire folder.
 file(GLOB public_headers ${LLDB_SOURCE_DIR}/include/lldb/API/*.h)
 file(GLOB root_public_headers ${LLDB_SOURCE_DIR}/include/lldb/lldb-*.h)
 file(GLOB root_private_headers ${LLDB_SOURCE_DIR}/include/lldb/lldb-private*.h)
 list(REMOVE_ITEM root_public_headers ${root_private_headers})
+
+set(lldb_header_staging ${CMAKE_CURRENT_BINARY_DIR}/FrameworkHeaders)
 foreach(header
     ${public_headers}
     ${root_public_headers}
     ${LLDB_SOURCE_DIR}/include/lldb/Utility/SharingPtr.h)
+
   get_filename_component(basename ${header} NAME)
-  add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/FrameworkHeaders/${basename}
-                     DEPENDS ${header}
-                     COMMAND ${CMAKE_COMMAND} -E copy ${header} ${CMAKE_CURRENT_BINARY_DIR}/FrameworkHeaders/${basename})
-  list(APPEND framework_headers ${CMAKE_CURRENT_BINARY_DIR}/FrameworkHeaders/${basename})
+  set(staged_header ${lldb_header_staging}/${basename})
+
+  add_custom_command(
+    DEPENDS ${header} OUTPUT ${staged_header}
+    COMMAND ${CMAKE_COMMAND} -E copy ${header} ${staged_header}
+    COMMENT "LLDB.framework: collect framework header")
+
+  list(APPEND lldb_staged_headers ${staged_header})
 endforeach()
 
-add_custom_target(lldb-framework-headers DEPENDS ${framework_headers})
+# Wrap output in a target, so lldb-framework can depend on it.
+add_custom_target(lldb-framework-headers DEPENDS ${lldb_staged_headers})
+add_dependencies(lldb-framework lldb-framework-headers)
 
-add_custom_command(TARGET lldb-framework POST_BUILD
-  COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_BINARY_DIR}/FrameworkHeaders $<TARGET_FILE_DIR:liblldb>/Headers
+# At build time, copy the staged headers into the framework bundle (and do
+# some post-processing in-place).
+add_custom_command(TARGET lldb-framework-headers POST_BUILD
+  COMMAND ${CMAKE_COMMAND} -E copy_directory ${lldb_header_staging} $<TARGET_FILE_DIR:liblldb>/Headers
   COMMAND ${LLDB_SOURCE_DIR}/scripts/framework-header-fix.sh $<TARGET_FILE_DIR:liblldb>/Headers ${LLDB_VERSION}
+  COMMENT "LLDB.framework: copy framework headers"
 )
 
-if (NOT IOS)
-  if (NOT LLDB_BUILT_STANDALONE)
-    add_dependencies(lldb-framework clang-headers)
-  endif()
+# Copy vendor-specific headers from clang (without staging).
+if(NOT IOS AND NOT LLDB_BUILT_STANDALONE)
+  add_dependencies(lldb-framework clang-headers)
   add_custom_command(TARGET lldb-framework POST_BUILD
-    COMMAND ${CMAKE_COMMAND} -E create_symlink Versions/Current/Headers ${LLDB_FRAMEWORK_DIR}/LLDB.framework/Headers
-    COMMAND ${CMAKE_COMMAND} -E create_symlink ${LLDB_FRAMEWORK_VERSION} ${LLDB_FRAMEWORK_DIR}/LLDB.framework/Versions/Current
-    COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_BINARY_DIR}/lib${LLVM_LIBDIR_SUFFIX}/clang/${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}.${LLVM_VERSION_PATCH} $<TARGET_FILE_DIR:liblldb>/Resources/Clang
+    COMMAND ${CMAKE_COMMAND} -E copy_directory
+            $<TARGET_PROPERTY:clang-headers,RUNTIME_OUTPUT_DIRECTORY>
+            $<TARGET_FILE_DIR:liblldb>/Resources/Clang/include
+    COMMENT "LLDB.framework: copy clang vendor-specific headers"
   )
 endif()
-
-add_dependencies(lldb-framework
-  lldb-framework-headers
-  lldb-suite)
-
-add_custom_target(install-lldb-framework)
-add_custom_target(install-lldb-framework-stripped)

Added: lldb/trunk/resources/LLDB-Info.plist.in
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/resources/LLDB-Info.plist.in?rev=350391&view=auto
==============================================================================
--- lldb/trunk/resources/LLDB-Info.plist.in (added)
+++ lldb/trunk/resources/LLDB-Info.plist.in Fri Jan  4 04:46:50 2019
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>CFBundleDevelopmentRegion</key>
+	<string>English</string>
+	<key>CFBundleExecutable</key>
+	<string>LLDB</string>
+	<key>CFBundleIdentifier</key>
+	<string>${MACOSX_FRAMEWORK_IDENTIFIER}</string>
+	<key>CFBundleInfoDictionaryVersion</key>
+	<string>6.0</string>
+	<key>CFBundlePackageType</key>
+	<string>FMWK</string>
+	<key>CFBundleShortVersionString</key>
+	<string>${MACOSX_FRAMEWORK_SHORT_VERSION_STRING}</string>
+	<key>CFBundleSignature</key>
+	<string>????</string>
+	<key>CFBundleVersion</key>
+	<string>${MACOSX_FRAMEWORK_BUNDLE_VERSION}</string>
+	<key>CFBundleName</key>
+	<string>LLDB</string>
+</dict>
+</plist>

Modified: lldb/trunk/source/API/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/API/CMakeLists.txt?rev=350391&r1=350390&r2=350391&view=diff
==============================================================================
--- lldb/trunk/source/API/CMakeLists.txt (original)
+++ lldb/trunk/source/API/CMakeLists.txt Fri Jan  4 04:46:50 2019
@@ -92,24 +92,26 @@ add_lldb_library(liblldb SHARED
     Support
   )
 
-add_dependencies(lldb-suite liblldb)
+if(LLDB_WRAP_PYTHON)
+  add_dependencies(liblldb swig_wrapper)
 
-if (MSVC)
-  set_property(SOURCE ${LLDB_WRAP_PYTHON} APPEND_STRING PROPERTY COMPILE_FLAGS " /W0")
-else()
-  set_property(SOURCE ${LLDB_WRAP_PYTHON} APPEND_STRING PROPERTY COMPILE_FLAGS " -w")
-endif()
+  if (MSVC)
+    set_property(SOURCE ${LLDB_WRAP_PYTHON} APPEND_STRING PROPERTY COMPILE_FLAGS " /W0")
+  else()
+    set_property(SOURCE ${LLDB_WRAP_PYTHON} APPEND_STRING PROPERTY COMPILE_FLAGS " -w")
+  endif()
 
-set_source_files_properties(${LLDB_WRAP_PYTHON} PROPERTIES GENERATED 1)
-if (CLANG_CL)
-  set_property(SOURCE ${LLDB_WRAP_PYTHON} APPEND_STRING
-    PROPERTY COMPILE_FLAGS " -Wno-unused-function")
+  set_source_files_properties(${LLDB_WRAP_PYTHON} PROPERTIES GENERATED 1)
+  if (CLANG_CL)
+    set_property(SOURCE ${LLDB_WRAP_PYTHON} APPEND_STRING
+      PROPERTY COMPILE_FLAGS " -Wno-unused-function")
+  endif()
+  if (LLVM_COMPILER_IS_GCC_COMPATIBLE AND
+      NOT "${CMAKE_SYSTEM_NAME}" MATCHES "Darwin")
+    set_property(SOURCE ${LLDB_WRAP_PYTHON} APPEND_STRING
+      PROPERTY COMPILE_FLAGS " -Wno-sequence-point -Wno-cast-qual")
+  endif ()
 endif()
-if (LLVM_COMPILER_IS_GCC_COMPATIBLE AND
-    NOT "${CMAKE_SYSTEM_NAME}" MATCHES "Darwin")
-  set_property(SOURCE ${LLDB_WRAP_PYTHON} APPEND_STRING
-    PROPERTY COMPILE_FLAGS " -Wno-sequence-point -Wno-cast-qual")
-endif ()
 
 set_target_properties(liblldb
   PROPERTIES
@@ -144,18 +146,6 @@ else()
   )
 endif()
 
-if (LLDB_BUILD_FRAMEWORK)
-  set_target_properties(liblldb
-    PROPERTIES
-    SOVERSION "1.0.0"
-    OUTPUT_NAME LLDB
-    FRAMEWORK On
-    FRAMEWORK_VERSION ${LLDB_FRAMEWORK_VERSION}
-    MACOSX_FRAMEWORK_INFO_PLIST ${LLDB_SOURCE_DIR}/resources/LLDB-Info.plist
-    LIBRARY_OUTPUT_DIRECTORY ${LLDB_FRAMEWORK_DIR}
-  )
-endif()
-
-if (LLDB_WRAP_PYTHON)
-  add_dependencies(liblldb swig_wrapper)
+if(LLDB_BUILD_FRAMEWORK)
+  include(LLDBFramework)
 endif()

Modified: lldb/trunk/test/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/test/CMakeLists.txt?rev=350391&r1=350390&r2=350391&view=diff
==============================================================================
--- lldb/trunk/test/CMakeLists.txt (original)
+++ lldb/trunk/test/CMakeLists.txt Fri Jan  4 04:46:50 2019
@@ -79,7 +79,8 @@ if(LLDB_CODESIGN_IDENTITY_USED)
 endif()
 
 if(LLDB_BUILD_FRAMEWORK)
-  list(APPEND LLDB_TEST_COMMON_ARGS --framework ${LLDB_FRAMEWORK_DIR}/LLDB.framework)
+  get_target_property(framework_target_dir liblldb LIBRARY_OUTPUT_DIRECTORY)
+  list(APPEND LLDB_TEST_COMMON_ARGS --framework ${framework_target_dir}/LLDB.framework)
 endif()
 
 if (NOT ${CMAKE_SYSTEM_NAME} MATCHES "Windows|Darwin")

Modified: lldb/trunk/tools/argdumper/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/tools/argdumper/CMakeLists.txt?rev=350391&r1=350390&r2=350391&view=diff
==============================================================================
--- lldb/trunk/tools/argdumper/CMakeLists.txt (original)
+++ lldb/trunk/tools/argdumper/CMakeLists.txt Fri Jan  4 04:46:50 2019
@@ -1,4 +1,4 @@
-add_lldb_tool(lldb-argdumper INCLUDE_IN_SUITE
+add_lldb_tool(lldb-argdumper
   argdumper.cpp
 
   LINK_LIBS

Modified: lldb/trunk/tools/darwin-debug/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/tools/darwin-debug/CMakeLists.txt?rev=350391&r1=350390&r2=350391&view=diff
==============================================================================
--- lldb/trunk/tools/darwin-debug/CMakeLists.txt (original)
+++ lldb/trunk/tools/darwin-debug/CMakeLists.txt Fri Jan  4 04:46:50 2019
@@ -1,3 +1,3 @@
-add_lldb_tool(darwin-debug INCLUDE_IN_SUITE
+add_lldb_tool(darwin-debug
   darwin-debug.cpp
   )

Modified: lldb/trunk/tools/debugserver/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/tools/debugserver/CMakeLists.txt?rev=350391&r1=350390&r2=350391&view=diff
==============================================================================
--- lldb/trunk/tools/debugserver/CMakeLists.txt (original)
+++ lldb/trunk/tools/debugserver/CMakeLists.txt Fri Jan  4 04:46:50 2019
@@ -15,11 +15,6 @@ if (CMAKE_SOURCE_DIR STREQUAL CMAKE_CURR
 
   set(LLDB_SOURCE_DIR "${CMAKE_SOURCE_DIR}/../../")
   include_directories(${LLDB_SOURCE_DIR}/include)
-
-  # lldb-suite is a dummy target that encompasses all the necessary tools and
-  # libraries for building a fully-functioning liblldb.
-  add_custom_target(lldb-suite)
-  set(LLDB_SUITE_TARGET lldb-suite)
 endif()
 
 add_subdirectory(source)

Modified: lldb/trunk/tools/debugserver/source/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/tools/debugserver/source/CMakeLists.txt?rev=350391&r1=350390&r2=350391&view=diff
==============================================================================
--- lldb/trunk/tools/debugserver/source/CMakeLists.txt (original)
+++ lldb/trunk/tools/debugserver/source/CMakeLists.txt Fri Jan  4 04:46:50 2019
@@ -259,7 +259,7 @@ if(build_and_sign_debugserver)
                  COMPILE_DEFINITIONS HAVE_LIBCOMPRESSION)
   endif()
   set(LLVM_OPTIONAL_SOURCES ${lldbDebugserverCommonSources})
-  add_lldb_tool(debugserver INCLUDE_IN_SUITE
+  add_lldb_tool(debugserver
     debugserver.cpp
 
     LINK_LIBS

Modified: lldb/trunk/tools/driver/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/tools/driver/CMakeLists.txt?rev=350391&r1=350390&r2=350391&view=diff
==============================================================================
--- lldb/trunk/tools/driver/CMakeLists.txt (original)
+++ lldb/trunk/tools/driver/CMakeLists.txt Fri Jan  4 04:46:50 2019
@@ -19,7 +19,6 @@ if ( CMAKE_SYSTEM_NAME MATCHES "Windows"
 endif()
 
 add_dependencies(lldb
-  ${LLDB_SUITE_TARGET}
   LLDBOptionsTableGen
   ${tablegen_deps}
 )

Modified: lldb/trunk/tools/lldb-server/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/tools/lldb-server/CMakeLists.txt?rev=350391&r1=350390&r2=350391&view=diff
==============================================================================
--- lldb/trunk/tools/lldb-server/CMakeLists.txt (original)
+++ lldb/trunk/tools/lldb-server/CMakeLists.txt Fri Jan  4 04:46:50 2019
@@ -42,7 +42,7 @@ else()
   list(APPEND LLDB_PLUGINS lldbPluginObjectFileELF)
 endif()
 
-add_lldb_tool(lldb-server INCLUDE_IN_SUITE
+add_lldb_tool(lldb-server
     Acceptor.cpp
     lldb-gdbserver.cpp
     lldb-platform.cpp




More information about the lldb-commits mailing list