xref: /oneTBB/include/oneapi/tbb/version.h (revision 3cd37a22)
149e08aacStbbdev /*
210a6d95eSIlya Isaev     Copyright (c) 2005-2023 Intel Corporation
349e08aacStbbdev 
449e08aacStbbdev     Licensed under the Apache License, Version 2.0 (the "License");
549e08aacStbbdev     you may not use this file except in compliance with the License.
649e08aacStbbdev     You may obtain a copy of the License at
749e08aacStbbdev 
849e08aacStbbdev         http://www.apache.org/licenses/LICENSE-2.0
949e08aacStbbdev 
1049e08aacStbbdev     Unless required by applicable law or agreed to in writing, software
1149e08aacStbbdev     distributed under the License is distributed on an "AS IS" BASIS,
1249e08aacStbbdev     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1349e08aacStbbdev     See the License for the specific language governing permissions and
1449e08aacStbbdev     limitations under the License.
1549e08aacStbbdev */
1649e08aacStbbdev 
1749e08aacStbbdev #ifndef __TBB_version_H
1849e08aacStbbdev #define __TBB_version_H
1949e08aacStbbdev 
206bfd29bdSPavel Kumbrasev // Exclude all includes during .rc files compilation
216bfd29bdSPavel Kumbrasev #ifndef RC_INVOKED
2249e08aacStbbdev     #include "detail/_config.h"
2349e08aacStbbdev     #include "detail/_namespace_injection.h"
246bfd29bdSPavel Kumbrasev #else
256bfd29bdSPavel Kumbrasev     #define __TBB_STRING_AUX(x) #x
266bfd29bdSPavel Kumbrasev     #define __TBB_STRING(x) __TBB_STRING_AUX(x)
276bfd29bdSPavel Kumbrasev #endif
2849e08aacStbbdev 
2949e08aacStbbdev // Product version
3049e08aacStbbdev #define TBB_VERSION_MAJOR 2021
3149e08aacStbbdev // Update version
32*3cd37a22SDmitri Mokhov #define TBB_VERSION_MINOR 12
3349e08aacStbbdev // "Patch" version for custom releases
3449e08aacStbbdev #define TBB_VERSION_PATCH 0
3549e08aacStbbdev // Suffix string
3649e08aacStbbdev #define __TBB_VERSION_SUFFIX ""
3749e08aacStbbdev // Full official version string
38ddfc32d9SIlya Isaev #define TBB_VERSION_STRING              \
39ddfc32d9SIlya Isaev     __TBB_STRING(TBB_VERSION_MAJOR) "." \
40ddfc32d9SIlya Isaev     __TBB_STRING(TBB_VERSION_MINOR) "." \
41ddfc32d9SIlya Isaev     __TBB_STRING(TBB_VERSION_PATCH)     \
42ddfc32d9SIlya Isaev     __TBB_VERSION_SUFFIX
4349e08aacStbbdev 
4449e08aacStbbdev // OneAPI oneTBB specification version
4549e08aacStbbdev #define ONETBB_SPEC_VERSION "1.0"
4649e08aacStbbdev // Full interface version
47*3cd37a22SDmitri Mokhov #define TBB_INTERFACE_VERSION 12120
4849e08aacStbbdev // Major interface version
4949e08aacStbbdev #define TBB_INTERFACE_VERSION_MAJOR (TBB_INTERFACE_VERSION/1000)
5049e08aacStbbdev // Minor interface version
5149e08aacStbbdev #define TBB_INTERFACE_VERSION_MINOR (TBB_INTERFACE_VERSION%1000/10)
5249e08aacStbbdev 
5349e08aacStbbdev // The binary compatibility version
5449e08aacStbbdev // To be used in SONAME, manifests, etc.
5549e08aacStbbdev #define __TBB_BINARY_VERSION 12
5649e08aacStbbdev 
5749e08aacStbbdev //! TBB_VERSION support
58bec5d998SMartin Marinov #ifndef TBB_ENDL
59bec5d998SMartin Marinov #define TBB_ENDL "\n"
6049e08aacStbbdev #endif
6149e08aacStbbdev 
6249e08aacStbbdev //TBB_REVAMP_TODO: consider enabling version_string.ver generation
6349e08aacStbbdev //TBB_REVAMP_TODO: #include "version_string.ver"
6449e08aacStbbdev 
65bec5d998SMartin Marinov #define __TBB_ONETBB_SPEC_VERSION(N) #N ": SPECIFICATION VERSION\t" ONETBB_SPEC_VERSION TBB_ENDL
66bec5d998SMartin Marinov #define __TBB_VERSION_NUMBER(N) #N ": VERSION\t\t" TBB_VERSION_STRING TBB_ENDL
67bec5d998SMartin Marinov #define __TBB_INTERFACE_VERSION_NUMBER(N) #N ": INTERFACE VERSION\t" __TBB_STRING(TBB_INTERFACE_VERSION) TBB_ENDL
6849e08aacStbbdev 
6949e08aacStbbdev #ifndef TBB_USE_DEBUG
70bec5d998SMartin Marinov     #define __TBB_VERSION_USE_DEBUG(N) #N ": TBB_USE_DEBUG\tundefined" TBB_ENDL
7149e08aacStbbdev #elif TBB_USE_DEBUG==0
72bec5d998SMartin Marinov     #define __TBB_VERSION_USE_DEBUG(N) #N ": TBB_USE_DEBUG\t0" TBB_ENDL
7349e08aacStbbdev #elif TBB_USE_DEBUG==1
74bec5d998SMartin Marinov     #define __TBB_VERSION_USE_DEBUG(N) #N ": TBB_USE_DEBUG\t1" TBB_ENDL
7549e08aacStbbdev #elif TBB_USE_DEBUG==2
76bec5d998SMartin Marinov     #define __TBB_VERSION_USE_DEBUG(N) #N ": TBB_USE_DEBUG\t2" TBB_ENDL
7749e08aacStbbdev #else
7849e08aacStbbdev     #error Unexpected value for TBB_USE_DEBUG
7949e08aacStbbdev #endif
8049e08aacStbbdev 
8149e08aacStbbdev #ifndef TBB_USE_ASSERT
82bec5d998SMartin Marinov     #define __TBB_VERSION_USE_ASSERT(N) #N ": TBB_USE_ASSERT\tundefined" TBB_ENDL
8349e08aacStbbdev #elif TBB_USE_ASSERT==0
84bec5d998SMartin Marinov     #define __TBB_VERSION_USE_ASSERT(N) #N ": TBB_USE_ASSERT\t0" TBB_ENDL
8549e08aacStbbdev #elif TBB_USE_ASSERT==1
86bec5d998SMartin Marinov     #define __TBB_VERSION_USE_ASSERT(N) #N ": TBB_USE_ASSERT\t1" TBB_ENDL
8749e08aacStbbdev #elif TBB_USE_ASSERT==2
88bec5d998SMartin Marinov     #define __TBB_VERSION_USE_ASSERT(N) #N ": TBB_USE_ASSERT\t2" TBB_ENDL
8949e08aacStbbdev #else
9049e08aacStbbdev     #error Unexpected value for TBB_USE_ASSERT
9149e08aacStbbdev #endif
9249e08aacStbbdev 
9349e08aacStbbdev #define TBB_VERSION_STRINGS_P(N)                \
9449e08aacStbbdev     __TBB_ONETBB_SPEC_VERSION(N)                \
9549e08aacStbbdev     __TBB_VERSION_NUMBER(N)                     \
9649e08aacStbbdev     __TBB_INTERFACE_VERSION_NUMBER(N)           \
9749e08aacStbbdev     __TBB_VERSION_USE_DEBUG(N)                  \
9849e08aacStbbdev     __TBB_VERSION_USE_ASSERT(N)
9949e08aacStbbdev 
10049e08aacStbbdev #define TBB_VERSION_STRINGS TBB_VERSION_STRINGS_P(oneTBB)
10149e08aacStbbdev #define TBBMALLOC_VERSION_STRINGS TBB_VERSION_STRINGS_P(TBBmalloc)
10249e08aacStbbdev 
10349e08aacStbbdev //! The function returns the version string for the Intel(R) oneAPI Threading Building Blocks (oneTBB)
10449e08aacStbbdev //! shared library being used.
10549e08aacStbbdev /**
10649e08aacStbbdev  * The returned pointer is an address of a string in the shared library.
10749e08aacStbbdev  * It can be different than the TBB_VERSION_STRING obtained at compile time.
10849e08aacStbbdev  */
1098827ea7dSLong Nguyen extern "C" TBB_EXPORT const char* __TBB_EXPORTED_FUNC TBB_runtime_version();
11049e08aacStbbdev 
11149e08aacStbbdev //! The function returns the interface version of the oneTBB shared library being used.
11249e08aacStbbdev /**
11349e08aacStbbdev  * The returned version is determined at runtime, not at compile/link time.
11449e08aacStbbdev  * It can be different than the value of TBB_INTERFACE_VERSION obtained at compile time.
11549e08aacStbbdev  */
1168827ea7dSLong Nguyen extern "C" TBB_EXPORT int __TBB_EXPORTED_FUNC TBB_runtime_interface_version();
11749e08aacStbbdev 
11849e08aacStbbdev #endif // __TBB_version_H
119