From 600f2397b8d3d336b5d6faf8b49815641fe6f523 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Mon, 22 Oct 2012 12:17:19 +0200 Subject: Add config option to build documentation as a two-step process The new 'prepare_docs' CONFIG option triggers the documentation rules in default_post to generate two extra targets: prepare_docs and generate_docs. The prepare_docs stage runs qdoc with the -prepare option, which means qdoc will only generate index files, and the generate_docs stage will call qdoc with -generate, which reads the index files and generates the final output. The regular docs target will then run the prepare_docs target for all submodules before running the generate_docs target. This ensures that when generating the final output, qdoc has all the index files for all the other modules available, to be able to resolve cross-references between the various Qt modules. This patch needs a follow-up in qt5.git to add CONFIG+=prepare_docs, so that the root Qt5 build will be able to hook into this new behavior. Change-Id: I654d7f0d4d5a41d9be208e6d3a8923bf0194f9ad Reviewed-by: Jerome Pasion --- configure | 2 +- mkspecs/features/default_post.prf | 19 +++++++++++++++++-- src/tools/tools.pro | 6 +++--- tools/configure/configureapp.cpp | 2 +- 4 files changed, 22 insertions(+), 7 deletions(-) diff --git a/configure b/configure index 78ae73c2d4..3b39b80d2e 100755 --- a/configure +++ b/configure @@ -6048,7 +6048,7 @@ fi #------------------------------------------------------------------------------- QTMODULE="$outpath/mkspecs/qmodule.pri" -echo "CONFIG += $QMAKE_CONFIG create_prl link_prl" >> "$QTMODULE.tmp" +echo "CONFIG += $QMAKE_CONFIG create_prl link_prl prepare_docs" >> "$QTMODULE.tmp" echo "QT_BUILD_PARTS += $CFG_BUILD_PARTS" >> "$QTMODULE.tmp" if [ -n "$QT_CFLAGS_PSQL" ]; then diff --git a/mkspecs/features/default_post.prf b/mkspecs/features/default_post.prf index a77738222f..86ce168a8e 100644 --- a/mkspecs/features/default_post.prf +++ b/mkspecs/features/default_post.prf @@ -59,7 +59,13 @@ QMAKE_LIBDIR += $$QMAKE_LIBDIR_POST !contains(QMAKE_EXTRA_TARGETS, docs) { contains(TEMPLATE, subdirs) { - prepareRecursiveTarget(docs) + prepare_docs { + prepareRecursiveTarget(prepare_docs) + prepareRecursiveTarget(generate_docs) + docs.commands = $(MAKE) -f $(MAKEFILE) prepare_docs && $(MAKE) -f $(MAKEFILE) generate_docs + } else { + prepareRecursiveTarget(docs) + } } else { # apps and libs only generate docs if QMAKE_DOCS is set !isEmpty(QMAKE_DOCS) { @@ -68,10 +74,19 @@ QMAKE_LIBDIR += $$QMAKE_LIBDIR_POST for(index, QMAKE_DOCS_INDEX):QDOC_INDEX += -indexdir $$index !isEmpty(QMAKE_DOCS_OUTPUTDIR):QMAKE_DOCS_OPTIONS += -outputdir $$QMAKE_DOCS_OUTPUTDIR !isEmpty(QMAKE_DOCS_INSTALLDIR):QMAKE_DOCS_OPTIONS += -installdir $$QMAKE_DOCS_INSTALLDIR - docs.commands += $$QDOC $$QMAKE_DOCS_OPTIONS $$QDOC_INDEX $$QMAKE_DOCS + doc_command = $$QDOC $$QMAKE_DOCS_OPTIONS $$QDOC_INDEX $$QMAKE_DOCS + + prepare_docs { + prepare_docs.commands += $$doc_command -prepare -no-link-errors + generate_docs.commands += $$doc_command -generate + docs.depends += generate_docs + } else { + docs.commands += $$doc_command + } } } QMAKE_EXTRA_TARGETS += docs + prepare_docs: QMAKE_EXTRA_TARGETS += prepare_docs generate_docs } !contains(QMAKE_EXTRA_TARGETS, install_docs) { diff --git a/src/tools/tools.pro b/src/tools/tools.pro index c67d6bfd76..f7d1e651ff 100644 --- a/src/tools/tools.pro +++ b/src/tools/tools.pro @@ -38,6 +38,6 @@ SUBDIRS = $$TOOLS_SUBDIRS # Ensure qdoc is built before making any docs. We rely on the existing dependency # on bootstrap for each of the other tools to ensure they also build qdoc first, # and likewise, the dependency of the rest of the build on tools, src, etc. -bootstrap_docs.depends += $${src_tools_qdoc.target}-make_first -bootstrap_docs.target = $${src_tools_bootstrap.target}-docs -QMAKE_EXTRA_TARGETS += bootstrap_docs +bootstrap_prepare_docs.depends += $${src_tools_qdoc.target}-make_first +bootstrap_prepare_docs.target = $${src_tools_bootstrap.target}-prepare_docs +QMAKE_EXTRA_TARGETS += bootstrap_prepare_docs diff --git a/tools/configure/configureapp.cpp b/tools/configure/configureapp.cpp index 0d4d6d4ec9..58f7a9b511 100644 --- a/tools/configure/configureapp.cpp +++ b/tools/configure/configureapp.cpp @@ -2724,7 +2724,7 @@ void Configure::generateCachefile() if (!dictionary["DECORATIONS"].isEmpty()) moduleStream << "decorations += "<