/**************************************************************************** ** ** Copyright (C) 2016 The Qt Company Ltd. ** Copyright (C) 2016 Intel Corporation. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the QtCore module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** 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 Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 3 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL3 included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 3 requirements ** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU ** General Public License version 2.0 or (at your option) the GNU General ** Public license version 3 or any later version approved by the KDE Free ** Qt Foundation. The licenses are as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 ** included in the packaging of this file. Please review the following ** information to ensure the GNU General Public License requirements will ** be met: https://www.gnu.org/licenses/gpl-2.0.html and ** https://www.gnu.org/licenses/gpl-3.0.html. ** ** $QT_END_LICENSE$ ** ****************************************************************************/ #include #ifndef QSYSINFO_H #define QSYSINFO_H QT_BEGIN_NAMESPACE /* System information */ /* * GCC (5-7) has a regression that causes it to emit wrong deprecated warnings: * https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77849 * * Try to work around it by defining our own macro. */ #ifdef QT_SYSINFO_DEPRECATED_X #error "QT_SYSINFO_DEPRECATED_X already defined" #endif #ifdef Q_CC_GNU #define QT_SYSINFO_DEPRECATED_X(x) #else #define QT_SYSINFO_DEPRECATED_X(x) QT_DEPRECATED_X(x) #endif class QString; class Q_CORE_EXPORT QSysInfo { public: enum Sizes { WordSize = (sizeof(void *)<<3) }; #if defined(QT_BUILD_QMAKE) enum Endian { BigEndian, LittleEndian }; /* needed to bootstrap qmake */ static const int ByteOrder; #elif defined(Q_BYTE_ORDER) enum Endian { BigEndian, LittleEndian # ifdef Q_QDOC , ByteOrder = BigEndian or LittleEndian # elif Q_BYTE_ORDER == Q_BIG_ENDIAN , ByteOrder = BigEndian # elif Q_BYTE_ORDER == Q_LITTLE_ENDIAN , ByteOrder = LittleEndian # else # error "Undefined byte order" # endif }; #endif #if QT_DEPRECATED_SINCE(5, 9) enum QT_DEPRECATED_X("Use QOperatingSystemVersion") WinVersion { WV_None = 0x0000, WV_32s = 0x0001, WV_95 = 0x0002, WV_98 = 0x0003, WV_Me = 0x0004, WV_DOS_based= 0x000f, /* codenames */ WV_NT = 0x0010, WV_2000 = 0x0020, WV_XP = 0x0030, WV_2003 = 0x0040, WV_VISTA = 0x0080, WV_WINDOWS7 = 0x0090, WV_WINDOWS8 = 0x00a0, WV_WINDOWS8_1 = 0x00b0, WV_WINDOWS10 = 0x00c0, WV_NT_based = 0x00f0, /* version numbers */ WV_4_0 = WV_NT, WV_5_0 = WV_2000, WV_5_1 = WV_XP, WV_5_2 = WV_2003, WV_6_0 = WV_VISTA, WV_6_1 = WV_WINDOWS7, WV_6_2 = WV_WINDOWS8, WV_6_3 = WV_WINDOWS8_1, WV_10_0 = WV_WINDOWS10, WV_CE = 0x0100, WV_CENET = 0x0200, WV_CE_5 = 0x0300, WV_CE_6 = 0x0400, WV_CE_based = 0x0f00 }; #define Q_MV_OSX(major, minor) (major == 10 ? minor + 2 : (major == 9 ? 1 : 0)) #define Q_MV_IOS(major, minor) (QSysInfo::MV_IOS | major << 4 | minor) #define Q_MV_TVOS(major, minor) (QSysInfo::MV_TVOS | major << 4 | minor) #define Q_MV_WATCHOS(major, minor) (QSysInfo::MV_WATCHOS | major << 4 | minor) enum QT_DEPRECATED_X("Use QOperatingSystemVersion") MacVersion { MV_None = 0xffff, MV_Unknown = 0x0000, /* version */ MV_9 = Q_MV_OSX(9, 0), MV_10_0 = Q_MV_OSX(10, 0), MV_10_1 = Q_MV_OSX(10, 1), MV_10_2 = Q_MV_OSX(10, 2), MV_10_3 = Q_MV_OSX(10, 3), MV_10_4 = Q_MV_OSX(10, 4), MV_10_5 = Q_MV_OSX(10, 5), MV_10_6 = Q_MV_OSX(10, 6), MV_10_7 = Q_MV_OSX(10, 7), MV_10_8 = Q_MV_OSX(10, 8), MV_10_9 = Q_MV_OSX(10, 9), MV_10_10 = Q_MV_OSX(10, 10), MV_10_11 = Q_MV_OSX(10, 11), MV_10_12 = Q_MV_OSX(10, 12), /* codenames */ MV_CHEETAH = MV_10_0, MV_PUMA = MV_10_1, MV_JAGUAR = MV_10_2, MV_PANTHER = MV_10_3, MV_TIGER = MV_10_4, MV_LEOPARD = MV_10_5, MV_SNOWLEOPARD = MV_10_6, MV_LION = MV_10_7, MV_MOUNTAINLION = MV_10_8, MV_MAVERICKS = MV_10_9, MV_YOSEMITE = MV_10_10, MV_ELCAPITAN = MV_10_11, MV_SIERRA = MV_10_12, /* iOS */ MV_IOS = 1 << 8, MV_IOS_4_3 = Q_MV_IOS(4, 3), MV_IOS_5_0 = Q_MV_IOS(5, 0), MV_IOS_5_1 = Q_MV_IOS(5, 1), MV_IOS_6_0 = Q_MV_IOS(6, 0), MV_IOS_6_1 = Q_MV_IOS(6, 1), MV_IOS_7_0 = Q_MV_IOS(7, 0), MV_IOS_7_1 = Q_MV_IOS(7, 1), MV_IOS_8_0 = Q_MV_IOS(8, 0), MV_IOS_8_1 = Q_MV_IOS(8, 1), MV_IOS_8_2 = Q_MV_IOS(8, 2), MV_IOS_8_3 = Q_MV_IOS(8, 3), MV_IOS_8_4 = Q_MV_IOS(8, 4), MV_IOS_9_0 = Q_MV_IOS(9, 0), MV_IOS_9_1 = Q_MV_IOS(9, 1), MV_IOS_9_2 = Q_MV_IOS(9, 2), MV_IOS_9_3 = Q_MV_IOS(9, 3), MV_IOS_10_0 = Q_MV_IOS(10, 0), /* tvOS */ MV_TVOS = 1 << 9, MV_TVOS_9_0 = Q_MV_TVOS(9, 0), MV_TVOS_9_1 = Q_MV_TVOS(9, 1), MV_TVOS_9_2 = Q_MV_TVOS(9, 2), MV_TVOS_10_0 = Q_MV_TVOS(10, 0), /* watchOS */ MV_WATCHOS = 1 << 10, MV_WATCHOS_2_0 = Q_MV_WATCHOS(2, 0), MV_WATCHOS_2_1 = Q_MV_WATCHOS(2, 1), MV_WATCHOS_2_2 = Q_MV_WATCHOS(2, 2), MV_WATCHOS_3_0 = Q_MV_WATCHOS(3, 0) }; QT_WARNING_PUSH QT_WARNING_DISABLE_DEPRECATED #if defined(Q_OS_WIN) || defined(Q_OS_CYGWIN) QT_SYSINFO_DEPRECATED_X("Use QOperatingSystemVersion::current()") static const WinVersion WindowsVersion; QT_SYSINFO_DEPRECATED_X("Use QOperatingSystemVersion::current()") static WinVersion windowsVersion(); #else QT_SYSINFO_DEPRECATED_X("Use QOperatingSystemVersion::current()") static const WinVersion WindowsVersion = WV_None; QT_SYSINFO_DEPRECATED_X("Use QOperatingSystemVersion::current()") static WinVersion windowsVersion() { return WV_None; } #endif #if defined(Q_OS_MAC) QT_SYSINFO_DEPRECATED_X("Use QOperatingSystemVersion::current()") static const MacVersion MacintoshVersion; QT_SYSINFO_DEPRECATED_X("Use QOperatingSystemVersion::current()") static MacVersion macVersion(); #else QT_SYSINFO_DEPRECATED_X("Use QOperatingSystemVersion::current()") static const MacVersion MacintoshVersion = MV_None; QT_SYSINFO_DEPRECATED_X("Use QOperatingSystemVersion::current()") static MacVersion macVersion() { return MV_None; } #endif QT_WARNING_POP #endif // QT_DEPRECATED_SINCE(5, 9) static QString buildCpuArchitecture(); static QString currentCpuArchitecture(); static QString buildAbi(); static QString kernelType(); static QString kernelVersion(); static QString productType(); static QString productVersion(); static QString prettyProductName(); static QString machineHostName(); static QByteArray machineUniqueId(); static QByteArray bootUniqueId(); }; #undef QT_SYSINFO_DEPRECATED_X QT_END_NAMESPACE #endif // QSYSINFO_H