VirtualBox

source: vbox/trunk/src/VBox/Main/idl/apiwrap-server-filelist.xsl@ 61572

Last change on this file since 61572 was 53913, checked in by vboxsync, 10 years ago

Main: Split the wrapper source generator job into two to speed reduce the time it takes before we can start compiling wrappers. In the process, the xslt code responsible for generating vboxapiwrap.kmk was moved into apiwrap-server-filelist.xsl to prevent more clutter in the original file. Down to 6 seconds for generating wrapper sources, headers and trace points.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 4.9 KB
Line 
1<?xml version="1.0"?>
2
3<!--
4 apiwrap-server-filelist.xsl:
5
6 XSLT stylesheet that generate a makefile include with
7 the lists of files that apiwrap-server.xsl produces
8 from VirtualBox.xidl.
9
10 Copyright (C) 2015 Oracle Corporation
11
12 This file is part of VirtualBox Open Source Edition (OSE), as
13 available from http://www.virtualbox.org. This file is free software;
14 you can redistribute it and/or modify it under the terms of the GNU
15 General Public License (GPL) as published by the Free Software
16 Foundation, in version 2 as it comes in the "COPYING" file of the
17 VirtualBox OSE distribution. VirtualBox OSE is distributed in the
18 hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
19-->
20
21<xsl:stylesheet
22 version="1.0"
23 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
24 xmlns:exsl="http://exslt.org/common"
25 extension-element-prefixes="exsl">
26
27<xsl:output method="text"/>
28
29<xsl:strip-space elements="*"/>
30
31<!-- - - - - - - - - - - - - - - - - - - - - - -
32 global XSLT variables
33 - - - - - - - - - - - - - - - - - - - - - - -->
34
35<xsl:variable name="G_sNewLine">
36 <xsl:choose>
37 <xsl:when test="$KBUILD_HOST = 'win'">
38 <xsl:value-of select="'&#13;&#10;'"/>
39 </xsl:when>
40 <xsl:otherwise>
41 <xsl:value-of select="'&#10;'"/>
42 </xsl:otherwise>
43 </xsl:choose>
44</xsl:variable>
45
46
47<!-- - - - - - - - - - - - - - - - - - - - - - -
48 wildcard match, ignore everything which has no explicit match
49 - - - - - - - - - - - - - - - - - - - - - - -->
50
51<xsl:template match="*" mode="filelist-even-sources"/>
52<xsl:template match="*" mode="filelist-odd-sources"/>
53<xsl:template match="*" mode="filelist-headers"/>
54
55<!-- - - - - - - - - - - - - - - - - - - - - - -
56 interface match
57 - - - - - - - - - - - - - - - - - - - - - - -->
58
59<xsl:template match="interface" mode="filelist-even-sources">
60 <xsl:if test="not(@internal='yes') and not(@supportsErrorInfo='no') and (position() mod 2) = 0">
61 <xsl:value-of select="concat(' \', $G_sNewLine, '&#9;$(VBOX_MAIN_APIWRAPPER_DIR)/', substring(@name, 2), 'Wrap.cpp')"/>
62 </xsl:if>
63</xsl:template>
64
65<xsl:template match="interface" mode="filelist-odd-sources">
66 <xsl:if test="not(@internal='yes') and not(@supportsErrorInfo='no') and (position() mod 2) = 1">
67 <xsl:value-of select="concat(' \', $G_sNewLine, '&#9;$(VBOX_MAIN_APIWRAPPER_DIR)/', substring(@name, 2), 'Wrap.cpp')"/>
68 </xsl:if>
69</xsl:template>
70
71<xsl:template match="interface" mode="filelist-headers">
72 <xsl:if test="not(@internal='yes') and not(@supportsErrorInfo='no')">
73 <xsl:value-of select="concat(' \', $G_sNewLine, '&#9;$(VBOX_MAIN_APIWRAPPER_DIR)/', substring(@name, 2), 'Wrap.h')"/>
74 </xsl:if>
75</xsl:template>
76
77<!-- - - - - - - - - - - - - - - - - - - - - - -
78 ignore all if tags except those for XPIDL or MIDL target
79 - - - - - - - - - - - - - - - - - - - - - - -->
80
81<xsl:template match="if" mode="filelist-even-sources">
82 <xsl:if test="(@target = 'xpidl') or (@target = 'midl')">
83 <xsl:apply-templates mode="filelist-even-sources"/>
84 </xsl:if>
85</xsl:template>
86
87<xsl:template match="if" mode="filelist-odd-sources">
88 <xsl:if test="(@target = 'xpidl') or (@target = 'midl')">
89 <xsl:apply-templates mode="filelist-odd-sources"/>
90 </xsl:if>
91</xsl:template>
92
93<xsl:template match="if" mode="filelist-headers">
94 <xsl:if test="(@target = 'xpidl') or (@target = 'midl')">
95 <xsl:apply-templates mode="filelist-headers"/>
96 </xsl:if>
97</xsl:template>
98
99<!-- - - - - - - - - - - - - - - - - - - - - - -
100 library match
101 - - - - - - - - - - - - - - - - - - - - - - -->
102
103<xsl:template match="library" mode="filelist-even-sources">
104 <xsl:apply-templates mode="filelist-even-sources"/>
105</xsl:template>
106
107<xsl:template match="library" mode="filelist-odd-sources">
108 <xsl:apply-templates mode="filelist-odd-sources"/>
109</xsl:template>
110
111<xsl:template match="library" mode="filelist-headers">
112 <xsl:apply-templates mode="filelist-headers"/>
113</xsl:template>
114
115<!-- - - - - - - - - - - - - - - - - - - - - - -
116 root match
117 - - - - - - - - - - - - - - - - - - - - - - -->
118
119<xsl:template match="/idl">
120 <xsl:text>VBOX_MAIN_APIWRAPPER_GEN_SRCS_EVEN := </xsl:text>
121 <xsl:apply-templates mode="filelist-even-sources"/>
122 <xsl:value-of select="concat($G_sNewLine, $G_sNewLine)"/>
123
124 <xsl:text>VBOX_MAIN_APIWRAPPER_GEN_SRCS_ODD := </xsl:text>
125 <xsl:apply-templates mode="filelist-odd-sources"/>
126 <xsl:value-of select="concat($G_sNewLine, $G_sNewLine)"/>
127
128 <xsl:text>VBOX_MAIN_APIWRAPPER_GEN_SRCS := $(VBOX_MAIN_APIWRAPPER_GEN_SRCS_EVEN) $(VBOX_MAIN_APIWRAPPER_GEN_SRCS_ODD)</xsl:text>
129 <xsl:value-of select="concat($G_sNewLine, $G_sNewLine)"/>
130
131 <xsl:text>VBOX_MAIN_APIWRAPPER_GEN_HDRS := </xsl:text>
132 <xsl:apply-templates mode="filelist-headers"/>
133 <xsl:value-of select="concat($G_sNewLine, $G_sNewLine)"/>
134</xsl:template>
135
136</xsl:stylesheet>
137<!-- vi: set tabstop=4 shiftwidth=4 expandtab: -->
138
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette