From abaede7601ea7426242dc29deb964ab3dd543c0a Mon Sep 17 00:00:00 2001 From: Michal Klocek Date: Fri, 3 Feb 2017 16:13:50 +0100 Subject: Refactor release and debug handling Fix release and debug builds. Refactor ninja and gn builds as a sub projects, these are only build as release. Call core_generator and gn_run separately for debug and release builds. Change-Id: I638023214cdc98a5101d190486452cc4a1229486 Reviewed-by: Allan Sandfeld Jensen --- src/buildtools/buildtools.pro | 10 ++++++++++ src/buildtools/gn.pro | 34 ++++++++++++++++++++++++++++++++++ src/buildtools/ninja.pro | 31 +++++++++++++++++++++++++++++++ src/core/core_generator.pro | 1 + src/core/gn_run.pro | 26 +++++++------------------- src/core/gyp_run.pro | 4 ---- src/src.pro | 5 ++++- 7 files changed, 87 insertions(+), 24 deletions(-) create mode 100644 src/buildtools/buildtools.pro create mode 100644 src/buildtools/gn.pro create mode 100644 src/buildtools/ninja.pro (limited to 'src') diff --git a/src/buildtools/buildtools.pro b/src/buildtools/buildtools.pro new file mode 100644 index 000000000..4ca21768e --- /dev/null +++ b/src/buildtools/buildtools.pro @@ -0,0 +1,10 @@ +TEMPLATE = subdirs + +ninja.file = ninja.pro +SUBDIRS += ninja + +use?(gn) { + gn.file = gn.pro + gn.depends = ninja + SUBDIRS += gn +} diff --git a/src/buildtools/gn.pro b/src/buildtools/gn.pro new file mode 100644 index 000000000..e9383bc3f --- /dev/null +++ b/src/buildtools/gn.pro @@ -0,0 +1,34 @@ +TEMPLATE = aux +CONFIG += release + +defineReplace(buildGn) { + gn_args = $$1 + out = $$gnPath() + !qtConfig(system-ninja): ninja_path = "--path $$ninjaPath()" + # check if it is not already build + !exists($$out) { + 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($$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") { + error("GN build error!") + } + } +} + +isQtMinimum(5, 8) { + include($$QTWEBENGINE_OUT_ROOT/qtwebengine-config.pri) + QT_FOR_CONFIG += webengine-private +} + +!qtConfig(system-gn) { + buildgn.target = build_gn + buildgn.commands = $$buildGn($$gnArgs()) + QMAKE_EXTRA_TARGETS += buildgn + + default_target.target = first + default_target.depends = buildgn + QMAKE_EXTRA_TARGETS += default_target +} diff --git a/src/buildtools/ninja.pro b/src/buildtools/ninja.pro new file mode 100644 index 000000000..c391d6e84 --- /dev/null +++ b/src/buildtools/ninja.pro @@ -0,0 +1,31 @@ +TEMPLATE = aux +CONFIG += release + +defineReplace(buildNinja) { + out = $$ninjaPath() + # check if it is not already build + !exists($$out) { + mkpath($$dirname(out)) + src_3rd_party_dir = $$absolute_path("$${getChromiumSrcDir()}/../", "$$QTWEBENGINE_ROOT") + 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!") + } + } +} + +isQtMinimum(5, 8) { + include($$QTWEBENGINE_OUT_ROOT/qtwebengine-config.pri) + QT_FOR_CONFIG += webengine-private +} + +!qtConfig(system-ninja) { + buildninja.target = build_ninja + buildninja.commands = $$buildNinja() + QMAKE_EXTRA_TARGETS += buildninja + + default_target.target = first + default_target.depends = buildninja + QMAKE_EXTRA_TARGETS += default_target +} + diff --git a/src/core/core_generator.pro b/src/core/core_generator.pro index fdd1b8e59..6900468d9 100644 --- a/src/core/core_generator.pro +++ b/src/core/core_generator.pro @@ -1,6 +1,7 @@ use?(gn) { include(core_gn_config.pri) + qtConfig(debug_and_release): CONFIG += debug_and_release } else { include(core_gyp_config.pri) } diff --git a/src/core/gn_run.pro b/src/core/gn_run.pro index 534f0c7b3..ec91b469d 100644 --- a/src/core/gn_run.pro +++ b/src/core/gn_run.pro @@ -5,11 +5,9 @@ isQtMinimum(5, 8) { TEMPLATE = aux -build_pass|!debug_and_release { +qtConfig(debug_and_release): CONFIG += debug_and_release build_all - macos: include(config/mac_osx.pri) - linux: include(config/desktop_linux.pri) - isEmpty(gn_args): error(No gn_args found please make sure you have valid configuration.) +build_pass|!debug_and_release { ninja_binary = ninja gn_binary = gn @@ -17,13 +15,7 @@ build_pass|!debug_and_release { runninja.target = run_ninja rungn.target = run_gn - !qtConfig(system-ninja) { - ninja_binary = $$shell_quote($$shell_path($$ninjaPath())) - buildninja.target = build_ninja - buildninja.commands = $$buildNinja() - QMAKE_EXTRA_TARGETS += buildninja - runninja.depends = buildninja - } + gn_args = $$gnArgs() CONFIG(release, debug|release): gn_args += is_debug=false @@ -32,13 +24,10 @@ build_pass|!debug_and_release { !qtConfig(system-gn) { gn_binary = $$shell_quote($$shell_path($$gnPath())) - buildgn.target = build_gn - buildgn.commands = $$buildGn($$gn_args) - !qtConfig(system-ninja) { - buildgn.depends = buildninja - rungn.depends = buildninja - } - QMAKE_EXTRA_TARGETS += buildgn + } + + !qtConfig(system-ninja) { + ninja_binary = $$shell_quote($$shell_path($$ninjaPath())) } gn_args = $$shell_quote($$gn_args) @@ -54,7 +43,6 @@ build_pass|!debug_and_release { build_pass:build_all: default_target.target = all else: default_target.target = first default_target.depends = runninja - QMAKE_EXTRA_TARGETS += default_target } else { # Special GNU make target for the meta Makefile that ensures that our debug and release Makefiles won't both run ninja in parallel. diff --git a/src/core/gyp_run.pro b/src/core/gyp_run.pro index fa8f73de4..2c6aa5069 100644 --- a/src/core/gyp_run.pro +++ b/src/core/gyp_run.pro @@ -159,10 +159,6 @@ build_pass|!debug_and_release { !qtConfig(system-ninja) { ninja_binary = $$shell_quote($$shell_path($$ninjaPath())) - buildninja.target = build_ninja - buildninja.commands = $$buildNinja() - QMAKE_EXTRA_TARGETS += buildninja - runninja.depends = buildninja } runninja.commands = $$ninja_binary \$\(NINJAFLAGS\) -C $$shell_quote($$OUT_PWD/$$getConfigDir()) diff --git a/src/src.pro b/src/src.pro index 7f8b39cd6..d9b57615d 100644 --- a/src/src.pro +++ b/src/src.pro @@ -7,7 +7,10 @@ webengine_plugin.subdir = webengine/plugin webengine_plugin.target = sub-webengine-plugin webengine_plugin.depends = webengine -SUBDIRS += core \ +core.depends = buildtools + +SUBDIRS += buildtools \ + core \ process \ webengine \ webengine_plugin \ -- cgit v1.2.3