# Map to the correct target type for gyp defineReplace(toGypTargetType) { equals(TEMPLATE, "app"):return("executable") equals(TEMPLATE, "lib") { CONFIG(static): return("static_library") return("shared_library") } return("none") } defineReplace(getOutDir) { # FIXME: rely on env variable in here and in the gyp_qtwebengine script, à la WEBKITOUTPUTDIR return("$$QTWEBENGINE_ROOT/out") } defineReplace(getConfigDir) { CONFIG(release, debug|release):return("Release") return("Debug") } defineReplace(extractCFlag) { OPTION = $$find(QMAKE_CFLAGS, $$1) OPTION = $$split(OPTION, =) return ($$member(OPTION, 1)) } defineReplace(findMocables) { input = $$1 for (file, input): \ infiles += $$absolute_path($$file, $$_PRO_FILE_PWD_) mocables = $$system("python $$QTWEBENGINE_ROOT/tools/buildscripts/find-mocables $$infiles") mocables = $$replace(mocables, $$_PRO_FILE_PWD_/, '') return($$mocables) } defineReplace(findIncludedMocFiles) { input = $$1 for (file, input): \ infiles += $$absolute_path($$file, $$_PRO_FILE_PWD_) return($$system("python $$QTWEBENGINE_ROOT/tools/buildscripts/find-included-moc-files $$infiles")) } defineReplace(mocOutput) { out = $$1 # 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) } defineReplace(rccOutput) { out = $$1 out = $$replace(out, .qrc, .cpp) out = $$join(out, qrc_, qrc_) return($$out) } defineReplace(rccExternFunc) { out = $$1 out = $$replace(out, .qrc, ) return($$out) } defineReplace(which) { out = $$1 win32 { command = $$split(out, " ") executable = $$first(command) # Return the first match only out = $$system("((for /f \"usebackq delims=\" %i in (`where $$executable 2^> NUL`) do @if not defined _endwhich (@echo %i & set _endwhich=true)) & set _endwhich=)") isEmpty(out) { message($$executable not found) out = $$executable } for(arg, command): !equals(arg, $$executable): out += $$arg } else:unix { command = $$split(out, " ") executable = $$first(command) out = $$system("which $$executable 2>/dev/null") isEmpty(out) { message($$executable not found) out = $$executable } for(arg, command): !equals(arg, $$executable): out += $$arg } return($$out) } defineReplace(findOrBuildNinja) { !isEmpty(CACHED_NINJA_EXECUTABLE):exists($$CACHED_NINJA_EXECUTABLE): return($$CACHED_NINJA_EXECUTABLE) out = $$which(ninja) # Try to be smart about it if we know where the chromium sources are located !exists($$out) { git_chromium_src_dir = $$system("git config qtwebengine.chromiumsrcdir") # Fall back to the snapshot path if git does not know about chromium sources (i.e. init-repository.py has not been used) isEmpty(git_chromium_src_dir): git_chromium_src_dir = "src/3rdparty/chromium" win32: out = $$system_path($$absolute_path("$$git_chromium_src_dir/../ninja/ninja.exe", "$$QTWEBENGINE_ROOT")) else: out = $$absolute_path("$$git_chromium_src_dir/../ninja/ninja", "$$QTWEBENGINE_ROOT") # If we still did not find ninja, then we bootstrap it. !exists($$out) { message("bootstrapping ninja...") ninjadir = $$dirname(out) system("python $$ninjadir/bootstrap.py") } } message("using $$out") cache(CACHED_NINJA_EXECUTABLE, set, out) return($$out) }