diff --git a/qbs/modules/qtc/qtc.qbs b/qbs/modules/qtc/qtc.qbs index cfcd31a9bb7..658362f87f3 100644 --- a/qbs/modules/qtc/qtc.qbs +++ b/qbs/modules/qtc/qtc.qbs @@ -63,6 +63,8 @@ Module { property string ide_qbs_imports_path: ide_qbs_resources_path + "/imports" property string ide_shared_sources_path: "src/shared" + property string litehtmlInstallDir: Environment.getEnv("LITEHTML_INSTALL_DIR") + property bool make_dev_package: false // Will be replaced when creating modules from products diff --git a/src/plugins/help/help.qbs b/src/plugins/help/help.qbs index d7dde195bbc..e1268e729d2 100644 --- a/src/plugins/help/help.qbs +++ b/src/plugins/help/help.qbs @@ -1,76 +1,96 @@ import qbs 1.0 -QtcPlugin { +Project { name: "Help" - Depends { name: "Qt"; submodules: ["help", "network", "sql"]; } - Depends { name: "Qt.printsupport" } - Depends { name: "Qt.webenginewidgets"; required: false } + references: "qlitehtml" - Depends { name: "Aggregation" } - Depends { name: "Utils" } + QtcPlugin { + name: "Help" - Depends { name: "Core" } - Depends { name: "ProjectExplorer" } + Depends { name: "Qt"; submodules: ["help", "network", "sql"]; } + Depends { name: "Qt.printsupport" } + Depends { name: "Qt.webenginewidgets"; required: false } - Depends { name: "app_version_header" } + Depends { name: "Aggregation" } + Depends { name: "Utils" } - cpp.defines: { - var defines = base.concat(["QT_CLUCENE_SUPPORT"]); - if (Qt.webenginewidgets.present) - defines.push("QTC_WEBENGINE_HELPVIEWER"); - return defines; - } + Depends { name: "Core" } + Depends { name: "ProjectExplorer" } - // We include headers from src/shared/help, and their sources include headers from here... - cpp.includePaths: base.concat([sharedSources.prefix, path]) + Depends { name: "app_version_header" } - Group { - name: "Sources" - files: [ - "docsettingspage.cpp", "docsettingspage.h", "docsettingspage.ui", - "filtersettingspage.cpp", "filtersettingspage.h", "filtersettingspage.ui", - "generalsettingspage.cpp", "generalsettingspage.h", "generalsettingspage.ui", - "help.qrc", - "helpconstants.h", - "helpfindsupport.cpp", "helpfindsupport.h", - "helpindexfilter.cpp", "helpindexfilter.h", - "helpmanager.cpp", "helpmanager.h", - "helpmode.cpp", "helpmode.h", - "helpplugin.cpp", "helpplugin.h", - "helpviewer.cpp", "helpviewer.h", - "helpwidget.cpp", "helpwidget.h", - "localhelpmanager.cpp", "localhelpmanager.h", - "openpagesmanager.cpp", "openpagesmanager.h", - "openpagesswitcher.cpp", "openpagesswitcher.h", - "openpageswidget.cpp", "openpageswidget.h", - "searchtaskhandler.cpp", "searchtaskhandler.h", - "searchwidget.cpp", "searchwidget.h", - "textbrowserhelpviewer.cpp", "textbrowserhelpviewer.h", - "xbelsupport.cpp", "xbelsupport.h", - ] - } + Depends { name: "qlitehtml"; required: false } - Group { - name: "WebEngine Sources" - condition: Qt.webenginewidgets.present - files: [ - "webenginehelpviewer.cpp", "webenginehelpviewer.h" - ] - } + cpp.defines: { + var defines = base.concat(["QT_CLUCENE_SUPPORT"]); + if (Qt.webenginewidgets.present) + defines.push("QTC_WEBENGINE_HELPVIEWER"); + if (qlitehtml.present) + defines.push("QTC_LITEHTML_HELPVIEWER") + return defines; + } - Group { - id: sharedSources - name: "Shared Sources" - prefix: project.sharedSourcesDir + "/help/" - files: [ - "bookmarkdialog.ui", - "bookmarkmanager.cpp", "bookmarkmanager.h", - "contentwindow.cpp", "contentwindow.h", - "filternamedialog.cpp", "filternamedialog.h", "filternamedialog.ui", - "helpicons.h", - "indexwindow.cpp", "indexwindow.h", - "topicchooser.cpp", "topicchooser.h", "topicchooser.ui", - ] + // We include headers from src/shared/help, and their sources include headers from here... + cpp.includePaths: base.concat([sharedSources.prefix, path]) + + Group { + name: "Sources" + files: [ + "docsettingspage.cpp", "docsettingspage.h", "docsettingspage.ui", + "filtersettingspage.cpp", "filtersettingspage.h", "filtersettingspage.ui", + "generalsettingspage.cpp", "generalsettingspage.h", "generalsettingspage.ui", + "help.qrc", + "helpconstants.h", + "helpfindsupport.cpp", "helpfindsupport.h", + "helpindexfilter.cpp", "helpindexfilter.h", + "helpmanager.cpp", "helpmanager.h", + "helpmode.cpp", "helpmode.h", + "helpplugin.cpp", "helpplugin.h", + "helpviewer.cpp", "helpviewer.h", + "helpwidget.cpp", "helpwidget.h", + "localhelpmanager.cpp", "localhelpmanager.h", + "openpagesmanager.cpp", "openpagesmanager.h", + "openpagesswitcher.cpp", "openpagesswitcher.h", + "openpageswidget.cpp", "openpageswidget.h", + "searchtaskhandler.cpp", "searchtaskhandler.h", + "searchwidget.cpp", "searchwidget.h", + "textbrowserhelpviewer.cpp", "textbrowserhelpviewer.h", + "xbelsupport.cpp", "xbelsupport.h", + ] + } + + Group { + name: "WebEngine Sources" + condition: Qt.webenginewidgets.present + files: [ + "webenginehelpviewer.cpp", "webenginehelpviewer.h" + ] + } + + Group { + name: "litehtml-specific sources" + condition: qlitehtml.present + cpp.warningLevel: "none" + files: [ + "litehtmlhelpviewer.cpp", + "litehtmlhelpviewer.h", + ] + } + + Group { + id: sharedSources + name: "Shared Sources" + prefix: project.sharedSourcesDir + "/help/" + files: [ + "bookmarkdialog.ui", + "bookmarkmanager.cpp", "bookmarkmanager.h", + "contentwindow.cpp", "contentwindow.h", + "filternamedialog.cpp", "filternamedialog.h", "filternamedialog.ui", + "helpicons.h", + "indexwindow.cpp", "indexwindow.h", + "topicchooser.cpp", "topicchooser.h", "topicchooser.ui", + ] + } } } diff --git a/src/plugins/help/qlitehtml/qlitehtml.qbs b/src/plugins/help/qlitehtml/qlitehtml.qbs new file mode 100644 index 00000000000..c3c74e182e6 --- /dev/null +++ b/src/plugins/help/qlitehtml/qlitehtml.qbs @@ -0,0 +1,205 @@ +import qbs.File +import qbs.FileInfo + +Product { + type: buildLib ? ["staticlibrary"] : undefined + + Depends { name: "cpp" } + Depends { name: "qtc" } + + property bool useExternalLib: qtc.litehtmlInstallDir + property bool buildLib: !useExternalLib && File.exists(path + "/litehtml/CMakeLists.txt") + condition: useExternalLib || buildLib + + property string gumboSrcDir: path + "/litehtml/src/gumbo" + property string gumboHeaderDir: gumboSrcDir + "/include/gumbo" + property string litehtmlHeaderDir: path + "/litehtml/include/litehtml" + property string mainHeaderDir: litehtmlHeaderDir + '/..' + property stringList sharedDefines: qbs.targetOS.contains("windows") ? ["LITEHTML_UTF8"] : [] + + cpp.defines: sharedDefines + cpp.includePaths: { + var paths = [gumboHeaderDir, gumboHeaderDir + '/..', litehtmlHeaderDir, mainHeaderDir]; + if (qbs.targetOS.contains("windows")) + paths.push(gumboSrcDir + "/visualc/include"); + return paths; + } + cpp.optimization: "fast" + cpp.warningLevel: "none" + + Export { + Depends { name: "cpp" } + Group { + name: "litehtml/Qt glue" + cpp.warningLevel: "none" + files: [ + "container_qpainter.cpp", + "container_qpainter.h", + "qlitehtmlwidget.cpp", + "qlitehtmlwidget.h", + ] + } + + Properties { + condition: product.useExternalLib + cpp.dynamicLibraries: ["litehtml", "gumbo"] + cpp.includePaths: [ + FileInfo.joinPaths(qtc.litehtmlInstallDir, "include"), + FileInfo.joinPaths(qtc.litehtmlInstallDir, "include", "litehtml"), + ] + cpp.libraryPaths: FileInfo.joinPaths(qtc.litehtmlInstallDir, "lib") + } + Properties { + condition: product.buildLib + cpp.defines: product.sharedDefines + cpp.includePaths: [product.mainHeaderDir, path] + } + } + + Group { + condition: buildLib + name: "gumbo sources" + prefix: gumboSrcDir + '/' + files: [ + "attribute.c", + "char_ref.c", + "error.c", + "parser.c", + "string_buffer.c", + "string_piece.c", + "tag.c", + "tokenizer.c", + "utf8.c", + "util.c", + "vector.c", + ] + } + + Group { + condition: buildLib + name: "gumbo headers" + prefix: gumboHeaderDir + '/' + files: [ + "../gumbo.h", + "attribute.h", + "char_ref.h", + "error.h", + "insertion_mode.h", + "parser.h", + "string_buffer.h", + "string_piece.h", + "tag_enum.h", + "tag_gperf.h", + "tag_sizes.h", + "tag_strings.h", + "token_type.h", + "tokenizer.h", + "tokenizer_states.h", + "utf8.h", + "util.h", + "vector.h", + ] + + Group { + name: "gumbo Windows headers" + condition: qbs.targetOS.contains("windows") + files: "../visualc/include/strings.h" + } + } + + Group { + condition: buildLib + name: "litehtml sources" + prefix: "litehtml/src/" + files: [ + "background.cpp", + "box.cpp", + "context.cpp", + "css_length.cpp", + "css_selector.cpp", + "document.cpp", + "el_anchor.cpp", + "el_base.cpp", + "el_before_after.cpp", + "el_body.cpp", + "el_break.cpp", + "el_cdata.cpp", + "el_comment.cpp", + "el_div.cpp", + "element.cpp", + "el_font.cpp", + "el_image.cpp", + "el_link.cpp", + "el_para.cpp", + "el_script.cpp", + "el_space.cpp", + "el_style.cpp", + "el_table.cpp", + "el_td.cpp", + "el_text.cpp", + "el_title.cpp", + "el_tr.cpp", + "html.cpp", + "html_tag.cpp", + "iterators.cpp", + "media_query.cpp", + "style.cpp", + "stylesheet.cpp", + "table.cpp", + "utf8_strings.cpp", + "web_color.cpp", + ] + } + + Group { + condition: buildLib + name: "litehtml headers" + prefix: litehtmlHeaderDir + '/' + files: [ + "../litehtml.h", + "attributes.h", + "background.h", + "borders.h", + "box.h", + "context.h", + "css_length.h", + "css_margins.h", + "css_offsets.h", + "css_position.h", + "css_selector.h", + "document.h", + "el_anchor.h", + "el_base.h", + "el_before_after.h", + "el_body.h", + "el_break.h", + "el_cdata.h", + "el_comment.h", + "el_div.h", + "el_font.h", + "el_image.h", + "el_link.h", + "el_para.h", + "el_script.h", + "el_space.h", + "el_style.h", + "el_table.h", + "el_td.h", + "el_text.h", + "el_title.h", + "el_tr.h", + "element.h", + "html.h", + "html_tag.h", + "iterators.h", + "media_query.h", + "os_types.h", + "style.h", + "stylesheet.h", + "table.h", + "types.h", + "utf8_strings.h", + "web_color.h", + ] + } +}