Commit 8fd262f1 authored by Pierre Rossi's avatar Pierre Rossi Committed by Jocelyn Turcotte
Browse files

Make ninja detection a bit more robust

Having ninja in the PATH should be good enough.
If that didn't work, we try to find it in the most logical location
relative to CHROMIUM_SRC_DIR and bail out otherwise.
Since it seems unlikely to vary, and can be convenient to keep persistent,
we put it in .qmake.cache if qmake uses a cache.
Showing with 18 additions and 4 deletions
......@@ -9,7 +9,7 @@ GYP_OUTPUT = $$system(./gyp_qtwebengine)
message($$GYP_OUTPUT)
ninja.target = ninja
ninja.commands = $$CHROMIUM_SRC_DIR/../depot_tools/ninja -C $$getOutDir()/$$getConfigDir()
ninja.commands = $$findNinja() -C $$getOutDir()/$$getConfigDir()
ninja.depends: qmake
QMAKE_EXTRA_TARGETS += ninja
......
......@@ -32,5 +32,16 @@ defineReplace(mocOutput) {
# The order is important, since the output of the second replace would end up accidentaly transformed by the first one
out = $$replace(out, ^(.*)($$join(QMAKE_EXT_CPP,|)), $${QMAKE_CPP_MOD_MOC}\\1$${QMAKE_EXT_CPP_MOC})
out = $$replace(out, ^(.*)($$join(QMAKE_EXT_H,|)), $${QMAKE_H_MOD_MOC}\\1$${first(QMAKE_EXT_CPP)})
return ($$out)
return($$out)
}
defineReplace(findNinja) {
!isEmpty(CACHED_NINJA_EXECUTABLE):exists($$CACHED_NINJA_EXECUTABLE): return($$CACHED_NINJA_EXECUTABLE)
out = $$system("which ninja 2>/dev/null")
# Try to be smart about it if we know where the chromium sources are located
isEmpty(CHROMIUM_SRC_DIR): message(foobar)
!exists($$out):!isEmpty(CHROMIUM_SRC_DIR): out = $$absolute_path("../depot_tools/ninja", $$CHROMIUM_SRC_DIR)
!exists($$out): error("Ninja executable can't be found.")
cache(CACHED_NINJA_EXECUTABLE, set, out)
return($$out)
}
......@@ -10,13 +10,16 @@ SUBDIRS = shared \
build \ # This is where we use the generated qt_generated.gypi and run gyp
example \
# Ninja executable location needs to be determined early for extra targets. Should be fetched from cache most of the time anyway.
NINJA_EXECUTABLE = $$findNinja()
# Extra targets that invoke ninja on the desired configuration added for convenience
release.target = release
release.commands = $$CHROMIUM_SRC_DIR/../depot_tools/ninja -C $$getOutDir()/Release
release.commands = $$NINJA_EXECUTABLE -C $$getOutDir()/Release
release.depends: qmake
debug.target = debug
debug.commands = $$CHROMIUM_SRC_DIR/../depot_tools/ninja -C $$getOutDir()/Debug
debug.commands = $$NINJA_EXECUTABLE -C $$getOutDir()/Debug
debug.depends: qmake
QMAKE_EXTRA_TARGETS += release \
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment