[clang] Revise IDE folder structure (#89743)

Update the folder titles for targets in the monorepository that have not
seen taken care of for some time. These are the folders that targets are
organized in Visual Studio and XCode (`set_property(TARGET <target>
PROPERTY FOLDER "<title>")`) when using the respective CMake's IDE
generator.

 * Ensure that every target is in a folder
 * Use a folder hierarchy with each LLVM subproject as a top-level folder
 * Use consistent folder names between subprojects
 * When using target-creating functions from AddLLVM.cmake, automatically
deduce the folder. This reduces the number of
`set_property`/`set_target_property`, but are still necessary when
`add_custom_target`, `add_executable`, `add_library`, etc. are used. A
LLVM_SUBPROJECT_TITLE definition is used for that in each subproject's
root CMakeLists.txt.
This commit is contained in:
Michael Kruse 2024-05-25 17:16:39 +02:00 committed by GitHub
parent c5a3f664fe
commit f2a385c74a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
12 changed files with 16 additions and 18 deletions

View File

@ -1,4 +1,5 @@
cmake_minimum_required(VERSION 3.20.0) cmake_minimum_required(VERSION 3.20.0)
set(LLVM_SUBPROJECT_TITLE "Clang")
if(NOT DEFINED LLVM_COMMON_CMAKE_UTILS) if(NOT DEFINED LLVM_COMMON_CMAKE_UTILS)
set(LLVM_COMMON_CMAKE_UTILS ${CMAKE_CURRENT_SOURCE_DIR}/../cmake) set(LLVM_COMMON_CMAKE_UTILS ${CMAKE_CURRENT_SOURCE_DIR}/../cmake)
@ -391,7 +392,7 @@ if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY)
# Installing the headers needs to depend on generating any public # Installing the headers needs to depend on generating any public
# tablegen'd headers. # tablegen'd headers.
add_custom_target(clang-headers DEPENDS clang-tablegen-targets) add_custom_target(clang-headers DEPENDS clang-tablegen-targets)
set_target_properties(clang-headers PROPERTIES FOLDER "Misc") set_target_properties(clang-headers PROPERTIES FOLDER "Clang/Resources")
if(NOT LLVM_ENABLE_IDE) if(NOT LLVM_ENABLE_IDE)
add_llvm_install_targets(install-clang-headers add_llvm_install_targets(install-clang-headers
DEPENDS clang-headers DEPENDS clang-headers
@ -399,6 +400,7 @@ if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY)
endif() endif()
add_custom_target(bash-autocomplete DEPENDS utils/bash-autocomplete.sh) add_custom_target(bash-autocomplete DEPENDS utils/bash-autocomplete.sh)
set_target_properties(bash-autocomplete PROPERTIES FOLDER "Clang/Misc")
install(FILES utils/bash-autocomplete.sh install(FILES utils/bash-autocomplete.sh
DESTINATION "${CMAKE_INSTALL_DATADIR}/clang" DESTINATION "${CMAKE_INSTALL_DATADIR}/clang"
COMPONENT bash-autocomplete) COMPONENT bash-autocomplete)
@ -479,7 +481,7 @@ add_custom_target(clang-tablegen-targets
omp_gen omp_gen
ClangDriverOptions ClangDriverOptions
${CLANG_TABLEGEN_TARGETS}) ${CLANG_TABLEGEN_TARGETS})
set_target_properties(clang-tablegen-targets PROPERTIES FOLDER "Misc") set_target_properties(clang-tablegen-targets PROPERTIES FOLDER "Clang/Tablegenning/Targets")
list(APPEND LLVM_COMMON_DEPENDS clang-tablegen-targets) list(APPEND LLVM_COMMON_DEPENDS clang-tablegen-targets)
# Force target to be built as soon as possible. Clang modules builds depend # Force target to be built as soon as possible. Clang modules builds depend
@ -544,7 +546,7 @@ endif()
# Custom target to install all clang libraries. # Custom target to install all clang libraries.
add_custom_target(clang-libraries) add_custom_target(clang-libraries)
set_target_properties(clang-libraries PROPERTIES FOLDER "Misc") set_target_properties(clang-libraries PROPERTIES FOLDER "Clang/Install")
if(NOT LLVM_ENABLE_IDE) if(NOT LLVM_ENABLE_IDE)
add_llvm_install_targets(install-clang-libraries add_llvm_install_targets(install-clang-libraries

View File

@ -11,7 +11,7 @@ add_custom_target(check-clang-python
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/..) WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/..)
set(RUN_PYTHON_TESTS TRUE) set(RUN_PYTHON_TESTS TRUE)
set_target_properties(check-clang-python PROPERTIES FOLDER "Clang tests") set_target_properties(check-clang-python PROPERTIES FOLDER "Clang/Tests")
# Tests require libclang.so which is only built with LLVM_ENABLE_PIC=ON # Tests require libclang.so which is only built with LLVM_ENABLE_PIC=ON
if(NOT LLVM_ENABLE_PIC) if(NOT LLVM_ENABLE_PIC)

View File

@ -26,7 +26,6 @@ function(clang_tablegen)
if(CTG_TARGET) if(CTG_TARGET)
add_public_tablegen_target(${CTG_TARGET}) add_public_tablegen_target(${CTG_TARGET})
set_target_properties( ${CTG_TARGET} PROPERTIES FOLDER "Clang tablegenning")
set_property(GLOBAL APPEND PROPERTY CLANG_TABLEGEN_TARGETS ${CTG_TARGET}) set_property(GLOBAL APPEND PROPERTY CLANG_TABLEGEN_TARGETS ${CTG_TARGET})
endif() endif()
endfunction(clang_tablegen) endfunction(clang_tablegen)
@ -138,13 +137,11 @@ macro(add_clang_library name)
endif() endif()
endforeach() endforeach()
set_target_properties(${name} PROPERTIES FOLDER "Clang libraries")
set_clang_windows_version_resource_properties(${name}) set_clang_windows_version_resource_properties(${name})
endmacro(add_clang_library) endmacro(add_clang_library)
macro(add_clang_executable name) macro(add_clang_executable name)
add_llvm_executable( ${name} ${ARGN} ) add_llvm_executable( ${name} ${ARGN} )
set_target_properties(${name} PROPERTIES FOLDER "Clang executables")
set_clang_windows_version_resource_properties(${name}) set_clang_windows_version_resource_properties(${name})
endmacro(add_clang_executable) endmacro(add_clang_executable)

View File

@ -78,6 +78,7 @@ if (LLVM_ENABLE_DOXYGEN)
COMMAND ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/doxygen.cfg COMMAND ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/doxygen.cfg
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
COMMENT "Generating clang doxygen documentation." VERBATIM) COMMENT "Generating clang doxygen documentation." VERBATIM)
set_target_properties(doxygen-clang PROPERTIES FOLDER "Clang/Docs")
if (LLVM_BUILD_DOCS) if (LLVM_BUILD_DOCS)
add_dependencies(doxygen doxygen-clang) add_dependencies(doxygen doxygen-clang)

