Skip to content

Commit 6f39beb

Browse files
committed
[llvm] Revise IDE folder structure
1 parent c52b18d commit 6f39beb

File tree

56 files changed

+159
-112
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

56 files changed

+159
-112
lines changed

llvm/CMakeLists.txt

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1124,7 +1124,7 @@ configure_file(
11241124
add_custom_target(srpm
11251125
COMMAND cpack -G TGZ --config CPackSourceConfig.cmake -B ${LLVM_SRPM_DIR}/SOURCES
11261126
COMMAND rpmbuild -bs --define '_topdir ${LLVM_SRPM_DIR}' ${LLVM_SRPM_BINARY_SPECFILE})
1127-
set_target_properties(srpm PROPERTIES FOLDER "Misc")
1127+
set_target_properties(srpm PROPERTIES FOLDER "LLVM/Misc")
11281128

11291129
if(APPLE AND DARWIN_LTO_LIBRARY)
11301130
set(CMAKE_EXE_LINKER_FLAGS
@@ -1222,7 +1222,9 @@ if( LLVM_INCLUDE_UTILS )
12221222
add_subdirectory(utils/split-file)
12231223
add_subdirectory(utils/mlgo-utils)
12241224
if( LLVM_INCLUDE_TESTS )
1225+
set(LLVM_SUBPROJECT_TITLE "Third-Party/Google Test")
12251226
add_subdirectory(${LLVM_THIRD_PARTY_DIR}/unittest ${CMAKE_CURRENT_BINARY_DIR}/third-party/unittest)
1227+
set(LLVM_SUBPROJECT_TITLE)
12261228
endif()
12271229
else()
12281230
if ( LLVM_INCLUDE_TESTS )
@@ -1286,7 +1288,7 @@ if( LLVM_INCLUDE_TESTS )
12861288
if(LLVM_ALL_LIT_DEPENDS OR LLVM_ALL_ADDITIONAL_TEST_DEPENDS)
12871289
add_dependencies(test-depends ${LLVM_ALL_LIT_DEPENDS} ${LLVM_ALL_ADDITIONAL_TEST_DEPENDS})
12881290
endif()
1289-
set_target_properties(test-depends PROPERTIES FOLDER "Tests")
1291+
set_target_properties(test-depends PROPERTIES FOLDER "LLVM/Tests")
12901292
add_dependencies(check-all test-depends)
12911293
endif()
12921294

@@ -1343,7 +1345,7 @@ if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY)
13431345
# Installing the headers needs to depend on generating any public
13441346
# tablegen'd headers.
13451347
add_custom_target(llvm-headers DEPENDS intrinsics_gen omp_gen)
1346-
set_target_properties(llvm-headers PROPERTIES FOLDER "Misc")
1348+
set_target_properties(llvm-headers PROPERTIES FOLDER "LLVM/Resources")
13471349

13481350
if (NOT LLVM_ENABLE_IDE)
13491351
add_llvm_install_targets(install-llvm-headers
@@ -1353,7 +1355,7 @@ if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY)
13531355

13541356
# Custom target to install all libraries.
13551357
add_custom_target(llvm-libraries)
1356-
set_target_properties(llvm-libraries PROPERTIES FOLDER "Misc")
1358+
set_target_properties(llvm-libraries PROPERTIES FOLDER "LLVM/Resources")
13571359

13581360
if (NOT LLVM_ENABLE_IDE)
13591361
add_llvm_install_targets(install-llvm-libraries
@@ -1399,6 +1401,8 @@ if (LLVM_INCLUDE_BENCHMARKS)
13991401
set(HAVE_STD_REGEX ON CACHE BOOL "OK" FORCE)
14001402
add_subdirectory(${LLVM_THIRD_PARTY_DIR}/benchmark
14011403
${CMAKE_CURRENT_BINARY_DIR}/third-party/benchmark)
1404+
set_target_properties(benchmark PROPERTIES FOLDER "Third-Party/Google Benchmark")
1405+
set_target_properties(benchmark_main PROPERTIES FOLDER "Third-Party/Google Benchmark")
14021406
add_subdirectory(benchmarks)
14031407
endif()
14041408

llvm/cmake/modules/AddLLVM.cmake

Lines changed: 62 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,21 @@ include(LLVMProcessSources)
44
include(LLVM-Config)
55
include(DetermineGCCCompatible)
66

7+
# get_subproject_title(titlevar)
8+
# Set ${outvar} to the title of the current LLVM subproject (Clang, MLIR ...)
9+
#
10+
# The title is set in the subproject's top-level using the variable
11+
# LLVM_SUBPROJECT_TITLE. If it does not exist, it is assumed it is LLVM itself.
12+
# The title is not semantically significant, but use to create folders in
13+
# CMake-generated IDE projects (Visual Studio/XCode).
14+
function(get_subproject_title outvar)
15+
if (LLVM_SUBPROJECT_TITLE)
16+
set(${outvar} "${LLVM_SUBPROJECT_TITLE}" PARENT_SCOPE)
17+
else ()
18+
set(${outvar} "LLVM" PARENT_SCOPE)
19+
endif ()
20+
endfunction(get_subproject_title)
21+
722
function(llvm_update_compile_flags name)
823
get_property(sources TARGET ${name} PROPERTY SOURCES)
924
if("${sources}" MATCHES "\\.c(;|$)")
@@ -151,7 +166,8 @@ function(add_llvm_symbol_exports target_name export_file)
151166
endif()
152167

153168
add_custom_target(${target_name}_exports DEPENDS ${native_export_file})
154-
set_target_properties(${target_name}_exports PROPERTIES FOLDER "Misc")
169+
get_subproject_title(subproject_title)
170+
set_target_properties(${target_name}_exports PROPERTIES FOLDER "${subproject_title}/Misc")
155171

156172
get_property(srcs TARGET ${target_name} PROPERTY SOURCES)
157173
foreach(src ${srcs})
@@ -543,6 +559,8 @@ function(llvm_add_library name)
543559
endif()
544560
endif()
545561

562+
get_subproject_title(subproject_title)
563+
546564
# Generate objlib
547565
if((ARG_SHARED AND ARG_STATIC) OR ARG_OBJECT)
548566
# Generate an obj library for both targets.
@@ -564,7 +582,7 @@ function(llvm_add_library name)
564582
# Bring in the target include directories from our original target.
565583
target_include_directories(${obj_name} PRIVATE $<TARGET_PROPERTY:${name},INCLUDE_DIRECTORIES>)
566584

567-
set_target_properties(${obj_name} PROPERTIES FOLDER "Object Libraries")
585+
set_target_properties(${obj_name} PROPERTIES FOLDER "${subproject_title}/Object Libraries")
568586
if(ARG_DEPENDS)
569587
add_dependencies(${obj_name} ${ARG_DEPENDS})
570588
endif()
@@ -603,6 +621,7 @@ function(llvm_add_library name)
603621
LINK_LIBS ${ARG_LINK_LIBS}
604622
LINK_COMPONENTS ${ARG_LINK_COMPONENTS}
605623
)
624+
set_target_properties(${name_static} PROPERTIES FOLDER "${subproject_title}/Libraries")
606625

607626
# Bring in the target link info from our original target.
608627
target_link_directories(${name_static} PRIVATE $<TARGET_PROPERTY:${name},LINK_DIRECTORIES>)
@@ -620,6 +639,7 @@ function(llvm_add_library name)
620639
else()
621640
add_library(${name} STATIC ${ALL_FILES})
622641
endif()
642+
set_target_properties(${name} PROPERTIES FOLDER "${subproject_title}/Libraries")
623643

624644
if(ARG_COMPONENT_LIB)
625645
set_target_properties(${name} PROPERTIES LLVM_COMPONENT TRUE)
@@ -796,14 +816,16 @@ function(add_llvm_install_targets target)
796816
endif()
797817
endforeach()
798818

819+
get_subproject_title(subproject_title)
820+
799821
add_custom_target(${target}
800822
DEPENDS ${file_dependencies}
801823
COMMAND "${CMAKE_COMMAND}"
802824
${component_option}
803825
${prefix_option}
804826
-P "${CMAKE_BINARY_DIR}/cmake_install.cmake"
805827
USES_TERMINAL)
806-
set_target_properties(${target} PROPERTIES FOLDER "Component Install Targets")
828+
set_target_properties(${target} PROPERTIES FOLDER "${subproject_title}/Install")
807829
add_custom_target(${target}-stripped
808830
DEPENDS ${file_dependencies}
809831
COMMAND "${CMAKE_COMMAND}"
@@ -812,7 +834,7 @@ function(add_llvm_install_targets target)
812834
-DCMAKE_INSTALL_DO_STRIP=1
813835
-P "${CMAKE_BINARY_DIR}/cmake_install.cmake"
814836
USES_TERMINAL)
815-
set_target_properties(${target}-stripped PROPERTIES FOLDER "Component Install Targets (Stripped)")
837+
set_target_properties(${target}-stripped PROPERTIES FOLDER "${subproject_title}/Install")
816838
if(target_dependencies)
817839
add_dependencies(${target} ${target_dependencies})
818840
add_dependencies(${target}-stripped ${target_dependencies})
@@ -832,6 +854,8 @@ endfunction()
832854
function(add_llvm_component_group name)
833855
cmake_parse_arguments(ARG "HAS_JIT" "" "LINK_COMPONENTS" ${ARGN})
834856
add_custom_target(${name})
857+
get_subproject_title(subproject_title)
858+
set_target_properties(${name} PROPERTIES FOLDER "${subproject_title}/Component Groups")
835859
if(ARG_HAS_JIT)
836860
set_property(TARGET ${name} PROPERTY COMPONENT_HAS_JIT ON)
837861
endif()
@@ -865,6 +889,8 @@ function(add_llvm_component_library name)
865889

866890
if(ARG_ADD_TO_COMPONENT)
867891
set_property(TARGET ${ARG_ADD_TO_COMPONENT} APPEND PROPERTY LLVM_LINK_COMPONENTS ${component_name})
892+
get_subproject_title(subproject_title)
893+
set_target_properties(${name} PROPERTIES FOLDER "${subproject_title}/Libraries/${ARG_ADD_TO_COMPONENT}")
868894
endif()
869895

870896
endfunction()
@@ -921,10 +947,12 @@ macro(add_llvm_library name)
921947
endif()
922948
set_property(GLOBAL APPEND PROPERTY LLVM_EXPORTS ${name})
923949
endif()
950+
951+
get_subproject_title(subproject_title)
924952
if (ARG_MODULE)
925-
set_target_properties(${name} PROPERTIES FOLDER "Loadable modules")
953+
set_target_properties(${name} PROPERTIES FOLDER "${subproject_title}/Loadable Modules")
926954
else()
927-
set_target_properties(${name} PROPERTIES FOLDER "Libraries")
955+
set_target_properties(${name} PROPERTIES FOLDER "${subproject_title}/Libraries")
928956
endif()
929957
endmacro(add_llvm_library name)
930958

@@ -948,7 +976,8 @@ macro(generate_llvm_objects name)
948976
add_dependencies(${obj_name} ${ARG_DEPENDS})
949977
endif()
950978

951-
set_target_properties(${obj_name} PROPERTIES FOLDER "Object Libraries")
979+
get_subproject_title(subproject_title)
980+
set_target_properties(${obj_name} PROPERTIES FOLDER "${subproject_title}/Object Libraries")
952981
endif()
953982

954983
if (ARG_GENERATE_DRIVER)
@@ -999,6 +1028,8 @@ macro(add_llvm_executable name)
9991028
else()
10001029
add_executable(${name} ${ALL_FILES})
10011030
endif()
1031+
get_subproject_title(subproject_title)
1032+
set_target_properties(${name} PROPERTIES FOLDER "${subproject_title}/Executables")
10021033

10031034
setup_dependency_debugging(${name} ${LLVM_COMMON_DEPENDS})
10041035

@@ -1418,8 +1449,9 @@ macro(llvm_add_tool project name)
14181449
if( LLVM_BUILD_TOOLS )
14191450
set_property(GLOBAL APPEND PROPERTY LLVM_EXPORTS ${name})
14201451
endif()
1421-
set_target_properties(${name} PROPERTIES FOLDER "Tools")
1452+
get_subproject_title(subproject_title)
14221453
endif()
1454+
set_target_properties(${name} PROPERTIES FOLDER "${subproject_title}/Tools")
14231455
endmacro(llvm_add_tool project name)
14241456
14251457
macro(add_llvm_tool name)
@@ -1435,7 +1467,8 @@ macro(add_llvm_example name)
14351467
if( LLVM_BUILD_EXAMPLES )
14361468
install(TARGETS ${name} RUNTIME DESTINATION "${LLVM_EXAMPLES_INSTALL_DIR}")
14371469
endif()
1438-
set_target_properties(${name} PROPERTIES FOLDER "Examples")
1470+
get_subproject_title(subproject_title)
1471+
set_target_properties(${name} PROPERTIES FOLDER "${subproject_title}/Examples")
14391472
endmacro(add_llvm_example name)
14401473
14411474
macro(add_llvm_example_library name)
@@ -1446,7 +1479,8 @@ macro(add_llvm_example_library name)
14461479
add_llvm_library(${name} ${ARGN})
14471480
endif()
14481481
1449-
set_target_properties(${name} PROPERTIES FOLDER "Examples")
1482+
get_subproject_title(subproject_title)
1483+
set_target_properties(${name} PROPERTIES FOLDER "${subproject_title}/Examples")
14501484
endmacro(add_llvm_example_library name)
14511485
14521486
# This is a macro that is used to create targets for executables that are needed
@@ -1457,7 +1491,8 @@ macro(add_llvm_utility name)
14571491
endif()
14581492
14591493
add_llvm_executable(${name} DISABLE_LLVM_LINK_LLVM_DYLIB ${ARGN})
1460-
set_target_properties(${name} PROPERTIES FOLDER "Utils")
1494+
get_subproject_title(subproject_title)
1495+
set_target_properties(${name} PROPERTIES FOLDER "${subproject_title}/Utils")
14611496
if ( ${name} IN_LIST LLVM_TOOLCHAIN_UTILITIES OR NOT LLVM_INSTALL_TOOLCHAIN_ONLY)
14621497
if (LLVM_INSTALL_UTILS AND LLVM_BUILD_UTILS)
14631498
get_target_export_arg(${name} LLVM export_to_llvmexports)
@@ -1480,19 +1515,20 @@ endmacro(add_llvm_utility name)
14801515
14811516
macro(add_llvm_fuzzer name)
14821517
cmake_parse_arguments(ARG "" "DUMMY_MAIN" "" ${ARGN})
1518+
get_subproject_title(subproject_title)
14831519
if( LLVM_LIB_FUZZING_ENGINE )
14841520
set(LLVM_OPTIONAL_SOURCES ${ARG_DUMMY_MAIN})
14851521
add_llvm_executable(${name} ${ARG_UNPARSED_ARGUMENTS})
14861522
target_link_libraries(${name} PRIVATE ${LLVM_LIB_FUZZING_ENGINE})
1487-
set_target_properties(${name} PROPERTIES FOLDER "Fuzzers")
1523+
set_target_properties(${name} PROPERTIES FOLDER "${subproject_title}/Fuzzers")
14881524
elseif( LLVM_USE_SANITIZE_COVERAGE )
14891525
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=fuzzer")
14901526
set(LLVM_OPTIONAL_SOURCES ${ARG_DUMMY_MAIN})
14911527
add_llvm_executable(${name} ${ARG_UNPARSED_ARGUMENTS})
1492-
set_target_properties(${name} PROPERTIES FOLDER "Fuzzers")
1528+
set_target_properties(${name} PROPERTIES FOLDER "${subproject_title}/Fuzzers")
14931529
elseif( ARG_DUMMY_MAIN )
14941530
add_llvm_executable(${name} ${ARG_DUMMY_MAIN} ${ARG_UNPARSED_ARGUMENTS})
1495-
set_target_properties(${name} PROPERTIES FOLDER "Fuzzers")
1531+
set_target_properties(${name} PROPERTIES FOLDER "${subproject_title}/Fuzzers")
14961532
endif()
14971533
endmacro()
14981534
@@ -1653,6 +1689,8 @@ function(add_unittest test_suite test_name)
16531689
16541690
list(APPEND LLVM_LINK_COMPONENTS Support) # gtest needs it for raw_ostream
16551691
add_llvm_executable(${test_name} IGNORE_EXTERNALIZE_DEBUGINFO NO_INSTALL_RPATH ${ARGN})
1692+
get_subproject_title(subproject_title)
1693+
set_target_properties(${test_name} PROPERTIES FOLDER "${subproject_title}/Tests/Unit")
16561694
16571695
# The runtime benefits of LTO don't outweight the compile time costs for tests.
16581696
if(LLVM_ENABLE_LTO)
@@ -1684,10 +1722,6 @@ function(add_unittest test_suite test_name)
16841722
target_link_libraries(${test_name} PRIVATE llvm_gtest_main llvm_gtest ${LLVM_PTHREAD_LIB})
16851723
16861724
add_dependencies(${test_suite} ${test_name})
1687-
get_target_property(test_suite_folder ${test_suite} FOLDER)
1688-
if (test_suite_folder)
1689-
set_property(TARGET ${test_name} PROPERTY FOLDER "${test_suite_folder}")
1690-
endif ()
16911725
endfunction()
16921726
16931727
# Use for test binaries that call llvm::getInputFileDirectory(). Use of this
@@ -1710,7 +1744,8 @@ function(add_benchmark benchmark_name)
17101744
add_llvm_executable(${benchmark_name} IGNORE_EXTERNALIZE_DEBUGINFO NO_INSTALL_RPATH ${ARGN})
17111745
set(outdir ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR})
17121746
set_output_directory(${benchmark_name} BINARY_DIR ${outdir} LIBRARY_DIR ${outdir})
1713-
set_property(TARGET ${benchmark_name} PROPERTY FOLDER "Utils")
1747+
get_subproject_title(subproject_title)
1748+
set_property(TARGET ${benchmark_name} PROPERTY FOLDER "${subproject_title}/Utils")
17141749
target_link_libraries(${benchmark_name} PRIVATE benchmark)
17151750
endfunction()
17161751
@@ -1999,6 +2034,8 @@ function(add_lit_target target comment)
19992034
COMMAND ${CMAKE_COMMAND} -E echo "${target} does nothing, no tools built.")
20002035
message(STATUS "${target} does nothing.")
20012036
endif()
2037+
get_subproject_title(subproject_title)
2038+
set_target_properties(${target} PROPERTIES FOLDER "${subproject_title}/Tests")
20022039

