xref: /oneTBB/include/oneapi/tbb/version.h (revision 49e08aac)
1*49e08aacStbbdev /*
2*49e08aacStbbdev     Copyright (c) 2005-2020 Intel Corporation
3*49e08aacStbbdev 
4*49e08aacStbbdev     Licensed under the Apache License, Version 2.0 (the "License");
5*49e08aacStbbdev     you may not use this file except in compliance with the License.
6*49e08aacStbbdev     You may obtain a copy of the License at
7*49e08aacStbbdev 
8*49e08aacStbbdev         http://www.apache.org/licenses/LICENSE-2.0
9*49e08aacStbbdev 
10*49e08aacStbbdev     Unless required by applicable law or agreed to in writing, software
11*49e08aacStbbdev     distributed under the License is distributed on an "AS IS" BASIS,
12*49e08aacStbbdev     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*49e08aacStbbdev     See the License for the specific language governing permissions and
14*49e08aacStbbdev     limitations under the License.
15*49e08aacStbbdev */
16*49e08aacStbbdev 
17*49e08aacStbbdev #ifndef __TBB_version_H
18*49e08aacStbbdev #define __TBB_version_H
19*49e08aacStbbdev 
20*49e08aacStbbdev #include "detail/_config.h"
21*49e08aacStbbdev #include "detail/_namespace_injection.h"
22*49e08aacStbbdev 
23*49e08aacStbbdev // Product version
24*49e08aacStbbdev #define TBB_VERSION_MAJOR 2021
25*49e08aacStbbdev // Update version
26*49e08aacStbbdev #define TBB_VERSION_MINOR 1
27*49e08aacStbbdev // "Patch" version for custom releases
28*49e08aacStbbdev #define TBB_VERSION_PATCH 0
29*49e08aacStbbdev // Suffix string
30*49e08aacStbbdev #define __TBB_VERSION_SUFFIX ""
31*49e08aacStbbdev // Full official version string
32*49e08aacStbbdev #define TBB_VERSION_STRING __TBB_STRING(TBB_VERSION_MAJOR) "." __TBB_STRING(TBB_VERSION_MINOR) __TBB_VERSION_SUFFIX
33*49e08aacStbbdev 
34*49e08aacStbbdev // OneAPI oneTBB specification version
35*49e08aacStbbdev #define ONETBB_SPEC_VERSION "1.0"
36*49e08aacStbbdev // Full interface version
37*49e08aacStbbdev #define TBB_INTERFACE_VERSION 12010
38*49e08aacStbbdev // Major interface version
39*49e08aacStbbdev #define TBB_INTERFACE_VERSION_MAJOR (TBB_INTERFACE_VERSION/1000)
40*49e08aacStbbdev // Minor interface version
41*49e08aacStbbdev #define TBB_INTERFACE_VERSION_MINOR (TBB_INTERFACE_VERSION%1000/10)
42*49e08aacStbbdev 
43*49e08aacStbbdev // The binary compatibility version
44*49e08aacStbbdev // To be used in SONAME, manifests, etc.
45*49e08aacStbbdev #define __TBB_BINARY_VERSION 12
46*49e08aacStbbdev 
47*49e08aacStbbdev //! TBB_VERSION support
48*49e08aacStbbdev #ifndef ENDL
49*49e08aacStbbdev #define ENDL "\n"
50*49e08aacStbbdev #endif
51*49e08aacStbbdev 
52*49e08aacStbbdev //TBB_REVAMP_TODO: consider enabling version_string.ver generation
53*49e08aacStbbdev //TBB_REVAMP_TODO: #include "version_string.ver"
54*49e08aacStbbdev 
55*49e08aacStbbdev #define __TBB_ONETBB_SPEC_VERSION(N) #N ": SPECIFICATION VERSION\t" ONETBB_SPEC_VERSION ENDL
56*49e08aacStbbdev #define __TBB_VERSION_NUMBER(N) #N ": VERSION\t\t" TBB_VERSION_STRING ENDL
57*49e08aacStbbdev #define __TBB_INTERFACE_VERSION_NUMBER(N) #N ": INTERFACE VERSION\t" __TBB_STRING(TBB_INTERFACE_VERSION) ENDL
58*49e08aacStbbdev 
59*49e08aacStbbdev #ifndef TBB_USE_DEBUG
60*49e08aacStbbdev     #define __TBB_VERSION_USE_DEBUG(N) #N ": TBB_USE_DEBUG\tundefined" ENDL
61*49e08aacStbbdev #elif TBB_USE_DEBUG==0
62*49e08aacStbbdev     #define __TBB_VERSION_USE_DEBUG(N) #N ": TBB_USE_DEBUG\t0" ENDL
63*49e08aacStbbdev #elif TBB_USE_DEBUG==1
64*49e08aacStbbdev     #define __TBB_VERSION_USE_DEBUG(N) #N ": TBB_USE_DEBUG\t1" ENDL
65*49e08aacStbbdev #elif TBB_USE_DEBUG==2
66*49e08aacStbbdev     #define __TBB_VERSION_USE_DEBUG(N) #N ": TBB_USE_DEBUG\t2" ENDL
67*49e08aacStbbdev #else
68*49e08aacStbbdev     #error Unexpected value for TBB_USE_DEBUG
69*49e08aacStbbdev #endif
70*49e08aacStbbdev 
71*49e08aacStbbdev #ifndef TBB_USE_ASSERT
72*49e08aacStbbdev     #define __TBB_VERSION_USE_ASSERT(N) #N ": TBB_USE_ASSERT\tundefined" ENDL
73*49e08aacStbbdev #elif TBB_USE_ASSERT==0
74*49e08aacStbbdev     #define __TBB_VERSION_USE_ASSERT(N) #N ": TBB_USE_ASSERT\t0" ENDL
75*49e08aacStbbdev #elif TBB_USE_ASSERT==1
76*49e08aacStbbdev     #define __TBB_VERSION_USE_ASSERT(N) #N ": TBB_USE_ASSERT\t1" ENDL
77*49e08aacStbbdev #elif TBB_USE_ASSERT==2
78*49e08aacStbbdev     #define __TBB_VERSION_USE_ASSERT(N) #N ": TBB_USE_ASSERT\t2" ENDL
79*49e08aacStbbdev #else
80*49e08aacStbbdev     #error Unexpected value for TBB_USE_ASSERT
81*49e08aacStbbdev #endif
82*49e08aacStbbdev 
83*49e08aacStbbdev #define TBB_VERSION_STRINGS_P(N)                \
84*49e08aacStbbdev     __TBB_ONETBB_SPEC_VERSION(N)                \
85*49e08aacStbbdev     __TBB_VERSION_NUMBER(N)                     \
86*49e08aacStbbdev     __TBB_INTERFACE_VERSION_NUMBER(N)           \
87*49e08aacStbbdev     __TBB_VERSION_USE_DEBUG(N)                  \
88*49e08aacStbbdev     __TBB_VERSION_USE_ASSERT(N)
89*49e08aacStbbdev 
90*49e08aacStbbdev #define TBB_VERSION_STRINGS TBB_VERSION_STRINGS_P(oneTBB)
91*49e08aacStbbdev #define TBBMALLOC_VERSION_STRINGS TBB_VERSION_STRINGS_P(TBBmalloc)
92*49e08aacStbbdev 
93*49e08aacStbbdev //! The function returns the version string for the Intel(R) oneAPI Threading Building Blocks (oneTBB)
94*49e08aacStbbdev //! shared library being used.
95*49e08aacStbbdev /**
96*49e08aacStbbdev  * The returned pointer is an address of a string in the shared library.
97*49e08aacStbbdev  * It can be different than the TBB_VERSION_STRING obtained at compile time.
98*49e08aacStbbdev  */
99*49e08aacStbbdev extern "C" const char* __TBB_EXPORTED_FUNC TBB_runtime_version();
100*49e08aacStbbdev 
101*49e08aacStbbdev //! The function returns the interface version of the oneTBB shared library being used.
102*49e08aacStbbdev /**
103*49e08aacStbbdev  * The returned version is determined at runtime, not at compile/link time.
104*49e08aacStbbdev  * It can be different than the value of TBB_INTERFACE_VERSION obtained at compile time.
105*49e08aacStbbdev  */
106*49e08aacStbbdev extern "C" int __TBB_EXPORTED_FUNC TBB_runtime_interface_version();
107*49e08aacStbbdev 
108*49e08aacStbbdev #endif // __TBB_version_H
109