diff options
Diffstat (limited to 'doc/doc_targets.pri')
-rw-r--r-- | doc/doc_targets.pri | 114 |
1 files changed, 73 insertions, 41 deletions
diff --git a/doc/doc_targets.pri b/doc/doc_targets.pri index 79f485721..16fbfa2b4 100644 --- a/doc/doc_targets.pri +++ b/doc/doc_targets.pri @@ -1,49 +1,81 @@ -# This pri file can be included by other projects that want to provide the qbs documentation. -# Common variables like QDOC_BIN or HELPGENERATOR must be provided by the including file. -QBS_VERSION_TAG = $$replace(QBS_VERSION, "[-.]", ) - -isEmpty(QBS_DOCS_BUILD_DIR): QBS_DOCS_BUILD_DIR = $$OUT_PWD/doc -isEmpty(QBS_HTML_DOC_PATH): QBS_HTML_DOC_PATH = $$QBS_DOCS_BUILD_DIR/html -equals(QMAKE_DIR_SEP, /) { # unix, mingw+msys - QDOC = SRCDIR=$$PWD OUTDIR=$$QBS_HTML_DOC_PATH QBS_VERSION=$$QBS_VERSION QBS_VERSION_TAG=$$QBS_VERSION_TAG QT_INSTALL_DOCS=$$[QT_INSTALL_DOCS] $$QDOC_BIN -} else: mingw { - # The lack of spaces in front of the && is necessary! - QDOC = set SRCDIR=$$PWD&& set OUTDIR=$$QBS_HTML_DOC_PATH&& set QBS_VERSION=$$QBS_VERSION&& set QBS_VERSION_TAG=$$QBS_VERSION_TAG&& set QT_INSTALL_DOCS=$$[QT_INSTALL_DOCS]&& $$QDOC_BIN -} else { # nmake - QDOC = set SRCDIR=$$PWD $$escape_expand(\\n\\t) \ - set OUTDIR=$$QBS_HTML_DOC_PATH $$escape_expand(\\n\\t) \ - set QBS_VERSION=$$QBS_VERSION $$escape_expand(\\n\\t) \ - set QBS_VERSION_TAG=$$QBS_VERSION_TAG $$escape_expand(\\n\\t) \ - set QT_INSTALL_DOCS=$$[QT_INSTALL_DOCS] $$escape_expand(\\n\\t) \ - $$QDOC_BIN -} +# Creates targets for building documentation +# (adapted from qt_docs.prf) +# +# Usage: Define variables (details below) and include this pri file afterwards. +# +# QDOC_ENV - environment variables to set for the qdoc call (see example below) +# DOC_INDEX_PATHS - list of paths where qdoc should search for index files of dependent +# modules (Qt index path is included by default) +# DOC_FILES - list of qdocconf files +# DOC_OUTDIR_POSTFIX - html is generated in $$OUT_PWD/<qdocconf_name>$$DOC_OUTDIR_POSTFIX +# DOC_HTML_INSTALLDIR - path were to install the directory of html files +# DOC_QCH_OUTDIR - path where to generated the qch files +# DOC_QCH_INSTALLDIR - path where to install the qch files +# +# Example for QDOC_ENV: +# ver.name = VERSION +# ver.value = 1.0.2 +# foo.name = FOO +# foo.value = foo +# QDOC_ENV = ver foo + +isEmpty(DOC_FILES): error("Set DOC_FILES before including doc_targets.pri") +isEmpty(DOC_HTML_INSTALLDIR): error("Set DOC_HTML_INSTALLDIR before including doc_targets.pri") +isEmpty(DOC_QCH_OUTDIR): error("Set DOC_QCH_OUTDIR before including doc_targets.pri") +isEmpty(DOC_QCH_INSTALLDIR): error("Set DOC_QCH_INSTALLDIR before including doc_targets.pri") + +QT_TOOL_ENV = $$QDOC_ENV +qtPrepareTool(QDOC, qdoc) +QT_TOOL_ENV = + +!build_online_docs: qtPrepareTool(QHELPGENERATOR, qhelpgenerator) + +DOCS_BASE_OUTDIR = $$OUT_PWD/doc +DOC_INDEXES += -indexdir $$shell_quote($$[QT_INSTALL_DOCS]) +for (index_path, DOC_INDEX_PATHS): \ + DOC_INDEXES += -indexdir $$shell_quote($$index_path) -QBS_QHP_FILE = $$QBS_HTML_DOC_PATH/qbs.qhp -QBS_QCH_FILE = $$QBS_DOCS_BUILD_DIR/qbs.qch +for (doc_file, DOC_FILES) { + !exists($$doc_file): error("Cannot find documentation specification file $$doc_file") + DOC_TARGET = $$replace(doc_file, ^(.*/)?(.*)\\.qdocconf$, \\2) + DOC_TARGETDIR = $$DOC_TARGET + DOC_OUTPUTDIR = $${DOCS_BASE_OUTDIR}/$${DOC_TARGETDIR}$${DOC_OUTDIR_POSTFIX} -QBS_HELP_DEP_FILES = \ - $$PWD/qbs.qdoc \ - $$PWD/qbs.qdocconf + html_docs_$${DOC_TARGET}.commands = $$QDOC -outputdir $$shell_quote($$DOC_OUTPUTDIR) $$doc_file $$DOC_INDEXES + QMAKE_EXTRA_TARGETS += html_docs_$${DOC_TARGET} -qbs_html_docs.commands = $$QDOC $$PWD/qbs.qdocconf -qbs_html_docs.depends += $$QBS_HELP_DEP_FILES + !isEmpty(html_docs.commands): html_docs.commands += && + html_docs.commands += $$eval(html_docs_$${DOC_TARGET}.commands) -qbs_qch_docs.commands = $$HELPGENERATOR -o $$shell_quote($$QBS_QCH_FILE) $$QBS_QHP_FILE -qbs_qch_docs.depends += qbs_html_docs + inst_html_docs.files += $$DOC_OUTPUTDIR -isEmpty(QBS_DOCS_INSTALL_DIR): QBS_DOCS_INSTALL_DIR = $${QBS_INSTALL_PREFIX}/share/doc/qbs -inst_qbs_qch_docs.files = $$QBS_QCH_FILE -inst_qbs_qch_docs.path = $$QBS_DOCS_INSTALL_DIR -inst_qbs_qch_docs.CONFIG += no_check_exist no_default_install -INSTALLS += inst_qbs_qch_docs + !build_online_docs { + qch_docs_$${DOC_TARGET}.commands = $$QHELPGENERATOR $$shell_quote($$DOC_OUTPUTDIR/$${DOC_TARGET}.qhp) -o $$shell_quote($$DOC_QCH_OUTDIR/$${DOC_TARGET}.qch) + qch_docs_$${DOC_TARGET}.depends = html_docs_$${DOC_TARGET} + QMAKE_EXTRA_TARGETS += qch_docs_$${DOC_TARGET} -inst_qbs_html_docs.files = $$QBS_HTML_DOC_PATH -inst_qbs_html_docs.path = $$inst_qbs_qch_docs.path -inst_qbs_html_docs.CONFIG += no_check_exist no_default_install directory -INSTALLS += inst_qbs_html_docs + !isEmpty(qch_docs.commands): qch_docs.commands += && + qch_docs.commands += $$eval(qch_docs_$${DOC_TARGET}.commands) + + inst_qch_docs.files += $$DOC_QCH_OUTDIR/$${DOC_TARGET}.qch + } +} + +!build_online_docs { + qch_docs.depends = html_docs + inst_qch_docs.path = $$DOC_QCH_INSTALLDIR + inst_qch_docs.CONFIG += no_check_exist no_default_install no_build + install_docs.depends = install_inst_qch_docs + docs.depends = qch_docs + INSTALLS += inst_qch_docs + QMAKE_EXTRA_TARGETS += qch_docs install_docs +} else { + docs.depends = html_docs +} -qbs_install_docs.depends = install_inst_qbs_qch_docs install_inst_qbs_html_docs -QMAKE_EXTRA_TARGETS += qbs_install_docs +inst_html_docs.path = $$DOC_HTML_INSTALLDIR +inst_html_docs.CONFIG += no_check_exist no_default_install directory +INSTALLS += inst_html_docs +install_docs.depends += install_inst_html_docs -qbs_docs.depends = qbs_qch_docs -QMAKE_EXTRA_TARGETS += qbs_html_docs qbs_qch_docs qbs_docs +QMAKE_EXTRA_TARGETS += html_docs docs |