mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-16 16:06:41 +00:00

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.
144 lines
4.1 KiB
CMake
144 lines
4.1 KiB
CMake
set(LLVM_NO_RTTI 1)
|
|
|
|
set(ISL_CODEGEN_FILES
|
|
CodeGen/IslAst.cpp
|
|
CodeGen/IslExprBuilder.cpp
|
|
CodeGen/IslNodeBuilder.cpp
|
|
CodeGen/CodeGeneration.cpp)
|
|
|
|
# Compile ISL into a separate library.
|
|
add_subdirectory(External)
|
|
|
|
set(POLLY_HEADER_FILES)
|
|
if (MSVC_IDE OR XCODE)
|
|
file(GLOB_RECURSE POLLY_HEADER_FILES "${POLLY_SOURCE_DIR}/include/polly/*.h")
|
|
endif ()
|
|
|
|
set(POLLY_COMPONENTS
|
|
Support
|
|
Core
|
|
ScalarOpts
|
|
InstCombine
|
|
TransformUtils
|
|
Analysis
|
|
ipo
|
|
MC
|
|
Passes
|
|
Linker
|
|
IRReader
|
|
Analysis
|
|
# The libraries below are required for darwin: http://PR26392
|
|
BitReader
|
|
MCParser
|
|
Object
|
|
ProfileData
|
|
Target
|
|
TargetParser
|
|
Vectorize
|
|
)
|
|
|
|
# Use an object-library to add the same files to multiple libs without requiring
|
|
# the sources them to be recompiled for each of them.
|
|
add_llvm_pass_plugin(Polly
|
|
NO_MODULE
|
|
SUBPROJECT Polly
|
|
Analysis/DependenceInfo.cpp
|
|
Analysis/PolyhedralInfo.cpp
|
|
Analysis/ScopDetection.cpp
|
|
Analysis/ScopDetectionDiagnostic.cpp
|
|
Analysis/ScopInfo.cpp
|
|
Analysis/ScopBuilder.cpp
|
|
Analysis/ScopGraphPrinter.cpp
|
|
Analysis/ScopPass.cpp
|
|
Analysis/PruneUnprofitable.cpp
|
|
CodeGen/BlockGenerators.cpp
|
|
${ISL_CODEGEN_FILES}
|
|
CodeGen/LoopGenerators.cpp
|
|
CodeGen/LoopGeneratorsGOMP.cpp
|
|
CodeGen/LoopGeneratorsKMP.cpp
|
|
CodeGen/IRBuilder.cpp
|
|
CodeGen/Utils.cpp
|
|
CodeGen/RuntimeDebugBuilder.cpp
|
|
CodeGen/PerfMonitor.cpp
|
|
Exchange/JSONExporter.cpp
|
|
Support/GICHelper.cpp
|
|
Support/PollyDebug.cpp
|
|
Support/SCEVAffinator.cpp
|
|
Support/SCEVValidator.cpp
|
|
Support/RegisterPasses.cpp
|
|
Support/ScopHelper.cpp
|
|
Support/ScopLocation.cpp
|
|
Support/ISLTools.cpp
|
|
Support/DumpModulePass.cpp
|
|
Support/DumpFunctionPass.cpp
|
|
Support/VirtualInstruction.cpp
|
|
Transform/Canonicalization.cpp
|
|
Transform/CodePreparation.cpp
|
|
Transform/DeadCodeElimination.cpp
|
|
Transform/ScheduleOptimizer.cpp
|
|
Transform/ScheduleTreeTransform.cpp
|
|
Transform/FlattenSchedule.cpp
|
|
Transform/FlattenAlgo.cpp
|
|
Transform/ForwardOpTree.cpp
|
|
Transform/DeLICM.cpp
|
|
Transform/ZoneAlgo.cpp
|
|
Transform/Simplify.cpp
|
|
Transform/MaximalStaticExpansion.cpp
|
|
Transform/ScopInliner.cpp
|
|
Transform/ManualOptimizer.cpp
|
|
Transform/MatmulOptimizer.cpp
|
|
${POLLY_HEADER_FILES}
|
|
|
|
LINK_COMPONENTS
|
|
${POLLY_COMPONENTS}
|
|
)
|
|
|
|
if (MSVC_IDE OR XCODE)
|
|
# Configure source groups for Polly source files. By default, in the IDE there
|
|
# will be a source and include folder. In the source folder will be all the
|
|
# source files in a flat list, and in the include folder will be all the
|
|
# headers in a flat list. Sets the CMake source_group for each folder such
|
|
# the organization of the sources and headers in the IDE matches how it is
|
|
# laid out on disk
|
|
setup_polly_source_groups(${CMAKE_CURRENT_LIST_DIR}
|
|
${CMAKE_CURRENT_LIST_DIR}/../include/polly)
|
|
endif()
|
|
|
|
# Create the library that can be linked into LLVM's tools and Polly's unittests.
|
|
# It depends on all library it needs, such that with
|
|
# LLVM_POLLY_LINK_INTO_TOOLS=ON, its dependencies like PollyISL are linked as
|
|
# well.
|
|
target_link_libraries(Polly PUBLIC
|
|
${ISL_TARGET}
|
|
)
|
|
|
|
# Create a loadable module Polly.so that can be loaded using
|
|
# LLVM's/clang's "-load" option.
|
|
if (WIN32 OR CYGWIN OR NOT LLVM_ENABLE_PIC)
|
|
# Add dummy target, either because loadable modules are not supported
|
|
# as on Windows or because PIC code has been disabled
|
|
add_custom_target(LLVMPolly)
|
|
set_target_properties(LLVMPolly PROPERTIES FOLDER "Polly/Loadable Modules")
|
|
else ()
|
|
add_polly_loadable_module(LLVMPolly
|
|
Plugin/Polly.cpp
|
|
$<TARGET_OBJECTS:obj.Polly>
|
|
)
|
|
|
|
# Only add the dependencies that are not part of LLVM. The latter are assumed
|
|
# to be already available in the address space the module is loaded into.
|
|
# Adding them once more would have the effect that both copies try to register
|
|
# the same command line options, to which LLVM reacts with an error.
|
|
target_link_libraries(LLVMPolly PUBLIC ${ISL_TARGET})
|
|
|
|
set_target_properties(LLVMPolly
|
|
PROPERTIES
|
|
LINKER_LANGUAGE CXX
|
|
PREFIX "")
|
|
endif ()
|
|
|
|
if (TARGET intrinsics_gen)
|
|
# Check if we are building as part of an LLVM build
|
|
add_dependencies(obj.Polly intrinsics_gen)
|
|
endif()
|