
When gathering the headers to fix up and place in LLDB.framework, we were previously globbing the header files from a location in the build directory. This commit changes this to glob from the source directory instead, as we were globbing from the build directory without ensuring that the necessary files were actually in that location before globbing.
105 lines
4.2 KiB
CMake
105 lines
4.2 KiB
CMake
message(STATUS "LLDB.framework: build path is '${LLDB_FRAMEWORK_ABSOLUTE_BUILD_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
|
|
if(NOT APPLE_EMBEDDED)
|
|
set_target_properties(liblldb PROPERTIES
|
|
FRAMEWORK ON
|
|
FRAMEWORK_VERSION ${LLDB_FRAMEWORK_VERSION}
|
|
|
|
OUTPUT_NAME LLDB
|
|
VERSION ${LLDB_VERSION}
|
|
LIBRARY_OUTPUT_DIRECTORY ${LLDB_FRAMEWORK_ABSOLUTE_BUILD_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
|
|
)
|
|
else()
|
|
set_target_properties(liblldb PROPERTIES
|
|
FRAMEWORK ON
|
|
FRAMEWORK_VERSION ${LLDB_FRAMEWORK_VERSION}
|
|
|
|
# Note: iOS doesn't specify version, as the framework layout is flat.
|
|
OUTPUT_NAME LLDB
|
|
LIBRARY_OUTPUT_DIRECTORY ${LLDB_FRAMEWORK_ABSOLUTE_BUILD_DIR}
|
|
|
|
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
|
|
)
|
|
endif()
|
|
|
|
# Used in llvm_add_library() to set default output directories for multi-config
|
|
# generators. Overwrite to account for special framework output directory.
|
|
set_output_directory(liblldb
|
|
BINARY_DIR ${LLDB_FRAMEWORK_ABSOLUTE_BUILD_DIR}
|
|
LIBRARY_DIR ${LLDB_FRAMEWORK_ABSOLUTE_BUILD_DIR}
|
|
)
|
|
|
|
lldb_add_post_install_steps_darwin(liblldb ${LLDB_FRAMEWORK_INSTALL_DIR})
|
|
|
|
# Affects the layout of the framework bundle (default is macOS layout).
|
|
if(APPLE_EMBEDDED)
|
|
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()
|
|
|
|
# Add -Wdocumentation parameter
|
|
set(CMAKE_XCODE_ATTRIBUTE_CLANG_WARN_DOCUMENTATION_COMMENTS "YES")
|
|
|
|
# On iOS, there is no versioned framework layout. Skip this symlink step.
|
|
if(NOT APPLE_EMBEDDED)
|
|
# Apart from this one, CMake creates all required symlinks in the framework bundle.
|
|
add_custom_command(TARGET liblldb POST_BUILD
|
|
COMMAND ${CMAKE_COMMAND} -E create_symlink
|
|
Versions/Current/Headers
|
|
${LLDB_FRAMEWORK_ABSOLUTE_BUILD_DIR}/LLDB.framework/Headers
|
|
COMMENT "LLDB.framework: create Headers symlink"
|
|
)
|
|
endif()
|
|
|
|
find_program(unifdef_EXECUTABLE unifdef)
|
|
|
|
# Wrap output in a target, so lldb-framework can depend on it.
|
|
add_custom_target(liblldb-resource-headers DEPENDS lldb-sbapi-dwarf-enums ${lldb_staged_headers})
|
|
set_target_properties(liblldb-resource-headers PROPERTIES FOLDER "LLDB/Resources")
|
|
# We're taking the header files from where they've been staged in the build directory's include folder,
|
|
# so create a dependency on the build step that creates that directory.
|
|
add_dependencies(liblldb-resource-headers liblldb-header-staging)
|
|
add_dependencies(liblldb liblldb-resource-headers)
|
|
|
|
# Copy vendor-specific headers from clang (without staging).
|
|
if(NOT APPLE_EMBEDDED)
|
|
if (TARGET clang-resource-headers)
|
|
add_dependencies(liblldb clang-resource-headers)
|
|
set(clang_resource_headers_dir $<TARGET_PROPERTY:clang-resource-headers,INTERFACE_INCLUDE_DIRECTORIES>)
|
|
else()
|
|
set(clang_resource_headers_dir ${LLDB_EXTERNAL_CLANG_RESOURCE_DIR}/include)
|
|
if(NOT EXISTS ${clang_resource_headers_dir})
|
|
message(WARNING "Expected directory for clang-resource headers not found: ${clang_resource_headers_dir}")
|
|
endif()
|
|
endif()
|
|
|
|
add_custom_command(TARGET liblldb POST_BUILD
|
|
COMMAND ${CMAKE_COMMAND} -E copy_directory
|
|
${clang_resource_headers_dir}
|
|
$<TARGET_FILE_DIR:liblldb>/Resources/Clang/include
|
|
COMMENT "LLDB.framework: copy clang vendor-specific headers"
|
|
)
|
|
endif()
|
|
|
|
# Add an rpath pointing to the directory where LLDB.framework is installed.
|
|
# This allows frameworks (relying on @rpath) to be installed in the same folder and found at runtime.
|
|
set_property(TARGET liblldb APPEND PROPERTY INSTALL_RPATH
|
|
"@loader_path/../../../")
|