Annotation of qemu/roms/openbios/config/xml/object.xsl, revision 1.1.1.1

1.1       root        1: <?xml version="1.0" encoding="ISO-8859-15" ?>
                      2: 
                      3: <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
                      4:  
                      5:  <!-- wrapper that calls "objects" with parameters -->
                      6:  <xsl:template match="/" mode="objects">
                      7:   <xsl:call-template name="objects">
                      8:    <xsl:with-param name="target" select="'host'"/>
                      9:   </xsl:call-template>
                     10:   <xsl:call-template name="objects">
                     11:    <xsl:with-param name="target" select="'target'"/>
                     12:   </xsl:call-template>
                     13:  </xsl:template>
                     14: 
                     15:  <!-- main work happens here -->
                     16:  <xsl:template name="objects">
                     17: 
                     18:   <xsl:param name="target"/>
                     19:     
                     20:   <xsl:text>&#10;#&#10;# </xsl:text>
                     21:   <xsl:value-of select="$target"/>
                     22:   <xsl:text> compiler rules&#10;#&#10;&#10;</xsl:text>
                     23:   
                     24:   <!-- create rules for all compile objects -->
                     25:   <xsl:for-each select="//object[(ancestor-or-self::*)[@target = $target]]">
                     26:   
                     27:    <xsl:variable name="path">
                     28:     <xsl:for-each select="ancestor::build">
                     29:      <xsl:call-template name="get-dirname">
                     30:       <xsl:with-param select="@base" name="path"/>
                     31:      </xsl:call-template>
                     32:     </xsl:for-each>
                     33:    </xsl:variable>
                     34:      
                     35:    <xsl:variable name="conditions">
                     36:     <xsl:text>0</xsl:text>
                     37:     <xsl:for-each select="(ancestor-or-self::*)[@condition!='']">
                     38:      <xsl:call-template name="resolve-condition">
                     39:       <xsl:with-param select="@condition" name="expression"/>
                     40:      </xsl:call-template>
                     41:     </xsl:for-each>
                     42:    </xsl:variable>
                     43:      
                     44:    <xsl:if test="$conditions=0">
                     45: 
                     46:     <!-- full path of object file -->
                     47:     <xsl:text>$(ODIR)/</xsl:text>
                     48:     <xsl:value-of select="$target"/>
                     49:     <xsl:text>/</xsl:text>
                     50:     <xsl:value-of select="$path"/>
                     51:     <xsl:value-of select="substring-before(@source,'.')"/>
                     52:     <xsl:text>.o: </xsl:text>
                     53:  
                     54:     <!-- path of source file -->
                     55:     <xsl:text>$(SRCDIR)/</xsl:text>
                     56:     <xsl:value-of select="$path"/>
                     57:     <xsl:value-of select="@source"/>
                     58: 
                     59: 
                     60:     <xsl:choose>
                     61:      <xsl:when test="child::rule">
                     62:       <xsl:value-of select="child::rule"/>
                     63:       <xsl:text>&#10;</xsl:text>
                     64:      </xsl:when>
                     65:      <xsl:otherwise>
                     66:        <xsl:choose>
                     67:          <xsl:when test="@flags!=''">
                     68:            <xsl:value-of select="document('rules.xml',.)//rule[@target=$target][@entity='object'][@extracflags='1']"/>
                     69:            <xsl:text> </xsl:text>
                     70:            <xsl:value-of select="@flags"/>
                     71:            <xsl:text> </xsl:text>
                     72:            <xsl:value-of select="document('rules.xml',.)//rule[@target=$target][@entity='object'][@extracflags='2']"/>
                     73:          </xsl:when>
                     74:          <xsl:otherwise>
                     75:            <!-- FIXME this requires strict spaces in rules.xml -->
                     76:            <xsl:value-of select="document('rules.xml',.)//rule[@target=$target][@entity='object']"/>
                     77:          </xsl:otherwise>
                     78:        </xsl:choose>
                     79:      </xsl:otherwise>
                     80:     </xsl:choose>
                     81:  
                     82:    </xsl:if>
                     83:   </xsl:for-each>
                     84:  
                     85:   <!-- Create linker targets for all executables -->
                     86:   <xsl:for-each select="//executable">
                     87:  
                     88:    <xsl:variable name="outer-conditions">
                     89:     <xsl:text>0</xsl:text>
                     90:     <xsl:for-each select="(ancestor-or-self::*)[@condition!='']">
                     91:      <xsl:call-template name="resolve-condition">
                     92:       <xsl:with-param select="@condition" name="expression"/>
                     93:      </xsl:call-template>
                     94:     </xsl:for-each>
                     95:    </xsl:variable>
                     96:    
                     97:    <xsl:if test="$outer-conditions = 0">
                     98:     <xsl:if test="(ancestor-or-self::*)[@target = $target]">
                     99:  
                    100:      <!-- executable name -->
                    101:      <xsl:text>$(ODIR)/</xsl:text>
                    102:      <xsl:value-of select="@name"/>
                    103:      <xsl:text>:</xsl:text>
                    104:       
                    105:      <!-- add all objects -->
                    106:      <xsl:for-each select="object">
                    107:   
                    108:       <xsl:variable name="conditions">
                    109:        <xsl:text>0</xsl:text>
                    110:        <xsl:for-each select="(ancestor-or-self::*)[@condition!='']">
                    111:         <xsl:call-template name="resolve-condition">
                    112:          <xsl:with-param select="@condition" name="expression"/>
                    113:         </xsl:call-template>
                    114:        </xsl:for-each>
                    115:       </xsl:variable>
                    116:       
                    117:       <xsl:if test="$conditions=0">
                    118:        
                    119:        <xsl:variable name="path">
                    120:         <xsl:for-each select="ancestor::build">
                    121:          <xsl:call-template name="get-dirname">
                    122:           <xsl:with-param select="@base" name="path"/>
                    123:          </xsl:call-template>
                    124:         </xsl:for-each>
                    125:        </xsl:variable>
                    126:       
                    127:        <xsl:text> $(ODIR)/</xsl:text>
                    128:        <xsl:value-of select="$target"/>
                    129:        <xsl:text>/</xsl:text>
                    130:        <xsl:value-of select="$path"/>
                    131:        <xsl:value-of select="substring-before(@source,'.')"/>
                    132:        <xsl:text>.o</xsl:text>
                    133:  
                    134:       </xsl:if>
                    135:      </xsl:for-each>
                    136:  
                    137:      <!-- external objects last -->
                    138:      <xsl:for-each select="external-object">
                    139:  
                    140:       <xsl:variable name="conditions">
                    141:        <xsl:text>0</xsl:text>
                    142:        <xsl:for-each select="(ancestor-or-self::*)[@condition!='']">
                    143:         <xsl:call-template name="resolve-condition">
                    144:          <xsl:with-param select="@condition" name="expression"/>
                    145:         </xsl:call-template>
                    146:        </xsl:for-each>
                    147:       </xsl:variable>
                    148:       
                    149:       <xsl:if test="$conditions=0">
                    150:        <xsl:text> $(ODIR)/</xsl:text>
                    151:        <xsl:value-of select="@source"/>
                    152:       </xsl:if>
                    153:         
                    154:      </xsl:for-each>
                    155:        
                    156:      <!-- print executable rule --> 
                    157:      <xsl:choose>
                    158:       <xsl:when test="child::rule">
                    159:        <xsl:value-of select="child::rule"/>
                    160:        <xsl:text>&#10;</xsl:text>
                    161:       </xsl:when>
                    162:       <xsl:otherwise>
                    163:        <!-- FIXME this requires strict spaces in rules.xml -->
                    164:        <xsl:value-of select="document('rules.xml',.)//rule[@target=$target][@entity='executable']"/>
                    165:       </xsl:otherwise>
                    166:      </xsl:choose>
                    167:        
                    168:     </xsl:if>
                    169:    </xsl:if>
                    170:   </xsl:for-each>
                    171: 
                    172:   <!-- create linker targets for all libs -->
                    173:   <xsl:for-each select="//library">
                    174:    <xsl:sort select="@name"/>
                    175:  
                    176:    <xsl:variable name="outer-conditions">
                    177:     <xsl:text>0</xsl:text>
                    178:     <xsl:for-each select="(ancestor-or-self::*)[@condition!='']">
                    179:      <xsl:call-template name="resolve-condition">
                    180:       <xsl:with-param select="@condition" name="expression"/>
                    181:      </xsl:call-template>
                    182:     </xsl:for-each>
                    183:    </xsl:variable>
                    184:    
                    185:    <xsl:if test="$outer-conditions = 0">
                    186: 
                    187:    
                    188:    <xsl:if test="(ancestor-or-self::*)[@target = $target]">
                    189:    
                    190:     <xsl:if test="not(preceding::library/@name = @name)">
                    191:      
                    192:      <!-- output library name -->
                    193:      <xsl:text>$(ODIR)/lib</xsl:text>
                    194:      <xsl:value-of select="@name"/>
                    195:        
                    196:      <xsl:choose>
                    197:       <xsl:when test="@type='static'">
                    198:        <xsl:text>.a</xsl:text>
                    199:       </xsl:when>
                    200:       <xsl:when test="@type='dynamic'">
                    201:        <xsl:text>.so</xsl:text>
                    202:       </xsl:when>
                    203:      </xsl:choose>
                    204:      <xsl:text>: </xsl:text>
                    205:        
                    206:      <xsl:variable name="name"><xsl:value-of select="@name"/></xsl:variable>
                    207:        
                    208:      <!-- enumerate all objects for library target -->
                    209:      <xsl:for-each select="//library[@name=$name]/object">
                    210:      
                    211:       <xsl:variable name="conditions">
                    212:        <xsl:text>0</xsl:text>
                    213:        <xsl:for-each select="(ancestor-or-self::*)[@condition!='']">
                    214:         <xsl:call-template name="resolve-condition">
                    215:          <xsl:with-param select="@condition" name="expression"/>
                    216:         </xsl:call-template>
                    217:        </xsl:for-each>
                    218:       </xsl:variable>
                    219:      
                    220:       <xsl:if test="$conditions=0">
                    221:         
                    222:        <xsl:variable name="path">
                    223:         <xsl:for-each select="ancestor::build">
                    224:          <xsl:call-template name="get-dirname">
                    225:           <xsl:with-param select="@base" name="path"/>
                    226:          </xsl:call-template>
                    227:         </xsl:for-each>
                    228:        </xsl:variable>
                    229:   
                    230:        <xsl:text>$(ODIR)/</xsl:text>
                    231:        <xsl:value-of select="$target"/>
                    232:        <xsl:text>/</xsl:text>
                    233:        <xsl:value-of select="$path"/>
                    234:        <xsl:value-of select="substring-before(@source,'.')"/>
                    235:        <xsl:text>.o </xsl:text>
                    236:        
                    237:       </xsl:if>
                    238:        
                    239:      </xsl:for-each>
                    240:         
                    241:      <!-- external objects last -->
                    242:      <xsl:for-each select="external-object">
                    243:  
                    244:       <xsl:variable name="conditions">
                    245:        <xsl:text>0</xsl:text>
                    246:        <xsl:for-each select="(ancestor-or-self::*)[@condition!='']">
                    247:         <xsl:call-template name="resolve-condition">
                    248:          <xsl:with-param select="@condition" name="expression"/>
                    249:         </xsl:call-template>
                    250:        </xsl:for-each>
                    251:       </xsl:variable>
                    252:       
                    253:       <xsl:if test="$conditions=0">
                    254:        <xsl:text> $(ODIR)/</xsl:text>
                    255:        <xsl:value-of select="@source"/>
                    256:       </xsl:if>
                    257:         
                    258:      </xsl:for-each>
                    259:        
                    260: 
                    261:      <!-- FIXME this requires strict spaces in rules.xml -->
                    262:      <xsl:value-of select="document('rules.xml',.)//rule[@target=$target][@entity='library']"/>
                    263:      
                    264:     </xsl:if>
                    265:    </xsl:if>
                    266:    </xsl:if>
                    267:   </xsl:for-each>
                    268:  
                    269:   <!-- create libs rule for all libraries -->
                    270:   <xsl:value-of select="$target"/>
                    271:   <xsl:text>-libraries: </xsl:text>
                    272:   
                    273:   <!-- don't build unused libraries
                    274:   <xsl:for-each select="//library">
                    275:    <xsl:if test="object[(ancestor-or-self::*)[@target = $target]]">
                    276:  
                    277:     <xsl:variable name="conditions">
                    278:      <xsl:text>0</xsl:text>
                    279:      <xsl:for-each select="(ancestor-or-self::*)[@condition!='']">
                    280:       <xsl:call-template name="resolve-condition">
                    281:        <xsl:with-param select="@condition" name="expression"/>
                    282:       </xsl:call-template>
                    283:      </xsl:for-each>
                    284:     </xsl:variable>
                    285:     <xsl:if test="$conditions=0">
                    286:     <xsl:text> $(ODIR)/</xsl:text>
                    287:     <xsl:text>lib</xsl:text>
                    288:     <xsl:value-of select="@name"/>
                    289:      <xsl:choose>
                    290:       <xsl:when test="@type='static'">
                    291:        <xsl:text>.a</xsl:text>
                    292:       </xsl:when>
                    293:       <xsl:when test="@type='dynamic'">
                    294:        <xsl:text>.so</xsl:text>
                    295:       </xsl:when>
                    296:      </xsl:choose>
                    297:     </xsl:if>
                    298:    </xsl:if>
                    299:   </xsl:for-each>
                    300:   -->
                    301:   <xsl:text>&#10;</xsl:text>
                    302:   
                    303:   <!-- create exe rule for all executables -->
                    304:   <xsl:value-of select="$target"/>
                    305:   <xsl:text>-executables: </xsl:text>
                    306:   
                    307:   <xsl:for-each select="//executable">
                    308:    <xsl:if test="(ancestor-or-self::*)[@target = $target]">
                    309: 
                    310:     <xsl:variable name="conditions">
                    311:      <xsl:text>0</xsl:text>
                    312:      <xsl:for-each select="(ancestor-or-self::*)[@condition!='']">
                    313:       <xsl:call-template name="resolve-condition">
                    314:        <xsl:with-param select="@condition" name="expression"/>
                    315:       </xsl:call-template>
                    316:      </xsl:for-each>
                    317:     </xsl:variable>
                    318:     <xsl:if test="$conditions=0">
                    319:      <xsl:text> $(ODIR)/</xsl:text>
                    320:      <xsl:value-of select="@name"/>
                    321:     </xsl:if>
                    322:    </xsl:if>
                    323:   </xsl:for-each>
                    324:   <xsl:text>&#10;</xsl:text>
                    325:   
                    326:  </xsl:template>
                    327:  
                    328: </xsl:stylesheet>

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.