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