summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/core/config/common.pri82
-rw-r--r--src/core/config/desktop_linux.pri48
-rw-r--r--src/core/core.pro29
-rw-r--r--src/core/core_gn_config.pri6
-rw-r--r--src/core/core_module.pro113
-rw-r--r--src/core/gn_run.pro33
-rw-r--r--src/core/qtwebengine.gni45
-rw-r--r--src/core/qtwebengine_resources.gni90
-rw-r--r--src/core/qtwebengine_sources.gni118
-rw-r--r--src/src.pro51
-rw-r--r--src/tools/qwebengine_convert_dict/qwebengine_convert_dict.pro22
-rw-r--r--tools/qmake/mkspecs/features/functions.prf16
-rw-r--r--tools/qmake/mkspecs/features/gn_generator.prf2
13 files changed, 521 insertions, 134 deletions
diff --git a/src/core/config/common.pri b/src/core/config/common.pri
index f822ab7cc..d13d9f8d9 100644
--- a/src/core/config/common.pri
+++ b/src/core/config/common.pri
@@ -1,33 +1,61 @@
# Shared configuration for all our supported platforms
-# Trigger Qt-specific build conditions.
-GYP_CONFIG += use_qt=1
-# We do not want to ship more external binary blobs, so let v8 embed its startup data.
-GYP_CONFIG += v8_use_external_startup_data=0
-# WebSpeech requires Google API keys and adds dependencies on speex and flac.
-GYP_CONFIG += enable_web_speech=0
-# We do not use or even include the extensions
-GYP_CONFIG += enable_extensions=0
-
-sanitize_address: GYP_CONFIG += asan=1
-sanitize_thread: GYP_CONFIG += tsan=1
-sanitize_memory: GYP_CONFIG += msan=1
-sanitize_undefined: GYP_CONFIG += ubsan=1
-
-use?(printing) {
- GYP_CONFIG += enable_basic_printing=1 enable_print_preview=1
-} else {
- GYP_CONFIG += enable_basic_printing=0 enable_print_preview=0
-}
+use?(gn) {
-use?(pdf) {
- GYP_CONFIG += enable_pdf=1
-} else {
- GYP_CONFIG += enable_pdf=0
-}
+ use?(printing) {
+ gn_args += enable_basic_printing=true enable_print_preview=true
+ } else {
+ gn_args += enable_basic_printing=false enable_print_preview=false
+ }
+
+ use?(pdf) {
+ gn_args += enable_pdf=true
+ } else {
+ gn_args += enable_pdf=false
+ }
+
+ use?(pepper_plugins) {
+ gn_args += enable_plugins=true enable_widevine=true
+ } else {
+ gn_args += enable_plugins=false enable_widevine=false
+ }
+
+ use?(spellchecker) {
+ gn_args += enable_spellcheck=true
+ } else {
+ gn_args += enable_spellcheck=false
+ }
-use?(pepper_plugins) {
- GYP_CONFIG += enable_plugins=1 enable_widevine=1
} else {
- GYP_CONFIG += enable_plugins=0 enable_widevine=0
+ # Trigger Qt-specific build conditions.
+ GYP_CONFIG += use_qt=1
+ # We do not want to ship more external binary blobs, so let v8 embed its startup data.
+ GYP_CONFIG += v8_use_external_startup_data=0
+ # WebSpeech requires Google API keys and adds dependencies on speex and flac.
+ GYP_CONFIG += enable_web_speech=0
+ # We do not use or even include the extensions
+ GYP_CONFIG += enable_extensions=0
+
+ sanitize_address: GYP_CONFIG += asan=1
+ sanitize_thread: GYP_CONFIG += tsan=1
+ sanitize_memory: GYP_CONFIG += msan=1
+ sanitize_undefined: GYP_CONFIG += ubsan=1
+
+ use?(printing) {
+ GYP_CONFIG += enable_basic_printing=1 enable_print_preview=1
+ } else {
+ GYP_CONFIG += enable_basic_printing=0 enable_print_preview=0
+ }
+
+ use?(pdf) {
+ GYP_CONFIG += enable_pdf=1
+ } else {
+ GYP_CONFIG += enable_pdf=0
+ }
+
+ use?(pepper_plugins) {
+ GYP_CONFIG += enable_plugins=1 enable_widevine=1
+ } else {
+ GYP_CONFIG += enable_plugins=0 enable_widevine=0
+ }
}
diff --git a/src/core/config/desktop_linux.pri b/src/core/config/desktop_linux.pri
index 92491fc1c..f8bd42ce8 100644
--- a/src/core/config/desktop_linux.pri
+++ b/src/core/config/desktop_linux.pri
@@ -1,17 +1,41 @@
-GYP_ARGS += "-D qt_os=\"desktop_linux\""
-include(linux.pri)
+use?(gn) {
+ include(common.pri)
+ gn_args += \
+ use_qt=true \
+ is_clang=false \
+ use_sysroot=false \
+ enable_remoting=false \
+ enable_nacl=false \
+ use_kerberos=false \
+ is_component_build=false \
+ use_experimental_allocator_shim=false \
+ use_allocator=\"none\" \
+ v8_use_external_startup_data=false \
+ linux_use_bundled_binutils=false \
+ treat_warnings_as_errors=false
-GYP_CONFIG += \
- desktop_linux=1
+ use?(icecc) {
+ gn_args += use_debug_fission=false
+ }
-clang {
- GYP_CONFIG += werror=
- clang_full_path = $$which($${QMAKE_CXX})
- # Remove the "/bin/clang++" part.
- clang_prefix = $$section(clang_full_path, /, 0, -3)
- GYP_CONFIG += clang=1 host_clang=1 clang_use_chrome_plugins=0 make_clang_dir=$${clang_prefix}
- linux-clang-libc++: GYP_CONFIG += use_system_libcxx=1
} else {
- GYP_CONFIG += clang=0 host_clang=0
+
+ GYP_ARGS += "-D qt_os=\"desktop_linux\""
+
+ include(linux.pri)
+
+ GYP_CONFIG += \
+ desktop_linux=1
+
+ clang {
+ GYP_CONFIG += werror=
+ clang_full_path = $$which($${QMAKE_CXX})
+ # Remove the "/bin/clang++" part.
+ clang_prefix = $$section(clang_full_path, /, 0, -3)
+ GYP_CONFIG += clang=1 host_clang=1 clang_use_chrome_plugins=0 make_clang_dir=$${clang_prefix}
+ linux-clang-libc++: GYP_CONFIG += use_system_libcxx=1
+ } else {
+ GYP_CONFIG += clang=0 host_clang=0
+ }
}
diff --git a/src/core/core.pro b/src/core/core.pro
index e495685eb..42906cbca 100644
--- a/src/core/core.pro
+++ b/src/core/core.pro
@@ -14,15 +14,38 @@ core_module.depends = core_api
core_generator.file = core_generator.pro
core_generator.depends = core_headers
-
use?(gn) {
+ # core_gn_generator.pro is a dummy .pro file that is used by qmake
+ # to generate our main BUILD.gn file
+
+ core_icu.files = $$OUT_PWD/$$getConfigDir()/icudtl.dat
+ core_icu.path = $$[QT_INSTALL_DATA]/resources
+ core_icu.CONFIG += no_check_exist
+
+ core_locales.files = $$OUT_PWD/$$getConfigDir()/qtwebengine_locales/*.pak
+ core_locales.path = $$[QT_INSTALL_TRANSLATIONS]/qtwebengine_locales
+ core_locales.CONFIG += no_check_exist
+
+ core_resources.files = \
+ $$OUT_PWD/$$getConfigDir()/qtwebengine_resources.pak \
+ $$OUT_PWD/$$getConfigDir()/qtwebengine_resources_100p.pak \
+ $$OUT_PWD/$$getConfigDir()/qtwebengine_resources_200p.pak \
+ $$OUT_PWD/$$getConfigDir()/qtwebengine_devtools_resources.pak
+ core_resources.path = $$[QT_INSTALL_DATA]/resources
+ core_resources.CONFIG += no_check_exist
+ INSTALLS += core_resources core_locales core_icu
gn_run.file = gn_run.pro
gn_run.depends = core_generator
- SUBDIRS += gn_run \
+ core_api.depends = gn_run
+
+ SUBDIRS += \
+ core_api \
core_headers \
- core_generator
+ core_generator \
+ core_module \
+ gn_run
} else {
# gyp_run.pro calls gyp through gyp_qtwebengine on the qmake step, and ninja on the make step.
diff --git a/src/core/core_gn_config.pri b/src/core/core_gn_config.pri
index ea45977f5..fb671ddb2 100644
--- a/src/core/core_gn_config.pri
+++ b/src/core/core_gn_config.pri
@@ -1,6 +1,10 @@
CONFIG = gn_generator $$CONFIG
GN_SRC_DIR = $$PWD
-GN_FILE = $$OUT_PWD/BUILD.gn
+GN_FILE = $$OUT_PWD/$$getConfigDir()/BUILD.gn
GN_FIND_MOCABLES_SCRIPT = $$shell_path($$QTWEBENGINE_ROOT/tools/scripts/gn_find_mocables.py)
GN_RUN_BINARY_SCRIPT = $$shell_path($$QTWEBENGINE_ROOT/tools/scripts/gn_run_binary.py)
+GN_IMPORTS = $$PWD/qtwebengine.gni
+GN_INCLUDES = $$PWD/qtwebengine_sources.gni $$PWD/qtwebengine_resources.gni
+GN_CREATE_PRI = true
+QMAKE_INTERNAL_INCLUDED_FILES = $$GN_IMPORTS $$GN_INCLUDES $$GN_FILE
diff --git a/src/core/core_module.pro b/src/core/core_module.pro
index 596993457..fc1c32786 100644
--- a/src/core/core_module.pro
+++ b/src/core/core_module.pro
@@ -4,9 +4,11 @@ include(core_common.pri)
# Needed to set a CFBundleIdentifier
QMAKE_INFO_PLIST = Info_mac.plist
-# Look for linking information produced by gyp for our target according to core_generated.gyp
-!include($$OUT_PWD/$$getConfigDir()/$${TARGET}_linking.pri) {
- error("Could not find the linking information that gyp should have generated.")
+use?(gn): linking_pri = $$OUT_PWD/$$getConfigDir()/$${TARGET}.pri
+else: linking_pri = $$OUT_PWD/$$getConfigDir()/$${TARGET}_linking.pri
+
+!include($$linking_pri) {
+ error("Could not find the linking information that gyp/gn should have generated.")
}
load(qt_module)
@@ -17,6 +19,18 @@ api_library_path = $$OUT_PWD/api/$$getConfigDir()
# Do not precompile any headers. We are only interested in the linker step.
PRECOMPILED_HEADER =
+use?(gn){
+ isEmpty(NINJA_OBJECTS): error("Missing object files from QtWebEngineCore linking pri.")
+ isEmpty(NINJA_LFLAGS): error("Missing linker flags from QtWebEngineCore linking pri")
+ isEmpty(NINJA_ARCHIVES): error("Missing archive files from QtWebEngineCore linking pri")
+ isEmpty(NINJA_LIBS): error("Missing library files from QtWebEngineCore linking pri")
+ OBJECTS = $$NINJA_OBJECTS
+ linux: LIBS_PRIVATE = -Wl,-whole-archive $$NINJA_ARCHIVES -Wl,-no-whole-archive
+ LIBS_PRIVATE += $$NINJA_LIB_DIRS $$NINJA_LIBS
+ QMAKE_LFLAGS += $$NINJA_LFLAGS
+ POST_TARGETDEPS += $$NINJA_TARGETDEPS
+}
+
LIBS_PRIVATE += -L$$api_library_path
CONFIG *= no_smart_library_merge
osx {
@@ -44,55 +58,58 @@ qtConfig(egl): CONFIG += egl
linux:qtConfig(separate_debug_info): QMAKE_POST_LINK="cd $(DESTDIR) && $(STRIP) --strip-unneeded $(TARGET)"
-REPACK_DIR = $$OUT_PWD/$$getConfigDir()/gen/repack
-# Duplicated from resources/resources.gyp
-LOCALE_LIST = am ar bg bn ca cs da de el en-GB en-US es-419 es et fa fi fil fr gu he hi hr hu id it ja kn ko lt lv ml mr ms nb nl pl pt-BR pt-PT ro ru sk sl sr sv sw ta te th tr uk vi zh-CN zh-TW
-for(LOC, LOCALE_LIST) {
- locales.files += $$REPACK_DIR/qtwebengine_locales/$${LOC}.pak
-}
-resources.files = $$REPACK_DIR/qtwebengine_resources.pak \
- $$REPACK_DIR/qtwebengine_resources_100p.pak \
- $$REPACK_DIR/qtwebengine_resources_200p.pak \
- $$REPACK_DIR/qtwebengine_devtools_resources.pak
-
-icu.files = $$OUT_PWD/$$getConfigDir()/icudtl.dat
-
-!debug_and_release|!build_all|CONFIG(release, debug|release) {
- qtConfig(framework) {
- locales.version = Versions
- locales.path = Resources/qtwebengine_locales
- resources.version = Versions
- resources.path = Resources
- icu.version = Versions
- icu.path = Resources
- # No files, this prepares the bundle Helpers symlink, process.pro will create the directories
- qtwebengineprocessplaceholder.version = Versions
- qtwebengineprocessplaceholder.path = Helpers
- QMAKE_BUNDLE_DATA += icu locales resources qtwebengineprocessplaceholder
- } else {
- locales.CONFIG += no_check_exist
- locales.path = $$[QT_INSTALL_TRANSLATIONS]/qtwebengine_locales
- resources.CONFIG += no_check_exist
- resources.path = $$[QT_INSTALL_DATA]/resources
- INSTALLS += locales resources
-
- !use?(system_icu) {
- icu.CONFIG += no_check_exist
- icu.path = $$[QT_INSTALL_DATA]/resources
- INSTALLS += icu
- }
+!use?(gn) {
+
+ REPACK_DIR = $$OUT_PWD/$$getConfigDir()/gen/repack
+ # Duplicated from resources/resources.gyp
+ LOCALE_LIST = am ar bg bn ca cs da de el en-GB en-US es-419 es et fa fi fil fr gu he hi hr hu id it ja kn ko lt lv ml mr ms nb nl pl pt-BR pt-PT ro ru sk sl sr sv sw ta te th tr uk vi zh-CN zh-TW
+ for(LOC, LOCALE_LIST) {
+ locales.files += $$REPACK_DIR/qtwebengine_locales/$${LOC}.pak
}
+ resources.files = $$REPACK_DIR/qtwebengine_resources.pak \
+ $$REPACK_DIR/qtwebengine_resources_100p.pak \
+ $$REPACK_DIR/qtwebengine_resources_200p.pak \
+ $$REPACK_DIR/qtwebengine_devtools_resources.pak
+
+ icu.files = $$OUT_PWD/$$getConfigDir()/icudtl.dat
+
+ !debug_and_release|!build_all|CONFIG(release, debug|release) {
+ qtConfig(framework) {
+ locales.version = Versions
+ locales.path = Resources/qtwebengine_locales
+ resources.version = Versions
+ resources.path = Resources
+ icu.version = Versions
+ icu.path = Resources
+ # No files, this prepares the bundle Helpers symlink, process.pro will create the directories
+ qtwebengineprocessplaceholder.version = Versions
+ qtwebengineprocessplaceholder.path = Helpers
+ QMAKE_BUNDLE_DATA += icu locales resources qtwebengineprocessplaceholder
+ } else {
+ locales.CONFIG += no_check_exist
+ locales.path = $$[QT_INSTALL_TRANSLATIONS]/qtwebengine_locales
+ resources.CONFIG += no_check_exist
+ resources.path = $$[QT_INSTALL_DATA]/resources
+ INSTALLS += locales resources
+
+ !use?(system_icu) {
+ icu.CONFIG += no_check_exist
+ icu.path = $$[QT_INSTALL_DATA]/resources
+ INSTALLS += icu
+ }
+ }
- !qtConfig(framework):!force_independent {
- #
- # Copy essential files to the qtbase build directory for non-prefix builds
- #
+ !qtConfig(framework):!force_independent {
+ #
+ # Copy essential files to the qtbase build directory for non-prefix builds
+ #
- !use?(system_icu) {
- COPIES += icu
- }
+ !use?(system_icu) {
+ COPIES += icu
+ }
- COPIES += resources locales
+ COPIES += resources locales
+ }
}
}
diff --git a/src/core/gn_run.pro b/src/core/gn_run.pro
index c379f9510..5bb90d8b6 100644
--- a/src/core/gn_run.pro
+++ b/src/core/gn_run.pro
@@ -7,8 +7,14 @@ TEMPLATE = aux
build_pass|!debug_and_release {
+ linux: include(config/desktop_linux.pri)
+ isEmpty(gn_args): error(No gn_args found please make sure you have valid configuration.)
+
ninja_binary = ninja
+ gn_binary = gn
+
runninja.target = run_ninja
+ rungn.target = run_gn
!qtConfig(system-ninja) {
ninja_binary = $$shell_quote($$shell_path($$ninjaPath()))
@@ -18,18 +24,35 @@ build_pass|!debug_and_release {
runninja.depends = buildninja
}
+ CONFIG(release, debug|release):
+ gn_args += is_debug=false
+
+ gn_args += "qtwebengine_target=\"$$shell_path($$OUT_PWD/$$getConfigDir()):QtWebEngineCore\""
+
!qtConfig(system-gn) {
+ gn_binary = $$shell_quote($$shell_path($$gnPath()))
buildgn.target = build_gn
- buildgn.commands = $$buildGn()
- !qtConfig(system-ninja): buildgn.depends = buildninja
+ buildgn.commands = $$buildGn($$gn_args)
+ !qtConfig(system-ninja) {
+ buildgn.depends = buildninja
+ rungn.depends = buildninja
+ }
QMAKE_EXTRA_TARGETS += buildgn
- runninja.depends = buildgn
}
- runninja.commands = $$ninja_binary \$\(NINJAFLAGS\) -C $$shell_quote($$OUT_PWD/$$getConfigDir())
+ gn_args = $$shell_quote($$gn_args)
+ gn_src_root = $$shell_quote($$shell_path($$QTWEBENGINE_ROOT/$$getChromiumSrcDir()))
+ gn_build_root = $$shell_quote($$shell_path($$OUT_PWD/$$getConfigDir()))
+ rungn.commands = $$gn_binary gen $$gn_build_root --args=$$gn_args --root=$$gn_src_root
+ QMAKE_EXTRA_TARGETS += rungn
+
+ runninja.commands = $$ninja_binary \$\(NINJAFLAGS\) -v -C $$shell_quote($$OUT_PWD/$$getConfigDir()) QtWebEngineCore
+ runninja.depends += rungn
QMAKE_EXTRA_TARGETS += runninja
- default_target.depends = buildgn
+ build_pass:build_all: default_target.target = all
+ else: default_target.target = first
+ default_target.depends = runninja
QMAKE_EXTRA_TARGETS += default_target
} else {
diff --git a/src/core/qtwebengine.gni b/src/core/qtwebengine.gni
new file mode 100644
index 000000000..e73f9eb82
--- /dev/null
+++ b/src/core/qtwebengine.gni
@@ -0,0 +1,45 @@
+chromium_version = exec_script("//build/util/version.py", [ "-f", rebase_path("//chrome/VERSION"),
+ "-t", "@MAJOR@.@MINOR@.@BUILD@.@PATCH@"],
+ "list lines")
+
+declare_args() {
+ use_qt = true
+}
+
+include_dirs = [
+ "//skia/config",
+ "//third_party/skia/include/core"
+]
+
+deps = [
+ "//base",
+ "//components/devtools_http_handler",
+ "//components/error_page/common",
+ "//components/keyed_service/content",
+ "//components/visitedlink/browser",
+ "//components/visitedlink/renderer",
+ "//components/web_cache/browser",
+ "//components/web_cache/public/interfaces",
+ "//components/web_cache/renderer",
+ "//content/public/app:browser",
+ "//content/public/browser",
+ "//content/public/common",
+ "//net:net_browser_services",
+ "//services/shell/public/cpp",
+ "//skia",
+ "//third_party/WebKit/public:blink",
+ "//third_party/widevine/cdm:version_h",
+ "//ui/accessibility",
+ ":qtwebengine_sources",
+ ":qtwebengine_resources"
+]
+
+if (enable_widevine) {
+ deps += [ "//components/cdm/renderer"]
+}
+
+# fixme:
+defines = [
+ "QTWEBENGINEPROCESS_NAME=\"QtWebEngineProcess\"",
+ "CHROMIUM_VERSION=\"" + chromium_version[0] + "\""
+]
diff --git a/src/core/qtwebengine_resources.gni b/src/core/qtwebengine_resources.gni
new file mode 100644
index 000000000..e6d3b5a32
--- /dev/null
+++ b/src/core/qtwebengine_resources.gni
@@ -0,0 +1,90 @@
+import("//tools/grit/repack.gni")
+import("//build/config/locales.gni")
+import("//chrome/chrome_repack_locales.gni")
+
+group("qtwebengine_resources") {
+ deps = [
+ "//chrome/app:generated_resources",
+ "//components/resources:components_resources",
+ ":qtwebengine_repack_resources",
+ ":qtwebengine_repack_resources_100",
+ ":qtwebengine_repack_resources_200",
+ ":qtwebengine_repack_resources_devtools",
+ ":qtwebengine_repack_locales_pack"
+ ]
+}
+
+repack("qtwebengine_repack_resources") {
+ sources = [
+ "$root_gen_dir/blink/public/resources/blink_resources.pak",
+ "$root_gen_dir/components/components_resources.pak",
+ "$root_gen_dir/content/content_resources.pak",
+ "$root_gen_dir/net/net_resources.pak",
+ "$root_gen_dir/ui/resources/webui_resources.pak",
+ ]
+ output = "$root_out_dir/qtwebengine_resources.pak"
+ deps = [
+ "//components/resources:components_resources_grit",
+ "//content:resources_grit",
+ "//net:net_resources_grit",
+ "//third_party/WebKit/public:resources_grit",
+ "//ui/resources:webui_resources_grd_grit",
+ ]
+}
+
+repack("qtwebengine_repack_resources_100") {
+ sources = [
+ "$root_gen_dir/ui/resources/ui_resources_100_percent.pak",
+ "$root_gen_dir/components/components_resources_100_percent.pak",
+ "$root_gen_dir/content/app/resources/content_resources_100_percent.pak",
+ "$root_gen_dir/chrome/renderer_resources_100_percent.pak",
+ "$root_gen_dir/blink/public/resources/blink_image_resources_100_percent.pak",
+ ]
+ output = "$root_out_dir/qtwebengine_resources_100p.pak"
+ deps = [
+ "//third_party/WebKit/public:image_resources_grit",
+ "//chrome/renderer:resources_grit",
+ "//components/resources:components_scaled_resources_grit",
+ "//content/app/resources:resources_grit",
+ "//ui/resources:ui_resources_grd_grit"
+ ]
+}
+
+repack("qtwebengine_repack_resources_200") {
+ sources = [
+ "$root_gen_dir/ui/resources/ui_resources_200_percent.pak",
+ "$root_gen_dir/components/components_resources_200_percent.pak",
+ "$root_gen_dir/content/app/resources/content_resources_200_percent.pak",
+ "$root_gen_dir/chrome/renderer_resources_200_percent.pak",
+ "$root_gen_dir/blink/public/resources/blink_image_resources_200_percent.pak",
+ ]
+ output = "$root_out_dir/qtwebengine_resources_200p.pak"
+ deps = [
+ "//third_party/WebKit/public:image_resources_grit",
+ "//chrome/renderer:resources_grit",
+ "//components/resources:components_scaled_resources_grit",
+ "//content/app/resources:resources_grit",
+ "//ui/resources:ui_resources_grd_grit"
+ ]
+}
+
+repack("qtwebengine_repack_resources_devtools") {
+ sources = [
+ "$root_gen_dir/blink/devtools_resources.pak",
+ ]
+ output = "$root_out_dir/qtwebengine_devtools_resources.pak"
+ deps = [
+ "//content/browser/devtools:devtools_resources_grit"
+ ]
+}
+
+chrome_repack_locales("qtwebengine_repack_locales_pack") {
+ input_locales = locales
+ output_dir_name = "qtwebengine_locales"
+ if (is_mac) {
+ output_locales = locales_as_mac_outputs
+ } else {
+ output_locales = locales
+ }
+}
+
diff --git a/src/core/qtwebengine_sources.gni b/src/core/qtwebengine_sources.gni
new file mode 100644
index 000000000..6389bdf60
--- /dev/null
+++ b/src/core/qtwebengine_sources.gni
@@ -0,0 +1,118 @@
+source_set("qtwebengine_sources") {
+ include_dirs = [
+ "//skia/config",
+ "//third_party/skia/include/core"
+ ]
+ deps = []
+ sources = [
+ "//chrome/browser/media/desktop_media_list.h",
+ "//chrome/browser/media/desktop_streams_registry.cc",
+ "//chrome/browser/media/desktop_streams_registry.h",
+ "//chrome/common/chrome_switches.cc",
+ "//chrome/common/chrome_switches.h",
+ "//components/prefs/testing_pref_store.cc",
+ "//components/prefs/testing_pref_store.h",
+ "//extensions/common/constants.cc",
+ "//extensions/common/constants.h",
+ "//extensions/common/url_pattern.cc",
+ "//extensions/common/url_pattern.h",
+ ]
+
+ if (enable_plugins) {
+ sources += [
+ "//chrome/browser/renderer_host/pepper/pepper_flash_clipboard_message_filter.cc",
+ "//chrome/browser/renderer_host/pepper/pepper_flash_clipboard_message_filter.h",
+ "//chrome/renderer/pepper/pepper_flash_font_file_host.cc",
+ "//chrome/renderer/pepper/pepper_flash_font_file_host.h",
+ "//chrome/renderer/pepper/pepper_shared_memory_message_filter.cc",
+ "//chrome/renderer/pepper/pepper_shared_memory_message_filter.h",
+ ]
+ }
+
+ if (enable_spellcheck) {
+ sources += [
+ "//chrome/browser/spellchecker/feedback.cc",
+ "//chrome/browser/spellchecker/feedback.h",
+ "//chrome/browser/spellchecker/feedback_sender.cc",
+ "//chrome/browser/spellchecker/feedback_sender.h",
+ "//chrome/browser/spellchecker/misspelling.cc",
+ "//chrome/browser/spellchecker/misspelling.h",
+ "//chrome/browser/spellchecker/spellcheck_action.cc",
+ "//chrome/browser/spellchecker/spellcheck_action.h",
+ "//chrome/browser/spellchecker/spellcheck_custom_dictionary.cc",
+ "//chrome/browser/spellchecker/spellcheck_custom_dictionary.h",
+ "//chrome/browser/spellchecker/spellcheck_factory.cc",
+ "//chrome/browser/spellchecker/spellcheck_factory.h",
+ "//chrome/browser/spellchecker/spellcheck_host_metrics.cc",
+ "//chrome/browser/spellchecker/spellcheck_host_metrics.h",
+ "//chrome/browser/spellchecker/spellcheck_hunspell_dictionary.cc",
+ "//chrome/browser/spellchecker/spellcheck_hunspell_dictionary.h",
+ "//chrome/browser/spellchecker/spellcheck_message_filter.cc",
+ "//chrome/browser/spellchecker/spellcheck_message_filter.h",
+ "//chrome/browser/spellchecker/spellcheck_message_filter_platform.h",
+ "//chrome/browser/spellchecker/spellcheck_message_filter_platform_mac.cc",
+ "//chrome/browser/spellchecker/spellcheck_platform_mac.mm",
+ "//chrome/browser/spellchecker/spellcheck_service.cc",
+ "//chrome/browser/spellchecker/spellcheck_service.h",
+ "//chrome/browser/spellchecker/spelling_service_client.cc",
+ "//chrome/browser/spellchecker/spelling_service_client.h",
+ "//chrome/browser/spellchecker/word_trimmer.cc",
+ "//chrome/browser/spellchecker/word_trimmer.h",
+ "//chrome/common/common_message_generator.cc",
+ "//chrome/common/pref_names.cc",
+ "//chrome/common/pref_names.h",
+ "//chrome/common/spellcheck_bdict_language.h",
+ "//chrome/common/spellcheck_common.cc",
+ "//chrome/common/spellcheck_common.h",
+ "//chrome/common/spellcheck_marker.h",
+ "//chrome/common/spellcheck_messages.h",
+ "//chrome/common/spellcheck_result.h",
+ "//chrome/renderer/spellchecker/custom_dictionary_engine.cc",
+ "//chrome/renderer/spellchecker/custom_dictionary_engine.h",
+ "//chrome/renderer/spellchecker/hunspell_engine.cc",
+ "//chrome/renderer/spellchecker/hunspell_engine.h",
+ "//chrome/renderer/spellchecker/spellcheck.cc",
+ "//chrome/renderer/spellchecker/spellcheck.h",
+ "//chrome/renderer/spellchecker/spellcheck_language.cc",
+ "//chrome/renderer/spellchecker/spellcheck_language.h",
+ "//chrome/renderer/spellchecker/spellcheck_provider.cc",
+ "//chrome/renderer/spellchecker/spellcheck_provider.h",
+ "//chrome/renderer/spellchecker/spellcheck_worditerator.cc",
+ "//chrome/renderer/spellchecker/spellcheck_worditerator.h",
+ "//chrome/renderer/spellchecker/spelling_engine.h",
+ ]
+ include_dirs += [
+ "//third_party/WebKit"
+ ]
+ deps = [
+ "//third_party/icu",
+ "//third_party/hunspell",
+ "//chrome/tools/convert_dict"
+ ]
+ }
+
+ if (enable_basic_printing || enable_print_preview) {
+ sources += [
+ "//chrome/browser/printing/printer_query.cc",
+ "//chrome/browser/printing/printer_query.h",
+ "//chrome/browser/printing/print_job.cc",
+ "//chrome/browser/printing/print_job.h",
+ "//chrome/browser/printing/print_job_manager.cc",
+ "//chrome/browser/printing/print_job_manager.h",
+ "//chrome/browser/printing/print_job_worker.cc",
+ "//chrome/browser/printing/print_job_worker.h",
+ "//chrome/browser/printing/print_job_worker_owner.cc",
+ "//chrome/browser/printing/print_job_worker_owner.h",
+ ]
+ }
+
+ if (enable_pdf) {
+ deps += [
+ "//pdf",
+ "//components/printing/browser",
+ "//components/printing/renderer",
+ ]
+ }
+
+}
+
diff --git a/src/src.pro b/src/src.pro
index 26abd52cc..7f8b39cd6 100644
--- a/src/src.pro
+++ b/src/src.pro
@@ -7,37 +7,32 @@ webengine_plugin.subdir = webengine/plugin
webengine_plugin.target = sub-webengine-plugin
webengine_plugin.depends = webengine
-SUBDIRS += core
+SUBDIRS += core \
+ process \
+ webengine \
+ webengine_plugin \
+ plugins
-!use?(gn) {
- SUBDIRS += process \
- webengine \
- webengine_plugin \
- plugins
+use?(spellchecker):!use?(native_spellchecker):!cross_compile {
+ SUBDIRS += qwebengine_convert_dict
+ qwebengine_convert_dict.subdir = tools/qwebengine_convert_dict
+ qwebengine_convert_dict.depends = core
+}
- # allow only desktop builds of qwebengine_convert_dict
- contains(WEBENGINE_CONFIG, use_spellchecker):!contains(WEBENGINE_CONFIG, use_native_spellchecker):!cross_compile {
- SUBDIRS += qwebengine_convert_dict
- qwebengine_convert_dict.subdir = tools/qwebengine_convert_dict
- qwebengine_convert_dict.depends = core
- }
+isQMLTestSupportApiEnabled() {
+ webengine_testsupport_plugin.subdir = webengine/plugin/testsupport
+ webengine_testsupport_plugin.target = sub-webengine-testsupport-plugin
+ webengine_testsupport_plugin.depends = webengine
+ SUBDIRS += webengine_testsupport_plugin
+}
- isQMLTestSupportApiEnabled() {
- webengine_testsupport_plugin.subdir = webengine/plugin/testsupport
- webengine_testsupport_plugin.target = sub-webengine-testsupport-plugin
- webengine_testsupport_plugin.depends = webengine
- SUBDIRS += webengine_testsupport_plugin
- }
+!contains(WEBENGINE_CONFIG, no_ui_delegates) {
+ SUBDIRS += webengine/ui \
+ webengine/ui2
+}
- # FIXME: We probably want a bit more control over config options to tweak what to build/ship or not.
- # Another example of where this could be necessary is to make it easy to build proprietery codecs support.
- !contains(WEBENGINE_CONFIG, no_ui_delegates) {
- SUBDIRS += webengine/ui \
- webengine/ui2
- }
- qtHaveModule(widgets) {
- SUBDIRS += webenginewidgets
- plugins.depends = webenginewidgets
- }
+qtHaveModule(widgets) {
+ SUBDIRS += webenginewidgets
+ plugins.depends = webenginewidgets
}
diff --git a/src/tools/qwebengine_convert_dict/qwebengine_convert_dict.pro b/src/tools/qwebengine_convert_dict/qwebengine_convert_dict.pro
index 715081b5f..21add0154 100644
--- a/src/tools/qwebengine_convert_dict/qwebengine_convert_dict.pro
+++ b/src/tools/qwebengine_convert_dict/qwebengine_convert_dict.pro
@@ -1,12 +1,26 @@
option(host_build)
# Look for linking information produced by gyp for our target according to core_generated.gyp
-!include($$OUT_PWD/../../core/$$getConfigDir()/convert_dict_linking.pri) {
- error("Could not find the linking information that gyp should have generated.")
+use?(gn): linking_pri = $$OUT_PWD/../../core/$$getConfigDir()/convert_dict.pri
+else: linking_pri = $$OUT_PWD/../../core/$$getConfigDir()/convert_dict_linking.pri
+
+!include($$linking_pri) {
+ error("Could not find the linking information that gyp/gn should have generated.")
}
-# skip dummy main.cpp file
-OBJECTS =
+use?(gn){
+ isEmpty(NINJA_OBJECTS): error("Missing object files from QtWebEngineCore linking pri.")
+ isEmpty(NINJA_LFLAGS): error("Missing linker flags from QtWebEngineCore linking pri")
+ isEmpty(NINJA_ARCHIVES): error("Missing archive files from QtWebEngineCore linking pri")
+ isEmpty(NINJA_LIBS): error("Missing library files from QtWebEngineCore linking pri")
+ linux: LIBS_PRIVATE = $$NINJA_OBJECTS -Wl,-whole-archive $$NINJA_ARCHIVES -Wl,-no-whole-archive
+ LIBS_PRIVATE += $$NINJA_LIB_DIRS $$NINJA_LIBS
+ QMAKE_LFLAGS += $$NINJA_LFLAGS
+ POST_TARGETDEPS += $$NINJA_TARGETDEPS
+} else {
+ # skip dummy main.cpp file
+ OBJECTS =
+}
# Fixme: -Werror=unused-parameter in core
QMAKE_CXXFLAGS_WARN_ON =
diff --git a/tools/qmake/mkspecs/features/functions.prf b/tools/qmake/mkspecs/features/functions.prf
index a47e4b7e8..9cd20d736 100644
--- a/tools/qmake/mkspecs/features/functions.prf
+++ b/tools/qmake/mkspecs/features/functions.prf
@@ -381,19 +381,23 @@ defineReplace(buildNinja) {
!exists($$out) {
mkpath($$dirname(out))
src_3rd_party_dir = $$absolute_path("$${getChromiumSrcDir()}/../", "$$QTWEBENGINE_ROOT")
- ninja_configure = $$absolute_path(ninja/configure.py, $$src_3rd_party_dir)
- system("cd $$system_quote($$system_path($$dirname(out))) && python $$system_quote($$system_path($$ninja_configure)) --bootstrap")
+ ninja_configure = $$system_quote($$system_path($$absolute_path(ninja/configure.py, $$src_3rd_party_dir)))
+ !system("cd $$system_quote($$system_path($$dirname(out))) && python $$ninja_configure --bootstrap") {
+ error("NINJA build error!")
+ }
}
}
defineReplace(gnPath) {
src_3rd_party_dir = $$absolute_path("$${getChromiumSrcDir()}/../", "$$QTWEBENGINE_ROOT")
- out = $$shadowed($$absolute_path(chromium/tools/gn/gn, $$src_3rd_party_dir))
+ out = $$shadowed($$absolute_path(chromium/tools/gn/out/Release/gn, $$src_3rd_party_dir))
+
win32: out = $${out}.exe
return($$out)
}
defineReplace(buildGn) {
+ gn_args = $$1
out = $$gnPath()
!qtConfig(system-ninja): ninja_path = "--path $$ninjaPath()"
# check if it is not already build
@@ -401,9 +405,11 @@ defineReplace(buildGn) {
mkpath($$dirname(out))
src_3rd_party_dir = $$absolute_path("$${getChromiumSrcDir()}/../", "$$QTWEBENGINE_ROOT")
gn_bootstrap = $$system_path($$absolute_path(chromium/tools/gn/bootstrap/bootstrap.py, $$src_3rd_party_dir))
- gn_args = $$system_quote(is_clang=false use_sysroot=false enable_remoting=false enable_nacl=false)
+ gn_args = $$system_quote($$gn_args)
gn_configure = $$system_quote($$gn_bootstrap) --shadow --gn-gen-args=$$gn_args $$ninja_path
- system("cd $$system_quote($$system_path($$dirname(out))) && python $$gn_configure")
+ !system("cd $$system_quote($$system_path($$dirname(out))) && python $$gn_configure") {
+ error("GN build error!")
+ }
}
}
diff --git a/tools/qmake/mkspecs/features/gn_generator.prf b/tools/qmake/mkspecs/features/gn_generator.prf
index c5f283a99..f53132feb 100644
--- a/tools/qmake/mkspecs/features/gn_generator.prf
+++ b/tools/qmake/mkspecs/features/gn_generator.prf
@@ -93,7 +93,7 @@ GN_CONTENTS += "}"
TARGET_TYPE = $$getTargetType()
GN_CONTENTS += "$${TARGET_TYPE}(\"$$TARGET\") {"
-
+!isEmpty(GN_CREATE_PRI): GN_CONTENTS += " create_pri_file = $$GN_CREATE_PRI"
!isEmpty(GN_IMPORTS) {
for (imp, GN_IMPORTS): GN_CONTENTS += " import(\"$$imp\")"
}