Skip to content

Commit

Permalink
LLVMBuild: Introduce a common section which currently has a list of the
Browse files Browse the repository at this point in the history
subdirectories to traverse into.
 - Originally I wanted to avoid this and just autoscan, but this has one key
   flaw in that new subdirectories can not automatically trigger a rerun of the
   llvm-build tool. This is particularly a pain when switching back and forth
   between trees where one has added a subdirectory, as the dependencies will
   tend to be wrong. This will also eliminates FIXME implicitly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146436 91177308-0d34-0410-b5e6-96231b3b80d8
  • Loading branch information
ddunbar committed Dec 12, 2011
1 parent 54d8c7f commit b0c594f
Show file tree
Hide file tree
Showing 26 changed files with 112 additions and 10 deletions.
3 changes: 3 additions & 0 deletions LLVMBuild.txt
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@
;
;===------------------------------------------------------------------------===;

[common]
subdirectories = bindings docs examples lib projects runtime tools utils

[component_0]
type = Group
name = Miscellaneous
Expand Down
3 changes: 3 additions & 0 deletions lib/Analysis/LLVMBuild.txt
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@
;
;===------------------------------------------------------------------------===;

[common]
subdirectories = IPA

[component_0]
type = Library
name = Analysis
Expand Down
3 changes: 3 additions & 0 deletions lib/Bitcode/LLVMBuild.txt
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@
;
;===------------------------------------------------------------------------===;

[common]
subdirectories = Reader Writer

[component_0]
type = Group
name = Bitcode
Expand Down
3 changes: 3 additions & 0 deletions lib/CodeGen/LLVMBuild.txt
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@
;
;===------------------------------------------------------------------------===;

[common]
subdirectories = AsmPrinter SelectionDAG

[component_0]
type = Library
name = CodeGen
Expand Down
3 changes: 3 additions & 0 deletions lib/ExecutionEngine/LLVMBuild.txt
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@
;
;===------------------------------------------------------------------------===;

[common]
subdirectories = Interpreter JIT MCJIT RuntimeDyld

[component_0]
type = Library
name = ExecutionEngine
Expand Down
3 changes: 3 additions & 0 deletions lib/LLVMBuild.txt
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@
;
;===------------------------------------------------------------------------===;

[common]
subdirectories = Analysis Archive AsmParser Bitcode CodeGen DebugInfo ExecutionEngine Linker MC Object Support TableGen Target Transforms VMCore

[component_0]
type = Group
name = Libraries
Expand Down
3 changes: 3 additions & 0 deletions lib/MC/LLVMBuild.txt
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@
;
;===------------------------------------------------------------------------===;

[common]
subdirectories = MCDisassembler MCParser

[component_0]
type = Library
name = MC
Expand Down
3 changes: 3 additions & 0 deletions lib/Target/ARM/LLVMBuild.txt
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@
;
;===------------------------------------------------------------------------===;

[common]
subdirectories = AsmParser Disassembler InstPrinter MCTargetDesc TargetInfo

[component_0]
type = TargetGroup
name = ARM
Expand Down
3 changes: 3 additions & 0 deletions lib/Target/CBackend/LLVMBuild.txt
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@
;
;===------------------------------------------------------------------------===;

[common]
subdirectories = TargetInfo

[component_0]
type = TargetGroup
name = CBackend
Expand Down
3 changes: 3 additions & 0 deletions lib/Target/CellSPU/LLVMBuild.txt
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@
;
;===------------------------------------------------------------------------===;

[common]
subdirectories = MCTargetDesc TargetInfo

[component_0]
type = TargetGroup
name = CellSPU
Expand Down
3 changes: 3 additions & 0 deletions lib/Target/CppBackend/LLVMBuild.txt
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@
;
;===------------------------------------------------------------------------===;

[common]
subdirectories = TargetInfo

[component_0]
type = TargetGroup
name = CppBackend
Expand Down
6 changes: 4 additions & 2 deletions lib/Target/Hexagon/LLVMBuild.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
;===- ./lib/Target/Hexagon/LLVMBuild.txt ----------------------*- Conf -*--===;
;===- ./lib/Target/Hexagon/LLVMBuild.txt -----------------------*- Conf -*--===;
;
; The LLVM Compiler Infrastructure
;
Expand All @@ -15,6 +15,9 @@
;
;===------------------------------------------------------------------------===;

[common]
subdirectories = TargetInfo

[component_0]
type = TargetGroup
name = Hexagon
Expand All @@ -27,4 +30,3 @@ name = HexagonCodeGen
parent = Hexagon
required_libraries = AsmPrinter CodeGen Core HexagonInfo SelectionDAG Support Target MC
add_to_library_groups = Hexagon

1 change: 0 additions & 1 deletion lib/Target/Hexagon/TargetInfo/LLVMBuild.txt
Original file line number Diff line number Diff line change
Expand Up @@ -21,4 +21,3 @@ name = HexagonInfo
parent = Hexagon
required_libraries = MC Support
add_to_library_groups = Hexagon

3 changes: 3 additions & 0 deletions lib/Target/LLVMBuild.txt
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@
;
;===------------------------------------------------------------------------===;

[common]
subdirectories = ARM CBackend CellSPU CppBackend Hexagon MBlaze MSP430 Mips PTX PowerPC Sparc 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).
Expand Down
3 changes: 3 additions & 0 deletions lib/Target/MBlaze/LLVMBuild.txt
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@
;
;===------------------------------------------------------------------------===;

[common]
subdirectories = AsmParser Disassembler InstPrinter MCTargetDesc TargetInfo

