makefile-dep.xsl 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. <?xml version="1.0"?>
  2. <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  3. version="1.0">
  4. <xsl:param name="filename-prefix" select="''"/>
  5. <xsl:param name="depends-file" select="''"/>
  6. <xsl:param name="output-root" select="''"/>
  7. <!-- Additional dependencies for target website -->
  8. <xsl:param name="add-website-depends" select="''"/>
  9. <!-- Remove output root dir instead removing each html output file.
  10. Useful for removing subdirs and none html files: images, css etc. -->
  11. <xsl:param name="remove-output-root" select="0"/>
  12. <xsl:output method="text"/>
  13. <xsl:template match="autolayout">
  14. <xsl:text>website: </xsl:text>
  15. <xsl:value-of select="$add-website-depends"/>
  16. <xsl:text> </xsl:text>
  17. <xsl:apply-templates select="toc" mode="all"/>
  18. <xsl:apply-templates select="notoc" mode="all"/>
  19. <xsl:text>&#10;&#10;</xsl:text>
  20. <xsl:apply-templates select="toc"/>
  21. <xsl:apply-templates select="notoc"/>
  22. <xsl:text>&#10;</xsl:text>
  23. <xsl:text>distclean: clean
  24. &#9;-rm -f </xsl:text>
  25. <xsl:text>autolayout.xml website.database.xml </xsl:text>
  26. <xsl:text>&#32;</xsl:text>
  27. <xsl:value-of select="$depends-file"/>
  28. <xsl:text>&#10;&#10;</xsl:text>
  29. <xsl:text>clean:&#10;</xsl:text>
  30. <xsl:choose>
  31. <xsl:when test="$remove-output-root and not($output-root='')">
  32. <xsl:text>&#9;-rm -rf </xsl:text>
  33. <xsl:call-template name="output-root"/>
  34. </xsl:when>
  35. <xsl:otherwise>
  36. <xsl:text>&#9;-rm -f </xsl:text>
  37. <xsl:apply-templates select="toc" mode="all"/>
  38. <xsl:apply-templates select="notoc" mode="all"/>
  39. </xsl:otherwise>
  40. </xsl:choose>
  41. <xsl:text>&#10;&#10;</xsl:text>
  42. </xsl:template>
  43. <xsl:template match="toc">
  44. <!--
  45. <xsl:apply-templates select="." mode="calculate-dir"/>
  46. -->
  47. <xsl:call-template name="output-root"/>
  48. <xsl:value-of select="@dir"/>
  49. <xsl:value-of select="$filename-prefix"/>
  50. <xsl:value-of select="@filename"/>
  51. <xsl:text>: </xsl:text>
  52. <xsl:value-of select="@page"/>
  53. <xsl:text>&#10;</xsl:text>
  54. <xsl:apply-templates select=".//tocentry"/>
  55. </xsl:template>
  56. <xsl:template match="tocentry|notoc">
  57. <!--
  58. <xsl:apply-templates select="." mode="calculate-dir"/>
  59. -->
  60. <xsl:if test="@filename">
  61. <xsl:call-template name="output-root"/>
  62. <xsl:value-of select="@dir"/>
  63. <xsl:value-of select="$filename-prefix"/>
  64. <xsl:value-of select="@filename"/>
  65. <xsl:text>: </xsl:text>
  66. <xsl:value-of select="@page"/>
  67. <xsl:text>&#10;</xsl:text>
  68. </xsl:if>
  69. </xsl:template>
  70. <xsl:template match="toc" mode="all">
  71. <xsl:apply-templates select=".//tocentry" mode="all"/>
  72. <!--
  73. <xsl:apply-templates select="." mode="calculate-dir"/>
  74. -->
  75. <xsl:call-template name="output-root"/>
  76. <xsl:value-of select="@dir"/>
  77. <xsl:value-of select="$filename-prefix"/>
  78. <xsl:value-of select="@filename"/>
  79. <xsl:text> </xsl:text>
  80. </xsl:template>
  81. <xsl:template match="tocentry|notoc" mode="all">
  82. <!--
  83. <xsl:apply-templates select="." mode="calculate-dir"/>
  84. -->
  85. <xsl:if test="@filename">
  86. <xsl:call-template name="output-root"/>
  87. <xsl:value-of select="@dir"/>
  88. <xsl:value-of select="$filename-prefix"/>
  89. <xsl:value-of select="@filename"/>
  90. <xsl:text> </xsl:text>
  91. </xsl:if>
  92. </xsl:template>
  93. <xsl:template match="*" mode="calculate-dir">
  94. <xsl:choose>
  95. <xsl:when test="starts-with(@dir, '/')">
  96. <!-- if the directory on this begins with a "/", we're done... -->
  97. <xsl:value-of select="substring-after(@dir, '/')"/>
  98. <!--
  99. <xsl:if test="@dir != '/'">
  100. <xsl:text>/</xsl:text>
  101. </xsl:if>
  102. -->
  103. </xsl:when>
  104. <xsl:when test="parent::*">
  105. <!-- if there's a parent, try it -->
  106. <xsl:apply-templates select="parent::*" mode="calculate-dir"/>
  107. <xsl:if test="@dir">
  108. <xsl:value-of select="@dir"/>
  109. <!--
  110. <xsl:text>/</xsl:text>
  111. -->
  112. </xsl:if>
  113. </xsl:when>
  114. <xsl:otherwise>
  115. <xsl:if test="@dir">
  116. <xsl:value-of select="@dir"/>
  117. <!--
  118. <xsl:text>/</xsl:text>
  119. -->
  120. </xsl:if>
  121. </xsl:otherwise>
  122. </xsl:choose>
  123. </xsl:template>
  124. <xsl:template name="output-root">
  125. <xsl:if test="$output-root != ''">
  126. <xsl:value-of select="$output-root"/>
  127. <xsl:text>/</xsl:text>
  128. </xsl:if>
  129. </xsl:template>
  130. </xsl:stylesheet>