[CMake] Tidy up the organisation of compiler-rt when configured as a standalone

build with an IDE (e.g. Xcode) as the generator.

Previously the global `USE_FOLDERS` property wasn't set in standalone
builds leading to existing settings of FOLDER not being respected.

In addition to this there were several targets that appeared at the top
level that were not interesting and clustered up the view. These have
been changed to be displayed in "Compiler-RT Misc".

Now when an Xcode project is generated from a standalone compiler-rt
build the project navigator is much less cluttered. The interesting
libraries should appear in "Compiler-RT Libraries" in the IDE.

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

llvm-svn: 335728
This commit is contained in:
Dan Liew 2018-06-27 12:56:34 +00:00
parent d3e583a52d
commit bb78eef6b6
7 changed files with 26 additions and 2 deletions

View File

@ -9,6 +9,7 @@ cmake_minimum_required(VERSION 3.4.3)
if (CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR OR COMPILER_RT_STANDALONE_BUILD) if (CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR OR COMPILER_RT_STANDALONE_BUILD)
project(CompilerRT C CXX ASM) project(CompilerRT C CXX ASM)
set(COMPILER_RT_STANDALONE_BUILD TRUE) set(COMPILER_RT_STANDALONE_BUILD TRUE)
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
endif() endif()
# Add path for custom compiler-rt modules. # Add path for custom compiler-rt modules.
@ -63,6 +64,11 @@ set(COMPILER_RT_BAREMETAL_BUILD OFF CACHE BOOLEAN
if (COMPILER_RT_STANDALONE_BUILD) if (COMPILER_RT_STANDALONE_BUILD)
load_llvm_config() load_llvm_config()
if (TARGET intrinsics_gen)
# Loading the llvm config causes this target to be imported so place it
# under the appropriate folder in an IDE.
set_target_properties(intrinsics_gen PROPERTIES FOLDER "Compiler-RT Misc")
endif()
# Find Python interpreter. # Find Python interpreter.
set(Python_ADDITIONAL_VERSIONS 2.7 2.6 2.5) set(Python_ADDITIONAL_VERSIONS 2.7 2.6 2.5)

View File

@ -204,6 +204,8 @@ function(add_compiler_rt_runtime name type)
# If the parent targets aren't created we should create them # If the parent targets aren't created we should create them
if(NOT TARGET ${LIB_PARENT_TARGET}) if(NOT TARGET ${LIB_PARENT_TARGET})
add_custom_target(${LIB_PARENT_TARGET}) add_custom_target(${LIB_PARENT_TARGET})
set_target_properties(${LIB_PARENT_TARGET} PROPERTIES
FOLDER "Compiler-RT Misc")
endif() endif()
if(NOT TARGET install-${LIB_PARENT_TARGET}) if(NOT TARGET install-${LIB_PARENT_TARGET})
# The parent install target specifies the parent component to scrape up # The parent install target specifies the parent component to scrape up
@ -500,6 +502,7 @@ macro(add_custom_libcxx name prefix)
COMMENT "Clobbering ${name} build and stamp directories" COMMENT "Clobbering ${name} build and stamp directories"
USES_TERMINAL USES_TERMINAL
) )
set_target_properties(${name}-clear PROPERTIES FOLDER "Compiler-RT Misc")
add_custom_command( add_custom_command(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${name}-clobber-stamp OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${name}-clobber-stamp
@ -512,6 +515,7 @@ macro(add_custom_libcxx name prefix)
add_custom_target(${name}-clobber add_custom_target(${name}-clobber
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${name}-clobber-stamp) DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${name}-clobber-stamp)
set_target_properties(${name}-clobber PROPERTIES FOLDER "Compiler-RT Misc")
set(PASSTHROUGH_VARIABLES set(PASSTHROUGH_VARIABLES
CMAKE_C_COMPILER_TARGET CMAKE_C_COMPILER_TARGET

View File

@ -230,6 +230,7 @@ macro(darwin_add_builtin_library name suffix)
list(APPEND ${LIB_OS}_${suffix}_libs ${libname}) list(APPEND ${LIB_OS}_${suffix}_libs ${libname})
list(APPEND ${LIB_OS}_${suffix}_lipo_flags -arch ${arch} $<TARGET_FILE:${libname}>) list(APPEND ${LIB_OS}_${suffix}_lipo_flags -arch ${arch} $<TARGET_FILE:${libname}>)
set_target_properties(${libname} PROPERTIES FOLDER "Compiler-RT Libraries")
endmacro() endmacro()
function(darwin_lipo_libs name) function(darwin_lipo_libs name)
@ -251,6 +252,7 @@ function(darwin_lipo_libs name)
add_dependencies(${LIB_PARENT_TARGET} ${name}) add_dependencies(${LIB_PARENT_TARGET} ${name})
install(FILES ${LIB_OUTPUT_DIR}/lib${name}.a install(FILES ${LIB_OUTPUT_DIR}/lib${name}.a
DESTINATION ${LIB_INSTALL_DIR}) DESTINATION ${LIB_INSTALL_DIR})
set_target_properties(${name} PROPERTIES FOLDER "Compiler-RT Misc")
else() else()
message(WARNING "Not generating lipo target for ${name} because no input libraries exist.") message(WARNING "Not generating lipo target for ${name} because no input libraries exist.")
endif() endif()

View File

@ -94,4 +94,5 @@ else()
add_custom_target(SanitizerLintCheck add_custom_target(SanitizerLintCheck
COMMAND echo "No lint check") COMMAND echo "No lint check")
endif() endif()
set_target_properties(SanitizerLintCheck
PROPERTIES FOLDER "Compiler-RT Misc")

View File

@ -12,7 +12,14 @@ check_include_file(unwind.h HAVE_UNWIND_H)
add_custom_target(compiler-rt ALL) add_custom_target(compiler-rt ALL)
add_custom_target(install-compiler-rt) add_custom_target(install-compiler-rt)
add_custom_target(install-compiler-rt-stripped) add_custom_target(install-compiler-rt-stripped)
set_target_properties(compiler-rt PROPERTIES FOLDER "Compiler-RT Misc") set_property(
TARGET
compiler-rt
install-compiler-rt
install-compiler-rt-stripped
PROPERTY
FOLDER "Compiler-RT Misc"
)
# Setting these variables from an LLVM build is sufficient that compiler-rt can # Setting these variables from an LLVM build is sufficient that compiler-rt can
# construct the output paths, so it can behave as if it were in-tree here. # construct the output paths, so it can behave as if it were in-tree here.

View File

@ -139,6 +139,7 @@ if(APPLE)
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/go WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/go
COMMENT "Checking TSan Go runtime..." COMMENT "Checking TSan Go runtime..."
VERBATIM) VERBATIM)
set_target_properties(GotsanRuntimeCheck PROPERTIES FOLDER "Compiler-RT Misc")
else() else()
foreach(arch ${TSAN_SUPPORTED_ARCH}) foreach(arch ${TSAN_SUPPORTED_ARCH})
if(arch STREQUAL "x86_64") if(arch STREQUAL "x86_64")
@ -234,6 +235,7 @@ if(COMPILER_RT_LIBCXX_PATH AND
endforeach() endforeach()
add_custom_target(libcxx_tsan DEPENDS ${libcxx_tsan_deps}) add_custom_target(libcxx_tsan DEPENDS ${libcxx_tsan_deps})
set_target_properties(libcxx_tsan PROPERTIES FOLDER "Compiler-RT Misc")
endif() endif()
if(COMPILER_RT_INCLUDE_TESTS) if(COMPILER_RT_INCLUDE_TESTS)

View File

@ -17,6 +17,8 @@ append_list_if(COMPILER_RT_HAS_LIBRT rt DD_LINKLIBS)
append_list_if(COMPILER_RT_HAS_LIBPTHREAD pthread DD_LINKLIBS) append_list_if(COMPILER_RT_HAS_LIBPTHREAD pthread DD_LINKLIBS)
add_custom_target(dd) add_custom_target(dd)
set_target_properties(dd PROPERTIES FOLDER "Compiler-RT Misc")
# Deadlock detector is currently supported on 64-bit Linux only. # Deadlock detector is currently supported on 64-bit Linux only.
if(CAN_TARGET_x86_64 AND UNIX AND NOT APPLE AND NOT ANDROID) if(CAN_TARGET_x86_64 AND UNIX AND NOT APPLE AND NOT ANDROID)
set(arch "x86_64") set(arch "x86_64")