Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / openmp / runtime / CMakeLists.txt
blob4441c4babdc07c08a5fb703c57881f9f70796abd
2 #//===----------------------------------------------------------------------===//
3 #//
4 #// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
5 #// See https://llvm.org/LICENSE.txt for license information.
6 #// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 #//
8 #//===----------------------------------------------------------------------===//
11 if("${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_CURRENT_SOURCE_DIR}")
12   message(FATAL_ERROR "Direct configuration not supported, please use parent directory!")
13 endif()
15 # Add cmake directory to search for custom cmake functions
16 set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake ${CMAKE_MODULE_PATH})
18 # Set libomp version
19 set(LIBOMP_VERSION_MAJOR 5)
20 set(LIBOMP_VERSION_MINOR 0)
22 # These include files are in the cmake/ subdirectory
23 include(LibompUtils)
24 include(LibompGetArchitecture)
25 include(LibompHandleFlags)
26 include(LibompDefinitions)
28 # Determine the target architecture
29 if(${OPENMP_STANDALONE_BUILD})
30   # If adding a new architecture, take a look at cmake/LibompGetArchitecture.cmake
31   libomp_get_architecture(LIBOMP_DETECTED_ARCH)
32   set(LIBOMP_ARCH ${LIBOMP_DETECTED_ARCH} CACHE STRING
33     "The architecture to build for (x86_64/i386/arm/ppc64/ppc64le/aarch64/mic/mips/mips64/riscv64/loongarch64/ve).")
34   # Should assertions be enabled?  They are on by default.
35   set(LIBOMP_ENABLE_ASSERTIONS TRUE CACHE BOOL
36     "enable assertions?")
37   string(TOUPPER "${CMAKE_BUILD_TYPE}" uppercase_CMAKE_BUILD_TYPE)
38 else() # Part of LLVM build
39   # Determine the native architecture from LLVM.
40   string(TOLOWER "${LLVM_TARGET_ARCH}" LIBOMP_NATIVE_ARCH)
41   if( LIBOMP_NATIVE_ARCH STREQUAL "host" )
42     string(REGEX MATCH "^[^-]*" LIBOMP_NATIVE_ARCH ${LLVM_HOST_TRIPLE})
43   endif ()
44   if(LIBOMP_NATIVE_ARCH MATCHES "i[2-6]86")
45     set(LIBOMP_ARCH i386)
46   elseif(LIBOMP_NATIVE_ARCH STREQUAL "x86")
47     set(LIBOMP_ARCH i386)
48   elseif(LIBOMP_NATIVE_ARCH STREQUAL "amd64")
49     set(LIBOMP_ARCH x86_64)
50   elseif(LIBOMP_NATIVE_ARCH STREQUAL "x86_64")
51     set(LIBOMP_ARCH x86_64)
52   elseif(LIBOMP_NATIVE_ARCH MATCHES "powerpc64le")
53     set(LIBOMP_ARCH ppc64le)
54   elseif(LIBOMP_NATIVE_ARCH MATCHES "powerpc")
55     set(LIBOMP_ARCH ppc64)
56   elseif(LIBOMP_NATIVE_ARCH MATCHES "aarch64")
57     set(LIBOMP_ARCH aarch64)
58   elseif(LIBOMP_NATIVE_ARCH MATCHES "arm64")
59     set(LIBOMP_ARCH aarch64)
60   elseif(LIBOMP_NATIVE_ARCH MATCHES "arm")
61     set(LIBOMP_ARCH arm)
62   elseif(LIBOMP_NATIVE_ARCH MATCHES "riscv64")
63     set(LIBOMP_ARCH riscv64)
64   elseif(LIBOMP_NATIVE_ARCH MATCHES "loongarch64")
65     set(LIBOMP_ARCH loongarch64)
66   elseif(LIBOMP_NATIVE_ARCH MATCHES "ve")
67     set(LIBOMP_ARCH ve)
68   else()
69     # last ditch effort
70     libomp_get_architecture(LIBOMP_ARCH)
71   endif ()
72   set(LIBOMP_ENABLE_ASSERTIONS ${LLVM_ENABLE_ASSERTIONS})
73 endif()
75 # Time profiling support
76 set(LIBOMP_PROFILING_SUPPORT ${OPENMP_ENABLE_LIBOMP_PROFILING})
78 # FUJITSU A64FX is a special processor because its cache line size is 256.
79 # We need to pass this information into kmp_config.h.
80 if(LIBOMP_ARCH STREQUAL "aarch64")
81   libomp_is_aarch64_a64fx(LIBOMP_DETECT_AARCH64_A64FX)
82   if (LIBOMP_DETECT_AARCH64_A64FX)
83     set(LIBOMP_ARCH "aarch64_a64fx")
84     set(LIBOMP_ARCH_AARCH64_A64FX TRUE)
85   endif()
86 endif()
88 libomp_check_variable(LIBOMP_ARCH 32e x86_64 32 i386 arm ppc64 ppc64le aarch64 aarch64_a64fx mic mips mips64 riscv64 loongarch64 ve)
90 set(LIBOMP_LIB_TYPE normal CACHE STRING
91   "Performance,Profiling,Stubs library (normal/profile/stubs)")
92 libomp_check_variable(LIBOMP_LIB_TYPE normal profile stubs)
93 # Set the OpenMP Year and Month associated with version
94 set(LIBOMP_OMP_YEAR_MONTH 201611)
95 set(LIBOMP_MIC_ARCH knc CACHE STRING
96   "Intel(R) Many Integrated Core Architecture (Intel(R) MIC Architecture) (knf/knc).  Ignored if not Intel(R) MIC Architecture build.")
97 if("${LIBOMP_ARCH}" STREQUAL "mic")
98   libomp_check_variable(LIBOMP_MIC_ARCH knf knc)
99 endif()
100 set(LIBOMP_FORTRAN_MODULES FALSE CACHE BOOL
101   "Create Fortran module files? (requires fortran compiler)")
103 # - Support for universal fat binary builds on Mac
104 # - Having this extra variable allows people to build this library as a universal library
105 #   without forcing a universal build of the llvm/clang compiler.
106 set(LIBOMP_OSX_ARCHITECTURES "${CMAKE_OSX_ARCHITECTURES}" CACHE STRING
107   "For Mac builds, semicolon separated list of architectures to build for universal fat binary.")
108 set(CMAKE_OSX_ARCHITECTURES ${LIBOMP_OSX_ARCHITECTURES})
110 # Should @rpath be used for dynamic libraries on Mac?
111 # The if(NOT DEFINED) is there to guard a cached value of the variable if one
112 # exists so there is no interference with what the user wants.  Also, no cache entry
113 # is created so there are no inadvertant effects on other parts of LLVM.
114 if(NOT DEFINED CMAKE_MACOSX_RPATH)
115   set(CMAKE_MACOSX_RPATH TRUE)
116 endif()
118 # User specified flags.  These are appended to the configured flags.
119 set(LIBOMP_CXXFLAGS "" CACHE STRING
120   "Appended user specified C++ compiler flags.")
121 set(LIBOMP_CPPFLAGS "" CACHE STRING
122   "Appended user specified C preprocessor flags.")
123 set(LIBOMP_ASMFLAGS "" CACHE STRING
124   "Appended user specified assembler flags.")
125 set(LIBOMP_LDFLAGS "" CACHE STRING
126   "Appended user specified linker flags.")
127 set(LIBOMP_LIBFLAGS "" CACHE STRING
128   "Appended user specified linked libs flags. (e.g., -lm)")
129 set(LIBOMP_FFLAGS "" CACHE STRING
130   "Appended user specified Fortran compiler flags.  These are only used if LIBOMP_FORTRAN_MODULES==TRUE.")
132 # Should the libomp library and generated headers be copied into the original source exports/ directory
133 # Turning this to FALSE aids parallel builds to not interfere with each other.
134 # Currently, the testsuite module expects the just built OpenMP library to be located inside the exports/
135 # directory.  TODO: have testsuite run under llvm-lit directly.  We can then get rid of copying to exports/
136 set(LIBOMP_COPY_EXPORTS FALSE CACHE STRING
137   "Should exports be copied into source exports/ directory?")
139 # HWLOC-support
140 set(LIBOMP_USE_HWLOC FALSE CACHE BOOL
141   "Use Hwloc (http://www.open-mpi.org/projects/hwloc/) library for affinity?")
142 set(LIBOMP_HWLOC_INSTALL_DIR /usr/local CACHE PATH
143   "Install path for hwloc library")
145 # Get the build number from kmp_version.cpp
146 libomp_get_build_number("${CMAKE_CURRENT_SOURCE_DIR}" LIBOMP_VERSION_BUILD)
147 math(EXPR LIBOMP_VERSION_BUILD_YEAR "${LIBOMP_VERSION_BUILD}/10000")
148 math(EXPR LIBOMP_VERSION_BUILD_MONTH_DAY "${LIBOMP_VERSION_BUILD}%10000")
150 # Currently don't record any timestamps
151 set(LIBOMP_BUILD_DATE "No_Timestamp")
153 # Architecture
154 set(IA32 FALSE)
155 set(INTEL64 FALSE)
156 set(ARM FALSE)
157 set(AARCH64 FALSE)
158 set(AARCH64_A64FX FALSE)
159 set(PPC64BE FALSE)
160 set(PPC64LE FALSE)
161 set(PPC64 FALSE)
162 set(MIC FALSE)
163 set(MIPS64 FALSE)
164 set(MIPS FALSE)
165 set(RISCV64 FALSE)
166 set(LOONGARCH64 FALSE)
167 set(VE FALSE)
168 if("${LIBOMP_ARCH}" STREQUAL "i386" OR "${LIBOMP_ARCH}" STREQUAL "32")    # IA-32 architecture
169   set(IA32 TRUE)
170 elseif("${LIBOMP_ARCH}" STREQUAL "x86_64" OR "${LIBOMP_ARCH}" STREQUAL "32e") # Intel(R) 64 architecture
171   set(INTEL64 TRUE)
172 elseif("${LIBOMP_ARCH}" STREQUAL "arm") # ARM architecture
173   set(ARM TRUE)
174 elseif("${LIBOMP_ARCH}" STREQUAL "ppc64") # PPC64BE architecture
175   set(PPC64BE TRUE)
176   set(PPC64 TRUE)
177 elseif("${LIBOMP_ARCH}" STREQUAL "ppc64le") # PPC64LE architecture
178   set(PPC64LE TRUE)
179   set(PPC64 TRUE)
180 elseif("${LIBOMP_ARCH}" STREQUAL "aarch64") # AARCH64 architecture
181   set(AARCH64 TRUE)
182 elseif("${LIBOMP_ARCH}" STREQUAL "aarch64_a64fx") # AARCH64_A64FX architecture
183   set(AARCH64_A64FX TRUE)
184 elseif("${LIBOMP_ARCH}" STREQUAL "mic") # Intel(R) Many Integrated Core Architecture
185   set(MIC TRUE)
186 elseif("${LIBOMP_ARCH}" STREQUAL "mips") # MIPS architecture
187     set(MIPS TRUE)
188 elseif("${LIBOMP_ARCH}" STREQUAL "mips64") # MIPS64 architecture
189     set(MIPS64 TRUE)
190 elseif("${LIBOMP_ARCH}" STREQUAL "riscv64") # RISCV64 architecture
191     set(RISCV64 TRUE)
192 elseif("${LIBOMP_ARCH}" STREQUAL "loongarch64") # LoongArch64 architecture
193     set(LOONGARCH64 TRUE)
194 elseif("${LIBOMP_ARCH}" STREQUAL "ve") # VE architecture
195     set(VE TRUE)
196 endif()
198 # Set some flags based on build_type
199 set(RELEASE_BUILD FALSE)
200 set(DEBUG_BUILD FALSE)
201 set(RELWITHDEBINFO_BUILD FALSE)
202 set(MINSIZEREL_BUILD FALSE)
203 if("${uppercase_CMAKE_BUILD_TYPE}" STREQUAL "RELEASE")
204   set(RELEASE_BUILD TRUE)
205 elseif("${uppercase_CMAKE_BUILD_TYPE}" STREQUAL "DEBUG")
206   set(DEBUG_BUILD TRUE)
207 elseif("${uppercase_CMAKE_BUILD_TYPE}" STREQUAL "RELWITHDEBINFO")
208   set(RELWITHDEBINFO_BUILD TRUE)
209 elseif("${uppercase_CMAKE_BUILD_TYPE}" STREQUAL "MINSIZEREL")
210   set(MINSIZEREL_BUILD TRUE)
211 endif()
213 # Include itt notify interface?
214 set(LIBOMP_USE_ITT_NOTIFY TRUE CACHE BOOL
215   "Enable ITT notify?")
217 # normal, profile, stubs library.
218 set(NORMAL_LIBRARY FALSE)
219 set(STUBS_LIBRARY FALSE)
220 set(PROFILE_LIBRARY FALSE)
221 if("${LIBOMP_LIB_TYPE}" STREQUAL "normal")
222   set(NORMAL_LIBRARY TRUE)
223 elseif("${LIBOMP_LIB_TYPE}" STREQUAL "profile")
224   set(PROFILE_LIBRARY TRUE)
225 elseif("${LIBOMP_LIB_TYPE}" STREQUAL "stubs")
226   set(STUBS_LIBRARY TRUE)
227 endif()
229 # Setting directory names
230 set(LIBOMP_BASE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
231 set(LIBOMP_SRC_DIR ${LIBOMP_BASE_DIR}/src)
232 set(LIBOMP_TOOLS_DIR ${LIBOMP_BASE_DIR}/tools)
233 set(LIBOMP_INC_DIR ${LIBOMP_SRC_DIR}/include)
234 set(LIBOMP_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR})
236 # Enabling Fortran if it is needed
237 if(${LIBOMP_FORTRAN_MODULES})
238   enable_language(Fortran)
239 endif()
240 # Enable MASM Compiler if it is needed (Windows only)
241 if(WIN32)
242   enable_language(ASM_MASM)
243 endif()
245 # Getting legal type/arch
246 libomp_get_legal_type(LIBOMP_LEGAL_TYPE)
247 libomp_get_legal_arch(LIBOMP_LEGAL_ARCH)
249 # Compiler flag checks, library checks, threading check, etc.
250 include(config-ix)
252 # Is there a quad precision data type available?
253 # TODO: Make this a real feature check
254 set(LIBOMP_USE_QUAD_PRECISION "${LIBOMP_HAVE_QUAD_PRECISION}" CACHE BOOL
255   "Should 128-bit precision entry points be built?")
256 if(LIBOMP_USE_QUAD_PRECISION AND (NOT LIBOMP_HAVE_QUAD_PRECISION))
257   libomp_error_say("128-bit quad precision functionality requested but not available")
258 endif()
260 # libgomp drop-in compatibility requires versioned symbols
261 set(LIBOMP_USE_VERSION_SYMBOLS "${LIBOMP_HAVE_VERSION_SYMBOLS}" CACHE BOOL
262   "Should version symbols be used? These provide binary compatibility with libgomp.")
263 if(LIBOMP_USE_VERSION_SYMBOLS AND (NOT LIBOMP_HAVE_VERSION_SYMBOLS))
264   libomp_error_say("Version symbols functionality requested but not available")
265 endif()
267 # On multinode systems, larger alignment is desired to avoid false sharing
268 set(LIBOMP_USE_INTERNODE_ALIGNMENT FALSE CACHE BOOL
269   "Should larger alignment (4096 bytes) be used for some locks and data structures?")
271 # Build code that allows the OpenMP library to conveniently interface with debuggers
272 set(LIBOMP_USE_DEBUGGER FALSE CACHE BOOL
273   "Enable debugger interface code?")
275 # Should we link to C++ library?
276 set(LIBOMP_USE_STDCPPLIB FALSE CACHE BOOL
277   "Should we link to C++ library?")
279 # Intel(R) Transactional Synchronization Extensions (Intel(R) TSX) based locks have
280 # __asm code which can be troublesome for some compilers.  This feature is also x86 specific.
281 # TODO: Make this a real feature check
282 set(LIBOMP_USE_ADAPTIVE_LOCKS "${LIBOMP_HAVE_ADAPTIVE_LOCKS}" CACHE BOOL
283   "Should Intel(R) TSX lock be compiled (adaptive lock in kmp_lock.cpp).  These are x86 specific.")
284 if(LIBOMP_USE_ADAPTIVE_LOCKS AND (NOT LIBOMP_HAVE_ADAPTIVE_LOCKS))
285   libomp_error_say("Adaptive locks (Intel(R) TSX) functionality is only supported on x86 Architecture")
286 endif()
288 # - stats-gathering enables OpenMP stats where things like the number of
289 # parallel regions, clock ticks spent in particular openmp regions are recorded.
290 set(LIBOMP_STATS FALSE CACHE BOOL
291   "Stats-Gathering functionality?")
292 if(LIBOMP_STATS AND (NOT LIBOMP_HAVE_STATS))
293   libomp_error_say("Stats-gathering functionality requested but not available")
294 endif()
295 # The stats functionality requires the std c++ library
296 if(LIBOMP_STATS)
297   set(LIBOMP_USE_STDCPPLIB TRUE)
298 endif()
300 # Shared library can be switched to a static library
301 set(LIBOMP_ENABLE_SHARED TRUE CACHE BOOL
302   "Shared library instead of static library?")
304 if(WIN32 AND NOT LIBOMP_ENABLE_SHARED)
305   libomp_error_say("Static libraries requested but not available on Windows")
306 endif()
308 if(LIBOMP_USE_ITT_NOTIFY AND NOT LIBOMP_ENABLE_SHARED)
309   message(STATUS "ITT Notify not supported for static libraries - forcing ITT Notify off")
310   set(LIBOMP_USE_ITT_NOTIFY FALSE)
311 endif()
313 if(LIBOMP_USE_VERSION_SYMBOLS AND (NOT LIBOMP_ENABLE_SHARED) )
314   message(STATUS "Version symbols not supported for static libraries - forcing Version symbols functionality off")
315   set (LIBOMP_USE_VERSION_SYMBOLS FALSE)
316 endif()
318 # OMPT-support defaults to ON for OpenMP 5.0+ and if the requirements in
319 # cmake/config-ix.cmake are fulfilled.
320 set(OMPT_DEFAULT FALSE)
321 if ((LIBOMP_HAVE_OMPT_SUPPORT) AND (NOT WIN32))
322   set(OMPT_DEFAULT TRUE)
323 endif()
324 set(LIBOMP_OMPT_SUPPORT ${OMPT_DEFAULT} CACHE BOOL
325   "OMPT-support?")
327 set(LIBOMP_OMPT_DEBUG FALSE CACHE BOOL
328   "Trace OMPT initialization?")
329 set(LIBOMP_OMPT_OPTIONAL TRUE CACHE BOOL
330   "OMPT-optional?")
331 if(LIBOMP_OMPT_SUPPORT AND (NOT LIBOMP_HAVE_OMPT_SUPPORT))
332   libomp_error_say("OpenMP Tools Interface requested but not available in this implementation")
333 endif()
335 # OMPD-support
336 # Enable if OMPT SUPPORT is ON
337 set(OMPD_DEFAULT FALSE)
338 if (LIBOMP_HAVE_OMPT_SUPPORT AND ("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux"))
339   set(OMPD_DEFAULT TRUE)
340 endif()
342 set(LIBOMP_OMPD_SUPPORT ${OMPD_DEFAULT} CACHE BOOL
343   "OMPD-support?")
345 if(LIBOMP_OMPD_SUPPORT AND ((NOT LIBOMP_OMPT_SUPPORT) OR (NOT "${CMAKE_SYSTEM_NAME}" STREQUAL "Linux")))
346   libomp_warning_say("OpenMP Debug Interface(OMPD) requested but not available in this implementation")
347   set(LIBOMP_OMPD_SUPPORT FALSE)
348 endif()
350 # OMPX Taskgraph support
351 # Whether to build with OMPX Taskgraph (e.g. task record & replay)
352 set(LIBOMP_OMPX_TASKGRAPH FALSE CACHE BOOL "OMPX-taskgraph (task record & replay)?")
354 # Error check hwloc support after config-ix has run
355 if(LIBOMP_USE_HWLOC AND (NOT LIBOMP_HAVE_HWLOC))
356   libomp_error_say("Hwloc requested but not available")
357 endif()
359 # Hierarchical scheduling support
360 set(LIBOMP_USE_HIER_SCHED FALSE CACHE BOOL
361   "Hierarchical scheduling support?")
363 # Setting final library name
364 set(LIBOMP_DEFAULT_LIB_NAME libomp)
365 if(${PROFILE_LIBRARY})
366   set(LIBOMP_DEFAULT_LIB_NAME ${LIBOMP_DEFAULT_LIB_NAME}prof)
367 endif()
368 if(${STUBS_LIBRARY})
369   set(LIBOMP_DEFAULT_LIB_NAME ${LIBOMP_DEFAULT_LIB_NAME}stubs)
370 endif()
371 set(LIBOMP_LIB_NAME ${LIBOMP_DEFAULT_LIB_NAME} CACHE STRING "Base OMP library name")
372 if (OPENMP_MSVC_NAME_SCHEME)
373   # MSVC_TOOLS_VERSION corresponds to the version of the VC++ toolset.
374   set(MSVC_TOOLS_VERSION 140)
375   set(LIBOMP_LIB_NAME ${LIBOMP_LIB_NAME}${MSVC_TOOLS_VERSION}.${LIBOMP_ARCH})
376 endif()
378 if(${LIBOMP_ENABLE_SHARED})
379   set(LIBOMP_LIBRARY_SUFFIX ${CMAKE_SHARED_LIBRARY_SUFFIX})
380   set(LIBOMP_LIBRARY_KIND SHARED)
381   set(LIBOMP_INSTALL_KIND LIBRARY)
382 else()
383   set(LIBOMP_LIBRARY_SUFFIX ${CMAKE_STATIC_LIBRARY_SUFFIX})
384   set(LIBOMP_LIBRARY_KIND STATIC)
385   set(LIBOMP_INSTALL_KIND ARCHIVE)
386 endif()
388 set(LIBOMP_LIB_FILE ${LIBOMP_LIB_NAME}${LIBOMP_LIBRARY_SUFFIX})
390 # Optional backwards compatibility aliases.
391 set(LIBOMP_INSTALL_ALIASES TRUE CACHE BOOL
392   "Install libgomp and libiomp5 library aliases for backwards compatibility")
394 # Print configuration after all variables are set.
395 if(${OPENMP_STANDALONE_BUILD})
396   libomp_say("Operating System     -- ${CMAKE_SYSTEM_NAME}")
397   libomp_say("Target Architecture  -- ${LIBOMP_ARCH}")
398   if(${MIC})
399     libomp_say("Intel(R) MIC Architecture    -- ${LIBOMP_MIC_ARCH}")
400   endif()
401   libomp_say("Build Type           -- ${CMAKE_BUILD_TYPE}")
402   libomp_say("Library Kind         -- ${LIBOMP_LIBRARY_KIND}")
403   libomp_say("Library Type         -- ${LIBOMP_LIB_TYPE}")
404   libomp_say("Fortran Modules      -- ${LIBOMP_FORTRAN_MODULES}")
405   # will say development if all zeros
406   if(${LIBOMP_VERSION_BUILD} STREQUAL 00000000)
407     set(LIBOMP_BUILD Development)
408   else()
409     set(LIBOMP_BUILD ${LIBOMP_VERSION_BUILD})
410   endif()
411   libomp_say("Build                -- ${LIBOMP_BUILD}")
412   libomp_say("Use Stats-gathering  -- ${LIBOMP_STATS}")
413   libomp_say("Use Debugger-support -- ${LIBOMP_USE_DEBUGGER}")
414   libomp_say("Use ITT notify       -- ${LIBOMP_USE_ITT_NOTIFY}")
415   libomp_say("Use OMPT-support     -- ${LIBOMP_OMPT_SUPPORT}")
416   if(${LIBOMP_OMPT_SUPPORT})
417     libomp_say("Use OMPT-optional  -- ${LIBOMP_OMPT_OPTIONAL}")
418   endif()
419   libomp_say("Use OMPD-support     -- ${LIBOMP_OMPD_SUPPORT}")
420   libomp_say("Use Adaptive locks   -- ${LIBOMP_USE_ADAPTIVE_LOCKS}")
421   libomp_say("Use quad precision   -- ${LIBOMP_USE_QUAD_PRECISION}")
422   libomp_say("Use Hwloc library    -- ${LIBOMP_USE_HWLOC}")
423   libomp_say("Use OMPX-taskgraph   -- ${LIBOMP_OMPX_TASKGRAPH}")
424 endif()
426 add_subdirectory(src)
427 add_subdirectory(test)
429 # make these variables available for tools:
430 set(LIBOMP_LIBRARY_DIR ${LIBOMP_LIBRARY_DIR} PARENT_SCOPE)
431 set(LIBOMP_INCLUDE_DIR ${LIBOMP_INCLUDE_DIR} PARENT_SCOPE)
432 set(LIBOMP_OMP_TOOLS_INCLUDE_DIR ${LIBOMP_OMP_TOOLS_INCLUDE_DIR} PARENT_SCOPE)
433 # make these variables available for tools/libompd:
434 set(LIBOMP_SRC_DIR ${LIBOMP_SRC_DIR} PARENT_SCOPE)
435 set(LIBOMP_OMPD_SUPPORT ${LIBOMP_OMPD_SUPPORT} PARENT_SCOPE)