Index: site_scons/site_tools/component_targets_xml.py |
=================================================================== |
--- site_scons/site_tools/component_targets_xml.py (revision 12583) |
+++ site_scons/site_tools/component_targets_xml.py (working copy) |
@@ -1,126 +0,0 @@ |
-#!/usr/bin/python2.4 |
-# Copyright 2008, Google Inc. |
-# All rights reserved. |
-# |
-# Redistribution and use in source and binary forms, with or without |
-# modification, are permitted provided that the following conditions are |
-# met: |
-# |
-# * Redistributions of source code must retain the above copyright |
-# notice, this list of conditions and the following disclaimer. |
-# * Redistributions in binary form must reproduce the above |
-# copyright notice, this list of conditions and the following disclaimer |
-# in the documentation and/or other materials provided with the |
-# distribution. |
-# * Neither the name of Google Inc. nor the names of its |
-# contributors may be used to endorse or promote products derived from |
-# this software without specific prior written permission. |
-# |
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
- |
-"""XML output of component targets for SCons.""" |
- |
- |
-import xml.dom |
-import SCons.Script |
- |
- |
-def TargetXMLHelp(target, source, env): |
- """Generates target information in XML format. |
- |
- Args: |
- target: Destination file. |
- source: List of sources. Should be empty, otherwise this will actually |
- require the sources to be built first. |
- env: Environment context. |
- """ |
- env = env |
- source = source # Silence gpylint |
- |
- target_path = target[0].abspath |
- |
- xml_impl = xml.dom.getDOMImplementation() |
- doc = xml_impl.createDocument(None, 'help', None) |
- |
- mode_list = doc.createElement('mode_list') |
- doc.documentElement.appendChild(mode_list) |
- for mode in GetTargetModes().values(): |
- n = doc.createElement('build_mode') |
- n.setAttribute('name', mode.name) |
- n.setAttribute('description', mode.description) |
- mode_list.appendChild(n) |
- |
- group_list = doc.createElement('target_groups') |
- doc.documentElement.appendChild(group_list) |
- for group in GetTargetGroups().values(): |
- items = group.GetTargetNames() |
- if not items: |
- continue |
- |
- ngroup = doc.createElement('target_group') |
- ngroup.setAttribute('name', group.name) |
- group_list.appendChild(ngroup) |
- |
- for i in items: |
- ntarget = doc.createElement('build_target') |
- ntarget.setAttribute('name', i) |
- ngroup.appendChild(ntarget) |
- |
- # Get properties for target, if any |
- target = GetTargets().get(i) |
- if target: |
- # All modes |
- for k, v in target.properties.items(): |
- n = doc.createElement('target_property') |
- n.setAttribute('name', k) |
- n.setAttribute('value', v) |
- ntarget.appendChild(n) |
- |
- # Mode-specific |
- for mode, mode_properties in target.mode_properties.items(): |
- nmode = doc.createElement('target_mode') |
- nmode.setAttribute('name', mode) |
- ntarget.appendChild(nmode) |
- |
- for k, v in mode_properties.items(): |
- n = doc.createElement('target_property') |
- n.setAttribute('name', k) |
- n.setAttribute('value', v) |
- nmode.appendChild(n) |
- |
- f = open(target_path, 'wt') |
- doc.writexml(f, encoding='UTF-8', addindent=' ', newl='\n') |
- f.close() |
- |
-#------------------------------------------------------------------------------ |
- |
- |
-def generate(env): |
- # NOTE: SCons requires the use of this name, which fails gpylint. |
- """SCons entry point for this tool.""" |
- env = env # Silence gpylint |
- |
- SCons.Script.Help('''\ |
- targets_xml Write information on the build mode's targets to |
- targets.xml. Most useful with --mode=all. |
-''') |
- |
- # Add build target to generate help |
- p = env.Command('$DESTINATION_ROOT/targets.xml', [], |
- env.Action(TargetXMLHelp)) |
- |
- # Always build xml info if requested. |
- # TODO(rspangler): Is there a better way to determine the xml info is up to |
- # date? |
- env.AlwaysBuild(p) |
- env.Alias('targets_xml', p) |