1/****************************************************************************
2**
3** Copyright (C) 2016 Intel Corporation.
4** Contact: https://www.qt.io/licensing/
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 The Qt Company. For licensing terms
14** and conditions see https://www.qt.io/terms-conditions. For further
15** information use the contact form at https://www.qt.io/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 3 as published by the Free Software
20** Foundation and appearing in the file LICENSE.LGPL3 included in the
21** packaging of this file. Please review the following information to
22** ensure the GNU Lesser General Public License version 3 requirements
23** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
24**
25** GNU General Public License Usage
26** Alternatively, this file may be used under the terms of the GNU
27** General Public License version 2.0 or (at your option) the GNU General
28** Public license version 3 or any later version approved by the KDE Free
29** Qt Foundation. The licenses are as published by the Free Software
30** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
31** included in the packaging of this file. Please review the following
32** information to ensure the GNU General Public License requirements will
33** be met: https://www.gnu.org/licenses/gpl-2.0.html and
34** https://www.gnu.org/licenses/gpl-3.0.html.
35**
36** $QT_END_LICENSE$
37**
38****************************************************************************/
39
40#include "qglobal.h"
41
42#define SYM QT_MANGLE_NAMESPACE(qt_version_tag)
43//#define SSYM QT_STRINGIFY(SYM)
44
45#if defined(Q_CC_GNU) && defined(Q_OF_ELF) && !defined(Q_OS_ANDROID)
46# define make_versioned_symbol2(sym, m, n, separator) \
47 Q_CORE_EXPORT extern const char sym ## _ ## m ## _ ## n = 0; \
48 asm(".symver " QT_STRINGIFY(sym) "_" QT_STRINGIFY(m) "_" QT_STRINGIFY(n) ", " \
49 QT_STRINGIFY(sym) separator "Qt_" QT_STRINGIFY(m) "." QT_STRINGIFY(n))
50#else
51# define make_versioned_symbol2(sym, m, n, separator)
52#endif
53#define make_versioned_symbol(sym, m, n, separator) make_versioned_symbol2(sym, m, n, separator)
54
55extern "C" {
56#if QT_VERSION_MINOR > 0
57make_versioned_symbol(SYM, QT_VERSION_MAJOR, 0, "@");
58#endif
59#if QT_VERSION_MINOR > 1
60make_versioned_symbol(SYM, QT_VERSION_MAJOR, 1, "@");
61#endif
62#if QT_VERSION_MINOR > 2
63make_versioned_symbol(SYM, QT_VERSION_MAJOR, 2, "@");
64#endif
65#if QT_VERSION_MINOR > 3
66make_versioned_symbol(SYM, QT_VERSION_MAJOR, 3, "@");
67#endif
68#if QT_VERSION_MINOR > 4
69make_versioned_symbol(SYM, QT_VERSION_MAJOR, 4, "@");
70#endif
71#if QT_VERSION_MINOR > 5
72make_versioned_symbol(SYM, QT_VERSION_MAJOR, 5, "@");
73#endif
74#if QT_VERSION_MINOR > 6
75make_versioned_symbol(SYM, QT_VERSION_MAJOR, 6, "@");
76#endif
77#if QT_VERSION_MINOR > 7
78make_versioned_symbol(SYM, QT_VERSION_MAJOR, 7, "@");
79#endif
80#if QT_VERSION_MINOR > 8
81make_versioned_symbol(SYM, QT_VERSION_MAJOR, 8, "@");
82#endif
83#if QT_VERSION_MINOR > 9
84make_versioned_symbol(SYM, QT_VERSION_MAJOR, 9, "@");
85#endif
86#if QT_VERSION_MINOR > 10
87make_versioned_symbol(SYM, QT_VERSION_MAJOR, 10, "@");
88#endif
89#if QT_VERSION_MINOR > 11
90make_versioned_symbol(SYM, QT_VERSION_MAJOR, 11, "@");
91#endif
92#if QT_VERSION_MINOR > 12
93make_versioned_symbol(SYM, QT_VERSION_MAJOR, 12, "@");
94#endif
95#if QT_VERSION_MINOR > 13
96make_versioned_symbol(SYM, QT_VERSION_MAJOR, 13, "@");
97#endif
98#if QT_VERSION_MINOR > 14
99make_versioned_symbol(SYM, QT_VERSION_MAJOR, 14, "@");
100#endif
101#if QT_VERSION_MINOR > 15
102make_versioned_symbol(SYM, QT_VERSION_MAJOR, 15, "@");
103#endif
104#if QT_VERSION_MINOR > 16
105// We don't expect there will be a Qt 5.17
106# error "Please update this file with more Qt versions."
107#endif
108
109// the default version:
110make_versioned_symbol(SYM, QT_VERSION_MAJOR, QT_VERSION_MINOR, "@@");
111}
112

source code of qtbase/src/corelib/global/qversiontagging.cpp