aboutsummaryrefslogtreecommitdiff
path: root/backend/lib/Target/RISCV/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'backend/lib/Target/RISCV/CMakeLists.txt')
-rw-r--r--backend/lib/Target/RISCV/CMakeLists.txt258
1 files changed, 258 insertions, 0 deletions
diff --git a/backend/lib/Target/RISCV/CMakeLists.txt b/backend/lib/Target/RISCV/CMakeLists.txt
new file mode 100644
index 0000000..dd11f3d
--- /dev/null
+++ b/backend/lib/Target/RISCV/CMakeLists.txt
@@ -0,0 +1,258 @@
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+set(
+ RCCBackendRISCVDescriptionSources
+ "${CMAKE_CURRENT_SOURCE_DIR}/RISCV.rccdesc"
+ "${CMAKE_CURRENT_SOURCE_DIR}/RISCVRegisterInfo.rccdesc"
+ "${CMAKE_CURRENT_SOURCE_DIR}/RISCVCallingConv.rccdesc"
+ "${CMAKE_CURRENT_SOURCE_DIR}/RISCVInstrInfoBase.rccdesc"
+ "${CMAKE_CURRENT_SOURCE_DIR}/RISCVInstrInfoI.rccdesc"
+ "${CMAKE_CURRENT_SOURCE_DIR}/RISCVInstrInfoM.rccdesc"
+ "${CMAKE_CURRENT_SOURCE_DIR}/RISCVInstrInfoA.rccdesc"
+ "${CMAKE_CURRENT_SOURCE_DIR}/RISCVInstrInfoF.rccdesc"
+ "${CMAKE_CURRENT_SOURCE_DIR}/RISCVInstrInfoD.rccdesc"
+ "${CMAKE_CURRENT_SOURCE_DIR}/RISCVInstrInfoC.rccdesc"
+ "${CMAKE_CURRENT_SOURCE_DIR}/RISCVInstrInfoZcmp.rccdesc"
+ "${CMAKE_CURRENT_SOURCE_DIR}/RISCVInstrInfoZb.rccdesc"
+ "${CMAKE_CURRENT_SOURCE_DIR}/RISCVInstrInfoPseudo.rccdesc"
+ "${CMAKE_CURRENT_SOURCE_DIR}/RISCVGISelInteger.rccdesc"
+ "${CMAKE_CURRENT_SOURCE_DIR}/RISCVGISelAddressing.rccdesc"
+ "${CMAKE_CURRENT_SOURCE_DIR}/RISCVGISelControlFlow.rccdesc"
+ "${CMAKE_CURRENT_SOURCE_DIR}/RISCVGISelShift.rccdesc"
+ "${CMAKE_CURRENT_SOURCE_DIR}/RISCVGISelFloating.rccdesc"
+ "${CMAKE_CURRENT_SOURCE_DIR}/RISCVGISelAtomic.rccdesc"
+ "${CMAKE_CURRENT_SOURCE_DIR}/RISCVGISelCombiner.rccdesc"
+ "${CMAKE_CURRENT_SOURCE_DIR}/RISCVMacroFusion.rccdesc"
+ "${CMAKE_CURRENT_SOURCE_DIR}/RISCVMCPseudoLowering.rccdesc"
+)
+set(RCCBackendRISCVTableGenArguments)
+foreach(RCCBackendRISCVDescriptionSource IN LISTS RCCBackendRISCVDescriptionSources)
+ list(APPEND RCCBackendRISCVTableGenArguments --input "${RCCBackendRISCVDescriptionSource}")
+endforeach()
+set(
+ RCCBackendRISCVGeneratedRegisterHeader
+ "${RCC_BACKEND_BINARY_DIR}/generated/include/rcc/Target/RISCV/RISCVRegisters.h"
+)
+set(
+ RCCBackendRISCVGeneratedInstructionHeader
+ "${RCC_BACKEND_BINARY_DIR}/generated/include/rcc/Target/RISCV/RISCVInstructions.h"
+)
+set(
+ RCCBackendRISCVGeneratedTables
+ "${RCC_BACKEND_BINARY_DIR}/generated/lib/Target/RISCV/RISCVGenTargetDescription.inc"
+)
+set(
+ RCCBackendRISCVGeneratedGlobalISel
+ "${RCC_BACKEND_BINARY_DIR}/generated/lib/Target/RISCV/RISCVGenGlobalISel.inc"
+)
+set(
+ RCCBackendRISCVGeneratedGlobalISelCombiner
+ "${RCC_BACKEND_BINARY_DIR}/generated/lib/Target/RISCV/RISCVGenGlobalISelCombiner.inc"
+)
+set(
+ RCCBackendRISCVGeneratedMacroFusion
+ "${RCC_BACKEND_BINARY_DIR}/generated/lib/Target/RISCV/RISCVGenMacroFusion.inc"
+)
+set(
+ RCCBackendRISCVGeneratedMCPseudoLowering
+ "${RCC_BACKEND_BINARY_DIR}/generated/lib/Target/RISCV/RISCVGenMCPseudoLowering.inc"
+)
+
+add_custom_command(
+ OUTPUT
+ "${RCCBackendRISCVGeneratedRegisterHeader}"
+ "${RCCBackendRISCVGeneratedInstructionHeader}"
+ "${RCCBackendRISCVGeneratedTables}"
+ "${RCCBackendRISCVGeneratedGlobalISel}"
+ "${RCCBackendRISCVGeneratedGlobalISelCombiner}"
+ "${RCCBackendRISCVGeneratedMacroFusion}"
+ "${RCCBackendRISCVGeneratedMCPseudoLowering}"
+ COMMAND
+ "$<TARGET_FILE:RCCBackendTableGenTool>"
+ ${RCCBackendRISCVTableGenArguments}
+ --register-header "${RCCBackendRISCVGeneratedRegisterHeader}"
+ --instruction-header "${RCCBackendRISCVGeneratedInstructionHeader}"
+ --tables "${RCCBackendRISCVGeneratedTables}"
+ --global-isel "${RCCBackendRISCVGeneratedGlobalISel}"
+ --global-isel-combiner "${RCCBackendRISCVGeneratedGlobalISelCombiner}"
+ --macro-fusion "${RCCBackendRISCVGeneratedMacroFusion}"
+ --mc-pseudo-lowering "${RCCBackendRISCVGeneratedMCPseudoLowering}"
+ DEPENDS RCCBackendTableGenTool ${RCCBackendRISCVDescriptionSources}
+ COMMENT "Generating RCC RV64GC target tables"
+ VERBATIM
+)
+
+add_custom_target(
+ RCCBackendRISCVGeneratedTablesTarget
+ DEPENDS
+ "${RCCBackendRISCVGeneratedRegisterHeader}"
+ "${RCCBackendRISCVGeneratedInstructionHeader}"
+ "${RCCBackendRISCVGeneratedTables}"
+ "${RCCBackendRISCVGeneratedGlobalISel}"
+ "${RCCBackendRISCVGeneratedGlobalISelCombiner}"
+ "${RCCBackendRISCVGeneratedMacroFusion}"
+ "${RCCBackendRISCVGeneratedMCPseudoLowering}"
+)
+
+set_source_files_properties(
+ "${RCCBackendRISCVGeneratedRegisterHeader}"
+ "${RCCBackendRISCVGeneratedInstructionHeader}"
+ "${RCCBackendRISCVGeneratedTables}"
+ "${RCCBackendRISCVGeneratedGlobalISel}"
+ "${RCCBackendRISCVGeneratedGlobalISelCombiner}"
+ "${RCCBackendRISCVGeneratedMacroFusion}"
+ "${RCCBackendRISCVGeneratedMCPseudoLowering}"
+ PROPERTIES GENERATED TRUE HEADER_FILE_ONLY TRUE
+)
+
+add_library(
+ RCCBackendRISCV
+ GISel/RISCVCallLowering.cpp
+ GISel/RISCVInstructionSelector.cpp
+ GISel/RISCVGISelCombiner.cpp
+ GISel/RISCVLegalizerInfo.cpp
+ GISel/RISCVRegisterBankInfo.cpp
+ RISCVInstrInfo.cpp
+ RISCVAsmPrinter.cpp
+ RISCVAssemblyPrinter.cpp
+ RISCVFrameLowering.cpp
+ RISCVFinalizeISel.cpp
+ RISCVFunctionInfo.cpp
+ RISCVImmediateMaterialization.cpp
+ RISCVInstPrinter.cpp
+ RISCVAsmBackend.cpp
+ RISCVCallingConv.cpp
+ RISCVMCCodeEmitter.cpp
+ RISCVObjectFile.cpp
+ RISCVMCTargetLowering.cpp
+ RISCVMachineCombiner.cpp
+ RISCVMachineMemoryFolding.cpp
+ RISCVMakeCompressible.cpp
+ RISCVMergeBaseOffset.cpp
+ RISCVMoveMerger.cpp
+ RISCVOptWInstrs.cpp
+ RISCVOptimizationPipeline.cpp
+ RISCVOutliner.cpp
+ RISCVPipeline.cpp
+ RISCVPseudoExpansion.cpp
+ RISCVPushPopOptimizer.cpp
+ RISCVRegisterAllocation.cpp
+ RISCVScheduling.cpp
+ RISCVSubtarget.cpp
+ RISCVTarget.cpp
+ RISCVTargetMachine.cpp
+ RISCVTargetConstant.cpp
+ RISCVTargetObjectFile.cpp
+ "${RCCBackendRISCVGeneratedRegisterHeader}"
+ "${RCCBackendRISCVGeneratedInstructionHeader}"
+ "${RCCBackendRISCVGeneratedTables}"
+ "${RCCBackendRISCVGeneratedGlobalISel}"
+ "${RCCBackendRISCVGeneratedGlobalISelCombiner}"
+ "${RCCBackendRISCVGeneratedMacroFusion}"
+ "${RCCBackendRISCVGeneratedMCPseudoLowering}"
+)
+add_library(RCCBackend::RISCV ALIAS RCCBackendRISCV)
+add_dependencies(RCCBackendRISCV RCCBackendRISCVGeneratedTablesTarget)
+
+rcc_backend_configure_target(RCCBackendRISCV)
+
+target_include_directories(
+ RCCBackendRISCV
+ PUBLIC
+ "$<BUILD_INTERFACE:${RCC_BACKEND_SOURCE_DIR}/include>"
+ "$<BUILD_INTERFACE:${RCC_BACKEND_BINARY_DIR}/generated/include>"
+ "$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>"
+ PRIVATE
+ "${CMAKE_CURRENT_SOURCE_DIR}"
+ "${RCC_BACKEND_BINARY_DIR}/generated/lib/Target/RISCV"
+)
+target_link_libraries(
+ RCCBackendRISCV
+ PUBLIC
+ RCCBackend::AsmPrinter
+ RCCBackend::CodeGen
+ RCCBackend::MC
+ RCCBackend::Target
+)
+
+set_target_properties(
+ RCCBackendRISCV
+ PROPERTIES
+ EXPORT_NAME RISCV
+ OUTPUT_NAME RCCBackendRISCV
+)
+
+install(
+ TARGETS RCCBackendRISCV
+ EXPORT RCCBackendTargets
+ ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
+ LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
+ RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
+)
+install(
+ FILES
+ "${RCCBackendRISCVGeneratedRegisterHeader}"
+ "${RCCBackendRISCVGeneratedInstructionHeader}"
+ DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/rcc/Target/RISCV"
+)
+
+rcc_backend_register_format_files(
+ "${CMAKE_CURRENT_SOURCE_DIR}/GISel/RISCVCallLowering.cpp"
+ "${CMAKE_CURRENT_SOURCE_DIR}/GISel/RISCVCallLowering.h"
+ "${CMAKE_CURRENT_SOURCE_DIR}/RISCVCallingConv.cpp"
+ "${CMAKE_CURRENT_SOURCE_DIR}/RISCVCallingConv.h"
+ "${CMAKE_CURRENT_SOURCE_DIR}/GISel/RISCVInstructionSelector.cpp"
+ "${CMAKE_CURRENT_SOURCE_DIR}/GISel/RISCVGISelCombiner.cpp"
+ "${CMAKE_CURRENT_SOURCE_DIR}/GISel/RISCVLegalizerInfo.cpp"
+ "${CMAKE_CURRENT_SOURCE_DIR}/GISel/RISCVLegalizerInfo.h"
+ "${CMAKE_CURRENT_SOURCE_DIR}/GISel/RISCVRegisterBankInfo.cpp"
+ "${CMAKE_CURRENT_SOURCE_DIR}/GISel/RISCVRegisterBankInfo.h"
+ "${CMAKE_CURRENT_SOURCE_DIR}/RISCV.h"
+ "${CMAKE_CURRENT_SOURCE_DIR}/RISCVInstrInfo.cpp"
+ "${CMAKE_CURRENT_SOURCE_DIR}/RISCVAsmPrinter.cpp"
+ "${CMAKE_CURRENT_SOURCE_DIR}/RISCVAsmPrinter.h"
+ "${CMAKE_CURRENT_SOURCE_DIR}/RISCVAssemblyPrinter.cpp"
+ "${CMAKE_CURRENT_SOURCE_DIR}/RISCVFrameLowering.cpp"
+ "${CMAKE_CURRENT_SOURCE_DIR}/RISCVFinalizeISel.cpp"
+ "${CMAKE_CURRENT_SOURCE_DIR}/RISCVFunctionInfo.cpp"
+ "${CMAKE_CURRENT_SOURCE_DIR}/RISCVImmediateMaterialization.cpp"
+ "${CMAKE_CURRENT_SOURCE_DIR}/RISCVImmediateMaterialization.h"
+ "${CMAKE_CURRENT_SOURCE_DIR}/RISCVInstPrinter.cpp"
+ "${CMAKE_CURRENT_SOURCE_DIR}/RISCVAsmBackend.cpp"
+ "${CMAKE_CURRENT_SOURCE_DIR}/RISCVMCCodeEmitter.cpp"
+ "${CMAKE_CURRENT_SOURCE_DIR}/RISCVObjectFile.cpp"
+ "${CMAKE_CURRENT_SOURCE_DIR}/RISCVMCTargetLowering.cpp"
+ "${CMAKE_CURRENT_SOURCE_DIR}/RISCVMachineCombiner.cpp"
+ "${CMAKE_CURRENT_SOURCE_DIR}/RISCVMachineMemoryFolding.cpp"
+ "${CMAKE_CURRENT_SOURCE_DIR}/RISCVMakeCompressible.cpp"
+ "${CMAKE_CURRENT_SOURCE_DIR}/RISCVMergeBaseOffset.cpp"
+ "${CMAKE_CURRENT_SOURCE_DIR}/RISCVMoveMerger.cpp"
+ "${CMAKE_CURRENT_SOURCE_DIR}/RISCVOptWInstrs.cpp"
+ "${CMAKE_CURRENT_SOURCE_DIR}/RISCVOptimizationPipeline.cpp"
+ "${CMAKE_CURRENT_SOURCE_DIR}/RISCVOutliner.cpp"
+ "${CMAKE_CURRENT_SOURCE_DIR}/RISCVPipeline.cpp"
+ "${CMAKE_CURRENT_SOURCE_DIR}/RISCVPseudoExpansion.cpp"
+ "${CMAKE_CURRENT_SOURCE_DIR}/RISCVPushPopOptimizer.cpp"
+ "${CMAKE_CURRENT_SOURCE_DIR}/RISCVRegisterAllocation.cpp"
+ "${CMAKE_CURRENT_SOURCE_DIR}/RISCVScheduling.cpp"
+ "${CMAKE_CURRENT_SOURCE_DIR}/RISCVSubtarget.cpp"
+ "${CMAKE_CURRENT_SOURCE_DIR}/RISCVTarget.cpp"
+ "${CMAKE_CURRENT_SOURCE_DIR}/RISCVTargetMachine.cpp"
+ "${CMAKE_CURRENT_SOURCE_DIR}/RISCVTargetConstant.cpp"
+ "${CMAKE_CURRENT_SOURCE_DIR}/RISCVTargetObjectFile.cpp"
+ "${CMAKE_CURRENT_SOURCE_DIR}/RISCVTargetObjectFile.h"
+ "${CMAKE_CURRENT_SOURCE_DIR}/RISCVInstrInfo.h"
+ "${RCC_BACKEND_SOURCE_DIR}/include/rcc/Target/RISCV/RISCVAssemblyPrinter.h"
+ "${RCC_BACKEND_SOURCE_DIR}/include/rcc/Target/RISCV/RISCVInstPrinter.h"
+ "${RCC_BACKEND_SOURCE_DIR}/include/rcc/Target/RISCV/RISCVAsmBackend.h"
+ "${RCC_BACKEND_SOURCE_DIR}/include/rcc/Target/RISCV/RISCVFixupKinds.h"
+ "${RCC_BACKEND_SOURCE_DIR}/include/rcc/Target/RISCV/RISCVFunctionInfo.h"
+ "${RCC_BACKEND_SOURCE_DIR}/include/rcc/Target/RISCV/RISCVMCCodeEmitter.h"
+ "${RCC_BACKEND_SOURCE_DIR}/include/rcc/Target/RISCV/RISCVObjectFile.h"
+ "${RCC_BACKEND_SOURCE_DIR}/include/rcc/Target/RISCV/RISCVPipeline.h"
+ "${RCC_BACKEND_SOURCE_DIR}/include/rcc/Target/RISCV/RISCVSubtarget.h"
+ "${RCC_BACKEND_SOURCE_DIR}/include/rcc/Target/RISCV/RISCVMCTargetLowering.h"
+ "${RCC_BACKEND_SOURCE_DIR}/include/rcc/Target/RISCV/RISCVTarget.h"
+ "${RCC_BACKEND_SOURCE_DIR}/include/rcc/Target/RISCV/RISCVTargetConstant.h"
+ "${RCC_BACKEND_SOURCE_DIR}/include/rcc/Target/RISCV/RISCVTargetRelocationKinds.h"
+)