global/qlibraryinfo.cpp

Source codeSwitch to Preprocessed file
LineSource CodeCoverage
1/**************************************************************************** -
2** -
3** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). -
4** Contact: http://www.qt-project.org/legal -
5** -
6** This file is part of the QtCore module of the Qt Toolkit. -
7** -
8** $QT_BEGIN_LICENSE:LGPL$ -
9** Commercial License Usage -
10** Licensees holding valid commercial Qt licenses may use this file in -
11** accordance with the commercial license agreement provided with the -
12** Software or, alternatively, in accordance with the terms contained in -
13** a written agreement between you and Digia. For licensing terms and -
14** conditions see http://qt.digia.com/licensing. For further information -
15** use the contact form at http://qt.digia.com/contact-us. -
16** -
17** GNU Lesser General Public License Usage -
18** Alternatively, this file may be used under the terms of the GNU Lesser -
19** General Public License version 2.1 as published by the Free Software -
20** Foundation and appearing in the file LICENSE.LGPL included in the -
21** packaging of this file. Please review the following information to -
22** ensure the GNU Lesser General Public License version 2.1 requirements -
23** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -
24** -
25** In addition, as a special exception, Digia gives you certain additional -
26** rights. These rights are described in the Digia Qt LGPL Exception -
27** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -
28** -
29** GNU General Public License Usage -
30** Alternatively, this file may be used under the terms of the GNU -
31** General Public License version 3.0 as published by the Free Software -
32** Foundation and appearing in the file LICENSE.GPL included in the -
33** packaging of this file. Please review the following information to -
34** ensure the GNU General Public License version 3.0 requirements will be -
35** met: http://www.gnu.org/copyleft/gpl.html. -
36** -
37** -
38** $QT_END_LICENSE$ -
39** -
40****************************************************************************/ -
41 -
42#include "qdir.h" -
43#include "qfile.h" -
44#include "qsettings.h" -
45#include "qlibraryinfo.h" -
46#include "qscopedpointer.h" -
47 -
48#ifdef QT_BUILD_QMAKE -
49QT_BEGIN_NAMESPACE -
50extern QString qt_libraryInfoFile(); -
51QT_END_NAMESPACE -
52#elif defined(QT_BOOTSTRAPPED) -
53QString qt_libraryInfoFile() -
54{ -
55 QString qmakeAbsoluteLocation = QLatin1String(QT_QMAKE_LOCATION); -
56 if (!qmakeAbsoluteLocation.isEmpty()) -
57 return QDir(QFileInfo(qmakeAbsoluteLocation).absolutePath()).filePath(QLatin1String("qt.conf")); -
58 return QString(); -
59} -
60#else -
61# include "qcoreapplication.h" -
62#endif -
63 -
64#ifdef Q_OS_MAC -
65# include "private/qcore_mac_p.h" -
66#endif -
67 -
68#include "qconfig.cpp" -
69 -
70QT_BEGIN_NAMESPACE -
71 -
72extern void qDumpCPUFeatures(); // in qsimd.cpp -
73 -
74#ifndef QT_NO_SETTINGS -
75 -
76struct QLibrarySettings -
77{ -
78 QLibrarySettings(); -
79 QScopedPointer<QSettings> settings; -
80#ifdef QT_BOOTSTRAPPED -
81 bool haveEffectivePaths; -
82 bool havePaths; -
83#endif -
84}; -
85Q_GLOBAL_STATIC(QLibrarySettings, qt_library_settings)
never executed: delete x;
executed: return thisGlobalStatic.pointer.load();
Execution Count:371
partially evaluated: !thisGlobalStatic.pointer.testAndSetOrdered(0, x)
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:26
evaluated: !thisGlobalStatic.pointer.load()
TRUEFALSE
yes
Evaluation Count:26
yes
Evaluation Count:345
partially evaluated: !thisGlobalStatic.destroyed
TRUEFALSE
yes
Evaluation Count:26
no
Evaluation Count:0
0-371
86 -
87class QLibraryInfoPrivate -
88{ -
89public: -
90 static QSettings *findConfiguration(); -
91#ifndef QT_BOOTSTRAPPED -
92 static void cleanup() -
93 { -
94 QLibrarySettings *ls = qt_library_settings();
executed (the execution status of this line is deduced): QLibrarySettings *ls = qt_library_settings();
-
95 if (ls)
partially evaluated: ls
TRUEFALSE
yes
Evaluation Count:210
no
Evaluation Count:0
0-210
96 ls->settings.reset(0);
executed: ls->settings.reset(0);
Execution Count:210
210
97 }
executed: }
Execution Count:210
210
98#else -
99 static bool haveGroup(QLibraryInfo::PathGroup group) -
100 { -
101 QLibrarySettings *ls = qt_library_settings(); -
102 return ls ? (group == QLibraryInfo::EffectivePaths -
103 ? ls->haveEffectivePaths : ls->havePaths) : false; -
104 } -
105#endif -
106 static QSettings *configuration() -
107 { -
108 QLibrarySettings *ls = qt_library_settings();
executed (the execution status of this line is deduced): QLibrarySettings *ls = qt_library_settings();
-
109 return ls ? ls->settings.data() : 0;
executed: return ls ? ls->settings.data() : 0;
Execution Count:161
161
110 } -
111}; -
112 -
113QLibrarySettings::QLibrarySettings() -
114 : settings(QLibraryInfoPrivate::findConfiguration()) -
115{ -
116#ifndef QT_BOOTSTRAPPED -
117 qAddPostRoutine(QLibraryInfoPrivate::cleanup);
executed (the execution status of this line is deduced): qAddPostRoutine(QLibraryInfoPrivate::cleanup);
-
118 bool haveEffectivePaths;
executed (the execution status of this line is deduced): bool haveEffectivePaths;
-
119 bool havePaths;
executed (the execution status of this line is deduced): bool havePaths;
-
120#endif -
121 if (settings) {
partially evaluated: settings
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:26
0-26
122 // This code needs to be in the regular library, as otherwise a qt.conf that -
123 // works for qmake would break things for dynamically built Qt tools. -
124 QStringList children = settings->childGroups();
never executed (the execution status of this line is deduced): QStringList children = settings->childGroups();
-
125 haveEffectivePaths = children.contains(QLatin1String("EffectivePaths"));
never executed (the execution status of this line is deduced): haveEffectivePaths = children.contains(QLatin1String("EffectivePaths"));
-
126 // Backwards compat: an existing but empty file is claimed to contain the Paths section. -
127 havePaths = !haveEffectivePaths || children.contains(QLatin1String("Paths"));
never evaluated: !haveEffectivePaths
never evaluated: children.contains(QLatin1String("Paths"))
0
128#ifndef QT_BOOTSTRAPPED -
129 if (!havePaths)
never evaluated: !havePaths
0
130 settings.reset(0);
never executed: settings.reset(0);
0
131#else -
132 } else { -
133 haveEffectivePaths = false; -
134 havePaths = false; -
135#endif -
136 }
never executed: }
0
137}
executed: }
Execution Count:26
26
138 -
139QSettings *QLibraryInfoPrivate::findConfiguration() -
140{ -
141 QString qtconfig = QStringLiteral(":/qt/etc/qt.conf");
executed (the execution status of this line is deduced): QString qtconfig = QString::fromUtf8("" ":/qt/etc/qt.conf" "", sizeof(":/qt/etc/qt.conf") - 1);
-
142#ifdef QT_BOOTSTRAPPED -
143 if(!QFile::exists(qtconfig)) -
144 qtconfig = qt_libraryInfoFile(); -
145#else -
146 if (!QFile::exists(qtconfig) && QCoreApplication::instance()) {
partially evaluated: !QFile::exists(qtconfig)
TRUEFALSE
yes
Evaluation Count:26
no
Evaluation Count:0
evaluated: QCoreApplication::instance()
TRUEFALSE
yes
Evaluation Count:23
yes
Evaluation Count:3
0-26
147#ifdef Q_OS_MAC -
148 CFBundleRef bundleRef = CFBundleGetMainBundle(); -
149 if (bundleRef) { -
150 QCFType<CFURLRef> urlRef = CFBundleCopyResourceURL(bundleRef, -
151 QCFString(QLatin1String("qt.conf")), -
152 0, -
153 0); -
154 if (urlRef) { -
155 QCFString path = CFURLCopyFileSystemPath(urlRef, kCFURLPOSIXPathStyle); -
156 qtconfig = QDir::cleanPath(path); -
157 } -
158 } -
159 if (qtconfig.isEmpty()) -
160#endif -
161 { -
162 QDir pwd(QCoreApplication::applicationDirPath());
executed (the execution status of this line is deduced): QDir pwd(QCoreApplication::applicationDirPath());
-
163 qtconfig = pwd.filePath(QLatin1String("qt.conf"));
executed (the execution status of this line is deduced): qtconfig = pwd.filePath(QLatin1String("qt.conf"));
-
164 } -
165 }
executed: }
Execution Count:23
23
166#endif -
167 if (QFile::exists(qtconfig))
partially evaluated: QFile::exists(qtconfig)
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:26
0-26
168 return new QSettings(qtconfig, QSettings::IniFormat);
never executed: return new QSettings(qtconfig, QSettings::IniFormat);
0
169 return 0; //no luck
executed: return 0;
Execution Count:26
26
170} -
171 -
172#endif // QT_NO_SETTINGS -
173 -
174/*! -
175 \class QLibraryInfo -
176 \inmodule QtCore -
177 \brief The QLibraryInfo class provides information about the Qt library. -
178 -
179 Many pieces of information are established when Qt is configured and built. -
180 This class provides an abstraction for accessing that information. -
181 By using the static functions of this class, an application can obtain -
182 information about the instance of the Qt library which the application -
183 is using at run-time. -
184 -
185 You can also use a \c qt.conf file to override the hard-coded paths -
186 that are compiled into the Qt library. For more information, see -
187 the \l {Using qt.conf} documentation. -
188 -
189 \sa QSysInfo, {Using qt.conf} -
190*/ -
191 -
192#ifndef QT_BOOTSTRAPPED -
193 -
194/*! -
195 \internal -
196 -
197 You cannot create a QLibraryInfo, instead only the static functions are available to query -
198 information. -
199*/ -
200 -
201QLibraryInfo::QLibraryInfo() -
202{ } -
203 -
204/*! -
205 Returns the person to whom this build of Qt is licensed. -
206 -
207 \sa licensedProducts() -
208*/ -
209 -
210QString -
211QLibraryInfo::licensee() -
212{ -
213 const char *str = QT_CONFIGURE_LICENSEE;
never executed (the execution status of this line is deduced): const char *str = qt_configure_licensee_str + 12;;
-
214 return QString::fromLocal8Bit(str);
never executed: return QString::fromLocal8Bit(str);
0
215} -
216 -
217/*! -
218 Returns the products that the license for this build of Qt has access to. -
219 -
220 \sa licensee() -
221*/ -
222 -
223QString -
224QLibraryInfo::licensedProducts() -
225{ -
226 const char *str = QT_CONFIGURE_LICENSED_PRODUCTS;
never executed (the execution status of this line is deduced): const char *str = qt_configure_licensed_products_str + 12;;
-
227 return QString::fromLatin1(str);
never executed: return QString::fromLatin1(str);
0
228} -
229 -
230/*! -
231 \since 4.6 -
232 Returns the installation date for this build of Qt. The install date will -
233 usually be the last time that Qt sources were configured. -
234*/ -
235#ifndef QT_NO_DATESTRING -
236QDate -
237QLibraryInfo::buildDate() -
238{ -
239 return QDate::fromString(QString::fromLatin1(qt_configure_installation + 12), Qt::ISODate);
never executed: return QDate::fromString(QString::fromLatin1(qt_configure_installation + 12), Qt::ISODate);
0
240} -
241#endif //QT_NO_DATESTRING -
242 -
243/*! -
244 \since 5.0 -
245 Returns true if this build of Qt was built with debugging enabled, or -
246 false if it was built in release mode. -
247*/ -
248bool -
249QLibraryInfo::isDebugBuild() -
250{ -
251#ifdef QT_DEBUG -
252 return true; -
253#else -
254 return false;
executed: return false;
Execution Count:1
1
255#endif -
256} -
257 -
258#endif // QT_BOOTSTRAPPED -
259 -
260/* -
261 * To add a new entry in QLibrary::LibraryLocation, add it to the enum above the bootstrapped values and: -
262 * - add its relative path in the qtConfEntries[] array below -
263 * (the key is what appears in a qt.conf file) -
264 * - add a property name in qmake/property.cpp propList[] array -
265 * (it's used with qmake -query) -
266 * - add to qt_config.prf, qt_module.prf, qt_module_fwdpri.prf -
267 */ -
268 -
269static const struct { -
270 char key[19], value[13]; -
271} qtConfEntries[] = { -
272 { "Prefix", "." }, -
273 { "Documentation", "doc" }, // should be ${Data}/doc -
274 { "Headers", "include" }, -
275 { "Libraries", "lib" }, -
276#ifdef Q_OS_WIN -
277 { "LibraryExecutables", "bin" }, -
278#else -
279 { "LibraryExecutables", "libexec" }, // should be ${ArchData}/libexec -
280#endif -
281 { "Binaries", "bin" }, -
282 { "Plugins", "plugins" }, // should be ${ArchData}/plugins -
283 { "Imports", "imports" }, // should be ${ArchData}/imports -
284 { "Qml2Imports", "qml" }, // should be ${ArchData}/qml -
285 { "ArchData", "." }, -
286 { "Data", "." }, -
287 { "Translations", "translations" }, // should be ${Data}/translations -
288 { "Examples", "examples" }, -
289 { "Tests", "tests" }, -
290#ifdef QT_BOOTSTRAPPED -
291 { "Sysroot", "" }, -
292 { "HostPrefix", "" }, -
293 { "HostBinaries", "bin" }, -
294 { "HostData", "." }, -
295 { "TargetSpec", "" }, -
296 { "HostSpec", "" }, -
297#endif -
298}; -
299 -
300/*! -
301 Returns the location specified by \a loc. -
302 -
303*/ -
304QString -
305QLibraryInfo::location(LibraryLocation loc) -
306{ -
307#ifdef QT_BOOTSTRAPPED -
308 QString ret = rawLocation(loc, FinalPaths); -
309 -
310 // Automatically prepend the sysroot to target paths -
311 if (loc < SysrootPath || loc > LastHostPath) { -
312 QString sysroot = rawLocation(SysrootPath, FinalPaths); -
313 if (!sysroot.isEmpty() && ret.length() > 2 && ret.at(1) == QLatin1Char(':') -
314 && (ret.at(2) == QLatin1Char('/') || ret.at(2) == QLatin1Char('\\'))) -
315 ret.replace(0, 2, sysroot); // Strip out the drive on Windows targets -
316 else -
317 ret.prepend(sysroot); -
318 } -
319 -
320 return ret; -
321} -
322 -
323QString -
324QLibraryInfo::rawLocation(LibraryLocation loc, PathGroup group) -
325{ -
326#else -
327# define rawLocation(loca, group) location(loca) -
328# define group dummy -
329#endif -
330 QString ret;
executed (the execution status of this line is deduced): QString ret;
-
331#ifdef QT_BOOTSTRAPPED -
332 // Logic for choosing the right data source: if EffectivePaths are requested -
333 // and qt.conf with that section is present, use it, otherwise fall back to -
334 // FinalPaths. For FinalPaths, use qt.conf if present and contains not only -
335 // [EffectivePaths], otherwise fall back to builtins. -
336 if (!QLibraryInfoPrivate::haveGroup(group) -
337 && (group == FinalPaths -
338 || !(group = FinalPaths, QLibraryInfoPrivate::haveGroup(FinalPaths)))) -
339#elif !defined(QT_NO_SETTINGS) -
340 if (!QLibraryInfoPrivate::configuration())
partially evaluated: !QLibraryInfoPrivate::configuration()
TRUEFALSE
yes
Evaluation Count:161
no
Evaluation Count:0
0-161
341#endif -
342 { -
343 const char *path = 0;
executed (the execution status of this line is deduced): const char *path = 0;
-
344 if (unsigned(loc) < sizeof(qt_configure_prefix_path_strs)/sizeof(qt_configure_prefix_path_strs[0]))
evaluated: unsigned(loc) < sizeof(qt_configure_prefix_path_strs)/sizeof(qt_configure_prefix_path_strs[0])
TRUEFALSE
yes
Evaluation Count:156
yes
Evaluation Count:5
5-156
345 path = qt_configure_prefix_path_strs[loc] + 12;
executed: path = qt_configure_prefix_path_strs[loc] + 12;
Execution Count:156
156
346#ifndef Q_OS_WIN // On Windows we use the registry -
347 else if (loc == SettingsPath)
partially evaluated: loc == SettingsPath
TRUEFALSE
yes
Evaluation Count:5
no
Evaluation Count:0
0-5
348 path = QT_CONFIGURE_SETTINGS_PATH;
executed: path = qt_configure_settings_path_str + 12;
Execution Count:5
5
349#endif -
350 -
351 if (path)
partially evaluated: path
TRUEFALSE
yes
Evaluation Count:161
no
Evaluation Count:0
0-161
352 ret = QString::fromLocal8Bit(path);
executed: ret = QString::fromLocal8Bit(path);
Execution Count:161
161
353#ifndef QT_NO_SETTINGS -
354 } else {
executed: }
Execution Count:161
161
355 QString key;
never executed (the execution status of this line is deduced): QString key;
-
356 QString defaultValue;
never executed (the execution status of this line is deduced): QString defaultValue;
-
357 if (unsigned(loc) < sizeof(qtConfEntries)/sizeof(qtConfEntries[0])) {
never evaluated: unsigned(loc) < sizeof(qtConfEntries)/sizeof(qtConfEntries[0])
0
358 key = QLatin1String(qtConfEntries[loc].key);
never executed (the execution status of this line is deduced): key = QLatin1String(qtConfEntries[loc].key);
-
359 defaultValue = QLatin1String(qtConfEntries[loc].value);
never executed (the execution status of this line is deduced): defaultValue = QLatin1String(qtConfEntries[loc].value);
-
360 }
never executed: }
0
361#ifndef Q_OS_WIN // On Windows we use the registry -
362 else if (loc == SettingsPath)
never evaluated: loc == SettingsPath
0
363 key = QLatin1String("Settings");
never executed: key = QLatin1String("Settings");
0
364#endif -
365 -
366 if(!key.isNull()) {
never evaluated: !key.isNull()
0
367 QSettings *config = QLibraryInfoPrivate::configuration();
never executed (the execution status of this line is deduced): QSettings *config = QLibraryInfoPrivate::configuration();
-
368 config->beginGroup(QLatin1String(
never executed (the execution status of this line is deduced): config->beginGroup(QLatin1String(
-
369#ifdef QT_BOOTSTRAPPED
never executed (the execution status of this line is deduced):
-
370 group == EffectivePaths ? "EffectivePaths" :
never executed (the execution status of this line is deduced):
-
371#endif
never executed (the execution status of this line is deduced):
-
372 "Paths"));
never executed (the execution status of this line is deduced): "Paths"));
-
373 -
374 ret = config->value(key, defaultValue).toString();
never executed (the execution status of this line is deduced): ret = config->value(key, defaultValue).toString();
-
375 -
376#ifdef QT_BOOTSTRAPPED -
377 if (ret.isEmpty()) { -
378 if (loc == HostPrefixPath) -
379 ret = config->value(QLatin1String(qtConfEntries[PrefixPath].key), -
380 QLatin1String(qtConfEntries[PrefixPath].value)).toString(); -
381 else if (loc == TargetSpecPath || loc == HostSpecPath) -
382 ret = QString::fromLocal8Bit(qt_configure_prefix_path_strs[loc] + 12); -
383 } -
384#endif -
385 -
386 // expand environment variables in the form $(ENVVAR) -
387 int rep;
never executed (the execution status of this line is deduced): int rep;
-
388 QRegExp reg_var(QLatin1String("\\$\\(.*\\)"));
never executed (the execution status of this line is deduced): QRegExp reg_var(QLatin1String("\\$\\(.*\\)"));
-
389 reg_var.setMinimal(true);
never executed (the execution status of this line is deduced): reg_var.setMinimal(true);
-
390 while((rep = reg_var.indexIn(ret)) != -1) {
never evaluated: (rep = reg_var.indexIn(ret)) != -1
0
391 ret.replace(rep, reg_var.matchedLength(),
never executed (the execution status of this line is deduced): ret.replace(rep, reg_var.matchedLength(),
-
392 QString::fromLocal8Bit(qgetenv(ret.mid(rep + 2,
never executed (the execution status of this line is deduced): QString::fromLocal8Bit(qgetenv(ret.mid(rep + 2,
-
393 reg_var.matchedLength() - 3).toLatin1().constData()).constData()));
never executed (the execution status of this line is deduced): reg_var.matchedLength() - 3).toLatin1().constData()).constData()));
-
394 }
never executed: }
0
395 -
396 config->endGroup();
never executed (the execution status of this line is deduced): config->endGroup();
-
397 -
398 ret = QDir::fromNativeSeparators(ret);
never executed (the execution status of this line is deduced): ret = QDir::fromNativeSeparators(ret);
-
399 }
never executed: }
0
400#endif // QT_NO_SETTINGS -
401 }
never executed: }
0
402 -
403#ifdef QT_BOOTSTRAPPED -
404 // The specs need to be returned verbatim. -
405 if (loc == TargetSpecPath || loc == HostSpecPath) -
406 return ret; -
407#endif -
408 -
409 if (!ret.isEmpty() && QDir::isRelativePath(ret)) {
partially evaluated: !ret.isEmpty()
TRUEFALSE
yes
Evaluation Count:161
no
Evaluation Count:0
partially evaluated: QDir::isRelativePath(ret)
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:161
0-161
410 QString baseDir;
never executed (the execution status of this line is deduced): QString baseDir;
-
411#ifdef QT_BOOTSTRAPPED -
412 if (loc == HostPrefixPath || loc == PrefixPath || loc == SysrootPath) { -
413 // We make the prefix/sysroot path absolute to the executable's directory. -
414 // loc == PrefixPath while a sysroot is set would make no sense here. -
415 // loc == SysrootPath only makes sense if qmake lives inside the sysroot itself. -
416 baseDir = QFileInfo(qt_libraryInfoFile()).absolutePath(); -
417 } else if (loc > SysrootPath && loc <= LastHostPath) { -
418 // We make any other host path absolute to the host prefix directory. -
419 baseDir = rawLocation(HostPrefixPath, group); -
420#else -
421 if (loc == PrefixPath) {
never evaluated: loc == PrefixPath
0
422 if (QCoreApplication::instance()) {
never evaluated: QCoreApplication::instance()
0
423#ifdef Q_OS_MAC -
424 CFBundleRef bundleRef = CFBundleGetMainBundle(); -
425 if (bundleRef) { -
426 QCFType<CFURLRef> urlRef = CFBundleCopyBundleURL(bundleRef); -
427 if (urlRef) { -
428 QCFString path = CFURLCopyFileSystemPath(urlRef, kCFURLPOSIXPathStyle); -
429 return QDir::cleanPath(QString(path) + QLatin1String("/Contents/") + ret); -
430 } -
431 } -
432#endif -
433 // We make the prefix path absolute to the executable's directory. -
434 baseDir = QCoreApplication::applicationDirPath();
never executed (the execution status of this line is deduced): baseDir = QCoreApplication::applicationDirPath();
-
435 } else {
never executed: }
0
436 baseDir = QDir::currentPath();
never executed (the execution status of this line is deduced): baseDir = QDir::currentPath();
-
437 }
never executed: }
0
438#endif -
439 } else { -
440 // we make any other path absolute to the prefix directory -
441 baseDir = rawLocation(PrefixPath, group);
never executed (the execution status of this line is deduced): baseDir = location(PrefixPath);
-
442 }
never executed: }
0
443 ret = QDir::cleanPath(baseDir + QLatin1Char('/') + ret);
never executed (the execution status of this line is deduced): ret = QDir::cleanPath(baseDir + QLatin1Char('/') + ret);
-
444 }
never executed: }
0
445 return ret;
executed: return ret;
Execution Count:161
161
446} -
447 -
448/*! -
449 \enum QLibraryInfo::LibraryLocation -
450 -
451 \keyword library location -
452 -
453 This enum type is used to specify a specific location -
454 specifier: -
455 -
456 \value PrefixPath The default prefix for all paths. -
457 \value DocumentationPath The location for documentation upon install. -
458 \value HeadersPath The location for all headers. -
459 \value LibrariesPath The location of installed libraries. -
460 \value LibraryExecutablesPath The location of installed executables required by libraries at runtime. -
461 \value BinariesPath The location of installed Qt binaries (tools and applications). -
462 \value PluginsPath The location of installed Qt plugins. -
463 \value ImportsPath The location of installed QML extensions to import (QML 1.x). -
464 \value Qml2ImportsPath The location of installed QML extensions to import (QML 2.x). -
465 \value ArchDataPath The location of general architecture-dependent Qt data. -
466 \value DataPath The location of general architecture-independent Qt data. -
467 \value TranslationsPath The location of translation information for Qt strings. -
468 \value ExamplesPath The location for examples upon install. -
469 \value TestsPath The location of installed Qt testcases. -
470 \value SettingsPath The location for Qt settings. Not applicable on Windows. -
471 -
472 \sa location() -
473*/ -
474 -
475QT_END_NAMESPACE -
476 -
477#if defined(Q_CC_GNU) && defined(ELF_INTERPRETER) -
478# include <stdio.h> -
479# include <stdlib.h> -
480 -
481extern const char qt_core_interpreter[] __attribute__((section(".interp"))) -
482 = ELF_INTERPRETER; -
483 -
484extern "C" void qt_core_boilerplate(); -
485void qt_core_boilerplate() -
486{ -
487 printf("This is the QtCore library version " QT_VERSION_STR "\n"
never executed (the execution status of this line is deduced): printf("This is the QtCore library version " "5.0.2" "\n"
-
488 "Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).\n"
never executed (the execution status of this line is deduced): "Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).\n"
-
489 "Contact: http://www.qt-project.org/legal\n"
never executed (the execution status of this line is deduced): "Contact: http://www.qt-project.org/legal\n"
-
490 "\n"
never executed (the execution status of this line is deduced): "\n"
-
491 "Build date: %s\n"
never executed (the execution status of this line is deduced): "Build date: %s\n"
-
492 "Installation prefix: %s\n"
never executed (the execution status of this line is deduced): "Installation prefix: %s\n"
-
493 "Library path: %s\n"
never executed (the execution status of this line is deduced): "Library path: %s\n"
-
494 "Include path: %s\n",
never executed (the execution status of this line is deduced): "Include path: %s\n",
-
495 qt_configure_installation + 12,
never executed (the execution status of this line is deduced): qt_configure_installation + 12,
-
496 qt_configure_prefix_path_strs[QT_PREPEND_NAMESPACE(QLibraryInfo)::PrefixPath] + 12,
never executed (the execution status of this line is deduced): qt_configure_prefix_path_strs[::QLibraryInfo::PrefixPath] + 12,
-
497 qt_configure_prefix_path_strs[QT_PREPEND_NAMESPACE(QLibraryInfo)::LibrariesPath] + 12,
never executed (the execution status of this line is deduced): qt_configure_prefix_path_strs[::QLibraryInfo::LibrariesPath] + 12,
-
498 qt_configure_prefix_path_strs[QT_PREPEND_NAMESPACE(QLibraryInfo)::HeadersPath] + 12);
never executed (the execution status of this line is deduced): qt_configure_prefix_path_strs[::QLibraryInfo::HeadersPath] + 12);
-
499 -
500 QT_PREPEND_NAMESPACE(qDumpCPUFeatures)();
never executed (the execution status of this line is deduced): ::qDumpCPUFeatures();
-
501 -
502#ifdef QT_EVAL -
503 extern void qt_core_eval_init(uint); -
504 qt_core_eval_init(1); -
505#endif -
506 -
507 exit(0);
never executed: exit(0);
0
508} -
509 -
510#endif -
511 -
Source codeSwitch to Preprocessed file

Generated by Squish Coco Non-Commercial