File: FindOpenMPv4.cmake

package info (click to toggle)
genomicsdb 1.4.4-3
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 24,788 kB
  • sloc: cpp: 78,988; ansic: 58,119; java: 8,531; python: 2,270; sh: 1,850; perl: 1,621; makefile: 490; xml: 455
file content (35 lines) | stat: -rw-r--r-- 930 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# Determine if OpenMP specification v4 is supported by the C/C++ compiler
# Once done this will define
# OPENMPV4_FOUND - OpenMP v4 found
# OpenMP_C_FLAGS
# OpenMP_CXX_FLAGS

include(CheckCSourceCompiles)
find_package(OpenMP QUIET)
set(OpenMPv4_C_TEST_SOURCE
"
#include <stdio.h>
#include <stdlib.h>

/*Define custom reduction operation*/
int main()
{
    int i = 0;
    int A[10];
    int sum = 0;
#pragma omp declare reduction ( sum_up : int : omp_out += omp_in ) initializer(omp_priv = 0)
#pragma omp parallel for default(shared) reduction(sum_up : sum)
    for(i=0;i<10;++i)
        sum += A[i];
    return 0;
}
")

if(NOT OPENMP_FOUND)
    set(OPENMPV4_FOUND False)
else()
    set(SAFE_CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS}")
    set(CMAKE_REQUIRED_FLAGS "${OpenMP_C_FLAGS}")
    check_c_source_compiles("${OpenMPv4_C_TEST_SOURCE}" OPENMPV4_FOUND)
    set(CMAKE_REQUIRED_FLAGS "${SAFE_CMAKE_REQUIRED_FLAGS}")
endif()