2 * kmp_config.h -- Feature macros
4 //===----------------------------------------------------------------------===//
6 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
7 // See https://llvm.org/LICENSE.txt for license information.
8 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
10 //===----------------------------------------------------------------------===//
14 #include "kmp_platform.h"
16 // cmakedefine01 MACRO will define MACRO as either 0 or 1
17 // cmakedefine MACRO 1 will define MACRO as 1 or leave undefined
18 #cmakedefine01 DEBUG_BUILD
19 #cmakedefine01 RELWITHDEBINFO_BUILD
20 #cmakedefine01 LIBOMP_USE_ITT_NOTIFY
21 #define USE_ITT_NOTIFY LIBOMP_USE_ITT_NOTIFY
22 #if ! LIBOMP_USE_ITT_NOTIFY
23 # define INTEL_NO_ITTNOTIFY_API
25 #cmakedefine01 LIBOMP_USE_VERSION_SYMBOLS
26 #if LIBOMP_USE_VERSION_SYMBOLS
27 # define KMP_USE_VERSION_SYMBOLS
29 #cmakedefine01 LIBOMP_HAVE_WEAK_ATTRIBUTE
30 #define KMP_HAVE_WEAK_ATTRIBUTE LIBOMP_HAVE_WEAK_ATTRIBUTE
31 #cmakedefine01 LIBOMP_HAVE_PSAPI
32 #define KMP_HAVE_PSAPI LIBOMP_HAVE_PSAPI
33 #cmakedefine01 LIBOMP_STATS
34 #define KMP_STATS_ENABLED LIBOMP_STATS
35 #cmakedefine01 LIBOMP_HAVE_X86INTRIN_H
36 #define KMP_HAVE_X86INTRIN_H LIBOMP_HAVE_X86INTRIN_H
37 #cmakedefine01 LIBOMP_HAVE___BUILTIN_READCYCLECOUNTER
38 #define KMP_HAVE___BUILTIN_READCYCLECOUNTER LIBOMP_HAVE___BUILTIN_READCYCLECOUNTER
39 #cmakedefine01 LIBOMP_HAVE___RDTSC
40 #define KMP_HAVE___RDTSC LIBOMP_HAVE___RDTSC
41 #cmakedefine01 LIBOMP_USE_DEBUGGER
42 #define USE_DEBUGGER LIBOMP_USE_DEBUGGER
43 #cmakedefine01 LIBOMP_OMPT_DEBUG
44 #define OMPT_DEBUG LIBOMP_OMPT_DEBUG
45 #cmakedefine01 LIBOMP_OMPT_SUPPORT
46 #define OMPT_SUPPORT LIBOMP_OMPT_SUPPORT
47 #cmakedefine01 LIBOMP_OMPD_SUPPORT
48 #define OMPD_SUPPORT LIBOMP_OMPD_SUPPORT
49 #cmakedefine01 LIBOMP_OMPX_TASKGRAPH
50 #define OMPX_TASKGRAPH LIBOMP_OMPX_TASKGRAPH
51 #cmakedefine01 LIBOMP_PROFILING_SUPPORT
52 #define OMP_PROFILING_SUPPORT LIBOMP_PROFILING_SUPPORT
53 #cmakedefine01 LIBOMP_OMPT_OPTIONAL
54 #define OMPT_OPTIONAL LIBOMP_OMPT_OPTIONAL
55 #cmakedefine01 LIBOMP_USE_ADAPTIVE_LOCKS
56 #define KMP_USE_ADAPTIVE_LOCKS LIBOMP_USE_ADAPTIVE_LOCKS
57 #define KMP_DEBUG_ADAPTIVE_LOCKS 0
58 #cmakedefine01 LIBOMP_USE_INTERNODE_ALIGNMENT
59 #define KMP_USE_INTERNODE_ALIGNMENT LIBOMP_USE_INTERNODE_ALIGNMENT
60 #cmakedefine01 LIBOMP_ENABLE_ASSERTIONS
61 #define KMP_USE_ASSERT LIBOMP_ENABLE_ASSERTIONS
62 #cmakedefine01 LIBOMP_USE_HIER_SCHED
63 #define KMP_USE_HIER_SCHED LIBOMP_USE_HIER_SCHED
64 #cmakedefine01 STUBS_LIBRARY
65 #cmakedefine01 LIBOMP_USE_HWLOC
66 #define KMP_USE_HWLOC LIBOMP_USE_HWLOC
67 #cmakedefine01 LIBOMP_ENABLE_SHARED
68 #define KMP_DYNAMIC_LIB LIBOMP_ENABLE_SHARED
69 #define KMP_ARCH_STR "@LIBOMP_LEGAL_ARCH@"
70 #define KMP_LIBRARY_FILE "@LIBOMP_LIB_FILE@"
71 #define KMP_VERSION_MAJOR @LIBOMP_VERSION_MAJOR@
72 #define KMP_VERSION_MINOR @LIBOMP_VERSION_MINOR@
74 #define KMP_MSVC_COMPAT MSVC
75 #cmakedefine01 LIBOMP_HAVE_WAITPKG_INTRINSICS
76 #define KMP_HAVE_WAITPKG_INTRINSICS LIBOMP_HAVE_WAITPKG_INTRINSICS
77 #cmakedefine01 LIBOMP_HAVE_RTM_INTRINSICS
78 #define KMP_HAVE_RTM_INTRINSICS LIBOMP_HAVE_RTM_INTRINSICS
79 #cmakedefine01 LIBOMP_HAVE_IMMINTRIN_H
80 #define KMP_HAVE_IMMINTRIN_H LIBOMP_HAVE_IMMINTRIN_H
81 #cmakedefine01 LIBOMP_HAVE_INTRIN_H
82 #define KMP_HAVE_INTRIN_H LIBOMP_HAVE_INTRIN_H
83 #cmakedefine01 LIBOMP_HAVE_ATTRIBUTE_WAITPKG
84 #define KMP_HAVE_ATTRIBUTE_WAITPKG LIBOMP_HAVE_ATTRIBUTE_WAITPKG
85 #cmakedefine01 LIBOMP_HAVE_ATTRIBUTE_RTM
86 #define KMP_HAVE_ATTRIBUTE_RTM LIBOMP_HAVE_ATTRIBUTE_RTM
87 #cmakedefine01 LIBOMP_ARCH_AARCH64_A64FX
88 #define KMP_ARCH_AARCH64_A64FX LIBOMP_ARCH_AARCH64_A64FX
89 #cmakedefine01 LIBOMP_HAVE_XMMINTRIN_H
90 #define KMP_HAVE_XMMINTRIN_H LIBOMP_HAVE_XMMINTRIN_H
91 #cmakedefine01 LIBOMP_HAVE__MM_MALLOC
92 #define KMP_HAVE__MM_MALLOC LIBOMP_HAVE__MM_MALLOC
93 #cmakedefine01 LIBOMP_HAVE_ALIGNED_ALLOC
94 #define KMP_HAVE_ALIGNED_ALLOC LIBOMP_HAVE_ALIGNED_ALLOC
95 #cmakedefine01 LIBOMP_HAVE_POSIX_MEMALIGN
96 #define KMP_HAVE_POSIX_MEMALIGN LIBOMP_HAVE_POSIX_MEMALIGN
97 #cmakedefine01 LIBOMP_HAVE__ALIGNED_MALLOC
98 #define KMP_HAVE__ALIGNED_MALLOC LIBOMP_HAVE__ALIGNED_MALLOC
99 #cmakedefine01 OPENMP_ENABLE_LIBOMPTARGET
100 #define ENABLE_LIBOMPTARGET OPENMP_ENABLE_LIBOMPTARGET
102 // Configured cache line based on architecture
104 # define CACHE_LINE 128
105 #elif KMP_ARCH_AARCH64_A64FX
106 # define CACHE_LINE 256
108 # define CACHE_LINE 64
111 #if ! KMP_32_BIT_ARCH
115 #define KMP_NESTED_HOT_TEAMS 1
116 #define KMP_ADJUST_BLOCKTIME 1
117 #define BUILD_PARALLEL_ORDERED 1
118 #define KMP_ASM_INTRINS 1
119 #define USE_ITT_BUILD LIBOMP_USE_ITT_NOTIFY
120 #define INTEL_ITTNOTIFY_PREFIX __kmp_itt_
122 # define USE_LOAD_BALANCE 1
124 #if ! (KMP_OS_WINDOWS || KMP_OS_DARWIN)
125 # define KMP_TDATA_GTID 1
130 #if DEBUG_BUILD || RELWITHDEBINFO_BUILD
135 # define KMP_WIN_CDECL
138 # define KMP_GOMP_COMPAT
141 // use shared memory with dynamic library (except Android, where shm_*
142 // functions don't exist).
143 #if KMP_OS_UNIX && KMP_DYNAMIC_LIB && !__ANDROID__
146 #endif // KMP_CONFIG_H