/****************************************************************************
**
** Copyright (C) 2019 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the documentation of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:FDL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU Free Documentation License Usage
** Alternatively, this file may be used under the terms of the GNU Free
** Documentation License version 1.3 as published by the Free Software
** Foundation and appearing in the file included in the packaging of
** this file. Please review the following information to ensure
** the GNU Free Documentation License version 1.3 requirements
** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
** $QT_END_LICENSE$
**
****************************************************************************/

/*!

//! [all]
\section1 Desktop Platforms
//! [desktop]

\section2 \l{Qt for Linux/X11}{Linux/X11}
//! [linux]
\table 80%
    \header \li Distribution \li Architecture \li Compiler \li Notes
    \row \li openSUSE 15.1
        \li \c x86_64
        \li GCC 5 or later, \b {GCC 7}, \b {ICC 19.1}
        \li
    \row \li SUSE Linux Enterprise Server
        \li \c x86_64
        \li GCC 5 or later, \b {GCC 10}
        \li
    \row \li Red Hat Enterprise Linux 7.6
        \li \c x86_64
        \li \b {GCC 5.3.1 via devtoolset-4}
        \li
    \row \li Ubuntu 18.04
        \li \c x86_64
        \li GCC 5 or later, \b {GCC 9}
        \li
    \row \li Generic Linux
        \li \c x86 and \c x86_64
        \li GCC (5 or later), ICC 18.x
        \li
\endtable
//! [linux]

\section2 \l{Qt for macOS}{\macos}
//! [macos]
\table 80%
    \header \li Target Platform \li Architecture \li Build Environment
    \row \li \macos 10.13, 10.14, \b 10.15
        \li \c x86_64 and \c x86_64h
        \li Xcode 11 (10.15 SDK)
\endtable
//! [macos]

\section2 \l{Qt for Windows}{Windows}
//! [windows]
\table 80%
    \header \li Operating System \li Architecture \li Compiler \li Notes
    \row \li Windows 10
        \li \c x86 and \c x86_64
        \li \b {MSVC 2019}, MSVC 2017, \b {MinGW 8.1}
        \li
    \row \li Windows 8.1
        \li \c x86 and \c x86_64
        \li MSVC 2019, MSVC 2017, MinGW 8.1
        \li
    \row \li Windows 7
        \li \c x86 and \c x86_64
        \li MSVC 2019, MSVC 2017, \b {MinGW 8.1}
        \li \l{https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win32/Personal%20Builds/mingw-builds/8.1.0/threads-posix/dwarf/i686-8.1.0-release-posix-dwarf-rt_v6-rev0.7z/download}{MinGW-builds GCC 8.1.0 (x86)}
\endtable

//! [windows]

//! [desktop]

\section1 Mobile Platforms
//! [mobile]

\section2 \l{Qt for Android}{Android}
//! [android]
\table 80%
    \header \li Platform Version \li Architecture \li Compiler \li Build Environment
    \row \li Android 5.0 or later (that is, API Level 21 and up)
        \li \c armv7a and \c x86, \c arm64-v8 and \c x86_64
        \li \b {Clang as provided by Google}, \b {MinGW 8.1}
        \li \b {RHEL 7.x (x86_64)}, \b{\macos 10.14}, \b {Windows 10 (x86_64)},
            \b Windows 7
\endtable
//! [android]

\section2 \l{Qt for iOS}{iOS/tvOS/watchOS}
//! [ios]
\table 80%
    \header \li Target Platform \li Architecture \li Build Environment \li Notes
    \row \li iOS 12, \b{iOS 13}
        \li \c armv8 (\c arm64)
        \li \b {Xcode 11} (iOS 13.2 SDK)
        \li
    \row \li tvOS 12, tvOS 13
        \li \c armv8 (\c arm64)
        \li Xcode 11 (tvOS 13 SDK)
        \li Technology Preview
    \row \li watchOS 5, watchOS 6
        \li \c armv7k
        \li Xcode 11 (watchOS 6 SDK)
        \li Technology Preview. No UI.
\endtable
//! [ios]

\section2 \l{Qt for UWP}{Universal Windows Platform (UWP)}
//! [winrt]
\table 80%
    \header \li Platform Version \li Architecture \li Compiler \li Build Environment
    \row \li Universal Windows Platform 10
        \li \c x86, \c x86_64, and \c armv7
        \li \b{MSVC 2019}, MSVC 2017
        \li \b{Windows 10}
\endtable

\br
Universal Windows Platforms include Windows 10, Windows 10 IoT devices, Xbox
One, and HoloLens.
//! [winrt]

//! [mobile]

\section2 \l{Qt for WebAssembly}{Qt for WebAssembly}
//! [qtwasm]
\table 80%
    \header \li Target Browser \li Device
    \row \li Chrome \li Desktop
    \row \li FireFox \li Desktop
    \row \li Safari \li Desktop, Mobile
    \row \li Edge (Chrome) \li Desktop
    \row \li Android Browser \li Mobile
\endtable

\br
If the browser supports WebAssembly then Qt should run.
\note Qt has a fixed WebGL requirement, also for apps that do not use WebGL
directly. Browsers often blacklist WebGL for older/unsupported GPUs.
//! [qtwasm]

\section1 Embedded Platforms
//! [embedded]

For embedded platform support, including \l{Qt for Embedded Linux}{Embedded Linux},
\l{Qt for INTEGRITY}{INTEGRITY}, \l{Qt for QNX}{QNX}, and \l{Qt for VxWorks}{VxWorks},
please consult the \l {http://doc.qt.io/QtForDeviceCreation}{Qt for Device Creation}
documentation.

//! [embedded]

//! [all]

*/
