VirtualBox

source: vbox/trunk/doc/manual/Config.kmk@ 73471

最後變更 在這個檔案從73471是 73366,由 vboxsync 提交於 7 年 前

doc/manual: Fix catalog creation. They are also needed for OSE builds, and make sure to create valid file:/// URLs in them (some xml tool versions show weird behavior for file:////) by taking into account that the paths in the variables are absolute already, i.e. provide one '/'.

  • 屬性 svn:eol-style 設為 native
  • 屬性 svn:keywords 設為 Author Date Id Revision
檔案大小: 14.7 KB
 
1# $Id: Config.kmk 73366 2018-07-26 09:14:17Z vboxsync $
2## @file
3# kBuild Configuration file for the manual.
4#
5
6#
7# Copyright (C) 2010-2017 Oracle Corporation
8#
9# This file is part of VirtualBox Open Source Edition (OSE), as
10# available from http://www.alldomusa.eu.org. This file is free software;
11# you can redistribute it and/or modify it under the terms of the GNU
12# General Public License (GPL) as published by the Free Software
13# Foundation, in version 2 as it comes in the "COPYING" file of the
14# VirtualBox OSE distribution. VirtualBox OSE is distributed in the
15# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
16#
17
18ifndef VBOX_DOC_MANUAL_CONFIG_KMK_INCLUDED
19VBOX_DOC_MANUAL_CONFIG_KMK_INCLUDED = 1
20
21# Include the top-level configure file.
22ifndef VBOX_ROOT_CONFIG_KMK_INCLUDED
23 include $(PATH_ROOT)/Config.kmk
24endif
25
26
27#
28# Globals.
29#
30
31# Source location.
32VBOX_PATH_MANUAL_SRC := $(PATH_ROOT)/doc/manual
33# Output location.
34VBOX_PATH_MANUAL_OUTBASE := $(PATH_OBJ)/manual
35
36## List of refentry files (manpages).
37VBOX_MANUAL_XML_REFENTRY_FILES := \
38 man_VBoxManage-mediumio.xml \
39 man_VBoxManage-debugvm.xml \
40 man_VBoxManage-extpack.xml \
41 man_VBoxManage-unattended.xml
42
43
44# Tool locations.
45ifndef VBOX_OSE
46 # use docbook from our tools directory
47 VBOX_PATH_DOCBOOK ?= $(PATH_DEVTOOLS)/common/DocBook/v1.69.1
48 VBOX_PATH_DOCBOOK_DTD ?= $(PATH_DEVTOOLS)/common/docbook-xml/v4.5
49else
50 # use docbook of the build host
51 VBOX_PATH_DOCBOOK ?= /usr/share/xml/docbook/stylesheet/docbook-xsl
52 VBOX_PATH_DOCBOOK_DTD ?= /usr/share/xml/docbook/schema/dtd/4.5
53endif
54VBOX_XML_CATALOG ?= $(VBOX_PATH_MANUAL_OUTBASE)/catalog
55VBOX_XML_CATALOG_DOCBOOK ?= $(VBOX_PATH_MANUAL_OUTBASE)/docbook
56VBOX_XML_CATALOG_MANUAL ?= $(VBOX_PATH_MANUAL_OUTBASE)/manual
57VBOX_XML_ENTITIES ?= $(VBOX_PATH_MANUAL_OUTBASE)/all-entities.ent
58
59# xsltproc with the catalog trick if applicable.
60ifdef VBOX_XML_CATALOG
61 VBOX_XSLTPROC_WITH_CAT = $(REDIRECT) -E "XML_CATALOG_FILES=$(VBOX_XML_CATALOG)" $1 -- \
62 $(VBOX_XSLTPROC) --nonet --xinclude $(VBOX_XSLTPROC_OPTS)
63 VBOX_XMLLINT_WITH_CAT = $(REDIRECT) -E "XML_CATALOG_FILES=$(VBOX_XML_CATALOG)" -- \
64 $(VBOX_XMLLINT) --nonet --xinclude --noout $(VBOX_XMLLINT_OPTS)
65else
66 VBOX_XSLTPROC_WITH_CAT = $(if $(1), $(REDIRECT) $1 --,) $(VBOX_XSLTPROC) --nonet --xinclude $(VBOX_XSLTPROC_OPTS)
67 VBOX_XMLLINT_WITH_CAT = $(VBOX_XMLLINT) --nonet --xinclude --noout $(VBOX_XMLLINT_OPTS)
68endif
69
70
71##
72# Emits rules for preprocessing refentry sources (applying remarks element),
73# and for producing the actual man pages.
74#
75# $(evalcall2 def_vbox_refentry_to_manpage)
76# @param 1 The output directory.
77# @param 2 The XML file name (no path).
78# @param 3 The XML file with full path.
79define def_vbox_refentry_preprocess_for_manpage
80$(1)/$(2): \
81 $(3) \
82 $$(VBOX_PATH_MANUAL_SRC)/docbook-refentry-to-manpage-preprocessing.xsl \
83 $$(VBOX_XML_CATALOG) $$(VBOX_XML_CATALOG_DOCBOOK) $$(VBOX_XML_CATALOG_MANUAL) \
84 $$(VBOX_VERSION_STAMP) | $$$$(dir $$$$@)
85 $$(call MSG_TOOL,xsltproc $$(notdir $$(firstword $$(filter %.xsl,$$^))),,$$(firstword $$(filter %.xml,$$^)),$$@)
86 $$(QUIET)$$(RM) -f "$$@"
87 $$(QUIET)$$(call VBOX_XSLTPROC_WITH_CAT) --output $$@ \
88 $$(VBOX_PATH_MANUAL_SRC)/docbook-refentry-to-manpage-preprocessing.xsl $$<
89if defined(VBOX_HAVE_XMLLINT) && "$(USER)" == "bird" # Effing stuff happends on build servers, probably kmk related...
90 $$(VBOX_XMLLINT_WITH_CAT) --dtdvalid $$(VBOX_PATH_DOCBOOK_DTD)/docbookx.dtd $$@
91endif
92endef
93
94##
95# Generate a single header file containing everything (no C file).
96#
97# @param 1 Destination file.
98# @param 2 Full source file path.
99# @param 3 Help infix.
100define def_vbox_single_refentry_to_h
101$(1).ts +| $(1): \
102 $$(VBOX_DOCBOOK_REFENTRY_TO_C_HELP) \
103 $$(VBOX_DOCBOOK_REFENTRY_TO_H_HELP) \
104 $(2) \
105 $$(VBOX_XML_CATALOG) $$(VBOX_XML_CATALOG_DOCBOOK) $$(VBOX_XML_CATALOG_MANUAL) $(MAKEFILE) | $$$$(dir $$$$@)
106 $$(call MSG_TOOL,xsltproc $$(notdir $$(firstword $$(filter %.xsl,$$^))),,$$(filter %.xml,$$^),$$(patsubst %.ts,%,$$@))
107 $$(QUIET)$$(APPEND) -tn "$$@" \
108 '/* Autogenerated by $$(notdir $$(filter %.xsl,$$^)), do not edit! */' \
109 '' \
110 '#include <iprt/message.h>' \
111 '' \
112 'typedef enum HELP_CMD_$(3)' \
113 '{' \
114 ' HELP_CMD_INVALID = 0,'
115 $$(QUIET)$$(call VBOX_XSLTPROC_WITH_CAT, -a+to "$$@") \
116 --stringparam 'g_sMode' 'cmd' $$(VBOX_DOCBOOK_REFENTRY_TO_H_HELP) $(2)
117 $$(QUIET)$$(APPEND) -n "$$@" \
118 ' HELP_CMD_END' \
119 '} HELP_CMD_VBOXMANAGE;' \
120 ''
121 $$(NLTAB)$$(QUIET)$$(call VBOX_XSLTPROC_WITH_CAT, -a+to "$$@") \
122 --stringparam 'g_sMode' 'subcmd' $$(VBOX_DOCBOOK_REFENTRY_TO_H_HELP) $(2)
123 $$(QUIET)$$(APPEND) -n "$$@" \
124 ''
125 $$(NLTAB)$$(QUIET)$$(call VBOX_XSLTPROC_WITH_CAT, -a+to "$$@") $$(VBOX_DOCBOOK_REFENTRY_TO_C_HELP) $(2)
126 $$(QUIET)$$(APPEND) -n "$$@" \
127 '' \
128 '/* end of file */'
129 $$(QUIET)$$(CP) --changed -- "$$@" "$$(patsubst %.ts,%,$$@)"
130endef
131
132
133#
134# Make sure we've got a rule to make the output directory.
135#
136BLDDIRS += $(VBOX_PATH_MANUAL_OUTBASE)
137
138
139ifdef VBOX_XML_CATALOG
140 #
141 # To avoid network I/O for fetching DTDs, we generate catalogs mapping the public
142 # entity IDs to local files. (Obviously, only done when we have local files.)
143 #
144 # Create a catalog file for xsltproc that points to docbook catalog.
145 $(VBOX_XML_CATALOG): $(MAKEFILE_CURRENT) | $$(dir $$@)
146 $(call MSG_L1,Creating catalog $@)
147 $(QUIET)$(APPEND) -tn "$@" \
148 '<?xml version="1.0"?>' \
149 '<!DOCTYPE catalog PUBLIC "-//OASIS//DTD Entity Resolution XML Catalog V1.0//EN" "http://www.oasis-open.org/committees/entity/release/1.0/catalog.dtd">' \
150 '<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">' \
151 ' <delegatePublic publicIdStartString="-//OASIS/ENTITIES DocBook XML" catalog="file://$(VBOX_XML_CATALOG_DOCBOOK)"/>' \
152 ' <delegatePublic publicIdStartString="-//OASIS/DTD DocBook XML" catalog="file://$(VBOX_XML_CATALOG_DOCBOOK)"/>' \
153 ' <delegateSystem systemIdStartString="http://www.oasis-open.org/docbook/" catalog="file://$(VBOX_XML_CATALOG_DOCBOOK)"/>' \
154 ' <delegateURI uriStartString="http://www.oasis-open.org/docbook/" catalog="file://$(VBOX_XML_CATALOG_DOCBOOK)"/>' \
155 ' <delegateSystem systemIdStartString="$(VBOX_PATH_MANUAL_SRC)" catalog="file://$(VBOX_XML_CATALOG_MANUAL)"/>' \
156 ' <delegateURI uriStartString="$(VBOX_PATH_MANUAL_SRC)" catalog="file://$(VBOX_XML_CATALOG_MANUAL)"/>' \
157 ' <delegateURI uriStartString="$(VBOX_PATH_MANUAL_OUTBASE)" catalog="file://$(VBOX_XML_CATALOG_MANUAL)"/>' \
158 '</catalog>'
159
160 # Create a docbook catalog file for xsltproc that points to the local docbook files.
161 $(VBOX_XML_CATALOG_DOCBOOK): $(MAKEFILE_CURRENT) | $$(dir $$@)
162 $(call MSG_L1,Creating catalog $@)
163 $(QUIET)$(APPEND) -tn "$@" \
164 '<?xml version="1.0"?>' \
165 '<!DOCTYPE catalog PUBLIC "-//OASIS//DTD Entity Resolution XML Catalog V1.0//EN" "http://www.oasis-open.org/committees/entity/release/1.0/catalog.dtd">' \
166 '<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">' \
167 ' <public publicId="-//OASIS//ELEMENTS DocBook XML Information Pool V4.5//EN" uri="file://$(VBOX_PATH_DOCBOOK_DTD)/dbpoolx.mod"/>' \
168 ' <public publicId="-//OASIS//DTD DocBook XML V4.5//EN" uri="file://$(VBOX_PATH_DOCBOOK_DTD)/docbookx.dtd"/>' \
169 ' <public publicId="-//OASIS//ENTITIES DocBook XML Character Entities V4.5//EN" uri="file://$(VBOX_PATH_DOCBOOK_DTD)/dbcentx.mod"/>' \
170 ' <public publicId="-//OASIS//ENTITIES DocBook XML Notations V4.5//EN" uri="file://$(VBOX_PATH_DOCBOOK_DTD)/dbnotnx.mod"/>' \
171 ' <public publicId="-//OASIS//ENTITIES DocBook XML Additional General Entities V4.5//EN" uri="file://$(VBOX_PATH_DOCBOOK_DTD)/dbgenent.mod"/>' \
172 ' <public publicId="-//OASIS//ELEMENTS DocBook XML Document Hierarchy V4.5//EN" uri="file://$(VBOX_PATH_DOCBOOK_DTD)/dbhierx.mod"/>' \
173 ' <public publicId="-//OASIS//DTD XML Exchange Table Model 19990315//EN" uri="file://$(VBOX_PATH_DOCBOOK_DTD)/soextblx.dtd"/>' \
174 ' <public publicId="-//OASIS//DTD DocBook XML CALS Table Model V4.5//EN" uri="file://$(VBOX_PATH_DOCBOOK_DTD)/calstblx.dtd"/>' \
175 ' <rewriteSystem systemIdStartString="http://www.oasis-open.org/docbook/xml/4.5" rewritePrefix="file://$(VBOX_PATH_DOCBOOK_DTD)"/>' \
176 ' <rewriteURI uriStartString="http://www.oasis-open.org/docbook/xml/4.5" rewritePrefix="file://$(VBOX_PATH_DOCBOOK_DTD)"/>' \
177 ' <public publicId="ISO 8879:1986//ENTITIES Added Math Symbols: Arrow Relations//EN" uri="file://$(VBOX_PATH_DOCBOOK_DTD)/ent/iso-amsa.ent"/>' \
178 ' <public publicId="ISO 8879:1986//ENTITIES Added Math Symbols: Binary Operators//EN" uri="file://$(VBOX_PATH_DOCBOOK_DTD)/ent/iso-amsb.ent"/>' \
179 ' <public publicId="ISO 8879:1986//ENTITIES Added Math Symbols: Delimiters//EN" uri="file://$(VBOX_PATH_DOCBOOK_DTD)/ent/iso-amsc.ent"/>' \
180 ' <public publicId="ISO 8879:1986//ENTITIES Added Math Symbols: Negated Relations//EN" uri="file://$(VBOX_PATH_DOCBOOK_DTD)/ent/iso-amsn.ent"/>' \
181 ' <public publicId="ISO 8879:1986//ENTITIES Added Math Symbols: Ordinary//EN" uri="file://$(VBOX_PATH_DOCBOOK_DTD)/ent/iso-amso.ent"/>' \
182 ' <public publicId="ISO 8879:1986//ENTITIES Added Math Symbols: Relations//EN" uri="file://$(VBOX_PATH_DOCBOOK_DTD)/ent/iso-amsr.ent"/>' \
183 ' <public publicId="ISO 8879:1986//ENTITIES Box and Line Drawing//EN" uri="file://$(VBOX_PATH_DOCBOOK_DTD)/ent/iso-box.ent"/>' \
184 ' <public publicId="ISO 8879:1986//ENTITIES Russian Cyrillic//EN" uri="file://$(VBOX_PATH_DOCBOOK_DTD)/ent/iso-cyr1.ent"/>' \
185 ' <public publicId="ISO 8879:1986//ENTITIES Non-Russian Cyrillic//EN" uri="file://$(VBOX_PATH_DOCBOOK_DTD)/ent/iso-cyr2.ent"/>' \
186 ' <public publicId="ISO 8879:1986//ENTITIES Diacritical Marks//EN" uri="file://$(VBOX_PATH_DOCBOOK_DTD)/ent/iso-dia.ent"/>' \
187 ' <public publicId="ISO 8879:1986//ENTITIES Greek Letters//EN" uri="file://$(VBOX_PATH_DOCBOOK_DTD)/ent/iso-grk1.ent"/>' \
188 ' <public publicId="ISO 8879:1986//ENTITIES Monotoniko Greek//EN" uri="file://$(VBOX_PATH_DOCBOOK_DTD)/ent/iso-grk2.ent"/>' \
189 ' <public publicId="ISO 8879:1986//ENTITIES Greek Symbols//EN" uri="file://$(VBOX_PATH_DOCBOOK_DTD)/ent/iso-grk3.ent"/>' \
190 ' <public publicId="ISO 8879:1986//ENTITIES Alternative Greek Symbols//EN" uri="file://$(VBOX_PATH_DOCBOOK_DTD)/ent/iso-grk4.ent"/>' \
191 ' <public publicId="ISO 8879:1986//ENTITIES Added Latin 1//EN" uri="file://$(VBOX_PATH_DOCBOOK_DTD)/ent/iso-lat1.ent"/>' \
192 ' <public publicId="ISO 8879:1986//ENTITIES Added Latin 2//EN" uri="file://$(VBOX_PATH_DOCBOOK_DTD)/ent/iso-lat2.ent"/>' \
193 ' <public publicId="ISO 8879:1986//ENTITIES Numeric and Special Graphic//EN" uri="file://$(VBOX_PATH_DOCBOOK_DTD)/ent/iso-num.ent"/>' \
194 ' <public publicId="ISO 8879:1986//ENTITIES Publishing//EN" uri="file://$(VBOX_PATH_DOCBOOK_DTD)/ent/iso-pub.ent"/>' \
195 ' <public publicId="ISO 8879:1986//ENTITIES General Technical//EN" uri="file://$(VBOX_PATH_DOCBOOK_DTD)/ent/iso-tech.ent"/>' \
196 '</catalog>'
197
198 # Create a docbook catalog file for xsltproc that points to the local manual files in non-default locations
199 $(VBOX_XML_CATALOG_MANUAL): $(MAKEFILE_CURRENT) | $$(dir $$@)
200 $(call MSG_L1,Creating catalog $@)
201 $(QUIET)$(APPEND) -tn "$@" \
202 '<?xml version="1.0"?>' \
203 '<!DOCTYPE catalog PUBLIC "-//OASIS//DTD Entity Resolution XML Catalog V1.0//EN" "http://www.oasis-open.org/committees/entity/release/1.0/catalog.dtd">' \
204 '<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">' \
205 ' <system systemId="$(VBOX_PATH_MANUAL_SRC)/en_US/user_ChangeLogImpl.xml" uri="file://$(VBOX_PATH_MANUAL_SRC)/user_ChangeLogImpl.xml"/>' \
206 ' <system systemId="$(VBOX_PATH_MANUAL_SRC)/en_US/user_VBoxManage_CommandsOverview.xml" uri="file://$(VBOX_PATH_MANUAL_OUTBASE)/user_VBoxManage_CommandsOverview.xml"/>' \
207 ' <system systemId="$(VBOX_PATH_MANUAL_SRC)/titlepage-htmlhelp.xsl" uri="file://$(VBOX_PATH_MANUAL_OUTBASE)/titlepage-htmlhelp.xsl"/>' \
208 ' <system systemId="$(VBOX_PATH_MANUAL_SRC)/en_US/user_man_VBoxManage-mediumio.xml" uri="file://$(VBOX_PATH_MANUAL_OUTBASE)/en_US/user_man_VBoxManage-mediumio.xml"/>' \
209 ' <system systemId="$(VBOX_PATH_MANUAL_SRC)/en_US/user_man_VBoxManage-debugvm.xml" uri="file://$(VBOX_PATH_MANUAL_OUTBASE)/en_US/user_man_VBoxManage-debugvm.xml"/>' \
210 ' <system systemId="$(VBOX_PATH_MANUAL_SRC)/en_US/user_man_VBoxManage-extpack.xml" uri="file://$(VBOX_PATH_MANUAL_OUTBASE)/en_US/user_man_VBoxManage-extpack.xml"/>' \
211 ' <system systemId="$(VBOX_PATH_MANUAL_SRC)/en_US/user_man_VBoxManage-unattended.xml" uri="file://$(VBOX_PATH_MANUAL_OUTBASE)/en_US/user_man_VBoxManage-unattended.xml"/>' \
212 ' <system systemId="$(VBOX_PATH_MANUAL_SRC)/en_US/user_isomakercmd-man.xml" uri="file://$(VBOX_PATH_MANUAL_OUTBASE)/en_US/user_isomakercmd-man.xml"/>' \
213 ' <system systemId="$(VBOX_PATH_MANUAL_SRC)/en_US/SDKRef_apiref.xml" uri="file://$(VBOX_PATH_MANUAL_OUTBASE)/en_US/SDKRef_apiref.xml"/>' \
214 ' <system systemId="$(VBOX_PATH_MANUAL_SRC)/en_US/all-entities.ent" uri="file://$(VBOX_PATH_MANUAL_OUTBASE)/all-entities.ent"/>' \
215 ' <system systemId="$(VBOX_PATH_MANUAL_SRC)/html/docbook.xsl" uri="file://$(VBOX_PATH_DOCBOOK)/html/docbook.xsl"/>' \
216 ' <system systemId="$(VBOX_PATH_MANUAL_SRC)/html/chunk.xsl" uri="file://$(VBOX_PATH_DOCBOOK)/html/chunk.xsl"/>' \
217 ' <system systemId="$(VBOX_PATH_MANUAL_SRC)/htmlhelp/htmlhelp.xsl" uri="file://$(VBOX_PATH_DOCBOOK)/htmlhelp/htmlhelp.xsl"/>' \
218 '</catalog>'
219
220endif # VBOX_XML_CATALOG
221
222
223ifdef VBOX_XML_ENTITIES
224
225 $(VBOX_XML_ENTITIES): $(MAKEFILE_CURRENT) | $$(dir $$@)
226 $(call MSG_L1,Creating entities $@)
227 $(QUIET)$(APPEND) -tn "$@" \
228 '<!ENTITY VBOX_PRODUCT SYSTEM "$(VBOX_PATH_MANUAL_SRC)/ent-vbox-product.xml" >' \
229 '<!ENTITY VBOX_VERSION_MAJOR "$(VBOX_VERSION_MAJOR)" >' \
230 '<!ENTITY VBOX_VERSION_MINOR "$(VBOX_VERSION_MINOR)" >' \
231 '<!ENTITY VBOX_VERSION_BUILD "$(VBOX_VERSION_MINOR)" >' \
232 '<!ENTITY VBOX_VERSION_STRING "$(VBOX_VERSION_STRING)" >' \
233 '<!ENTITY VBOX_VENDOR "$(VBOX_VENDOR)" >' \
234 '<!ENTITY VBOX_C_YEAR "$(VBOX_C_YEAR)" >'
235
236endif # VBOX_XML_ENTITIES
237
238
239#
240# Generate rules for editing the refentry to C/H style sheets.
241#
242VBOX_DOCBOOK_REFENTRY_TO_C_HELP = $(VBOX_PATH_MANUAL_SRC)/docbook-refentry-to-C-help.xsl
243
244VBOX_DOCBOOK_REFENTRY_TO_H_HELP = $(VBOX_PATH_MANUAL_SRC)/docbook-refentry-to-H-help.xsl
245
246#
247# Manual dependency.
248#
249$(VBOX_PATH_MANUAL_OUTBASE)/docbook-refentry-to-C-help.xsl: $(VBOX_PATH_MANUAL_SRC)/common-formatcfg.xsl
250
251
252endif # !defined(VBOX_DOC_MANUAL_CONFIG_KMK_INCLUDED)
253
注意: 瀏覽 TracBrowser 來幫助您使用儲存庫瀏覽器

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