summaryrefslogtreecommitdiffstats
path: root/src/core
diff options
context:
space:
mode:
authorMichal Klocek <michal.klocek@qt.io>2016-10-21 19:14:16 +0200
committerMichal Klocek <michal.klocek@qt.io>2016-12-08 13:56:12 +0000
commit0c6c48da2ad5c60f5404636290eb82f492c2a1a8 (patch)
tree219a3d6ac11ce07cf3873181fc0b4dd285b52970 /src/core
parent72242c614378a43c4563c05678d8e46d6fcbaa8d (diff)
Add gn bootstrap to build system
Bootstraps gn wihout rebuild. Change-Id: I09ee4d6b6f458f16f0d9ac18433823153ab75995 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'src/core')
-rw-r--r--src/core/core.pro62
-rw-r--r--src/core/gn_run.pro39
2 files changed, 72 insertions, 29 deletions
diff --git a/src/core/core.pro b/src/core/core.pro
index a205d39a0..86fe838cb 100644
--- a/src/core/core.pro
+++ b/src/core/core.pro
@@ -3,39 +3,43 @@ TEMPLATE = subdirs
# core_headers is a dummy module to syncqt the headers so we can
# use them by later targets
core_headers.file = core_headers.pro
-
-# core_gyp_generator.pro is a dummy .pro file that is used by qmake
-# to generate our main .gyp file
-core_gyp_generator.file = core_gyp_generator.pro
-core_gyp_generator.depends = core_headers
-
-# gyp_run.pro calls gyp through gyp_qtwebengine on the qmake step, and ninja on the make step.
-gyp_run.file = gyp_run.pro
-gyp_run.depends = core_gyp_generator
-
core_api.file = api/core_api.pro
-core_api.depends = gyp_run
# This will take the compile output of ninja, and link+deploy the final binary.
core_module.file = core_module.pro
core_module.depends = core_api
-SUBDIRS += core_headers \
- core_gyp_generator
-
-!win32 {
- # gyp_configure_host.pro and gyp_configure_target.pro are phony pro files that
- # extract things like compiler and linker from qmake
- # Do not use them on Windows, where Qt already expects the toolchain to be
- # selected through environment varibles.
- gyp_configure_host.file = gyp_configure_host.pro
- gyp_configure_target.file = gyp_configure_target.pro
- gyp_configure_target.depends = gyp_configure_host
-
- gyp_run.depends += gyp_configure_host gyp_configure_target
- SUBDIRS += gyp_configure_host gyp_configure_target
+contains(WEBENGINE_CONFIG, use_gn) {
+ gn_run.file = gn_run.pro
+ SUBDIRS += gn_run
+} else {
+
+ # core_gyp_generator.pro is a dummy .pro file that is used by qmake
+ # to generate our main .gyp file
+ core_gyp_generator.file = core_gyp_generator.pro
+ core_gyp_generator.depends = core_headers
+
+ # gyp_run.pro calls gyp through gyp_qtwebengine on the qmake step, and ninja on the make step.
+ gyp_run.file = gyp_run.pro
+ gyp_run.depends = core_gyp_generator
+ core_api.depends = gyp_run
+
+ SUBDIRS += gyp_run \
+ core_api \
+ core_module \
+ core_headers \
+ core_gyp_generator
+
+ !win32 {
+ # gyp_configure_host.pro and gyp_configure_target.pro are phony pro files that
+ # extract things like compiler and linker from qmake
+ # Do not use them on Windows, where Qt already expects the toolchain to be
+ # selected through environment varibles.
+ gyp_configure_host.file = gyp_configure_host.pro
+ gyp_configure_target.file = gyp_configure_target.pro
+ gyp_configure_target.depends = gyp_configure_host
+
+ gyp_run.depends += gyp_configure_host gyp_configure_target
+ SUBDIRS += gyp_configure_host gyp_configure_target
+ }
}
-
-SUBDIRS += gyp_run \
- core_api \
- core_module
diff --git a/src/core/gn_run.pro b/src/core/gn_run.pro
new file mode 100644
index 000000000..c379f9510
--- /dev/null
+++ b/src/core/gn_run.pro
@@ -0,0 +1,39 @@
+isQtMinimum(5, 8) {
+ include($$QTWEBENGINE_OUT_ROOT/qtwebengine-config.pri)
+ QT_FOR_CONFIG += webengine-private
+}
+
+TEMPLATE = aux
+
+build_pass|!debug_and_release {
+
+ ninja_binary = ninja
+ runninja.target = run_ninja
+
+ !qtConfig(system-ninja) {
+ ninja_binary = $$shell_quote($$shell_path($$ninjaPath()))
+ buildninja.target = build_ninja
+ buildninja.commands = $$buildNinja()
+ QMAKE_EXTRA_TARGETS += buildninja
+ runninja.depends = buildninja
+ }
+
+ !qtConfig(system-gn) {
+ buildgn.target = build_gn
+ buildgn.commands = $$buildGn()
+ !qtConfig(system-ninja): buildgn.depends = buildninja
+ QMAKE_EXTRA_TARGETS += buildgn
+ runninja.depends = buildgn
+ }
+
+ runninja.commands = $$ninja_binary \$\(NINJAFLAGS\) -C $$shell_quote($$OUT_PWD/$$getConfigDir())
+ QMAKE_EXTRA_TARGETS += runninja
+
+ default_target.depends = buildgn
+
+ 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.
+ notParallel.target = .NOTPARALLEL
+ QMAKE_EXTRA_TARGETS += notParallel
+}