diff options
author | Michal Klocek <michal.klocek@qt.io> | 2017-02-03 16:13:50 +0100 |
---|---|---|
committer | Michal Klocek <michal.klocek@qt.io> | 2017-02-06 19:32:46 +0000 |
commit | abaede7601ea7426242dc29deb964ab3dd543c0a (patch) | |
tree | f90e83c63f80c8ce58c5c75d0a52d3518e53477c /src/buildtools | |
parent | 79ad6bad373bb5151ba7c3410609a9fee009be58 (diff) |
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 <allan.jensen@qt.io>
Diffstat (limited to 'src/buildtools')
-rw-r--r-- | src/buildtools/buildtools.pro | 10 | ||||
-rw-r--r-- | src/buildtools/gn.pro | 34 | ||||
-rw-r--r-- | src/buildtools/ninja.pro | 31 |
3 files changed, 75 insertions, 0 deletions
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 +} + |