swift
Loading...
Searching...
No Matches
buildconfig.cpp
1// SPDX-FileCopyrightText: Copyright (C) 2013 swift Project Community / Contributors
2// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-swift-pilot-client-1
3
5
6#include "buildconfig.h"
7
8#include <QCoreApplication>
9#include <QLocale>
10#include <QOperatingSystemVersion>
11#include <QStringList>
12#include <QSysInfo>
13#include <QtGlobal>
14
15namespace swift::config
16{
18 {
19 static const QString s("swiftguistd");
20 return s;
21 }
22
24 {
25 static const QString s("swiftcore");
26 return s;
27 }
28
30 {
31 static const QString s("swiftdata");
32 return s;
33 }
34
35 const QString &CBuildConfig::getPlatformString()
36 {
37 static const QString p([] {
38 if constexpr (CBuildConfig::isRunningOnLinuxPlatform()) return QString("Linux");
39 if constexpr (CBuildConfig::isRunningOnMacOSPlatform()) return QString("MacOS");
41 {
42 if (CBuildConfig::buildWordSize() == 32) return QString("Win32");
43 if (CBuildConfig::buildWordSize() == 64) return QString("Win64");
44 }
45 return QString("unknown");
46 }());
47 return p;
48 }
49
50 namespace Private
51 {
52 bool isLocalDeveloperBuildImpl()
53 {
54 if constexpr (!CBuildConfig::isDebugBuild())
55 {
56 return false;
57 }
59
60 // guessing, feel free to add path checks
61 if (p.contains("build"))
62 {
63 return true;
64 }
65 if (p.contains("msvc"))
66 {
67 return true;
68 }
69 return false;
70 }
71 } // namespace Private
72
74 {
75 static const bool devBuild = Private::isLocalDeveloperBuildImpl();
76 return devBuild;
77 }
78
79 const QString &CBuildConfig::compiledWithInfo()
80 {
81 static QString infoShort;
82 QStringList sl;
84 {
85 sl << "MSFS2020";
86 }
88 {
89 sl << "MSFS2024";
90 }
92 {
93 sl << "XPlane";
94 }
96 {
97 sl << "P3D";
98 }
100 {
101 sl << "FG";
102 }
103 infoShort = sl.join(", ");
104 if (infoShort.isEmpty())
105 {
106 infoShort = "<none>";
107 }
108 return infoShort;
109 }
110
111 const QString &CBuildConfig::gitHubRepoUrl()
112 {
113 static const QString url = "https://github.com/swift-project/pilotclient/";
114 return url;
115 }
116
117 const QString &CBuildConfig::gitHubRepoApiUrl()
118 {
119 static const QString url = "https://api.github.com/repos/swift-project/pilotclient/";
120 return url;
121 }
122
123 const QString &CBuildConfig::buildDateAndTime()
124 {
125 // http://en.cppreference.com/w/cpp/preprocessor/replace#Predefined_macros
126 static const QString buildDateAndTime = QString(__DATE__ " " __TIME__).simplified();
127 return buildDateAndTime;
128 }
129
130 const QVersionNumber &CBuildConfig::getVersion()
131 {
132 static const QVersionNumber v { versionMajor(), versionMinor(), versionRevision() };
133 return v;
134 }
135
136 const QString &CBuildConfig::getVersionString()
137 {
138 static const QString s(getVersion().toString());
139 return s;
140 }
141
143 {
144 static const QVersionNumber v { versionMajor(), versionMinor() };
145 static const QString s(v.toString());
146 return s;
147 }
148
150 {
151 static const QString s = getPlatformString() % u' ' % getVersionString();
152 return s;
153 }
154
155 const QStringList &CBuildConfig::getBuildAbiParts()
156 {
157 static const QStringList parts = QSysInfo::buildAbi().split('-');
158 return parts;
159 }
160
161 namespace Private
162 {
163 int buildWordSizeImpl()
164 {
165 if (CBuildConfig::getBuildAbiParts().length() < 3)
166 {
167 return -1;
168 }
169 const QString abiWs = CBuildConfig::getBuildAbiParts()[2];
170 if (abiWs.contains("32"))
171 {
172 return 32;
173 }
174 if (abiWs.contains("64"))
175 {
176 return 64;
177 }
178 return -1;
179 }
180 } // namespace Private
181
183 {
184 static const int bws = Private::buildWordSizeImpl();
185 return bws;
186 }
187} // namespace swift::config
188
static const QString & swiftGuiExecutableName()
Executable name for swift GUI, no(!) appendix.
static const QString & getVersionString()
Version as QVersionNumber.
static const QVersionNumber & getVersion()
Version as QVersionNumber.
static const QString & getPlatformString()
Info such as Win32, Win64, macOS, Linux.
static const QString & getShortVersionString()
Version as QVersionNumber.
static constexpr bool isRunningOnMacOSPlatform()
Running on MacOS platform?
static constexpr bool isCompiledWithMSFSSupport()
with MSFS support?
static constexpr bool isCompiledWithFGSupport()
with FG support?
static bool isLocalDeveloperDebugBuild()
Local build for developers.
static const QString & buildDateAndTime()
Returns the build date and time as string.
static constexpr bool isRunningOnWindowsNtPlatform()
Running on Windows NT platform?
static constexpr bool isCompiledWithMSFS2024Support()
with MSFS2024 support?
static const QStringList & getBuildAbiParts()
Build ABI parts as in http://doc.qt.io/qt-5/qsysinfo.html#buildAbi.
static constexpr bool isRunningOnLinuxPlatform()
Running on Linux platform?
static const QString & compiledWithInfo()
Info string about compilation.
static const QString & swiftDataExecutableName()
Executable name for swift data, no(!) appendix.
static const QString & gitHubRepoUrl()
GitHub repository URL.
static const QString & gitHubRepoApiUrl()
GitHub Packages REST API URL.
static const QString & swiftCoreExecutableName()
Executable name for swift core, no(!) appendix.
static constexpr bool isCompiledWithXPlaneSupport()
with XPlane support?
static constexpr bool isCompiledWithP3DSupport()
with P3D support?
static int buildWordSize()
Whether this swift application is build as 32 or 64bit application.
static const QString & getVersionStringPlatform()
Version as QVersionNumber plus platform info.
QString applicationDirPath()
bool contains(QChar ch, Qt::CaseSensitivity cs) const const
bool isEmpty() const const
QStringList split(QChar sep, Qt::SplitBehavior behavior, Qt::CaseSensitivity cs) const const
QString toLower() const const
QString join(QChar separator) const const
QString buildAbi()
char * toString(QSizePolicy sp)
QString toString() const const