View File

@ -37,3 +37,4 @@ add_custom_command(OUTPUT HTMLLogger.inc
DEPENDS ${CLANG_SOURCE_DIR}/utils/bundle_resources.py HTMLLogger.html HTMLLogger.css HTMLLogger.js DEPENDS ${CLANG_SOURCE_DIR}/utils/bundle_resources.py HTMLLogger.html HTMLLogger.css HTMLLogger.js
VERBATIM) VERBATIM)
add_custom_target(clangAnalysisFlowSensitiveResources DEPENDS HTMLLogger.inc) add_custom_target(clangAnalysisFlowSensitiveResources DEPENDS HTMLLogger.inc)
set_target_properties(clangAnalysisFlowSensitiveResources PROPERTIES FOLDER "Clang/Misc")

View File

@ -443,14 +443,14 @@ endforeach( f )
function(add_header_target target_name file_list) function(add_header_target target_name file_list)
add_library(${target_name} INTERFACE ${file_list}) add_library(${target_name} INTERFACE ${file_list})
set_target_properties(${target_name} PROPERTIES set_target_properties(${target_name} PROPERTIES
FOLDER "Misc" FOLDER "Clang/Resources"
RUNTIME_OUTPUT_DIRECTORY "${output_dir}") RUNTIME_OUTPUT_DIRECTORY "${output_dir}")
endfunction() endfunction()
# The catch-all clang-resource-headers target # The catch-all clang-resource-headers target
add_library(clang-resource-headers INTERFACE ${out_files}) add_library(clang-resource-headers INTERFACE ${out_files})
set_target_properties("clang-resource-headers" PROPERTIES set_target_properties("clang-resource-headers" PROPERTIES
FOLDER "Misc" FOLDER "Clang/Resources"
RUNTIME_OUTPUT_DIRECTORY "${output_dir}") RUNTIME_OUTPUT_DIRECTORY "${output_dir}")
add_dependencies("clang-resource-headers" add_dependencies("clang-resource-headers"
"core-resource-headers" "core-resource-headers"

View File

@ -170,7 +170,7 @@ configure_file(AST/gen_ast_dump_json_test.py
${CLANG_BINARY_DIR}/bin/gen_ast_dump_json_test.py COPYONLY) ${CLANG_BINARY_DIR}/bin/gen_ast_dump_json_test.py COPYONLY)
add_custom_target(clang-test-depends DEPENDS ${CLANG_TEST_DEPS}) add_custom_target(clang-test-depends DEPENDS ${CLANG_TEST_DEPS})
set_target_properties(clang-test-depends PROPERTIES FOLDER "Clang tests") set_target_properties(clang-test-depends PROPERTIES FOLDER "Clang/Tests")
add_lit_testsuite(check-clang "Running the Clang regression tests" add_lit_testsuite(check-clang "Running the Clang regression tests"
${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_BINARY_DIR}
@ -179,7 +179,6 @@ add_lit_testsuite(check-clang "Running the Clang regression tests"
DEPENDS ${CLANG_TEST_DEPS} DEPENDS ${CLANG_TEST_DEPS}
ARGS ${CLANG_TEST_EXTRA_ARGS} ARGS ${CLANG_TEST_EXTRA_ARGS}
) )
set_target_properties(check-clang PROPERTIES FOLDER "Clang tests")
add_lit_testsuites(CLANG ${CMAKE_CURRENT_SOURCE_DIR} add_lit_testsuites(CLANG ${CMAKE_CURRENT_SOURCE_DIR}
PARAMS ${CLANG_TEST_PARAMS} PARAMS ${CLANG_TEST_PARAMS}
@ -190,7 +189,7 @@ add_lit_testsuites(CLANG ${CMAKE_CURRENT_SOURCE_DIR}
# Add a legacy target spelling: clang-test # Add a legacy target spelling: clang-test
add_custom_target(clang-test) add_custom_target(clang-test)
add_dependencies(clang-test check-clang) add_dependencies(clang-test check-clang)
set_target_properties(clang-test PROPERTIES FOLDER "Clang tests") set_target_properties(clang-test PROPERTIES FOLDER "Clang/Tests")
# FIXME: This logic can be removed once all buildbots have moved # FIXME: This logic can be removed once all buildbots have moved
# debuginfo-test from clang/test to llvm/projects or monorepo. # debuginfo-test from clang/test to llvm/projects or monorepo.

View File

@ -230,7 +230,7 @@ install(DIRECTORY ../../include/clang-c
# component and an install-component target, so add a dummy libclang-headers # component and an install-component target, so add a dummy libclang-headers
# target to allow using it in LLVM_DISTRIBUTION_COMPONENTS. # target to allow using it in LLVM_DISTRIBUTION_COMPONENTS.
add_custom_target(libclang-headers) add_custom_target(libclang-headers)
set_target_properties(libclang-headers PROPERTIES FOLDER "Misc") set_target_properties(libclang-headers PROPERTIES FOLDER "Clang/Resources")
if (NOT LLVM_ENABLE_IDE) if (NOT LLVM_ENABLE_IDE)
add_llvm_install_targets(install-libclang-headers add_llvm_install_targets(install-libclang-headers

View File

@ -1,5 +1,5 @@
add_custom_target(ClangUnitTests) add_custom_target(ClangUnitTests)
set_target_properties(ClangUnitTests PROPERTIES FOLDER "Clang tests") set_target_properties(ClangUnitTests PROPERTIES FOLDER "Clang/Tests")
if(CLANG_BUILT_STANDALONE) if(CLANG_BUILT_STANDALONE)
# LLVMTesting* libraries are needed for some of the unittests. # LLVMTesting* libraries are needed for some of the unittests.

View File

@ -3,5 +3,5 @@
if (LLVM_ADD_NATIVE_VISUALIZERS_TO_SOLUTION) if (LLVM_ADD_NATIVE_VISUALIZERS_TO_SOLUTION)
set(CLANG_VISUALIZERS clang.natvis) set(CLANG_VISUALIZERS clang.natvis)
add_custom_target(ClangVisualizers SOURCES ${CLANG_VISUALIZERS}) add_custom_target(ClangVisualizers SOURCES ${CLANG_VISUALIZERS})
set_target_properties(ClangVisualizers PROPERTIES FOLDER "Utils") set_target_properties(ClangVisualizers PROPERTIES FOLDER "Clang/Misc")
endif() endif()

View File

@ -27,5 +27,3 @@ add_tablegen(clang-tblgen CLANG
) )
target_link_libraries(clang-tblgen PRIVATE clangSupport_tablegen) target_link_libraries(clang-tblgen PRIVATE clangSupport_tablegen)
set_target_properties(clang-tblgen PROPERTIES FOLDER "Clang tablegenning")

View File

@ -1,6 +1,6 @@
install(PROGRAMS hmaptool DESTINATION "${CLANG_TOOLS_INSTALL_DIR}" COMPONENT hmaptool) install(PROGRAMS hmaptool DESTINATION "${CLANG_TOOLS_INSTALL_DIR}" COMPONENT hmaptool)
add_custom_target(hmaptool ALL DEPENDS "hmaptool") add_custom_target(hmaptool ALL DEPENDS "hmaptool")
set_target_properties(hmaptool PROPERTIES FOLDER "Utils") set_target_properties(hmaptool PROPERTIES FOLDER "Clang/Utils")
if(NOT LLVM_ENABLE_IDE) if(NOT LLVM_ENABLE_IDE)
add_llvm_install_targets("install-hmaptool" add_llvm_install_targets("install-hmaptool"