functions.prf 4.22 KiB
defineTest(isPlatformSupported) {
  static: return(false)
  osx:lessThan(QMAKE_XCODE_VERSION, 5.1): return(false)
  linux-g++*:!isGCCVersionSupported():return(false)
  !isPythonVersionSupported(): return(false)
  linux-g++*|win32-msvc2013|macx-clang: return(true)
  boot2qt: return(true)
  return(false)
defineTest(isPythonVersionSupported) {
  python_major_version = $$system("python -c 'import sys; print sys.version_info.major'")
  python_minor_version = $$system("python -c 'import sys; print sys.version_info.minor'")
  greaterThan(python_major_version, 1): greaterThan(python_minor_version, 6): return(true)
  return(false)
defineTest(isGCCVersionSupported) {
  # The below will work for gcc 4.6 and up and also match gcc 5
  greaterThan(QT_GCC_MINOR_VERSION, 5):return(true)
  greaterThan(QT_GCC_MAJOR_VERSION, 4):return(true)
  return(false)
# 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(getConfigDir) {
  win32:contains(QMAKE_TARGET.arch, x86_64) {
      CONFIG(release, debug|release):return("Release_x64")
      return("Debug_x64")
  CONFIG(release, debug|release):return("Release")
  return("Debug")
defineReplace(getChromiumSrcDir) {
  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"
  return($$git_chromium_src_dir)
defineReplace(extractCFlag) {
    CFLAGS = $$QMAKE_CC $$QMAKE_CFLAGS
    !isEmpty(ANDROID_TARGET_CFLAGS): CFLAGS = $$ANDROID_TARGET_CFLAGS
    OPTION = $$find(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) {
7172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
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) { # If NINJA_PATH env var is set, prefer that. # Fallback to locating our own bootstrapped ninja. out = $(NINJA_PATH) !exists($$out) { out = $$absolute_path("$${getChromiumSrcDir()}/../ninja/ninja", "$$QTWEBENGINE_ROOT") win32: out = $$system_path($${out}.exe) # If we did not find ninja, then we bootstrap it. !exists($$out): system("python $$dirname(out)/bootstrap.py") } return($$out) }