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