diff options
Diffstat (limited to 'src/tools/qdoc/main.cpp')
-rw-r--r-- | src/tools/qdoc/main.cpp | 49 |
1 files changed, 33 insertions, 16 deletions
diff --git a/src/tools/qdoc/main.cpp b/src/tools/qdoc/main.cpp index 8998a27081..e42262f8d5 100644 --- a/src/tools/qdoc/main.cpp +++ b/src/tools/qdoc/main.cpp @@ -78,6 +78,7 @@ static bool highlighting = false; static bool showInternal = false; static bool redirectDocumentationToDevNull = false; static bool noLinkErrors = false; +static bool autolinkErrors = false; static bool obsoleteLinks = false; static QStringList defines; static QStringList dependModules; @@ -275,6 +276,7 @@ static void processQdocconfFile(const QString &fileName) config.setStringList(CONFIG_SHOWINTERNAL, QStringList(showInternal ? "true" : "false")); config.setStringList(CONFIG_REDIRECTDOCUMENTATIONTODEVNULL, QStringList(redirectDocumentationToDevNull ? "true" : "false")); config.setStringList(CONFIG_NOLINKERRORS, QStringList(noLinkErrors ? "true" : "false")); + config.setStringList(CONFIG_AUTOLINKERRORS, QStringList(autolinkErrors ? "true" : "false")); config.setStringList(CONFIG_OBSOLETELINKS, QStringList(obsoleteLinks ? "true" : "false")); /* @@ -289,7 +291,8 @@ static void processQdocconfFile(const QString &fileName) currentDir = QFileInfo(fileName).path(); Location::initialize(config); config.load(fileName); - + QString project = config.getString(CONFIG_PROJECT).toLower(); + //qDebug() << "\nStart project:" << project; /* Add the defines to the configuration variables. */ @@ -363,7 +366,11 @@ static void processQdocconfFile(const QString &fileName) Location outputFormatsLocation = config.lastLocation(); //if (!Generator::runPrepareOnly()) + Generator::debug(" loading index files"); loadIndexFiles(config); + qdb->newPrimaryTree(config.getString(CONFIG_PROJECT)); + qdb->setSearchOrder(); + Generator::debug(" done loading index files"); QSet<QString> excludedDirs; QSet<QString> excludedFiles; @@ -372,7 +379,7 @@ static void processQdocconfFile(const QString &fileName) QStringList excludedDirsList; QStringList excludedFilesList; - Generator::debugSegfault("Reading excludedirs"); + Generator::debug("Reading excludedirs"); excludedDirsList = config.getCanonicalPathList(CONFIG_EXCLUDEDIRS); foreach (const QString &excludeDir, excludedDirsList) { QString p = QDir::fromNativeSeparators(excludeDir); @@ -381,14 +388,14 @@ static void processQdocconfFile(const QString &fileName) excludedDirs.insert(p); } - Generator::debugSegfault("Reading excludefiles"); - excludedFilesList = config.getCleanPathList(CONFIG_EXCLUDEFILES); + Generator::debug("Reading excludefiles"); + excludedFilesList = config.getCanonicalPathList(CONFIG_EXCLUDEFILES); foreach (const QString& excludeFile, excludedFilesList) { QString p = QDir::fromNativeSeparators(excludeFile); excludedFiles.insert(p); } - Generator::debugSegfault("Reading headerdirs"); + Generator::debug("Reading headerdirs"); headerList = config.getAllFiles(CONFIG_HEADERS,CONFIG_HEADERDIRS,excludedDirs,excludedFiles); QMap<QString,QString> headers; QMultiMap<QString,QString> headerFileNames; @@ -402,7 +409,7 @@ static void processQdocconfFile(const QString &fileName) headerFileNames.insert(t,t); } - Generator::debugSegfault("Reading sourcedirs"); + Generator::debug("Reading sourcedirs"); sourceList = config.getAllFiles(CONFIG_SOURCES,CONFIG_SOURCEDIRS,excludedDirs,excludedFiles); QMap<QString,QString> sources; QMultiMap<QString,QString> sourceFileNames; @@ -419,7 +426,7 @@ static void processQdocconfFile(const QString &fileName) Find all the qdoc files in the example dirs, and add them to the source files to be parsed. */ - Generator::debugSegfault("Reading exampledirs"); + Generator::debug("Reading exampledirs"); QStringList exampleQdocList = config.getExampleQdocFiles(excludedDirs, excludedFiles); for (int i=0; i<exampleQdocList.size(); ++i) { if (!sources.contains(exampleQdocList[i])) { @@ -429,7 +436,7 @@ static void processQdocconfFile(const QString &fileName) } } - Generator::debugSegfault("Adding doc/image dirs found in exampledirs to imagedirs"); + Generator::debug("Adding doc/image dirs found in exampledirs to imagedirs"); QSet<QString> exampleImageDirs; QStringList exampleImageList = config.getExampleImageFiles(excludedDirs, excludedFiles); for (int i=0; i<exampleImageList.size(); ++i) { @@ -448,13 +455,14 @@ static void processQdocconfFile(const QString &fileName) */ QSet<CodeParser *> usedParsers; - Generator::debugSegfault("Parsing header files"); + Generator::debug("Parsing header files"); int parsed = 0; QMap<QString,QString>::ConstIterator h = headers.constBegin(); while (h != headers.constEnd()) { CodeParser *codeParser = CodeParser::parserForHeaderFile(h.key()); if (codeParser) { ++parsed; + Generator::debug(QString("Parsing " + h.key())); codeParser->parseHeaderFile(config.location(), h.key()); usedParsers.insert(codeParser); } @@ -465,22 +473,26 @@ static void processQdocconfFile(const QString &fileName) codeParser->doneParsingHeaderFiles(); usedParsers.clear(); + qdb->resolveInheritance(); + /* Parse each source text file in the set using the appropriate parser and add it to the big tree. */ parsed = 0; - Generator::debugSegfault("Parsing source files"); + Generator::debug("Parsing source files"); QMap<QString,QString>::ConstIterator s = sources.constBegin(); while (s != sources.constEnd()) { CodeParser *codeParser = CodeParser::parserForSourceFile(s.key()); if (codeParser) { ++parsed; + Generator::debug(QString("Parsing " + s.key())); codeParser->parseSourceFile(config.location(), s.key()); usedParsers.insert(codeParser); } ++s; } + Generator::debug(QString("Parsing done.")); foreach (CodeParser *codeParser, usedParsers) codeParser->doneParsingSourceFiles(); @@ -490,7 +502,7 @@ static void processQdocconfFile(const QString &fileName) source files. Resolve all the class names, function names, targets, URLs, links, and other stuff that needs resolving. */ - Generator::debugSegfault("Resolving stuff prior to generating docs"); + Generator::debug("Resolving stuff prior to generating docs"); qdb->resolveIssues(); /* @@ -499,19 +511,21 @@ static void processQdocconfFile(const QString &fileName) documentation output. More than one output format can be requested. The tree is traversed for each one. */ - Generator::debugSegfault("Generating docs"); + Generator::debug("Generating docs"); QSet<QString>::ConstIterator of = outputFormats.constBegin(); while (of != outputFormats.constEnd()) { Generator* generator = Generator::generatorForFormat(*of); if (generator == 0) outputFormatsLocation.fatal(QCoreApplication::translate("QDoc", "Unknown output format '%1'").arg(*of)); - generator->generateTree(); + generator->generateDocs(); ++of; } //Generator::writeOutFileNames(); - Generator::debugSegfault("Shutting down qdoc"); + Generator::debug("Shutting down qdoc"); + if (Generator::debugging()) + Generator::stopDebugging(project); QDocDatabase::qdocDB()->setVersion(QString()); Generator::terminate(); @@ -532,7 +546,7 @@ static void processQdocconfFile(const QString &fileName) #ifdef DEBUG_SHUTDOWN_CRASH qDebug() << "main(): qdoc database deleted"; #endif - Generator::debugSegfault("qdoc finished!"); + Generator::debug("qdoc finished!"); } extern Q_CORE_EXPORT QBasicAtomicInt qt_qhash_seed; @@ -633,8 +647,11 @@ int main(int argc, char **argv) else if (opt == "-no-link-errors") { noLinkErrors = true; } + else if (opt == "-autolink-errors") { + autolinkErrors = true; + } else if (opt == "-debug") { - Generator::setDebugSegfaultFlag(true); + Generator::startDebugging(QString("command line")); } else if (opt == "-prepare") { Generator::setQDocPass(Generator::Prepare); |