VirtualBox

Changeset 99057 in vbox for trunk/doc


Ignore:
Timestamp:
Mar 20, 2023 1:55:54 AM (23 months ago)
Author:
vboxsync
Message:

manual/Makefile.kmk: Cleaning up the makefile step by step... bugref:10348 bugref:10302

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/doc/manual/Makefile.kmk

    r99056 r99057  
    6565 #
    6666
     67 ## Combines the VBOX_MANUAL_LANGUAGES and VBOX_MANUAL_ADD_LANGUAGES lists from
     68 #  /Config.kmk, as per the VBOX_WITH_DOCS_TRANSLATIONS setting.
     69 ifdef VBOX_WITH_DOCS_TRANSLATIONS
     70  VBOX_MANUAL_ALL_LANGUAGES := $(VBOX_MANUAL_LANGUAGES) $(VBOX_MANUAL_ADD_LANGUAGES)
     71 else
     72  VBOX_MANUAL_ALL_LANGUAGES := $(VBOX_MANUAL_LANGUAGES)
     73 endif
     74
    6775 ## The files that should go into VBoxDocumentation.zip (must be immediately under PATH_STAGE_BIN).
    6876 VBOX_MANUAL_PACK =
    6977
    70  ifndef VBOX_ONLY_SDK
    71   ifdef VBOX_WITH_DOCS_QHELP
    72    ifdef VBOX_WITH_QT6
    73     USES += qt6
    74     VBOX_QHELPGENERATOR = $(PATH_TOOL_QT6_LIBEXEC)/qhelpgenerator
    75    else
    76     USES += qt5
    77     VBOX_QHELPGENERATOR_VERSION_MINOR = $(shell $(REDIRECT) -E QT_QPA_PLATFORM_PLUGIN_PATH=$(PATH_SDK_QT5)/plugins -- $(PATH_TOOL_QT5_BIN)/qhelpgenerator -v 2>/dev/null | $(SED) -ne 's/.*(Qt [1-9][0-9]*\.\([1-9][0-9]*\)\.[1-9][0-9]*).*$$/\1/p')
    78     VBOX_QHELPGENERATOR = $(PATH_TOOL_QT5_BIN)/$(if-expr $(VBOX_QHELPGENERATOR_VERSION_MINOR) >= 12,qhelpgenerator,qcollectiongenerator)
    79    endif
    80   endif
    81 
    82  endif # ! VBOX_ONLY_SDK
    83 
    84  VBOX_QHELP_OUTPUT_FILES := UserManual.qch UserManual.qhc
     78 # Various file lists (mainly needed for OTHER_CLEAN).
     79 VBOX_QHELP_OUTPUT_FILES               := UserManual.qch UserManual.qhc
     80 VBOX_ACCESSIBILITY_XML_FILES          := Accessibility.xml
     81 VBOX_MANUAL_LATEX_FILES_TARGET        := $(addprefix UserManual.,aux log out toc tex)
     82 VBOX_SDKREF_LATEX_FILES_TARGET        := $(addprefix SDKRef.,aux log out toc tex)
     83 VBOX_ACCESSIBILITY_LATEX_FILES_TARGET := $(addprefix Accessibility.,aux log out toc tex)
     84
     85 VBOX_MANUAL_TEX_UNICODE_FILES         = $(wildcard $(VBOX_PATH_MANUAL_SRC)/texfiles/unicode/*)
     86
     87 # Wildcard the images path for every supported language
     88 $(foreach lang,$(VBOX_MANUAL_ALL_LANGUAGES) \
     89        ,$(eval VBOX_MANUAL_PNG_FILES_$$(lang) := $$(patsubst $$(VBOX_PATH_MANUAL_SRC)/$$(lang)/%,%, \
     90                $$(wildcard $$(VBOX_PATH_MANUAL_SRC)/$$(lang)/images/*.png))))
     91
     92 # XML
     93 $(foreach lang, $(VBOX_MANUAL_ALL_LANGUAGES), \
     94 $(eval VBOX_MANUAL_XML_FILES_GENERATED_$$(lang) := \
     95        $$(addprefix $$(VBOX_PATH_MANUAL_OUTBASE)/$$(lang)/user_,$$(filter man_VBoxManage%,$$(VBOX_MANUAL_XML_REFENTRY_FILES))) \
     96        $$(addprefix $$(VBOX_PATH_MANUAL_OUTBASE)/overview_,$$(filter man_VBoxManage%,$$(VBOX_MANUAL_XML_REFENTRY_FILES))) \
     97        $$(VBOX_PATH_MANUAL_OUTBASE)/$$(lang)/user_man_VBoxHeadless.xml \
     98        $$(VBOX_PATH_MANUAL_OUTBASE)/$$(lang)/user_man_vboximg-mount.xml \
     99        $$(VBOX_PATH_MANUAL_OUTBASE)/$$(lang)/user_isomakercmd-man.xml))
    85100
    86101 # SDK related globals.
     
    89104 VBOX_DOC_XIDL_SRC_TMP  = $(VBOX_PATH_MANUAL_OUTBASE)/en_US/VirtualBox.xidl.tmp
    90105
     106
     107 #
     108 # PDF LaTeX related globals.
     109 #
     110
     111 VBOX_PDFLATEX_INTERACTION ?= batchmode
    91112 # VBOX_PDFLATEX_INTERACTION = errorstopmode - Use this when you wants to figure out build failures
    92113 #                                             without catting the log a million times.
    93  VBOX_PDFLATEX_INTERACTION ?= batchmode
    94114 ifeq ($(KBUILD_HOST),win)
    95115  ifndef VBOX_PDFLATEX
     
    109129  VBOX_PDFLATEX_CMD         = pdflatex $(VBOX_PDFLATEX_HALT) -interaction $(VBOX_PDFLATEX_INTERACTION)
    110130 endif
     131
     132
     133 #
     134 # DITA-OT related globals.
     135 #
    111136
    112137 ##
     
    143168
    144169 ## @todo r=bird:Why outside the big if statement? There should be no targets if not entered...
    145  BLDDIRS += $(addprefix $(VBOX_PATH_MANUAL_OUTBASE)/, $(VBOX_MANUAL_LANGUAGES))
    146 
     170 BLDDIRS += $(addprefix $(VBOX_PATH_MANUAL_OUTBASE)/, $(VBOX_MANUAL_ALL_LANGUAGES))
    147171
    148172 ifdef VBOX_ONLY_DOCS
    149173  PACKING += $(PATH_STAGE_BIN)/VBoxDocumentation.zip
    150174 endif
    151 
    152  ## @todo r=bird: why here? We already used it VBOX_MANUAL_LANGUAGES, and BLDDIRS not being a
    153  ## simple variable this will modify the result after it's been used, which is confusing.
    154  ifdef VBOX_WITH_DOCS_TRANSLATIONS
    155   VBOX_MANUAL_LANGUAGES += $(VBOX_MANUAL_ADD_LANGUAGES)
    156  endif
    157 
    158  $(foreach lang,$(VBOX_MANUAL_LANGUAGES), \
    159  $(eval VBOX_MANUAL_XML_FILES_GENERATED_$$(lang) := \
    160         $$(addprefix $$(VBOX_PATH_MANUAL_OUTBASE)/$$(lang)/user_,$$(filter man_VBoxManage%,$$(VBOX_MANUAL_XML_REFENTRY_FILES))) \
    161         $$(addprefix $$(VBOX_PATH_MANUAL_OUTBASE)/overview_,$$(filter man_VBoxManage%,$$(VBOX_MANUAL_XML_REFENTRY_FILES))) \
    162         $$(VBOX_PATH_MANUAL_OUTBASE)/$$(lang)/user_man_VBoxHeadless.xml \
    163         $$(VBOX_PATH_MANUAL_OUTBASE)/$$(lang)/user_man_vboximg-mount.xml \
    164         $$(VBOX_PATH_MANUAL_OUTBASE)/$$(lang)/user_isomakercmd-man.xml))
    165 
    166  VBOX_SDKREF_XML_FILES = \
    167         SDKRef.xml
    168 
    169  VBOX_ACCESSIBILITY_XML_FILES = \
    170         Accessibility.xml
    171 
    172 
    173  # Wildcard the images path for every supported language
    174  $(foreach f,$(VBOX_MANUAL_LANGUAGES), \
    175         $(eval VBOX_MANUAL_PNG_FILES_$$(f) := $$(patsubst $$(VBOX_PATH_MANUAL_SRC)/$$(f)/%,%,$$(wildcard $$(VBOX_PATH_MANUAL_SRC)/$$(f)/images/*.png))))
    176 
    177  VBOX_MANUAL_TEX_UNICODE_FILES = \
    178         $(wildcard $(VBOX_PATH_MANUAL_SRC)/texfiles/unicode/*)
    179 
    180  VBOX_MANUAL_LATEX_FILES_TARGET = \
    181         $(addprefix UserManual.,aux log out toc tex)
    182 
    183  VBOX_SDKREF_LATEX_FILES_TARGET = \
    184         $(addprefix SDKRef.,aux log out toc tex)
    185 
    186  VBOX_ACCESSIBILITY_LATEX_FILES_TARGET = \
    187         $(addprefix Accessibility.,aux log out toc tex)
    188175
    189176 BLDDIRS += \
     
    194181 BLDDIRS += \
    195182        $(addprefix $(VBOX_PATH_MANUAL_OUTBASE)/, \
    196                 $(addsuffix /images, $(VBOX_MANUAL_LANGUAGES)) \
    197                 $(addsuffix /html-single, $(VBOX_MANUAL_LANGUAGES)) \
    198                 $(addsuffix /html-chunks, $(VBOX_MANUAL_LANGUAGES)) \
    199                 $(addsuffix /qhelp, $(VBOX_MANUAL_LANGUAGES)) \
    200                 $(addsuffix /qhelp/images, $(VBOX_MANUAL_LANGUAGES)) \
    201                 $(addsuffix /HTMLHelp, $(VBOX_MANUAL_LANGUAGES)) \
    202                 $(addsuffix /HTMLHelp/images, $(VBOX_MANUAL_LANGUAGES)) \
     183                $(addsuffix /images, $(VBOX_MANUAL_ALL_LANGUAGES)) \
     184                $(addsuffix /html-single, $(VBOX_MANUAL_ALL_LANGUAGES)) \
     185                $(addsuffix /html-chunks, $(VBOX_MANUAL_ALL_LANGUAGES)) \
     186                $(addsuffix /qhelp, $(VBOX_MANUAL_ALL_LANGUAGES)) \
     187                $(addsuffix /qhelp/images, $(VBOX_MANUAL_ALL_LANGUAGES)) \
     188                $(addsuffix /HTMLHelp, $(VBOX_MANUAL_ALL_LANGUAGES)) \
     189                $(addsuffix /HTMLHelp/images, $(VBOX_MANUAL_ALL_LANGUAGES)) \
    203190                )
    204191
     
    211198        $(VBOX_XML_CATALOG_MANUAL) \
    212199        $(VBOX_XML_ENTITIES) \
    213         $(foreach lang, $(VBOX_MANUAL_LANGUAGES) \
     200        $(foreach lang, $(VBOX_MANUAL_ALL_LANGUAGES) \
    214201                ,$(addprefix $(VBOX_PATH_MANUAL_OUTBASE)/$(lang)/, \
    215202                        $(VBOX_XML_XREF_TO_TEXT) \
     
    375362
    376363 ##
    377  # Morph man pages into manual sections.
     364 # Morph man pages into Docbook manual sections.
    378365 # $(evalcall2 def_vbox_refentry_to_user_sect1)
     366 #
    379367 # @param    1  Language.
    380368 # @param    2  the refentry xml base file name.
    381369 # @param    3  the full refentry xml file path.
     370 ## @todo r=bird: This is still Docbook, so unused now?
    382371 define def_vbox_refentry_to_user_sect1
    383372  $$(VBOX_PATH_MANUAL_OUTBASE)/$(1)/user_$(2): $(3) \
     
    385374                $$(VBOX_XML_CATALOG) $$(VBOX_XML_CATALOG_DOCBOOK) $$(VBOX_XML_CATALOG_MANUAL) \
    386375                $$(VBOX_XML_ENTITIES) $$(VBOX_VERSION_STAMP) | $$$$(dir $$$$@)
    387         $$(call MSG_TOOL,xsltproc $$(notdir $$(filter %.xsl,$$^)),,$$(filter %.xml,$$^),$$@)
    388         $$(QUIET)$$(RM) -f "$$@"
     376        $$(call MSG_TOOL,xsltproc docbook-refentry-to-manual-sect1.xsl,,$3,$$@)
     377        $$(QUIET)$$(RM) -f -- "$$@"
    389378        $$(QUIET)$$(call VBOX_XSLTPROC_WITH_CAT) --output $$@ $$(VBOX_PATH_MANUAL_SRC)/docbook-refentry-to-manual-sect1.xsl $$<
    390379 endef
    391  $(foreach lang,$(VBOX_MANUAL_LANGUAGES),$(foreach file,$(VBOX_MANUAL_XML_REFENTRY_FILES) \
    392 man_VBoxHeadless.xml \
    393 man_vboximg-mount.xml \
    394 , $(evalcall2 def_vbox_refentry_to_user_sect1,$(lang),$(file),$(VBOX_PATH_MANUAL_SRC)/$(lang)/$(file))))
    395  $(foreach lang,$(VBOX_MANUAL_LANGUAGES) \
    396 ,$(evalcall2 def_vbox_refentry_to_user_sect1,$(lang),isomakercmd-man.xml,$(PATH_ROOT)/src/VBox/Runtime/common/fs/isomakercmd-man.xml))
     380 $(foreach lang, $(VBOX_MANUAL_ALL_LANGUAGES) \
     381        ,$(foreach file, $(VBOX_MANUAL_XML_REFENTRY_FILES) man_VBoxHeadless.xml man_vboximg-mount.xml \
     382                , $(evalcall2 def_vbox_refentry_to_user_sect1,$(lang),$(file),$(VBOX_PATH_MANUAL_SRC)/$(lang)/$(file))))
     383 $(foreach lang, $(VBOX_MANUAL_ALL_LANGUAGES) \
     384        ,$(evalcall2 def_vbox_refentry_to_user_sect1,$(lang),isomakercmd-man.xml,$(PATH_ROOT)/src/VBox/Runtime/common/fs/isomakercmd-man.xml))
    397385
    398386
    399387 # Generates the VBoxManage command overview include file (shared between
    400388 # languages) from the refsynopsisdiv section of the man pages.
     389 ## @todo r=bird: This is still Docbook, so unused now?
    401390 $(addprefix $(VBOX_PATH_MANUAL_OUTBASE)/overview_,$(VBOX_MANUAL_XML_REFENTRY_FILES)): \
    402391                $(VBOX_PATH_MANUAL_SRC)/docbook-refentry-to-manual-overview.xsl \
    403392                $$(patsubst overview_%,$$(VBOX_PATH_MANUAL_SRC)/en_US/%,$$(notdir $$@)) \
    404                 $(VBOX_XML_CATALOG) $(VBOX_XML_CATALOG_DOCBOOK) $(VBOX_XML_CATALOG_MANUAL) \
     393                $(VBOX_XML_CATALOG) \
     394                $(VBOX_XML_CATALOG_DOCBOOK) \
     395                $(VBOX_XML_CATALOG_MANUAL) \
    405396                $(VBOX_XML_ENTITIES) | $$(dir $$@)
    406397        $(call MSG_TOOL,xsltproc $(notdir $(filter %.xsl,$^)),,$(firstword $(filter %.xml,$^)),$@)
     
    409400
    410401
    411 
    412 
    413  ##########################################################################################
    414  #
    415  #  Shared rules for PDF generation
    416  #
    417  ##########################################################################################
     402 #
     403 # Shared rules for LaTeX based PDF generation - Only used for SDK & Accessability.
     404 #
    418405
    419406 ifndef VBOX_OSE
    420   # copy ucs.sty and related files
    421   $(foreach f,$(VBOX_MANUAL_LANGUAGES),$(VBOX_PATH_MANUAL_OUTBASE)/$f/ucs.sty):
     407  # Copy ucs.sty and associated files.
     408  ## @todo r=bird: This is ugly since only ucs.sty is listed as output while we're actually copying 177 other files.
     409  $(foreach lang,$(VBOX_MANUAL_ALL_LANGUAGES),$(VBOX_PATH_MANUAL_OUTBASE)/$(lang)/ucs.sty): | $$(dir $$@)
    422410        $(call MSG_L1,Copying unicode support for LaTeX)
    423411        $(QUIET)$(INSTALL_STAGING) -m0644 -- $(VBOX_MANUAL_TEX_UNICODE_FILES) "$(@D)"
    424412 endif
    425413
    426  # copy the PNG files.
    427  # Note: out_dir referenced with double $$ to delay expansion to the eval step when out_dir has been defined.
     414 # Copy the PNG files.
    428415 define def_vbox_cp_images_pdf
    429   local out_dir := $(VBOX_PATH_MANUAL_OUTBASE)/$(lang)
    430   $(addprefix $$(out_dir)/,$(VBOX_MANUAL_PNG_FILES_$(lang))): \
    431                 $$(out_dir)/% : $(VBOX_PATH_MANUAL_SRC)/$(lang)/% | $$$$(dir $$$$@)
     416  $(addprefix  $(VBOX_PATH_MANUAL_OUTBASE)/$(lang)/,$(VBOX_MANUAL_PNG_FILES_$(lang))): \
     417                $(VBOX_PATH_MANUAL_OUTBASE)/$(lang)/% : \
     418                $(VBOX_PATH_MANUAL_SRC)/$(lang)/% | $$$$(dir $$$$@)
    432419        $$(call MSG_L1,Copying temporary $$< => $$@)
    433420        $$(QUIET)$$(INSTALL_STAGING) -m0644 -- '$$<' '$$(@D)'
    434421 endef
    435  $(foreach lang,$(VBOX_MANUAL_LANGUAGES),$(evalcall2 def_vbox_cp_images_pdf))
     422 $(foreach lang,$(VBOX_MANUAL_ALL_LANGUAGES),$(evalcall2 def_vbox_cp_images_pdf))
    436423
    437424
     
    439426 # SDKRef.pdf
    440427 #
    441 
    442  # Replace <tt> tags in VirtualBox.xidl.
     428 VBOX_SDKREF_XML_FILES = SDKRef.xml
     429
     430 # Replace @a and @c with <tt> tags in VirtualBox.xidl.
    443431 $(VBOX_DOC_XIDL_SRC_TMP): $(VBOX_DOC_XIDL_SRC) $(MAKEFILE_CURRENT) | $$(dir $$@)
    444432        $(call MSG_L1,Generating $@)
    445         $(QUIET)$(SED) -e 's|@a \+\(\w\+\)|<tt>\1</tt>|g' \
    446                -e 's|@c \+\(\w\+\)|<tt>\1</tt>|g' \
    447                --output $@ $<
     433        $(QUIET)$(SED) \
     434                -e 's|@a \+\(\w\+\)|<tt>\1</tt>|g' \
     435                -e 's|@c \+\(\w\+\)|<tt>\1</tt>|g' \
     436                --output $@ $<
    448437
    449438 # Generate SDKRef_apiref.xml as a docbook file excerpt that will be referenced from the SDKRef.xml.
     
    458447                $(VBOX_PATH_MANUAL_SRC)/docbook2latex.xsl \
    459448                $(if $(VBOX_HAVE_XMLLINT),$(VBOX_PATH_MANUAL_OUTBASE)/en_US/validatesdkref.run,) \
    460                 $(VBOX_XML_CATALOG) $(VBOX_XML_CATALOG_DOCBOOK) $(VBOX_XML_CATALOG_MANUAL) \
    461                 $(VBOX_XML_ENTITIES) $(MAKEFILE_CURRENT) | $$(dir $$@)
     449                $(VBOX_XML_CATALOG) \
     450                $(VBOX_XML_CATALOG_DOCBOOK) \
     451                $(VBOX_XML_CATALOG_MANUAL) \
     452                $(VBOX_XML_ENTITIES) \
     453                $(MAKEFILE_CURRENT) \
     454                | $$(dir $$@)
    462455        $(call MSG_TOOL,xsltproc $(notdir $(filter %.xsl,$^)),,$(firstword $(filter %.xml,$^)),$@)
    463456        $(QUIET)$(RM) -f $(addprefix $(@D/),$(VBOX_SDKREF_LATEX_FILES_TARGET))
     
    478471                $(VBOX_PATH_MANUAL_OUTBASE)/en_US/SDKRef.tex \
    479472                $(if $(VBOX_OSE),,$(VBOX_PATH_MANUAL_OUTBASE)/en_US/ucs.sty) \
    480                 $(addprefix $(VBOX_PATH_MANUAL_OUTBASE)/en_US/,$(VBOX_MANUAL_PNG_FILES_en_US)) | $$(dir $$@)
     473                $(addprefix $(VBOX_PATH_MANUAL_OUTBASE)/en_US/,$(VBOX_MANUAL_PNG_FILES_en_US)) \
     474                | $$(dir $$@)
    481475        $(call MSG_L1,pdflatex $< (three passes))
    482476        $(QUIET)$(REDIRECT) -C $(<D) -- $(VBOX_PDFLATEX_CMD) SDKRef.tex
     
    517511                $(VBOX_PATH_MANUAL_SRC)/docbook2latex.xsl \
    518512                $(if $(VBOX_HAVE_XMLLINT),$(VBOX_PATH_MANUAL_OUTBASE)/en_US/validateaccessibility.run,) \
    519                 $(VBOX_XML_CATALOG) $(VBOX_XML_CATALOG_DOCBOOK) $(VBOX_XML_CATALOG_MANUAL) \
    520                 $(VBOX_XML_ENTITIES) $(MAKEFILE_CURRENT) | $$(dir $$@)
     513                $(VBOX_XML_CATALOG) \
     514                $(VBOX_XML_CATALOG_DOCBOOK) \
     515                $(VBOX_XML_CATALOG_MANUAL) \
     516                $(VBOX_XML_ENTITIES) \
     517                $(MAKEFILE_CURRENT) \
     518                | $$(dir $$@)
    521519        $(call MSG_TOOL,xsltproc $(notdir $(filter %.xsl,$^)),,$(firstword $(filter %.xml,$^)),$@)
    522520        $(QUIET)$(RM) -f $(addprefix $(@D/),$(VBOX_ACCESSIBILITY_LATEX_FILES_TARGET))
     
    537535                $(VBOX_PATH_MANUAL_OUTBASE)/en_US/Accessibility.tex \
    538536                $(if $(VBOX_OSE),,$(VBOX_PATH_MANUAL_OUTBASE)/en_US/ucs.sty) \
    539                 $(addprefix $(VBOX_PATH_MANUAL_OUTBASE)/en_US/,$(VBOX_MANUAL_PNG_FILES_en_US)) | $$(dir $$@)
     537                $(addprefix $(VBOX_PATH_MANUAL_OUTBASE)/en_US/,$(VBOX_MANUAL_PNG_FILES_en_US))
    540538        $(call MSG_L1,pdflatex $< (three passes))
    541539        $(QUIET)$(REDIRECT) -C $(<D) -- $(VBOX_PDFLATEX_CMD) Accessibility.tex
     
    551549                $(addprefix $(VBOX_PATH_MANUAL_SRC)/en_US/,$(VBOX_ACCESSIBILITY_XML_FILES)) \
    552550                $(VBOX_DOCBOOK_HTML_ONE_PAGE_FORMATCFG) \
    553                 $(VBOX_XML_CATALOG) $(VBOX_XML_CATALOG_DOCBOOK) $(VBOX_XML_CATALOG_MANUAL) \
     551                $(VBOX_XML_CATALOG) \
     552                $(VBOX_XML_CATALOG_DOCBOOK) \
     553                $(VBOX_XML_CATALOG_MANUAL) \
    554554                $(VBOX_XML_ENTITIES) | $$(dir $$@)
    555555        $(call MSG_TOOL,xsltproc $(notdir $(firstword $(filter %.xsl,$^))),,$(firstword $(filter %.xml,$^)),$@)
     
    577577
    578578
    579  # A few things which are shared between htmlhelp and qhelp docs.
    580  VBOX_DOCBOOK_HTMLHELP_FORMATCFG = \
    581         $(VBOX_PATH_MANUAL_SRC)/docbook-htmlhelp-formatcfg.xsl \
    582         $(VBOX_PATH_MANUAL_SRC)/common-formatcfg.xsl \
    583         $(VBOX_PATH_MANUAL_SRC)/common-html-formatcfg.xsl
    584 
    585  # Prepare the XSL file for our title page, htmlhelp and qhelp variant.
    586  $(VBOX_PATH_MANUAL_OUTBASE)/titlepage-htmlhelp.xsl: \
    587                 $(VBOX_PATH_MANUAL_SRC)/titlepage-htmlhelp.xml $(MAKEFILE_CURRENT) | $$(dir $$@)
    588         $(call MSG_L1,xsltproc $<)
    589         $(QUIET)$(RM) -f [email protected] $@
    590         $(QUIET)$(VBOX_XSLTPROC) --xinclude --nonet -o [email protected] $(VBOX_PATH_DOCBOOK)/template/titlepage.xsl $<
    591         $(QUIET)$(MV) -f [email protected] $@
    592 
    593  # Packing the docs into a zip file
    594  ifneq ($(VBOX_MANUAL_PACK),)
    595   $(PATH_STAGE_BIN)/VBoxDocumentation.zip: $(VBOX_MANUAL_PACK)
    596         $(call MSG_L1,Packing documentation $@)
    597         $(QUIET)$(RM) -f $@
    598         $(QUIET)$(REDIRECT) -C $(PATH_STAGE_BIN) -- $(VBOX_ZIP) -9 $@ $(notdir $^)
    599  endif
     579 #################################################################################################################################
     580 #      The UserManual in all its output variations (DITA-OT).                                                                   #
     581 #################################################################################################################################
    600582
    601583
     
    620602 ##########################################################################################
    621603
    622  VBOX_USER_MANUAL_STAGED_DITA_FILES  := $(addprefix $(VBOX_PATH_MANUAL_OUTBASE)/en_US/dita/topics/, \
    623                 $(notdir $(wildcard $(VBOX_PATH_MANUAL_SRC)/en_US/dita/topics/*dita)))
    624  VBOX_USER_MANUAL_STAGED_IMAGE_FILES := $(addprefix $(VBOX_PATH_MANUAL_OUTBASE)/en_US/dita/topics/images/, \
    625                 $(notdir $(wildcard $(VBOX_PATH_MANUAL_SRC)/en_US/dita/topics/images/*)))
    626 
    627  $(VBOX_USER_MANUAL_STAGED_DITA_FILES) \
    628  $(VBOX_USER_MANUAL_STAGED_IMAGE_FILES) \
    629  $(VBOX_PATH_MANUAL_OUTBASE)/en_US/dita/UserManual.ditamap: \
    630                 $(VBOX_PATH_MANUAL_OUTBASE)/en_US/dita/% : \
    631                 $(VBOX_PATH_MANUAL_SRC)/en_US/dita/% | $$(dir $$@)
    632         $(QUIET)$(INSTALL_STAGING) -m 0644 -- "$<" "$(@D)/"
    633 
    634  $(VBOX_PATH_MANUAL_OUTBASE)/en_US/dita/topics/reference.dtd: | $$(dir $$@)
    635         $(QUIET)$(TOUCH) -- "$@"
    636 
    637  $(VBOX_PATH_MANUAL_OUTBASE)/en_US/dita/topics/man_VBoxManage-dhcpserver-dhcpoptions.xml: \
    638                 $(VBOX_PATH_MANUAL_SRC)/en_US/man_VBoxManage-dhcpserver-dhcpoptions.xml | $$(dir $$@)
    639         $(QUIET)$(INSTALL_STAGING) -m 0644 -- "$<" "$(@D)/"
    640 
     604 #
     605 # We copy/hardlink all the files under <lang>/dita/* to the corresponding
     606 # VBOX_PATH_MANUAL_OUTBASE location.  This is mainly to deal with DITO-OT's
     607 # inability to search for topic files in more than one place, so we have to
     608 # gather generated and static topic sources + the .ditamap-file(s) in one
     609 # place.
     610 #
     611
     612 # Determin the basic set of files as dictated by the en_US version of the
     613 # user manual (relative to $(lang)/dita).  We'll use these to supply
     614 # incomplete manual translations.
     615 # Note! This includes .png as well as .dita and .ditamap files.
     616 VBOX_USER_MANUAL_DITA_BASIC_SRC_FILES := \
     617        $(notdir $(wildcard $(VBOX_PATH_MANUAL_SRC)/en_US/dita/*.ditamap)) \
     618        $(addprefix topics/,$(notdir $(wildcard $(VBOX_PATH_MANUAL_SRC)/en_US/dita/topics/*dita))) \
     619        $(addprefix topics/images/,$(notdir $(wildcard $(VBOX_PATH_MANUAL_SRC)/en_US/dita/topics/images/*png)))
     620
     621 ##
     622 # Produce copying rules for one language and defining the variable
     623 # VBOX_USER_MANUAL_DITA_STAGED_FILES_<lang> for use in prerequisite to
     624 # anything producing a version of the user manual.
     625 #
     626 # @param 1 lang
     627 define def_vbox_copy_manual_dita_src_files
     628  VBOX_USER_MANUAL_DITA_SRC_FILES_$(1) := \
     629        $$(notdir $$(wildcard $$(VBOX_PATH_MANUAL_SRC)/$1/dita/*.ditamap)) \
     630        $$(addprefix topics/,$$(notdir $$(wildcard $$(VBOX_PATH_MANUAL_SRC)/$1/dita/topics/*dita))) \
     631        $$(addprefix topics/images/,$$(notdir $$(wildcard $$(VBOX_PATH_MANUAL_SRC)/$1/dita/topics/images/*png)))
     632  VBOX_USER_MANUAL_DITA_SRC_FILES_$(1)_FALLBACK := \
     633        $$(filter-out $$(VBOX_USER_MANUAL_DITA_SRC_FILES_$(1)), $$(VBOX_USER_MANUAL_DITA_BASIC_SRC_FILES))
     634
     635  VBOX_USER_MANUAL_DITA_STAGED_FILES_$(1) = \
     636        $$(addprefix $$(VBOX_PATH_MANUAL_OUTBASE)/$1/dita/,\
     637                $$(VBOX_USER_MANUAL_DITA_SRC_FILES_$(1)) \
     638                $$(VBOX_USER_MANUAL_DITA_SRC_FILES_$(1)_FALLBACK) \
     639                topics/reference.dtd)
     640
     641  ifneq ($$(VBOX_USER_MANUAL_DITA_SRC_FILES_$(1)),)
     642   $$(addprefix $$(VBOX_PATH_MANUAL_OUTBASE)/$1/dita/,$$(VBOX_USER_MANUAL_DITA_SRC_FILES_$(1))): \
     643         $$(VBOX_PATH_MANUAL_OUTBASE)/$1/dita/%: \
     644                 $$(VBOX_PATH_MANUAL_SRC)/$1/dita/% | $$$$(dir $$$$@)
     645        $$(QUIET)$$(INSTALL_STAGING) -m 0644 -- "$$<" "$$(@D)/"
     646  endif
     647
     648  ifneq ($$(VBOX_USER_MANUAL_DITA_SRC_FILES_$(1)_FALLBACK),)
     649   $$(addprefix $$(VBOX_PATH_MANUAL_OUTBASE)/$1/dita/,$$(VBOX_USER_MANUAL_DITA_SRC_FILES_$(1)_FALLBACK)): \
     650         $$(VBOX_PATH_MANUAL_OUTBASE)/$1/dita/%: \
     651         $$(VBOX_PATH_MANUAL_SRC)/en_US/dita/% | $$$$(dir $$$$@)
     652        $$(QUIET)$$(INSTALL_STAGING) -m 0644 -- "$$<" "$$(@D)/"
     653  endif
     654
     655  ## @todo r=bird: Dummy to shut up warnings?
     656  $$(VBOX_PATH_MANUAL_OUTBASE)/$1/dita/topics/reference.dtd: | $$$$(dir $$$$@)
     657        $$(QUIET)$$(TOUCH) -- "$$@"
     658
     659  ## @todo r=bird: Not sure why this is needed, it's in Docbook format.
     660  ## Logically, it belongs to the refentry -> dita conversion below...
     661  $$(VBOX_PATH_MANUAL_OUTBASE)/$1/dita/topics/man_VBoxManage-dhcpserver-dhcpoptions.xml: \
     662                $(VBOX_PATH_MANUAL_SRC)/en_US/man_VBoxManage-dhcpserver-dhcpoptions.xml | $$$$(dir $$$$@)
     663        $$(QUIET)$$(INSTALL_STAGING) -m 0644 -- "$$<" "$$(@D)/"
     664
     665 endef
     666 $(foreach lang, $(VBOX_MANUAL_ALL_LANGUAGES),$(evalcall2 def_vbox_copy_manual_dita_src_files,$(lang)))
     667
     668 ## @todo r=bird: Will be eliminated.
    641669 $(VBOX_PATH_MANUAL_OUTBASE)/dita_common: \
    642                 $(VBOX_PATH_MANUAL_OUTBASE)/en_US/dita/UserManual.ditamap \
    643                 $(VBOX_PATH_MANUAL_OUTBASE)/en_US/dita/topics/reference.dtd \
    644                 $(VBOX_USER_MANUAL_STAGED_DITA_FILES) \
    645                 $(VBOX_USER_MANUAL_STAGED_IMAGE_FILES) \
     670                $(VBOX_USER_MANUAL_DITA_STAGED_FILES_en_US) \
    646671                $$(VBOX_USER_MANUAL_CONVERTED_REFENTRY_DITA_FILES)
    647672        $(call MSG_L1, Ran common dita steps)
     
    708733                --mapping-file "$$(VBOX_USER_MANUAL_ID_MAPPING_FILE)" "$$@"
    709734 endef
    710  $(foreach lang,$(VBOX_MANUAL_LANGUAGES) \
     735 $(foreach lang,$(VBOX_MANUAL_ALL_LANGUAGES) \
    711736 ,$(foreach file,$(VBOX_MANUAL_XML_REFENTRY_FILES) man_vboximg-mount.xml man_VBoxHeadless.xml \
    712737 ,$(evalcall2 def_vbox_refentry_to_dita,$(lang),$(file))))
     
    727752
    728753 $(VBOX_PATH_MANUAL_OUTBASE)/en_US/html-chunks/index.html: \
     754                $(VBOX_USER_MANUAL_DITA_STAGED_FILES_en_US) \
    729755                $(VBOX_PATH_MANUAL_OUTBASE)/dita_common
    730756        $(call MSG_L1,Building html chunks $@)
     
    746772 qhelp:: $(addprefix $(VBOX_PATH_MANUAL_OUTBASE)/en_US/qhelp/, $(VBOX_QHELP_OUTPUT_FILES))
    747773 html-zip:: $(VBOX_PATH_MANUAL_OUTBASE)/en_US/UserManual.zip
     774
     775 #
     776 # A few things which are shared between htmlhelp and qhelp docs.
     777 # TODO: This is Docbook related work.  Left here in case we can reuse some of
     778 #       the ideas from it for DITA-OT.
     779 #
     780
     781 VBOX_DOCBOOK_HTMLHELP_FORMATCFG = \
     782        $(VBOX_PATH_MANUAL_SRC)/docbook-htmlhelp-formatcfg.xsl \
     783        $(VBOX_PATH_MANUAL_SRC)/common-formatcfg.xsl \
     784        $(VBOX_PATH_MANUAL_SRC)/common-html-formatcfg.xsl
     785
     786 # Prepare the XSL file for our title page, htmlhelp and qhelp variant.
     787 $(VBOX_PATH_MANUAL_OUTBASE)/titlepage-htmlhelp.xsl: \
     788                $(VBOX_PATH_MANUAL_SRC)/titlepage-htmlhelp.xml $(MAKEFILE_CURRENT) | $$(dir $$@)
     789        $(call MSG_L1,xsltproc $<)
     790        $(QUIET)$(RM) -f [email protected] $@
     791        $(QUIET)$(VBOX_XSLTPROC) --xinclude --nonet -o [email protected] $(VBOX_PATH_DOCBOOK)/template/titlepage.xsl $<
     792        $(QUIET)$(MV) -f [email protected] $@
    748793
    749794
     
    766811                $$(VBOX_MANUAL_XML_FILES_COMMON) \
    767812                $$(VBOX_MANUAL_XML_FILES_GENERATED_$(lang)) \
     813                $$(VBOX_USER_MANUAL_DITA_STAGED_FILES_$(lang)) \
    768814                $$(VBOX_PATH_MANUAL_OUTBASE)/dita_common
    769815        $$(QUIET)$(RM) -f -- "$$@"
     
    777823  ditamap-to-pdf: $$(VBOX_PATH_MANUAL_OUTBASE)/$(1)/UserManual.pdf
    778824 endef
    779  $(foreach lang,$(VBOX_MANUAL_LANGUAGES),$(evalcall2 def_ditamap_to_pdf,$(lang)))
     825 $(foreach lang,$(VBOX_MANUAL_ALL_LANGUAGES),$(evalcall2 def_ditamap_to_pdf,$(lang)))
    780826
    781827 # Useful aliases
     
    803849
    804850
    805 #
    806 # VBoxManage man pages (parts also required by VBoxManage built-in help).
    807 #
    808 
    809 ##
    810 # Emits rules for preprocessing refentry sources (applying remarks element),
    811 # and for producing the actual man pages.
    812 # $(evalcall2 def_vbox_refentry_to_manpage)
    813 # @param    1   The language
    814 # @param    2   The file name (no path).
    815 define def_vbox_refentry_to_manpage
    816  $$(VBOX_PATH_MANUAL_OUTBASE)/$(1)/$(2): \
    817                 $$(VBOX_PATH_MANUAL_SRC)/$(1)/$(2) \
    818                 $$(VBOX_PATH_MANUAL_SRC)/docbook-refentry-to-manpage-preprocessing.xsl \
    819                 $$(VBOX_PATH_MANUAL_OUTBASE)/$(1)/$$(VBOX_XML_XREF_TO_TEXT) \
    820                 $$(VBOX_XML_CATALOG) $$(VBOX_XML_CATALOG_DOCBOOK) $$(VBOX_XML_CATALOG_MANUAL) \
    821                 $$(VBOX_XML_ENTITIES) $$(VBOX_VERSION_STAMP) | $$$$(dir $$$$@)
     851 #
     852 # VBoxManage man pages (parts also required by VBoxManage built-in help).
     853 #
     854
     855 ##
     856 # Emits rules for preprocessing refentry sources (applying remarks element),
     857 # and for producing the actual man pages.
     858 # $(evalcall2 def_vbox_refentry_to_manpage)
     859 # @param    1   The language
     860 # @param    2   The file name (no path).
     861 define def_vbox_refentry_to_manpage
     862  $$(VBOX_PATH_MANUAL_OUTBASE)/$(1)/$(2): \
     863                $$(VBOX_PATH_MANUAL_SRC)/$(1)/$(2) \
     864                $$(VBOX_PATH_MANUAL_SRC)/docbook-refentry-to-manpage-preprocessing.xsl \
     865                $$(VBOX_PATH_MANUAL_OUTBASE)/$(1)/$$(VBOX_XML_XREF_TO_TEXT) \
     866                $$(VBOX_XML_CATALOG) $$(VBOX_XML_CATALOG_DOCBOOK) $$(VBOX_XML_CATALOG_MANUAL) \
     867                $$(VBOX_XML_ENTITIES) $$(VBOX_VERSION_STAMP) | $$$$(dir $$$$@)
    822868        $$(call MSG_TOOL,xsltproc $$(notdir $$(firstword $$(filter %.xsl,$$^))),,$$(firstword $$(filter %.xml,$$^)),$$@)
    823869        $$(QUIET)$$(RM) -f "$$@"
     
    826872        $$(QUIET)$$(call VBOX_XSLTPROC_WITH_CAT) --output [email protected] $$(VBOX_PATH_MANUAL_OUTBASE)/$(1)/$$(VBOX_XML_XREF_TO_TEXT) $$@
    827873        $$(QUIET)$$(MV) -f -- "[email protected]" "$$@"
    828  if defined(VBOX_HAVE_XMLLINT)
     874  if defined(VBOX_HAVE_XMLLINT)
    829875        $$(VBOX_XMLLINT_WITH_CAT) --dtdvalid $$(VBOX_PATH_DOCBOOK_DTD)/docbookx.dtd $$@
    830  endif
    831 
    832  $$(VBOX_PATH_MANUAL_OUTBASE)/$(1)/$(patsubst man_%,%.1,$(basename $(2))): \
    833                 $$(VBOX_PATH_MANUAL_OUTBASE)/$(1)/$(2) \
    834                 $$(VBOX_PATH_MANUAL_SRC)/docbook-refentry-to-manpage.xsl \
    835                 $$(VBOX_XML_CATALOG) $$(VBOX_XML_CATALOG_DOCBOOK) $$(VBOX_XML_CATALOG_MANUAL) \
    836                 $$(VBOX_XML_ENTITIES) $$(VBOX_VERSION_STAMP) | $$$$(dir $$$$@)
     876  endif
     877
     878  $$(VBOX_PATH_MANUAL_OUTBASE)/$(1)/$(patsubst man_%,%.1,$(basename $(2))): \
     879                $$(VBOX_PATH_MANUAL_OUTBASE)/$(1)/$(2) \
     880                $$(VBOX_PATH_MANUAL_SRC)/docbook-refentry-to-manpage.xsl \
     881                $$(VBOX_XML_CATALOG) $$(VBOX_XML_CATALOG_DOCBOOK) $$(VBOX_XML_CATALOG_MANUAL) \
     882                $$(VBOX_XML_ENTITIES) $$(VBOX_VERSION_STAMP) | $$$$(dir $$$$@)
    837883        $$(call MSG_TOOL,xsltproc $$(notdir $$(firstword $$(filter %.xsl,$$^))),,$$(firstword $$(filter %.xml,$$^)),$$@)
    838884        $$(QUIET)$$(RM) -f "$$@"
    839885        $$(QUIET)$$(call VBOX_XSLTPROC_WITH_CAT) --maxdepth 6000 --output $$@ $$(VBOX_PATH_MANUAL_SRC)/docbook-refentry-to-manpage.xsl $$<
    840 endef
    841 $(foreach lang,$(VBOX_MANUAL_LANGUAGES),$(foreach file,$(VBOX_MANUAL_XML_REFENTRY_FILES) \
    842 , $(evalcall2 def_vbox_refentry_to_manpage,$(lang),$(file))))
    843 
    844 ifdef VBOX_WITH_DOCS_QHELP
    845  #
    846  # VirtualBox.qch/VirtualBox.qhc
    847  #
    848  # We first generate a .hhp help source file from the preprocessed
    849  # DocBook XML files, as defined above, then feed that into a converter
    850  # creating the suitable input for creating a QHelp collection file.
    851 
    852  # Generate QCH from QHelp source
    853  # Note: out_dir referenced with double $$ to delay expansion to the eval step when out_dir has been defined.
    854  define def_vbox_usermanual_qhp_to_qch
    855   local out_dir := $(VBOX_PATH_MANUAL_OUTBASE)/$(lang)
    856   $$(out_dir)/qhelp/UserManual.qch \
    857   + $$(out_dir)/qhelp/UserManual.qhc: \
    858                 $$(out_dir)/qhelp/UserManual.qhcp \
    859                 $$(out_dir)/qhelp/UserManual.qhp \
    860                 $$(addprefix $$(out_dir)/qhelp/,$$(VBOX_MANUAL_PNG_FILES_$(lang))) \
    861                 | $$$$(dir $$$$@)
     886 endef
     887 $(foreach lang,$(VBOX_MANUAL_ALL_LANGUAGES),$(foreach file,$(VBOX_MANUAL_XML_REFENTRY_FILES) \
     888                , $(evalcall2 def_vbox_refentry_to_manpage,$(lang),$(file))))
     889
     890 # Handy aliases.
     891 validate-manpages:: $(addprefix $(VBOX_PATH_MANUAL_OUTBASE)/en_US/,$(VBOX_MANUAL_XML_REFENTRY_FILES))
     892 man-experiment:: $(foreach lang,$(VBOX_MANUAL_ALL_LANGUAGES),$(foreach file,$(VBOX_MANUAL_XML_REFENTRY_FILES) \
     893                                ,$$(VBOX_PATH_MANUAL_OUTBASE)/$(lang)/$(patsubst man_%,%.1,$(basename $(file)))))
     894
     895 #
     896 # Manually updating the DHCP option list taken from VirtualBox.xidl
     897 #
     898 dhcpoptions: $(PATH_ROOT)/doc/manual/en_US/man_VBoxManage-dhcpserver-dhcpoptions.xsl \
     899                $(PATH_ROOT)/src/VBox/Main/idl/VirtualBox.xidl
     900        $(call VBOX_XSLTPROC) --output "$(PATH_ROOT)/doc/manual/en_US/man_VBoxManage-dhcpserver-dhcpoptions.xml" $^
     901
     902
     903 if defined(VBOX_WITH_DOCS_QHELP) && !defined(VBOX_ONLY_SDK)
     904  #
     905  # VirtualBox.qch/VirtualBox.qhc
     906  #
     907  # We first generate a .hhp help source file from the preprocessed
     908  # DocBook XML files, as defined above, then feed that into a converter
     909  # creating the suitable input for creating a QHelp collection file.
     910  #
     911
     912  # Enable Qt and locate the Qt help generator.
     913  ifdef VBOX_WITH_QT6
     914   USES += qt6
     915   VBOX_QHELPGENERATOR = $(PATH_TOOL_QT6_LIBEXEC)/qhelpgenerator
     916  else
     917   USES += qt5
     918   VBOX_QHELPGENERATOR_VERSION_MINOR = $(shell $(REDIRECT) -E QT_QPA_PLATFORM_PLUGIN_PATH=$(PATH_SDK_QT5)/plugins -- $(PATH_TOOL_QT5_BIN)/qhelpgenerator -v 2>/dev/null | $(SED) -ne 's/.*(Qt [1-9][0-9]*\.\([1-9][0-9]*\)\.[1-9][0-9]*).*$$/\1/p')
     919   VBOX_QHELPGENERATOR = $(PATH_TOOL_QT5_BIN)/$(if-expr $(VBOX_QHELPGENERATOR_VERSION_MINOR) >= 12,qhelpgenerator,qcollectiongenerator)
     920  endif
     921
     922  # Generate QCH from QHelp source
     923  # Note: out_dir referenced with double $$ to delay expansion to the eval step when out_dir has been defined.
     924  define def_vbox_usermanual_qhp_to_qch
     925   local out_dir := $(VBOX_PATH_MANUAL_OUTBASE)/$(lang)
     926   $$(out_dir)/qhelp/UserManual.qch \
     927   + $$(out_dir)/qhelp/UserManual.qhc: \
     928                $$(out_dir)/qhelp/UserManual.qhcp \
     929                $$(out_dir)/qhelp/UserManual.qhp \
     930                $$(addprefix $$(out_dir)/qhelp/,$$(VBOX_MANUAL_PNG_FILES_$(lang))) \
     931                | $$$$(dir $$$$@)
    862932        $$(call MSG_L1,$$(notdir $$(VBOX_QHELPGENERATOR)) $$<,=> $$@)
    863933        $$(QUIET)$$(RM) -f $$@
    864934        $$(QUIET)$$(REDIRECT) -E QT_QPA_PLATFORM_PLUGIN_PATH=$$(PATH_SDK_QT5)/plugins -- $$(VBOX_QHELPGENERATOR) $$<
    865935        $$(call MSG_L1,Fresh QCH is now at $$@)
    866  endef
    867  $(foreach lang,$(VBOX_MANUAL_LANGUAGES),$(evalcall2 def_vbox_usermanual_qhp_to_qch))
    868 
    869  # Generate QHP from HHP for QHelp
    870  # Note: out_dir referenced with double $$ to delay expansion to the eval step when out_dir has been defined.
    871  define def_vbox_usermanual_hhp_qhelp_to_qhp
    872   local out_dir := $(VBOX_PATH_MANUAL_OUTBASE)/$(lang)
    873   $$(out_dir)/qhelp/UserManual.qhp: \
    874                 $$(out_dir)/qhelp/UserManual.hhp \
    875                 $$(addprefix $$(out_dir)/qhelp/,$$(VBOX_MANUAL_PNG_FILES_$(lang))) \
    876                 | $$$$(dir $$$$@)
     936  endef
     937  $(foreach lang,$(VBOX_MANUAL_ALL_LANGUAGES),$(evalcall2 def_vbox_usermanual_qhp_to_qch))
     938
     939  # Generate QHP from HHP for QHelp
     940  # Note: out_dir referenced with double $$ to delay expansion to the eval step when out_dir has been defined.
     941  define def_vbox_usermanual_hhp_qhelp_to_qhp
     942   local out_dir := $(VBOX_PATH_MANUAL_OUTBASE)/$(lang)
     943   $$(out_dir)/qhelp/UserManual.qhp: \
     944                $$(out_dir)/qhelp/UserManual.hhp \
     945                $$(addprefix $$(out_dir)/qhelp/,$$(VBOX_MANUAL_PNG_FILES_$(lang))) \
     946                | $$$$(dir $$$$@)
    877947        $$(call MSG_L1,htmlhelp-qthelp.py $$<,=> $$@)
    878948        $$(QUIET)$$(RM) -f $$@
    879949        $$(QUIET)$$(VBOX_BLD_PYTHON) $$(VBOX_PATH_MANUAL_SRC)/htmlhelp-qthelp.py -d $$(<D) -o $$@ -f UserManual.hhp -t UserManual.hhc
    880  endef
    881  $(foreach lang,$(VBOX_MANUAL_LANGUAGES),$(evalcall2 def_vbox_usermanual_hhp_qhelp_to_qhp))
    882 
    883 
    884  # Setting HHCDIR here so that it fails to locate hcc.exe and always skips the
    885  # compilation step that produces the .chm-file, since we don't need it and it
    886  # mangles the path so it always fails anyway.
    887  define def_ditamap_to_htmlhelp
    888   ditamap-to-htmlhelp: $$(VBOX_PATH_MANUAL_OUTBASE)/$(1)/qhelp/UserManual.hhp
    889   $$(VBOX_PATH_MANUAL_OUTBASE)/$(1)/qhelp/UserManual.hhp: \
    890                 $(VBOX_PATH_MANUAL_OUTBASE)/dita_common
     950  endef
     951  $(foreach lang,$(VBOX_MANUAL_ALL_LANGUAGES),$(evalcall2 def_vbox_usermanual_hhp_qhelp_to_qhp))
     952
     953  # Setting HHCDIR here so that it fails to locate hcc.exe and always skips the
     954  # compilation step that produces the .chm-file, since we don't need it and it
     955  # mangles the path so it always fails anyway.
     956  define def_ditamap_to_htmlhelp
     957   ditamap-to-htmlhelp: $$(VBOX_PATH_MANUAL_OUTBASE)/$(1)/qhelp/UserManual.hhp
     958   $$(VBOX_PATH_MANUAL_OUTBASE)/$(1)/qhelp/UserManual.hhp: \
     959                $(VBOX_USER_MANUAL_DITA_STAGED_FILES_$(1)) \
     960                $(VBOX_PATH_MANUAL_OUTBASE)/dita_common
    891961        $$(QUIET)$(RM) -Rf -- "$$(VBOX_PATH_MANUAL_OUTBASE)/$(1)/dita-ot-qhelp/"
    892962        $$(QUIET)$$(call VBOX_DITA_RUN_DOST,$$(VBOX_PATH_MANUAL_OUTBASE)/$(1)/dita-ot-qhelp, -EHHCDIR="$$(@D)") \
     
    896966                "/tempdir:$$(VBOX_PATH_MANUAL_OUTBASE)/$(1)/dita/temp_htmlhelp"
    897967
    898  endef
    899  $(foreach lang,$(VBOX_MANUAL_LANGUAGES),$(evalcall2 def_ditamap_to_htmlhelp,$(lang)))
    900 
    901  # copy the qhcp file.
    902  define def_vbox_cp_qhcp
    903   local out_dir := $(VBOX_PATH_MANUAL_OUTBASE)/$(lang)/qhelp
    904   $$(out_dir)/UserManual.qhcp: \
    905                 $$(out_dir)/% : $(VBOX_PATH_MANUAL_SRC)/% | $$$$(dir $$$$@)
     968  endef
     969  $(foreach lang,$(VBOX_MANUAL_ALL_LANGUAGES),$(evalcall2 def_ditamap_to_htmlhelp,$(lang)))
     970
     971  # copy the qhcp file.
     972  define def_vbox_cp_qhcp
     973   local out_dir := $(VBOX_PATH_MANUAL_OUTBASE)/$(lang)/qhelp
     974   $$(out_dir)/UserManual.qhcp: \
     975                $$(out_dir)/% : $(VBOX_PATH_MANUAL_SRC)/% | $$$$(dir $$$$@)
    906976        $$(QUIET)$$(INSTALL_STAGING) -m0644 -- '$$<' '$$(@D)'
    907  endef
    908  $(foreach lang,$(VBOX_MANUAL_LANGUAGES),$(eval $(def_vbox_cp_qhcp)))
    909 
    910  # copy the PNG files.
    911  # Note: out_dir referenced with double $$ to delay expansion to the eval step when out_dir has been defined.
    912  define def_vbox_cp_images_qhelp
    913   local out_dir := $(VBOX_PATH_MANUAL_OUTBASE)/$(lang)/qhelp
    914   $(addprefix $$(out_dir)/,$(VBOX_MANUAL_PNG_FILES_$(lang))): \
    915                 $$(out_dir)/% : $(VBOX_PATH_MANUAL_SRC)/$(lang)/% | $$$$(dir $$$$@)
     977  endef
     978  $(foreach lang,$(VBOX_MANUAL_ALL_LANGUAGES),$(eval $(def_vbox_cp_qhcp)))
     979
     980  # copy the PNG files.
     981  # Note: out_dir referenced with double $$ to delay expansion to the eval step when out_dir has been defined.
     982  define def_vbox_cp_images_qhelp
     983   local out_dir := $(VBOX_PATH_MANUAL_OUTBASE)/$(lang)/qhelp
     984   $(addprefix $$(out_dir)/,$(VBOX_MANUAL_PNG_FILES_$(lang))): \
     985                $$(out_dir)/% : $(VBOX_PATH_MANUAL_SRC)/$(lang)/% | $$$$(dir $$$$@)
    916986        $$(call MSG_L1,Copying temporary $$< => $$@)
    917987        $$(QUIET)$$(INSTALL_STAGING) -m0644 -- '$$<' '$$(@D)'
    918  endef
    919  $(foreach lang,$(VBOX_MANUAL_LANGUAGES),$(eval $(def_vbox_cp_images_qhelp)))
    920 
    921 endif # VBOX_WITH_DOCS_QHELP
    922 
    923 # Handy aliases.
    924 validate-manpages:: $(addprefix $(VBOX_PATH_MANUAL_OUTBASE)/en_US/,$(VBOX_MANUAL_XML_REFENTRY_FILES))
    925 man-experiment:: $(foreach lang,$(VBOX_MANUAL_LANGUAGES),$(foreach file,$(VBOX_MANUAL_XML_REFENTRY_FILES) \
    926                                 ,$$(VBOX_PATH_MANUAL_OUTBASE)/$(lang)/$(patsubst man_%,%.1,$(basename $(file)))))
    927 
    928 #
    929 # Manually updating the DHCP option list taken from VirtualBox.xidl
    930 #
    931 dhcpoptions: $(PATH_ROOT)/doc/manual/en_US/man_VBoxManage-dhcpserver-dhcpoptions.xsl \
    932                 $(PATH_ROOT)/src/VBox/Main/idl/VirtualBox.xidl
    933         $(call VBOX_XSLTPROC) --output "$(PATH_ROOT)/doc/manual/en_US/man_VBoxManage-dhcpserver-dhcpoptions.xml" $+
    934 
     988  endef
     989  $(foreach lang,$(VBOX_MANUAL_ALL_LANGUAGES),$(eval $(def_vbox_cp_images_qhelp)))
     990
     991 endif # VBOX_WITH_DOCS_QHELP && !VBOX_ONLY_SDK
     992
     993
     994 #
     995 # Packing the docs into a zip file (part of the packing pass on the docs build box).
     996 #
     997 ifneq ($(VBOX_MANUAL_PACK),)
     998  $(PATH_STAGE_BIN)/VBoxDocumentation.zip: $(VBOX_MANUAL_PACK)
     999        $(call MSG_L1,Packing documentation $@)
     1000        $(QUIET)$(RM) -f $@
     1001        $(QUIET)$(REDIRECT) -C $(PATH_STAGE_BIN) -- $(VBOX_ZIP) -9 $@ $(notdir $^)
     1002 endif
    9351003
    9361004endif # if defined(VBOX_WITH_DOCS) && (!defined(VBOX_ONLY_BUILD) || defined(VBOX_ONLY_DOCS) || defined(VBOX_ONLY_SDK))
Note: See TracChangeset for help on using the changeset viewer.

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