blob: 56c18bdb5ea0202bb6b510dd3797eef8acb0af84 [file] [log] [blame]
include(common.pri)
include(functions.pri)
defineReplace(extractCFlag) {
return($$qtwebengine_extractCFlag($$1))
}
QT_FOR_CONFIG += gui-private webenginecore-private pdf-private
gn_args += \
use_cups=false \
use_gio=false \
use_gnome_keyring=false \
linux_use_bundled_binutils=false \
use_udev=true \
use_bundled_fontconfig=false \
use_sysroot=false \
enable_session_service=false \
is_cfi=false \
use_ozone=true \
ozone_auto_platforms=false \
ozone_platform_headless=false \
ozone_platform_external=true \
ozone_platform=\"qt\" \
ozone_extra_path=\"$$QTWEBENGINE_ROOT/src/core/ozone/ozone_extra.gni\"
use_gold_linker: gn_args += use_gold=true
else: gn_args += use_gold=false
use_lld_linker: gn_args += use_lld=true
else: gn_args += use_lld=false
clang {
clang_full_path = $$which($${QMAKE_CXX})
# Remove the "/bin/clang++" part.
clang_prefix = $$section(clang_full_path, /, 0, -3)
gn_args += \
is_clang=true \
clang_use_chrome_plugins=false \
clang_use_default_sample_profile=false \
clang_base_path=\"$${clang_prefix}\"
linux-clang-libc++: gn_args += use_libcxx=true
} else {
gn_args += \
is_clang=false
}
cross_compile:!host_build {
TOOLCHAIN_SYSROOT = $$[QT_SYSROOT]
!isEmpty(TOOLCHAIN_SYSROOT): gn_args += target_sysroot=\"$${TOOLCHAIN_SYSROOT}\"
}
contains(QT_ARCH, "arm") {
# Extract ARM specific compiler options that we have to pass to gn,
# but let gn figure out a default if an option is not present.
MTUNE = $$extractCFlag("-mtune=.*")
!isEmpty(MTUNE): gn_args += arm_tune=\"$$MTUNE\"
MFLOAT = $$extractCFlag("-mfloat-abi=.*")
!isEmpty(MFLOAT): gn_args += arm_float_abi=\"$$MFLOAT\"
MARCH = $$extractCFlag("-march=.*")
!isEmpty(MARCH): gn_args += arm_arch=\"$$MARCH\"
MARMV = $$replace(MARCH, "armv",)
!isEmpty(MARMV) {
MARMV = $$split(MARMV,)
MARMV = $$member(MARMV, 0)
lessThan(MARMV, 6): error("$$MARCH architecture is not supported")
gn_args += arm_version=$$MARMV
}
# TODO: use neon detection from qtbase
!lessThan(MARMV, 8) {
gn_args += arm_use_neon=true
} else {
MFPU = $$extractCFlag("-mfpu=.*")
!isEmpty(MFPU):contains(MFPU, ".*neon.*") {
gn_args += arm_use_neon=true
} else {
gn_args += arm_use_neon=false
# If the toolchain does not explicitly specify to use NEON instructions
# we use arm_neon_optional for ARMv7
equals(MARMV, 7): gn_args += arm_optionally_use_neon=true
}
}
qtConfig(webengine-arm-thumb) {
gn_args += arm_use_thumb=true # this adds -mthumb
} else {
gn_args += arm_use_thumb=false
!qtConfig(webengine-system-ffmpeg) {
# Fixme QTBUG-71772
gn_args += media_use_ffmpeg=false
gn_args += use_webaudio_ffmpeg=false
}
}
}
contains(QT_ARCH, "mips") {
MARCH = $$extractCFlag("-march=.*")
!isEmpty(MARCH) {
equals(MARCH, "mips32r6"): gn_args += mips_arch_variant=\"r6\"
else: equals(MARCH, "mips32r2"): gn_args += mips_arch_variant=\"r2\"
else: equals(MARCH, "mips32"): gn_args += mips_arch_variant=\"r1\"
} else {
contains(QMAKE_CFLAGS, "mips32r6"): gn_args += mips_arch_variant=\"r6\"
else: contains(QMAKE_CFLAGS, "mips32r2"): gn_args += mips_arch_variant=\"r2\"
else: contains(QMAKE_CFLAGS, "mips32"): gn_args += mips_arch_variant=\"r1\"
}
contains(QMAKE_CFLAGS, "-mmsa"): gn_args += mips_use_msa=true
contains(QMAKE_CFLAGS, "-mdsp2"): gn_args += mips_dsp_rev=2
else: contains(QMAKE_CFLAGS, "-mdsp"): gn_args += mips_dsp_rev=1
}
host_build {
gn_args += custom_toolchain=\"$$QTWEBENGINE_OUT_ROOT/src/toolchain:host\"
GN_HOST_CPU = $$gnArch($$QT_ARCH)
gn_args += host_cpu=\"$$GN_HOST_CPU\"
# Don't bother trying to use system libraries in this case
gn_args += use_glib=false
} else {
gn_args += custom_toolchain=\"$$QTWEBENGINE_OUT_ROOT/src/toolchain:target\"
gn_args += host_toolchain=\"$$QTWEBENGINE_OUT_ROOT/src/toolchain:host\"
GN_TARGET_CPU = $$gnArch($$QT_ARCH)
cross_compile {
gn_args += v8_snapshot_toolchain=\"$$QTWEBENGINE_OUT_ROOT/src/toolchain:v8_snapshot\"
# FIXME: we should set host_cpu in case host-toolchain doesn't match os arch,
# but currently we don't it available at this point
gn_args += target_cpu=\"$$GN_TARGET_CPU\"
} else {
gn_args += host_cpu=\"$$GN_TARGET_CPU\"
}
!contains(QT_CONFIG, no-pkg-config) {
# Strip '>2 /dev/null' from $$pkgConfigExecutable()
PKGCONFIG = $$first($$list($$pkgConfigExecutable()))
gn_args += pkg_config=\"$$PKGCONFIG\"
PKG_CONFIG_HOST = $$(GN_PKG_CONFIG_HOST)
pkgConfigLibDir = $$(PKG_CONFIG_LIBDIR)
pkgConfigSysrootDir = $$(PKG_CONFIG_SYSROOT_DIR)
isEmpty(PKG_CONFIG_HOST): cross_compile {
!isEmpty(pkgConfigLibDir)|!isEmpty(pkgConfigSysrootDir) {
PKG_CONFIG_HOST = $$pkgConfigHostExecutable()
}
}
isEmpty(PKG_CONFIG_HOST): PKG_CONFIG_HOST = $$QMAKE_PKG_CONFIG_HOST
gn_args += host_pkg_config=\"$$PKG_CONFIG_HOST\"
}
qtConfig(webengine-system-zlib) {
qtConfig(webengine-system-minizip): gn_args += use_system_zlib=true use_system_minizip=true
gn_args += pdfium_use_system_zlib=true
}
qtConfig(webengine-system-png) {
gn_args += use_system_libpng=true pdfium_use_system_libpng=true
}
qtConfig(webengine-system-jpeg) {
gn_args += use_system_libjpeg=true
} else {
gn_args += use_system_libjpeg=false
}
qtConfig(webengine-system-freetype) {
gn_args += use_system_freetype=true
} else {
gn_args += use_system_freetype=false
}
qtConfig(webengine-system-harfbuzz) {
gn_args += use_system_harfbuzz=true
} else {
gn_args += use_system_harfbuzz=false
}
gn_args += use_glib=false
}