Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: downloads/boost_1_34_1/tools/boostbook/xsl/testing/Jamfile.xsl @ 29

Last change on this file since 29 was 29, checked in by landauf, 17 years ago

updated boost from 1_33_1 to 1_34_1

File size: 8.5 KB
Line 
1<?xml version="1.0" encoding="utf-8"?>
2<!--
3   Copyright (c) 2002 Douglas Gregor <doug.gregor -at- gmail.com>
4 
5   Distributed under the Boost Software License, Version 1.0.
6   (See accompanying file LICENSE_1_0.txt or copy at
7   http://www.boost.org/LICENSE_1_0.txt)
8  -->
9<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
10                version="1.0">
11  <xsl:include href="http://docbook.sourceforge.net/release/xsl/current/html/chunker.xsl"/>
12  <xsl:include href="http://docbook.sourceforge.net/release/xsl/current/common/common.xsl"/>
13
14  <!-- The root of the Boost directory -->
15  <xsl:param name="boost.root"/>
16
17  <!-- The number of columns in a source file line -->
18  <xsl:param name="boost.source.columns" select="78"/>
19
20  <xsl:output method="text"/>
21  <xsl:template match="/">
22    <xsl:if test="$boost.root">
23      <!-- Output testsuite Jamfiles -->
24      <xsl:apply-templates select="//testsuite" mode="Jamfile"/>
25
26      <!-- Output any source files that are written in XML -->
27      <xsl:apply-templates select="//source" mode="testsuite.generate"/>
28    </xsl:if>
29
30    <xsl:if test="not($boost.root)">
31      <xsl:message>
32        Please set the XSL stylesheet parameter "boost.root" to the top-level
33        Boost directory (i.e., BOOST_ROOT)
34      </xsl:message>
35    </xsl:if>
36  </xsl:template>
37
38  <xsl:template match="testsuite" mode="Jamfile">
39    <xsl:variable name="subproject"
40      select="concat('libs/',ancestor::library/attribute::dirname,'/test')"/>
41    <xsl:variable name="filename" 
42      select="concat($boost.root,'/libs/',ancestor::library/attribute::dirname,
43                     '/test/Jamfile')"/>
44    <xsl:call-template name="write.text.chunk">
45      <xsl:with-param name="filename" select="$filename"/>
46      <xsl:with-param name="content">
47        <xsl:call-template name="source.print.header">
48          <xsl:with-param name="prefix" select="'#'"/>
49        </xsl:call-template>
50
51# Testing Jamfile autogenerated from XML source
52subproject <xsl:value-of select="$subproject"/> ;
53
54# bring in rules for testing
55SEARCH on testing.jam = $(BOOST_BUILD_PATH) ;
56include testing.jam ;
57
58# Make tests run by default.
59DEPENDS all : test ;
60
61{
62  # look in BOOST_ROOT for sources first, just in this Jamfile
63  local SEARCH_SOURCE = $(BOOST_ROOT) $(SEARCH_SOURCE) ;
64
65  test-suite <xsl:value-of select="ancestor::library/attribute::dirname"/>
66    : <xsl:apply-templates mode="Jamfile"/> ;
67}
68      </xsl:with-param>
69    </xsl:call-template>
70  </xsl:template>
71
72  <xsl:template match="compile-test|link-test|run-test|compile-fail-test|link-fail-test|run-fail-test"
73    mode="Jamfile">
74    <xsl:variable name="fullname"
75      select="concat(substring-before(local-name(.), '-test'), ' libs/',
76                     ancestor::library/attribute::dirname, '/test/',
77                     @filename)"/>
78    <xsl:text>[ </xsl:text>
79    <xsl:value-of select="$fullname"/>
80    <xsl:apply-templates select="lib" mode="Jamfile"/>
81    <xsl:text> : </xsl:text>
82    <!-- ... -->
83    <xsl:text> : </xsl:text>
84    <!-- ... -->
85    <xsl:text> : </xsl:text>
86    <xsl:apply-templates select="requirement" mode="Jamfile"/>
87    <!-- ... -->
88    <xsl:text> : </xsl:text>
89    <xsl:if test="@name">
90      <xsl:value-of select="@name"/>
91    </xsl:if>
92    <xsl:text> ]</xsl:text>
93  </xsl:template>
94
95  <xsl:template match="lib" mode="Jamfile">
96    <xsl:text> &lt;lib&gt;</xsl:text><xsl:value-of select="text()"/>
97  </xsl:template>
98
99  <xsl:template match="requirement" mode="Jamfile">
100    <xsl:if test="count(preceding-sibling::requirement) &gt; 0">
101      <xsl:text> </xsl:text>
102    </xsl:if>
103    <xsl:value-of select="concat('&lt;', @name, '&gt;')"/>
104    <xsl:value-of select="."/>
105  </xsl:template>
106
107  <xsl:template match="source" mode="testsuite.generate">
108    <xsl:variable name="filename" 
109      select="concat($boost.root,'/libs/',ancestor::library/attribute::dirname,
110                     '/test/',../@filename)"/>
111
112    <xsl:variable name="prefix" select="'//'"/>
113
114    <xsl:call-template name="write.text.chunk">
115      <xsl:with-param name="filename" select="$filename"/>
116      <xsl:with-param name="content">
117        <xsl:call-template name="source.print.header">
118          <xsl:with-param name="prefix" select="'//'"/>
119        </xsl:call-template>
120        <!-- Source code -->
121        <xsl:apply-templates mode="testsuite.generate"/>
122      </xsl:with-param>
123    </xsl:call-template>
124  </xsl:template>
125
126  <xsl:template match="snippet" mode="testsuite.generate">
127    <xsl:variable name="snippet-name" select="@name"/>
128    <xsl:value-of select="//programlisting[@name=$snippet-name]"/>
129  </xsl:template>
130
131  <!-- Prints a header to a source file containing the library name,
132       copyright information, license information, and a link to the Boost
133       web site. The text is output using the "prefix" parameter at the
134       beginning of each line (it should denote a single-line comment) and
135       will only print up to boost.source.columns characters per line
136       (including the prefix). -->
137  <xsl:template name="source.print.header">
138    <xsl:param name="prefix"/>
139
140    <!-- Library name -->
141    <xsl:value-of select="concat($prefix, ' ',
142                                 ancestor::library/attribute::name,
143                                 ' library')"/>
144    <xsl:text>&#10;</xsl:text>
145   
146    <!-- Copyrights -->
147    <xsl:apply-templates select="ancestor::library/libraryinfo/copyright"
148      mode="testsuite.generate">
149      <xsl:with-param name="prefix" select="$prefix"/>
150    </xsl:apply-templates>
151       
152    <!-- Legal notice -->
153    <xsl:apply-templates select="ancestor::library/libraryinfo/legalnotice"
154      mode="testsuite.generate">
155      <xsl:with-param name="prefix" select="$prefix"/>
156    </xsl:apply-templates>
157   
158    <xsl:text>&#10;&#10;</xsl:text>
159   
160    <!-- For more information... -->
161    <xsl:value-of 
162      select="concat($prefix,
163              ' For more information, see http://www.boost.org/')"/>
164    <xsl:text>&#10;</xsl:text>
165  </xsl:template>
166
167  <xsl:template match="copyright" mode="testsuite.generate">
168    <xsl:param name="prefix"/>
169
170    <xsl:text>&#10;</xsl:text>
171
172    <xsl:value-of select="concat($prefix, ' Copyright (C) ')"/>
173    <xsl:call-template name="copyright.years">
174      <xsl:with-param name="years" select="year"/>
175      <xsl:with-param name="print.ranges" select="1"/>
176      <xsl:with-param name="single.year.ranges" select="1"/>
177    </xsl:call-template>
178
179    <xsl:text> </xsl:text>
180
181    <xsl:apply-templates select="holder" mode="titlepage.mode"/>
182  </xsl:template>
183
184  <xsl:template match="legalnotice" mode="testsuite.generate">
185    <xsl:param name="prefix"/>
186
187    <xsl:variable name="text" select="normalize-space(.)"/>
188
189    <xsl:text>&#10;&#10;</xsl:text>
190    <xsl:value-of select="concat($prefix, ' ')"/>
191
192    <xsl:call-template name="source.print.legalnotice">
193      <xsl:with-param name="prefix" select="$prefix"/>
194      <xsl:with-param name="text" select="$text"/>
195      <xsl:with-param name="column" select="string-length($prefix) + 1"/>
196    </xsl:call-template>
197  </xsl:template>
198
199  <xsl:template name="source.print.legalnotice">
200    <xsl:param name="prefix"/>
201    <xsl:param name="text"/>
202    <xsl:param name="column"/>
203
204    <xsl:if test="contains($text, ' ') or string-length($text) &gt; 0">
205      <xsl:variable name="word">
206        <xsl:choose>
207          <xsl:when test="contains($text, ' ')">
208            <xsl:value-of select="substring-before($text, ' ')"/>
209          </xsl:when>
210          <xsl:otherwise>
211            <xsl:value-of select="$text"/>
212          </xsl:otherwise>
213        </xsl:choose>
214      </xsl:variable>
215
216      <xsl:variable name="rest" select="substring-after($text, ' ')"/>
217
218      <xsl:choose>
219        <xsl:when 
220          test="$column + string-length($word) &gt; $boost.source.columns">
221          <xsl:text>&#10;</xsl:text>
222          <xsl:value-of select="concat($prefix, ' ')"/>
223          <xsl:call-template name="source.print.legalnotice">
224            <xsl:with-param name="prefix" select="$prefix"/>
225            <xsl:with-param name="text" select="$text"/>
226            <xsl:with-param name="column" select="string-length($prefix) + 1"/>
227          </xsl:call-template>
228        </xsl:when>
229        <xsl:otherwise>
230          <xsl:value-of select="concat($word, ' ')"/>
231          <xsl:call-template name="source.print.legalnotice">
232            <xsl:with-param name="prefix" select="$prefix"/>
233            <xsl:with-param name="text" select="$rest"/>
234            <xsl:with-param name="column" 
235              select="$column + string-length($word) + 1"/>
236          </xsl:call-template>
237        </xsl:otherwise>
238      </xsl:choose>
239    </xsl:if>
240  </xsl:template>
241
242  <xsl:template match="*" mode="testsuite.generate"/>
243</xsl:stylesheet>
Note: See TracBrowser for help on using the repository browser.