[component_0]
type = TargetGroup
name = MBlaze
Expand Down
3 changes: 3 additions & 0 deletions lib/Target/MSP430/LLVMBuild.txt
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@
;
;===------------------------------------------------------------------------===;

[common]
subdirectories = InstPrinter MCTargetDesc TargetInfo

[component_0]
type = TargetGroup
name = MSP430
Expand Down
3 changes: 3 additions & 0 deletions lib/Target/Mips/LLVMBuild.txt
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@
;
;===------------------------------------------------------------------------===;

[common]
subdirectories = InstPrinter MCTargetDesc TargetInfo

[component_0]
type = TargetGroup
name = Mips
Expand Down
3 changes: 3 additions & 0 deletions lib/Target/PTX/LLVMBuild.txt
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@
;
;===------------------------------------------------------------------------===;

[common]
subdirectories = InstPrinter MCTargetDesc TargetInfo

[component_0]
type = TargetGroup
name = PTX
Expand Down
3 changes: 3 additions & 0 deletions lib/Target/PowerPC/LLVMBuild.txt
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@
;
;===------------------------------------------------------------------------===;

[common]
subdirectories = InstPrinter MCTargetDesc TargetInfo

[component_0]
type = TargetGroup
name = PowerPC
Expand Down
3 changes: 3 additions & 0 deletions lib/Target/Sparc/LLVMBuild.txt
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@
;
;===------------------------------------------------------------------------===;

[common]
subdirectories = MCTargetDesc TargetInfo

[component_0]
type = TargetGroup
name = Sparc
Expand Down
3 changes: 3 additions & 0 deletions lib/Target/X86/LLVMBuild.txt
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@
;
;===------------------------------------------------------------------------===;

[common]
subdirectories = AsmParser Disassembler InstPrinter MCTargetDesc TargetInfo Utils

[component_0]
type = TargetGroup
name = X86
Expand Down
3 changes: 3 additions & 0 deletions lib/Target/XCore/LLVMBuild.txt
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@
;
;===------------------------------------------------------------------------===;

[common]
subdirectories = MCTargetDesc TargetInfo

[component_0]
type = TargetGroup
name = XCore
Expand Down
3 changes: 3 additions & 0 deletions lib/Transforms/LLVMBuild.txt
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@
;
;===------------------------------------------------------------------------===;

[common]
subdirectories = IPO InstCombine Instrumentation Scalar Utils

[component_0]
type = Group
name = Transforms
Expand Down
3 changes: 3 additions & 0 deletions tools/LLVMBuild.txt
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@
;
;===------------------------------------------------------------------------===;

[common]
subdirectories = bugpoint llc lli llvm-ar llvm-as llvm-bcanalyzer llvm-cov llvm-diff llvm-dis llvm-dwarfdump llvm-extract llvm-ld llvm-link llvm-mc llvm-nm llvm-objdump llvm-prof llvm-ranlib llvm-rtdyld llvm-size llvm-stub macho-dump opt

[component_0]
type = Group
name = Tools
Expand Down
3 changes: 3 additions & 0 deletions utils/LLVMBuild.txt
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@
;
;===------------------------------------------------------------------------===;

[common]
subdirectories = TableGen unittest

[component_0]
type = Group
name = BuildTools
Expand Down
46 changes: 39 additions & 7 deletions utils/llvm-build/llvmbuild/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -214,14 +214,45 @@ def write_components(self, output_path):

info_basedir[ci.subpath] = info_basedir.get(ci.subpath, []) + [ci]

# Compute the list of subdirectories to scan.
subpath_subdirs = {}
for ci in self.component_infos:
# Ignore root components.
if ci.subpath == '/':
continue

# Otherwise, append this subpath to the parent list.
parent_path = os.path.dirname(ci.subpath)
subpath_subdirs[parent_path] = parent_list = subpath_subdirs.get(
parent_path, set())
parent_list.add(os.path.basename(ci.subpath))

# Generate the build files.
for subpath, infos in info_basedir.items():
# Order the components by name to have a canonical ordering.
infos.sort(key = lambda ci: ci.name)

# Format the components into llvmbuild fragments.
fragments = filter(None, [ci.get_llvmbuild_fragment()
for ci in infos])
fragments = []

# Add the common fragments.
subdirectories = subpath_subdirs.get(subpath)
if subdirectories:
fragment = """\
subdirectories = %s
""" % (" ".join(sorted(subdirectories)),)
fragments.append(("common", fragment))

# Add the component fragments.
num_common_fragments = len(fragments)
for ci in infos:
fragment = ci.get_llvmbuild_fragment()
if fragment is None:
continue

name = "component_%d" % (len(fragments) - num_common_fragments)
fragments.append((name, fragment))

if not fragments:
continue

Expand All @@ -242,7 +273,7 @@ def write_components(self, output_path):
if ln.startswith(';'):
comment_block += ln
elif ln.startswith('[') and ln.endswith(']\n'):
comments_map[ln[:-1]] = comment_block
comments_map[ln[1:-2]] = comment_block
else:
comment_block = ""
f.close()
Expand Down Expand Up @@ -275,15 +306,16 @@ def write_components(self, output_path):
;===------------------------------------------------------------------------===;
""" % header_string

for i,fragment in enumerate(fragments):
name = '[component_%d]' % i
# Write out each fragment.each component fragment.
for name,fragment in fragments:
comment = comments_map.get(name)
if comment is not None:
f.write(comment)
print >>f, name
print >>f, "[%s]" % name
f.write(fragment)
if fragment is not fragments[-1]:
if fragment is not fragments[-1][1]:
print >>f

f.close()

def write_library_table(self, output_path):
Expand Down

0 comments on commit b0c594f

Please sign in to comment.