diff options
Diffstat (limited to 'src/buildtools/config/linux.pri')
-rw-r--r-- | src/buildtools/config/linux.pri | 203 |
1 files changed, 203 insertions, 0 deletions
diff --git a/src/buildtools/config/linux.pri b/src/buildtools/config/linux.pri new file mode 100644 index 000000000..998aedc40 --- /dev/null +++ b/src/buildtools/config/linux.pri @@ -0,0 +1,203 @@ +include(common.pri) +include(functions.pri) + +defineReplace(extractCFlag) { + return($$qtwebengine_extractCFlag($$1)) +} + +QT_FOR_CONFIG += gui-private webenginecore-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 \ + strip_absolute_paths_from_debug_symbols=false \ + toolkit_views=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\" + +qtConfig(webengine-embedded-build) { + gn_args += is_desktop_linux=false +} + +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 + qtConfig(webengine-printing-and-pdf): gn_args += pdfium_use_system_zlib=true + } + qtConfig(webengine-system-png) { + gn_args += use_system_libpng=true + qtConfig(webengine-printing-and-pdf): gn_args += pdfium_use_system_libpng=true + } + qtConfig(webengine-system-jpeg): gn_args += use_system_libjpeg=true + qtConfig(webengine-system-freetype): gn_args += use_system_freetype=true + qtConfig(webengine-system-harfbuzz): gn_args += use_system_harfbuzz=true + !qtConfig(webengine-system-glib): gn_args += use_glib=false + qtConfig(webengine-pulseaudio) { + gn_args += use_pulseaudio=true + } else { + gn_args += use_pulseaudio=false + } + qtConfig(webengine-alsa) { + gn_args += use_alsa=true + } else { + gn_args += use_alsa=false + } + !packagesExist(libpci): gn_args += use_libpci=false + + qtConfig(webengine-ozone-x11) { + gn_args += ozone_platform_x11=true + packagesExist(xscrnsaver): gn_args += use_xscrnsaver=true + } + + qtConfig(webengine-system-libevent): gn_args += use_system_libevent=true + qtConfig(webengine-system-libwebp): gn_args += use_system_libwebp=true + qtConfig(webengine-system-libxml2): gn_args += use_system_libxml=true use_system_libxslt=true + qtConfig(webengine-system-opus): gn_args += use_system_opus=true + qtConfig(webengine-system-snappy): gn_args += use_system_snappy=true + qtConfig(webengine-system-libvpx): gn_args += use_system_libvpx=true + qtConfig(webengine-system-icu): gn_args += use_system_icu=true icu_use_data_file=false + qtConfig(webengine-system-ffmpeg): gn_args += use_system_ffmpeg=true + qtConfig(webengine-system-re2): gn_args += use_system_re2=true + qtConfig(webengine-system-lcms2): gn_args += use_system_lcms2=true + + # FIXME: + #qtConfig(webengine-system-protobuf): gn_args += use_system_protobuf=true + #qtConfig(webengine-system-jsoncpp): gn_args += use_system_jsoncpp=true + #qtConfig(webengine-system-libsrtp: gn_args += use_system_libsrtp=true +} |