;===- ./lib/Target/LLVMBuild.txt -------------------------------*- Conf -*--===;
;
; Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
; See https://llvm.org/LICENSE.txt for license information.
; SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
;
;===------------------------------------------------------------------------===;
;
; This is an LLVMBuild description file for the components in this subdirectory.
;
; For more information on the LLVMBuild system, please see:
;
;   http://llvm.org/docs/LLVMBuild.html
;
;===------------------------------------------------------------------------===;

; Please keep these as one per line so that out-of-tree merges
; will typically require only insertion of a line.
[common]
subdirectories =
 AMDGPU
 ARC
 ARM
 AArch64
 AVR
 BPF
 Lanai
 Hexagon
 MSP430
 NVPTX
 Mips
 PowerPC
 RISCV
 Sparc
 SystemZ
 WebAssembly
 X86
 XCore

; This is a special group whose required libraries are extended (by llvm-build)
; with the best execution engine (the native JIT, if available, or the
; interpreter).
[component_0]
type = LibraryGroup
name = Engine
parent = Libraries

; This is a special group whose required libraries are extended (by llvm-build)
; with the configured native target, if any.
[component_1]
type = LibraryGroup
name = Native
parent = Libraries

; This is a special group whose required libraries are extended (by llvm-build)
; with the configured native code generator, if any.
[component_2]
type = LibraryGroup
name = NativeCodeGen
parent = Libraries

; The component for the actual target library itself.
[component_3]
type = Library
name = Target
parent = Libraries
required_libraries = Analysis Core MC Support

; This is a special group whose required libraries are extended (by llvm-build)
; with every built target, which makes it easy for tools to include every
; target.
[component_4]
type = LibraryGroup
name = all-targets
parent = Libraries
