mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-29 13:24:25 +00:00
[llvm-build] Make Py3 compatible.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188424 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -1 +1 @@
|
|||||||
from main import main
|
from llvmbuild.main import main
|
||||||
|
@ -2,11 +2,14 @@
|
|||||||
Descriptor objects for entities that are part of the LLVM project.
|
Descriptor objects for entities that are part of the LLVM project.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import ConfigParser
|
from __future__ import absolute_import
|
||||||
import StringIO
|
try:
|
||||||
|
import configparser
|
||||||
|
except:
|
||||||
|
import ConfigParser as configparser
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
from util import *
|
from llvmbuild.util import *
|
||||||
|
|
||||||
class ParseError(Exception):
|
class ParseError(Exception):
|
||||||
pass
|
pass
|
||||||
@ -29,7 +32,7 @@ class ComponentInfo(object):
|
|||||||
|
|
||||||
def __init__(self, subpath, name, dependencies, parent):
|
def __init__(self, subpath, name, dependencies, parent):
|
||||||
if not subpath.startswith('/'):
|
if not subpath.startswith('/'):
|
||||||
raise ValueError,"invalid subpath: %r" % subpath
|
raise ValueError("invalid subpath: %r" % subpath)
|
||||||
self.subpath = subpath
|
self.subpath = subpath
|
||||||
self.name = name
|
self.name = name
|
||||||
self.dependencies = list(dependencies)
|
self.dependencies = list(dependencies)
|
||||||
@ -100,11 +103,11 @@ class GroupComponentInfo(ComponentInfo):
|
|||||||
ComponentInfo.__init__(self, subpath, name, [], parent)
|
ComponentInfo.__init__(self, subpath, name, [], parent)
|
||||||
|
|
||||||
def get_llvmbuild_fragment(self):
|
def get_llvmbuild_fragment(self):
|
||||||
result = StringIO.StringIO()
|
return """\
|
||||||
print >>result, 'type = %s' % self.type_name
|
type = %s
|
||||||
print >>result, 'name = %s' % self.name
|
name = %s
|
||||||
print >>result, 'parent = %s' % self.parent
|
parent = %s
|
||||||
return result.getvalue()
|
""" % (self.type_name, self.name, self.parent)
|
||||||
|
|
||||||
class LibraryComponentInfo(ComponentInfo):
|
class LibraryComponentInfo(ComponentInfo):
|
||||||
type_name = 'Library'
|
type_name = 'Library'
|
||||||
@ -152,21 +155,22 @@ class LibraryComponentInfo(ComponentInfo):
|
|||||||
yield ('library group', r)
|
yield ('library group', r)
|
||||||
|
|
||||||
def get_llvmbuild_fragment(self):
|
def get_llvmbuild_fragment(self):
|
||||||
result = StringIO.StringIO()
|
result = """\
|
||||||
print >>result, 'type = %s' % self.type_name
|
type = %s
|
||||||
print >>result, 'name = %s' % self.name
|
name = %s
|
||||||
print >>result, 'parent = %s' % self.parent
|
parent = %s
|
||||||
|
""" % (self.type_name, self.name, self.parent)
|
||||||
if self.library_name is not None:
|
if self.library_name is not None:
|
||||||
print >>result, 'library_name = %s' % self.library_name
|
result += 'library_name = %s\n' % self.library_name
|
||||||
if self.required_libraries:
|
if self.required_libraries:
|
||||||
print >>result, 'required_libraries = %s' % ' '.join(
|
result += 'required_libraries = %s\n' % ' '.join(
|
||||||
self.required_libraries)
|
self.required_libraries)
|
||||||
if self.add_to_library_groups:
|
if self.add_to_library_groups:
|
||||||
print >>result, 'add_to_library_groups = %s' % ' '.join(
|
result += 'add_to_library_groups = %s\n' % ' '.join(
|
||||||
self.add_to_library_groups)
|
self.add_to_library_groups)
|
||||||
if not self.installed:
|
if not self.installed:
|
||||||
print >>result, 'installed = 0'
|
result += 'installed = 0\n'
|
||||||
return result.getvalue()
|
return result
|
||||||
|
|
||||||
def get_library_name(self):
|
def get_library_name(self):
|
||||||
return self.library_name or self.name
|
return self.library_name or self.name
|
||||||
@ -237,17 +241,18 @@ class LibraryGroupComponentInfo(ComponentInfo):
|
|||||||
yield ('library group', r)
|
yield ('library group', r)
|
||||||
|
|
||||||
def get_llvmbuild_fragment(self):
|
def get_llvmbuild_fragment(self):
|
||||||
result = StringIO.StringIO()
|
result = """\
|
||||||
print >>result, 'type = %s' % self.type_name
|
type = %s
|
||||||
print >>result, 'name = %s' % self.name
|
name = %s
|
||||||
print >>result, 'parent = %s' % self.parent
|
parent = %s
|
||||||
|
""" % (self.type_name, self.name, self.parent)
|
||||||
if self.required_libraries and not self._is_special_group:
|
if self.required_libraries and not self._is_special_group:
|
||||||
print >>result, 'required_libraries = %s' % ' '.join(
|
result += 'required_libraries = %s\n' % ' '.join(
|
||||||
self.required_libraries)
|
self.required_libraries)
|
||||||
if self.add_to_library_groups:
|
if self.add_to_library_groups:
|
||||||
print >>result, 'add_to_library_groups = %s' % ' '.join(
|
result += 'add_to_library_groups = %s\n' % ' '.join(
|
||||||
self.add_to_library_groups)
|
self.add_to_library_groups)
|
||||||
return result.getvalue()
|
return result
|
||||||
|
|
||||||
def get_llvmconfig_component_name(self):
|
def get_llvmconfig_component_name(self):
|
||||||
return self.name.lower()
|
return self.name.lower()
|
||||||
@ -309,21 +314,22 @@ class TargetGroupComponentInfo(ComponentInfo):
|
|||||||
yield ('library group', r)
|
yield ('library group', r)
|
||||||
|
|
||||||
def get_llvmbuild_fragment(self):
|
def get_llvmbuild_fragment(self):
|
||||||
result = StringIO.StringIO()
|
result = """\
|
||||||
print >>result, 'type = %s' % self.type_name
|
type = %s
|
||||||
print >>result, 'name = %s' % self.name
|
name = %s
|
||||||
print >>result, 'parent = %s' % self.parent
|
parent = %s
|
||||||
|
""" % (self.type_name, self.name, self.parent)
|
||||||
if self.required_libraries:
|
if self.required_libraries:
|
||||||
print >>result, 'required_libraries = %s' % ' '.join(
|
result += 'required_libraries = %s\n' % ' '.join(
|
||||||
self.required_libraries)
|
self.required_libraries)
|
||||||
if self.add_to_library_groups:
|
if self.add_to_library_groups:
|
||||||
print >>result, 'add_to_library_groups = %s' % ' '.join(
|
result += 'add_to_library_groups = %s\n' % ' '.join(
|
||||||
self.add_to_library_groups)
|
self.add_to_library_groups)
|
||||||
for bool_key in ('has_asmparser', 'has_asmprinter', 'has_disassembler',
|
for bool_key in ('has_asmparser', 'has_asmprinter', 'has_disassembler',
|
||||||
'has_jit'):
|
'has_jit'):
|
||||||
if getattr(self, bool_key):
|
if getattr(self, bool_key):
|
||||||
print >>result, '%s = 1' % (bool_key,)
|
result += '%s = 1\n' % (bool_key,)
|
||||||
return result.getvalue()
|
return result
|
||||||
|
|
||||||
def get_llvmconfig_component_name(self):
|
def get_llvmconfig_component_name(self):
|
||||||
return self.name.lower()
|
return self.name.lower()
|
||||||
@ -352,13 +358,13 @@ class ToolComponentInfo(ComponentInfo):
|
|||||||
yield ('required library', r)
|
yield ('required library', r)
|
||||||
|
|
||||||
def get_llvmbuild_fragment(self):
|
def get_llvmbuild_fragment(self):
|
||||||
result = StringIO.StringIO()
|
return """\
|
||||||
print >>result, 'type = %s' % self.type_name
|
type = %s
|
||||||
print >>result, 'name = %s' % self.name
|
name = %s
|
||||||
print >>result, 'parent = %s' % self.parent
|
parent = %s
|
||||||
print >>result, 'required_libraries = %s' % ' '.join(
|
required_libraries = %s
|
||||||
self.required_libraries)
|
""" % (self.type_name, self.name, self.parent,
|
||||||
return result.getvalue()
|
' '.join(self.required_libraries))
|
||||||
|
|
||||||
class BuildToolComponentInfo(ToolComponentInfo):
|
class BuildToolComponentInfo(ToolComponentInfo):
|
||||||
type_name = 'BuildTool'
|
type_name = 'BuildTool'
|
||||||
@ -418,7 +424,7 @@ _component_type_map = dict(
|
|||||||
TargetGroupComponentInfo, OptionalLibraryComponentInfo))
|
TargetGroupComponentInfo, OptionalLibraryComponentInfo))
|
||||||
def load_from_path(path, subpath):
|
def load_from_path(path, subpath):
|
||||||
# Load the LLVMBuild.txt file as an .ini format file.
|
# Load the LLVMBuild.txt file as an .ini format file.
|
||||||
parser = ConfigParser.RawConfigParser()
|
parser = configparser.RawConfigParser()
|
||||||
parser.read(path)
|
parser.read(path)
|
||||||
|
|
||||||
# Extract the common section.
|
# Extract the common section.
|
||||||
@ -459,8 +465,9 @@ def _read_components_from_parser(parser, path, subpath):
|
|||||||
section, path, "unable to instantiate: %r" % type_name)
|
section, path, "unable to instantiate: %r" % type_name)
|
||||||
import traceback
|
import traceback
|
||||||
traceback.print_exc()
|
traceback.print_exc()
|
||||||
raise SystemExit, 1
|
raise SystemExit(1)
|
||||||
except ParseError,e:
|
except ParseError:
|
||||||
|
e = sys.exc_info()[1]
|
||||||
fatal("unable to load component %r in %r: %s" % (
|
fatal("unable to load component %r in %r: %s" % (
|
||||||
section, path, e.message))
|
section, path, e.message))
|
||||||
|
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
import StringIO
|
from __future__ import absolute_import
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
import componentinfo
|
import llvmbuild.componentinfo as componentinfo
|
||||||
import configutil
|
import llvmbuild.configutil as configutil
|
||||||
|
|
||||||
from util import *
|
from llvmbuild.util import *
|
||||||
|
|
||||||
###
|
###
|
||||||
|
|
||||||
@ -186,7 +186,7 @@ class LLVMProjectInfo(object):
|
|||||||
set(self.component_infos),
|
set(self.component_infos),
|
||||||
key = lambda c: c.name)
|
key = lambda c: c.name)
|
||||||
while components_to_visit:
|
while components_to_visit:
|
||||||
visit_component_info(iter(components_to_visit).next(), [], set())
|
visit_component_info(components_to_visit[0], [], set())
|
||||||
|
|
||||||
# Canonicalize children lists.
|
# Canonicalize children lists.
|
||||||
for c in self.ordered_component_infos:
|
for c in self.ordered_component_infos:
|
||||||
@ -194,7 +194,7 @@ class LLVMProjectInfo(object):
|
|||||||
|
|
||||||
def print_tree(self):
|
def print_tree(self):
|
||||||
def visit(node, depth = 0):
|
def visit(node, depth = 0):
|
||||||
print '%s%-40s (%s)' % (' '*depth, node.name, node.type_name)
|
print('%s%-40s (%s)' % (' '*depth, node.name, node.type_name))
|
||||||
for c in node.children:
|
for c in node.children:
|
||||||
visit(c, depth + 1)
|
visit(c, depth + 1)
|
||||||
visit(self.component_info_map['$ROOT'])
|
visit(self.component_info_map['$ROOT'])
|
||||||
@ -283,7 +283,7 @@ subdirectories = %s
|
|||||||
header_name = '.' + os.path.join(subpath, 'LLVMBuild.txt')
|
header_name = '.' + os.path.join(subpath, 'LLVMBuild.txt')
|
||||||
header_pad = '-' * (80 - len(header_fmt % (header_name, '')))
|
header_pad = '-' * (80 - len(header_fmt % (header_name, '')))
|
||||||
header_string = header_fmt % (header_name, header_pad)
|
header_string = header_fmt % (header_name, header_pad)
|
||||||
print >>f, """\
|
f.write("""\
|
||||||
%s
|
%s
|
||||||
;
|
;
|
||||||
; The LLVM Compiler Infrastructure
|
; The LLVM Compiler Infrastructure
|
||||||
@ -300,17 +300,18 @@ subdirectories = %s
|
|||||||
; http://llvm.org/docs/LLVMBuild.html
|
; http://llvm.org/docs/LLVMBuild.html
|
||||||
;
|
;
|
||||||
;===------------------------------------------------------------------------===;
|
;===------------------------------------------------------------------------===;
|
||||||
""" % header_string
|
|
||||||
|
""" % header_string)
|
||||||
|
|
||||||
# Write out each fragment.each component fragment.
|
# Write out each fragment.each component fragment.
|
||||||
for name,fragment in fragments:
|
for name,fragment in fragments:
|
||||||
comment = comments_map.get(name)
|
comment = comments_map.get(name)
|
||||||
if comment is not None:
|
if comment is not None:
|
||||||
f.write(comment)
|
f.write(comment)
|
||||||
print >>f, "[%s]" % name
|
f.write("[%s]\n" % name)
|
||||||
f.write(fragment)
|
f.write(fragment)
|
||||||
if fragment is not fragments[-1][1]:
|
if fragment is not fragments[-1][1]:
|
||||||
print >>f
|
f.write('\n')
|
||||||
|
|
||||||
f.close()
|
f.close()
|
||||||
|
|
||||||
@ -363,7 +364,7 @@ subdirectories = %s
|
|||||||
is_installed)
|
is_installed)
|
||||||
|
|
||||||
# Convert to a list of entries and sort by name.
|
# Convert to a list of entries and sort by name.
|
||||||
entries = entries.values()
|
entries = list(entries.values())
|
||||||
|
|
||||||
# Create an 'all' pseudo component. We keep the dependency list small by
|
# Create an 'all' pseudo component. We keep the dependency list small by
|
||||||
# only listing entries that have no other dependents.
|
# only listing entries that have no other dependents.
|
||||||
@ -382,7 +383,7 @@ subdirectories = %s
|
|||||||
# Write out the library table.
|
# Write out the library table.
|
||||||
make_install_dir(os.path.dirname(output_path))
|
make_install_dir(os.path.dirname(output_path))
|
||||||
f = open(output_path, 'w')
|
f = open(output_path, 'w')
|
||||||
print >>f, """\
|
f.write("""\
|
||||||
//===- llvm-build generated file --------------------------------*- C++ -*-===//
|
//===- llvm-build generated file --------------------------------*- C++ -*-===//
|
||||||
//
|
//
|
||||||
// Component Library Depenedency Table
|
// Component Library Depenedency Table
|
||||||
@ -390,32 +391,33 @@ subdirectories = %s
|
|||||||
// Automatically generated file, do not edit!
|
// Automatically generated file, do not edit!
|
||||||
//
|
//
|
||||||
//===----------------------------------------------------------------------===//
|
//===----------------------------------------------------------------------===//
|
||||||
"""
|
|
||||||
print >>f, 'struct AvailableComponent {'
|
""")
|
||||||
print >>f, ' /// The name of the component.'
|
f.write('struct AvailableComponent {\n')
|
||||||
print >>f, ' const char *Name;'
|
f.write(' /// The name of the component.\n')
|
||||||
print >>f, ''
|
f.write(' const char *Name;\n')
|
||||||
print >>f, ' /// The name of the library for this component (or NULL).'
|
f.write('\n')
|
||||||
print >>f, ' const char *Library;'
|
f.write(' /// The name of the library for this component (or NULL).\n')
|
||||||
print >>f, ''
|
f.write(' const char *Library;\n')
|
||||||
print >>f, ' /// Whether the component is installed.'
|
f.write('\n')
|
||||||
print >>f, ' bool IsInstalled;'
|
f.write(' /// Whether the component is installed.\n')
|
||||||
print >>f, ''
|
f.write(' bool IsInstalled;\n')
|
||||||
print >>f, '\
|
f.write('\n')
|
||||||
/// The list of libraries required when linking this component.'
|
f.write('\
|
||||||
print >>f, ' const char *RequiredLibraries[%d];' % (
|
/// The list of libraries required when linking this component.\n')
|
||||||
max_required_libraries)
|
f.write(' const char *RequiredLibraries[%d];\n' % (
|
||||||
print >>f, '} AvailableComponents[%d] = {' % len(entries)
|
max_required_libraries))
|
||||||
|
f.write('} AvailableComponents[%d] = {\n' % len(entries))
|
||||||
for name,library_name,required_names,is_installed in entries:
|
for name,library_name,required_names,is_installed in entries:
|
||||||
if library_name is None:
|
if library_name is None:
|
||||||
library_name_as_cstr = '0'
|
library_name_as_cstr = '0'
|
||||||
else:
|
else:
|
||||||
library_name_as_cstr = '"lib%s.a"' % library_name
|
library_name_as_cstr = '"lib%s.a"' % library_name
|
||||||
print >>f, ' { "%s", %s, %d, { %s } },' % (
|
f.write(' { "%s", %s, %d, { %s } },\n' % (
|
||||||
name, library_name_as_cstr, is_installed,
|
name, library_name_as_cstr, is_installed,
|
||||||
', '.join('"%s"' % dep
|
', '.join('"%s"' % dep
|
||||||
for dep in required_names))
|
for dep in required_names)))
|
||||||
print >>f, '};'
|
f.write('};\n')
|
||||||
f.close()
|
f.close()
|
||||||
|
|
||||||
def get_required_libraries_for_component(self, ci, traverse_groups = False):
|
def get_required_libraries_for_component(self, ci, traverse_groups = False):
|
||||||
@ -512,7 +514,7 @@ subdirectories = %s
|
|||||||
header_name = os.path.basename(output_path)
|
header_name = os.path.basename(output_path)
|
||||||
header_pad = '-' * (80 - len(header_fmt % (header_name, '')))
|
header_pad = '-' * (80 - len(header_fmt % (header_name, '')))
|
||||||
header_string = header_fmt % (header_name, header_pad)
|
header_string = header_fmt % (header_name, header_pad)
|
||||||
print >>f, """\
|
f.write("""\
|
||||||
%s
|
%s
|
||||||
#
|
#
|
||||||
# The LLVM Compiler Infrastructure
|
# The LLVM Compiler Infrastructure
|
||||||
@ -528,10 +530,11 @@ subdirectories = %s
|
|||||||
# This file is autogenerated by llvm-build, do not edit!
|
# This file is autogenerated by llvm-build, do not edit!
|
||||||
#
|
#
|
||||||
#===------------------------------------------------------------------------===#
|
#===------------------------------------------------------------------------===#
|
||||||
""" % header_string
|
|
||||||
|
""" % header_string)
|
||||||
|
|
||||||
# Write the dependency information in the best way we can.
|
# Write the dependency information in the best way we can.
|
||||||
print >>f, """
|
f.write("""
|
||||||
# LLVMBuild CMake fragment dependencies.
|
# LLVMBuild CMake fragment dependencies.
|
||||||
#
|
#
|
||||||
# CMake has no builtin way to declare that the configuration depends on
|
# CMake has no builtin way to declare that the configuration depends on
|
||||||
@ -541,30 +544,32 @@ subdirectories = %s
|
|||||||
# CMake.
|
# CMake.
|
||||||
#
|
#
|
||||||
# FIXME: File a CMake RFE to get a properly supported version of this
|
# FIXME: File a CMake RFE to get a properly supported version of this
|
||||||
# feature."""
|
# feature.
|
||||||
|
""")
|
||||||
for dep in dependencies:
|
for dep in dependencies:
|
||||||
print >>f, """\
|
f.write("""\
|
||||||
configure_file(\"%s\"
|
configure_file(\"%s\"
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/DummyConfigureOutput)""" % (
|
${CMAKE_CURRENT_BINARY_DIR}/DummyConfigureOutput)\n""" % (
|
||||||
cmake_quote_path(dep),)
|
cmake_quote_path(dep),))
|
||||||
|
|
||||||
# Write the properties we use to encode the required library dependency
|
# Write the properties we use to encode the required library dependency
|
||||||
# information in a form CMake can easily use directly.
|
# information in a form CMake can easily use directly.
|
||||||
print >>f, """
|
f.write("""
|
||||||
# Explicit library dependency information.
|
# Explicit library dependency information.
|
||||||
#
|
#
|
||||||
# The following property assignments effectively create a map from component
|
# The following property assignments effectively create a map from component
|
||||||
# names to required libraries, in a way that is easily accessed from CMake."""
|
# names to required libraries, in a way that is easily accessed from CMake.
|
||||||
|
""")
|
||||||
for ci in self.ordered_component_infos:
|
for ci in self.ordered_component_infos:
|
||||||
# We only write the information for libraries currently.
|
# We only write the information for libraries currently.
|
||||||
if ci.type_name != 'Library':
|
if ci.type_name != 'Library':
|
||||||
continue
|
continue
|
||||||
|
|
||||||
print >>f, """\
|
f.write("""\
|
||||||
set_property(GLOBAL PROPERTY LLVMBUILD_LIB_DEPS_%s %s)""" % (
|
set_property(GLOBAL PROPERTY LLVMBUILD_LIB_DEPS_%s %s)\n""" % (
|
||||||
ci.get_prefixed_library_name(), " ".join(sorted(
|
ci.get_prefixed_library_name(), " ".join(sorted(
|
||||||
dep.get_prefixed_library_name()
|
dep.get_prefixed_library_name()
|
||||||
for dep in self.get_required_libraries_for_component(ci))))
|
for dep in self.get_required_libraries_for_component(ci)))))
|
||||||
|
|
||||||
f.close()
|
f.close()
|
||||||
|
|
||||||
@ -590,7 +595,7 @@ set_property(GLOBAL PROPERTY LLVMBUILD_LIB_DEPS_%s %s)""" % (
|
|||||||
header_name = os.path.basename(output_path)
|
header_name = os.path.basename(output_path)
|
||||||
header_pad = '-' * (80 - len(header_fmt % (header_name, '')))
|
header_pad = '-' * (80 - len(header_fmt % (header_name, '')))
|
||||||
header_string = header_fmt % (header_name, header_pad)
|
header_string = header_fmt % (header_name, header_pad)
|
||||||
print >>f, """\
|
f.write("""\
|
||||||
%s
|
%s
|
||||||
#
|
#
|
||||||
# The LLVM Compiler Infrastructure
|
# The LLVM Compiler Infrastructure
|
||||||
@ -606,30 +611,33 @@ set_property(GLOBAL PROPERTY LLVMBUILD_LIB_DEPS_%s %s)""" % (
|
|||||||
# This file is autogenerated by llvm-build, do not edit!
|
# This file is autogenerated by llvm-build, do not edit!
|
||||||
#
|
#
|
||||||
#===------------------------------------------------------------------------===#
|
#===------------------------------------------------------------------------===#
|
||||||
""" % header_string
|
|
||||||
|
""" % header_string)
|
||||||
|
|
||||||
# Write the dependencies for the fragment.
|
# Write the dependencies for the fragment.
|
||||||
#
|
#
|
||||||
# FIXME: Technically, we need to properly quote for Make here.
|
# FIXME: Technically, we need to properly quote for Make here.
|
||||||
print >>f, """\
|
f.write("""\
|
||||||
# Clients must explicitly enable LLVMBUILD_INCLUDE_DEPENDENCIES to get
|
# Clients must explicitly enable LLVMBUILD_INCLUDE_DEPENDENCIES to get
|
||||||
# these dependencies. This is a compromise to help improve the
|
# these dependencies. This is a compromise to help improve the
|
||||||
# performance of recursive Make systems."""
|
# performance of recursive Make systems.
|
||||||
print >>f, 'ifeq ($(LLVMBUILD_INCLUDE_DEPENDENCIES),1)'
|
""")
|
||||||
print >>f, "# The dependencies for this Makefile fragment itself."
|
f.write('ifeq ($(LLVMBUILD_INCLUDE_DEPENDENCIES),1)\n')
|
||||||
print >>f, "%s: \\" % (mk_quote_string_for_target(output_path),)
|
f.write("# The dependencies for this Makefile fragment itself.\n")
|
||||||
|
f.write("%s: \\\n" % (mk_quote_string_for_target(output_path),))
|
||||||
for dep in dependencies:
|
for dep in dependencies:
|
||||||
print >>f, "\t%s \\" % (dep,)
|
f.write("\t%s \\\n" % (dep,))
|
||||||
print >>f
|
f.write('\n')
|
||||||
|
|
||||||
# Generate dummy rules for each of the dependencies, so that things
|
# Generate dummy rules for each of the dependencies, so that things
|
||||||
# continue to work correctly if any of those files are moved or removed.
|
# continue to work correctly if any of those files are moved or removed.
|
||||||
print >>f, """\
|
f.write("""\
|
||||||
# The dummy targets to allow proper regeneration even when files are moved or
|
# The dummy targets to allow proper regeneration even when files are moved or
|
||||||
# removed."""
|
# removed.
|
||||||
|
""")
|
||||||
for dep in dependencies:
|
for dep in dependencies:
|
||||||
print >>f, "%s:" % (mk_quote_string_for_target(dep),)
|
f.write("%s:\n" % (mk_quote_string_for_target(dep),))
|
||||||
print >>f, 'endif'
|
f.write('endif\n')
|
||||||
|
|
||||||
f.close()
|
f.close()
|
||||||
|
|
||||||
@ -801,7 +809,7 @@ given by --build-root) at the same SUBPATH""",
|
|||||||
dest="optional_components", metavar="NAMES",
|
dest="optional_components", metavar="NAMES",
|
||||||
help=("Enable the given space or semi-colon separated "
|
help=("Enable the given space or semi-colon separated "
|
||||||
"list of optional components"),
|
"list of optional components"),
|
||||||
action="store", default=None)
|
action="store", default="")
|
||||||
parser.add_option_group(group)
|
parser.add_option_group(group)
|
||||||
|
|
||||||
(opts, args) = parser.parse_args()
|
(opts, args) = parser.parse_args()
|
||||||
|
@ -3,7 +3,7 @@ import sys
|
|||||||
|
|
||||||
def _write_message(kind, message):
|
def _write_message(kind, message):
|
||||||
program = os.path.basename(sys.argv[0])
|
program = os.path.basename(sys.argv[0])
|
||||||
print >>sys.stderr, '%s: %s: %s' % (program, kind, message)
|
sys.stderr.write('%s: %s: %s\n' % (program, kind, message))
|
||||||
|
|
||||||
note = lambda message: _write_message('note', message)
|
note = lambda message: _write_message('note', message)
|
||||||
warning = lambda message: _write_message('warning', message)
|
warning = lambda message: _write_message('warning', message)
|
||||||
|
Reference in New Issue
Block a user