From 9fde9ab167e52948d337de7fb7b871f7a1d75f43 Mon Sep 17 00:00:00 2001 From: Marius Storm-Olsen Date: Mon, 7 May 2012 13:54:52 +0200 Subject: [PATCH] Properly implement a 'make docs' target for subdirs and apps/libs Only call qdoc for projects which sets the QMAKE_DOCS variable to point to a qdocconf file. Exclude examples/ and tests/ from the qdoc run, by adding no_docs_target to CONFIG for those projects. Change-Id: Ic856c8f19db59309302d0602b3e99735609e525a Reviewed-by: Lars Knoll Reviewed-by: Oswald Buddenhagen Reviewed-by: Casper van Donderen --- examples/examples.pro | 2 ++ mkspecs/features/default_post.prf | 27 +++++++++++++++++++++++++++ src/corelib/corelib.pro | 4 +++- src/corelib/doc/doc.pri | 3 --- src/network/doc/doc.pri | 3 --- src/network/network.pro | 4 +++- src/sql/doc/doc.pri | 3 --- src/sql/sql.pro | 4 +++- src/tools/bootstrap/bootstrap.pro | 3 +++ src/tools/qdoc/qdoc.pro | 6 ++++++ src/xml/doc/doc.pri | 3 --- src/xml/xml.pro | 4 +++- tests/tests.pro | 1 + 13 files changed, 51 insertions(+), 16 deletions(-) delete mode 100644 src/corelib/doc/doc.pri delete mode 100644 src/network/doc/doc.pri delete mode 100644 src/sql/doc/doc.pri delete mode 100644 src/xml/doc/doc.pri diff --git a/examples/examples.pro b/examples/examples.pro index 2180d185871..7ce42d7fe72 100644 --- a/examples/examples.pro +++ b/examples/examples.pro @@ -1,4 +1,6 @@ TEMPLATE = subdirs +CONFIG += no_docs_target + SUBDIRS = \ network \ statemachine \ diff --git a/mkspecs/features/default_post.prf b/mkspecs/features/default_post.prf index 874b4bf4247..0a0fd8dfa83 100644 --- a/mkspecs/features/default_post.prf +++ b/mkspecs/features/default_post.prf @@ -64,3 +64,30 @@ QMAKE_LIBDIR += $$QMAKE_LIBDIR_POST QMAKE_EXTRA_TARGETS += check } +# Let every project have a 'docs' target +!contains(QMAKE_EXTRA_TARGETS, docs) { + contains(TEMPLATE, subdirs) { + # `make docs' should iterate through all subdirs + # (except those with no_default_target or no_docs_target) + !contains(CONFIG, no_docs_target):for(subdir, SUBDIRS) { + subdir_config = $$eval($${subdir}.CONFIG) + !contains(subdir_config, no_docs_target):!contains(subdir_config, no_default_target):docs.recurse += $$subdir + unset(subdir_config) + } + !isEmpty(docs.recurse) { + # setup the recurse target only when there is something to recurse into + docs.CONFIG = recursive + docs.recurse_target = docs + } + } else { + # apps and libs only generate docs if QMAKE_DOCS is set + !isEmpty(QMAKE_DOCS) { + !exists($$QMAKE_DOCS):error("Cannot find documentation specification file $$QMAKE_DOCS") + exists($$[QT_INSTALL_DOCS]):QMAKE_DOCS_INDEX *= $$[QT_INSTALL_DOCS] + qtPrepareTool(QDOC, qdoc) + for(index, QMAKE_DOCS_INDEX):QDOC_INDEX += -indexdir $$index + docs.commands += $$QDOC $$QMAKE_DOCS_OPTIONS $$QDOC_INDEX $$QMAKE_DOCS + } + } + QMAKE_EXTRA_TARGETS += docs +} diff --git a/src/corelib/corelib.pro b/src/corelib/corelib.pro index d98cebb6726..4856c1b5fb5 100644 --- a/src/corelib/corelib.pro +++ b/src/corelib/corelib.pro @@ -16,6 +16,9 @@ load(qt_module_config) HEADERS += $$QT_SOURCE_TREE/src/corelib/qtcoreversion.h +QMAKE_DOCS = $$PWD/doc/qtcore.qdocconf +QMAKE_DOCS_INDEX = ../../doc + include(animation/animation.pri) include(arch/arch.pri) include(global/global.pri) @@ -30,7 +33,6 @@ include(codecs/codecs.pri) include(statemachine/statemachine.pri) include(mimetypes/mimetypes.pri) include(xml/xml.pri) -include(doc/doc.pri) mac|darwin { !ios { diff --git a/src/corelib/doc/doc.pri b/src/corelib/doc/doc.pri deleted file mode 100644 index ed970d75926..00000000000 --- a/src/corelib/doc/doc.pri +++ /dev/null @@ -1,3 +0,0 @@ -qtPrepareTool(QDOC, qdoc) -docs.commands += $$QDOC $$QT.core.sources/doc/qtcore.qdocconf -QMAKE_EXTRA_TARGETS += docs diff --git a/src/network/doc/doc.pri b/src/network/doc/doc.pri deleted file mode 100644 index 7ca0ad07d4a..00000000000 --- a/src/network/doc/doc.pri +++ /dev/null @@ -1,3 +0,0 @@ -qtPrepareTool(QDOC, qdoc) -docs.commands += $$QDOC $$QT.network.sources/doc/qtnetwork.qdocconf -QMAKE_EXTRA_TARGETS += docs diff --git a/src/network/network.pro b/src/network/network.pro index a6597338f59..3e1bc6d4e5e 100644 --- a/src/network/network.pro +++ b/src/network/network.pro @@ -24,9 +24,11 @@ load(qt_module_config) HEADERS += $$QT_SOURCE_TREE/src/network/qtnetworkversion.h +QMAKE_DOCS = $$PWD/doc/qtnetwork.qdocconf +QMAKE_DOCS_INDEX = ../../doc + include(access/access.pri) include(bearer/bearer.pri) -include(doc/doc.pri) include(kernel/kernel.pri) include(socket/socket.pri) include(ssl/ssl.pri) diff --git a/src/sql/doc/doc.pri b/src/sql/doc/doc.pri deleted file mode 100644 index 2bc2e005d48..00000000000 --- a/src/sql/doc/doc.pri +++ /dev/null @@ -1,3 +0,0 @@ -qtPrepareTool(QDOC, qdoc) -docs.commands += $$QDOC $$QT.sql.sources/doc/qtsql.qdocconf -QMAKE_EXTRA_TARGETS += docs diff --git a/src/sql/sql.pro b/src/sql/sql.pro index e3f81f3498b..c2345d92ef1 100644 --- a/src/sql/sql.pro +++ b/src/sql/sql.pro @@ -21,7 +21,9 @@ DEFINES += QT_NO_CAST_FROM_ASCII PRECOMPILED_HEADER = ../corelib/global/qt_pch.h SQL_P = sql -include(doc/doc.pri) +QMAKE_DOCS = $$PWD/doc/qtsql.qdocconf +QMAKE_DOCS_INDEX = ../../doc + include(kernel/kernel.pri) include(drivers/drivers.pri) include(models/models.pri) diff --git a/src/tools/bootstrap/bootstrap.pro b/src/tools/bootstrap/bootstrap.pro index 21fc2f9ca5d..37b4c3dd1d7 100644 --- a/src/tools/bootstrap/bootstrap.pro +++ b/src/tools/bootstrap/bootstrap.pro @@ -127,3 +127,6 @@ freeze_target.target = freeze freeze_target.commands = freeze_target.depends = first QMAKE_EXTRA_TARGETS += freeze_target +docs.commands = +docs.depends = first +QMAKE_EXTRA_TARGETS += docs diff --git a/src/tools/qdoc/qdoc.pro b/src/tools/qdoc/qdoc.pro index 484b0c6ba1d..1e570583f56 100644 --- a/src/tools/qdoc/qdoc.pro +++ b/src/tools/qdoc/qdoc.pro @@ -116,4 +116,10 @@ QMAKE_EXTRA_TARGETS += html-docs qch-docs target.path = $$[QT_HOST_BINS] INSTALLS += target + +# Ensure that qdoc is built before we generate the docs +docs.commands = +docs.depends = first +QMAKE_EXTRA_TARGET += docs + load(qt_targets) diff --git a/src/xml/doc/doc.pri b/src/xml/doc/doc.pri deleted file mode 100644 index d02e45e64e1..00000000000 --- a/src/xml/doc/doc.pri +++ /dev/null @@ -1,3 +0,0 @@ -qtPrepareTool(QDOC, qdoc) -docs.commands += $$QDOC $$QT.xml.sources/doc/qtxml.qdocconf -QMAKE_EXTRA_TARGETS += docs diff --git a/src/xml/xml.pro b/src/xml/xml.pro index b8c24496ae2..2fff0218e42 100644 --- a/src/xml/xml.pro +++ b/src/xml/xml.pro @@ -16,6 +16,9 @@ load(qt_module_config) HEADERS += $$QT_SOURCE_TREE/src/xml/qtxmlversion.h +QMAKE_DOCS = $$PWD/doc/qtxml.qdocconf +QMAKE_DOCS_INDEX = ../../doc + PRECOMPILED_HEADER = ../corelib/global/qt_pch.h win32-borland { @@ -23,6 +26,5 @@ win32-borland { QMAKE_CXXFLAGS_WARN_ON += -w-use } -include(doc/doc.pri) include(dom/dom.pri) include(sax/sax.pri) diff --git a/tests/tests.pro b/tests/tests.pro index 0c933681eeb..0f50930774e 100644 --- a/tests/tests.pro +++ b/tests/tests.pro @@ -1,4 +1,5 @@ TEMPLATE = subdirs +CONFIG += no_docs_target SUBDIRS = auto # benchmarks in debug mode is rarely sensible