summaryrefslogtreecommitdiffstats
path: root/src/buildtools
diff options
context:
space:
mode:
authorMichal Klocek <michal.klocek@qt.io>2017-02-03 16:13:50 +0100
committerMichal Klocek <michal.klocek@qt.io>2017-02-06 19:32:46 +0000
commitabaede7601ea7426242dc29deb964ab3dd543c0a (patch)
treef90e83c63f80c8ce58c5c75d0a52d3518e53477c /src/buildtools
parent79ad6bad373bb5151ba7c3410609a9fee009be58 (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.pro10
-rw-r--r--src/buildtools/gn.pro34
-rw-r--r--src/buildtools/ninja.pro31
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
+}
+