20032040
if (ARG_DEPENDS)
20042041
add_dependencies(${target} ${ARG_DEPENDS})
@@ -2080,7 +2117,8 @@ function(add_lit_testsuites project directory)
20802117
cmake_parse_arguments(ARG "EXCLUDE_FROM_CHECK_ALL" "FOLDER" "PARAMS;DEPENDS;ARGS" ${ARGN})
20812118

20822119
if (NOT ARG_FOLDER)
2083-
set(ARG_FOLDER "Test Subdirectories")
2120+
get_subproject_title(subproject_title)
2121+
set(ARG_FOLDER "${subproject_title}/Tests")
20842122
endif()
20852123

20862124
# Search recursively for test directories by assuming anything not
@@ -2282,7 +2320,8 @@ function(llvm_add_tool_symlink project link_name target)
22822320
set(should_build_all ALL)
22832321
endif()
22842322
add_custom_target(${target_name} ${should_build_all} DEPENDS ${target} ${output_path})
2285-
set_target_properties(${target_name} PROPERTIES FOLDER Tools)
2323+
get_subproject_title(subproject_title)
2324+
set_target_properties(${target_name} PROPERTIES FOLDER "${subproject_title}/Tools")
22862325

22872326
# Make sure both the link and target are toolchain tools
22882327
if (${link_name} IN_LIST LLVM_TOOLCHAIN_TOOLS AND ${target} IN_LIST LLVM_TOOLCHAIN_TOOLS)
@@ -2542,5 +2581,7 @@ function(setup_host_tool tool_name setting_name exe_var_name target_var_name)
25422581
if(LLVM_USE_HOST_TOOLS AND NOT ${setting_name})
25432582
build_native_tool(${tool_name} exe_name DEPENDS ${tool_name})
25442583
add_custom_target(${target_var_name} DEPENDS ${exe_name})
2584+
get_subproject_title(subproject_title)
2585+
set_target_properties(${target_var_name} PROPERTIES FOLDER "${subproject_title}/Native")
25452586
endif()
25462587
endfunction()

