6#import <Foundation/Foundation.h>
8#include <QtCore/qfile.h>
9#include <QtCore/qversionnumber.h>
10#include <QtCore/private/qcore_mac_p.h>
12#if !defined(QT_BOOTSTRAPPED) && QT_CONFIG(process)
13#include <QtCore/qprocess.h>
18using namespace Qt::StringLiterals;
22 QMacAutoReleasePool pool;
24 NSOperatingSystemVersion osv = NSProcessInfo.processInfo.operatingSystemVersion;
25 QVersionNumber versionNumber(osv.majorVersion, osv.minorVersion, osv.patchVersion);
27 if (versionNumber.majorVersion() == 10 && versionNumber.minorVersion() >= 16) {
36#if !defined(QT_BOOTSTRAPPED) && QT_CONFIG(process)
38 QProcessEnvironment nonCompatEnvironment;
39 nonCompatEnvironment.insert(
"SYSTEM_VERSION_COMPAT"_L1,
"0"_L1);
40 sysctl.setProcessEnvironment(nonCompatEnvironment);
41 sysctl.start(
"/usr/sbin/sysctl"_L1, QStringList() <<
"-b"_L1 <<
"kern.osproductversion"_L1);
42 if (sysctl.waitForFinished()) {
43 auto versionString = QString::fromLatin1(sysctl.readAll());
44 auto nonCompatSystemVersion = QVersionNumber::fromString(versionString);
45 if (!nonCompatSystemVersion.isNull())
46 versionNumber = nonCompatSystemVersion;
53 operatingSystemVersion.m_major = versionNumber.majorVersion();
54 operatingSystemVersion.m_minor = versionNumber.minorVersion();
55 operatingSystemVersion.m_micro = versionNumber.microVersion();
57 return operatingSystemVersion;
static constexpr OSType currentType()