llvm/cmake/modules/AddOCaml.cmake

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,7 @@ function(add_ocaml_library name)
173173
VERBATIM)
174174

175175
add_custom_target("ocaml_${name}" ALL DEPENDS ${ocaml_outputs} "${bin}/${name}.odoc")
176+
set_target_properties("ocaml_${name}" PROPERTIES FOLDER "LLVM/Bindings/OCaml")
176177

177178
set_target_properties("ocaml_${name}" PROPERTIES
178179
OCAML_FLAGS "-I;${bin}")
@@ -228,5 +229,5 @@ endfunction()
228229
add_custom_target(ocaml_make_directory
229230
COMMAND "${CMAKE_COMMAND}" "-E" "make_directory" "${LLVM_LIBRARY_DIR}/ocaml/llvm")
230231
add_custom_target("ocaml_all")
231-
set_target_properties(ocaml_all PROPERTIES FOLDER "Misc")
232-
set_target_properties(ocaml_make_directory PROPERTIES FOLDER "Misc")
232+
set_target_properties(ocaml_all PROPERTIES FOLDER "LLVM/Bindings/OCaml")
233+
set_target_properties(ocaml_make_directory PROPERTIES FOLDER "LLVM/Bindings/OCaml")

llvm/cmake/modules/AddSphinxTarget.cmake

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ if (LLVM_ENABLE_SPHINX)
66
find_package(Sphinx REQUIRED)
77
if (LLVM_BUILD_DOCS AND NOT TARGET sphinx)
88
add_custom_target(sphinx ALL)
9+
set_target_properties(sphinx PROPERTIES FOLDER "LLVM/Docs")
910
endif()
1011
else()
1112
message(STATUS "Sphinx disabled.")
@@ -58,6 +59,8 @@ function (add_sphinx_target builder project)
5859
"${SPHINX_BUILD_DIR}" # Output
5960
COMMENT
6061
"Generating ${builder} Sphinx documentation for ${project} into \"${SPHINX_BUILD_DIR}\"")
62+
get_subproject_title(subproject_title)
63+
set_target_properties(${SPHINX_TARGET_NAME} PROPERTIES FOLDER "${subproject_title}/Docs")
6164

6265
# When "clean" target is run, remove the Sphinx build directory
6366
set_property(DIRECTORY APPEND PROPERTY

llvm/cmake/modules/CrossCompile.cmake

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,8 @@ function(llvm_create_cross_target project_name target_name toolchain buildtype)
4545

4646
add_custom_target(CREATE_${project_name}_${target_name}
4747
DEPENDS ${${project_name}_${target_name}_BUILD})
48+
get_subproject_title(subproject_title)
49+
set_target_properties(CREATE_${project_name}_${target_name} PROPERTIES FOLDER "${subproject_title}/Native")
4850

4951
# Escape semicolons in the targets list so that cmake doesn't expand
5052
# them to spaces.
@@ -98,6 +100,8 @@ function(llvm_create_cross_target project_name target_name toolchain buildtype)
98100

99101
add_custom_target(CONFIGURE_${project_name}_${target_name}
100102
DEPENDS ${${project_name}_${target_name}_BUILD}/CMakeCache.txt)
103+
get_subproject_title(subproject_title)
104+
set_target_properties(CONFIGURE_${project_name}_${target_name} PROPERTIES FOLDER "${subproject_title}/Native")
101105

102106
endfunction()
103107

0 commit comments

Comments
 (0)