summaryrefslogtreecommitdiffstats
path: root/openmp/runtime/cmake/Definitions.cmake
blob: cfd0c0987b9ac367122b00a697ebaa61367f970f (plain)
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
#
#//===----------------------------------------------------------------------===//
#//
#//                     The LLVM Compiler Infrastructure
#//
#// This file is dual licensed under the MIT and the University of Illinois Open
#// Source Licenses. See LICENSE.txt for details.
#//
#//===----------------------------------------------------------------------===//
#

# void append_definitions(string new_flag);
# - appends new_flag to cpp_flags list
macro(append_definitions new_flag)
    list(APPEND local_cpp_flags "${new_flag}")
endmacro()

function(append_cpp_flags input_cpp_flags)
    set(local_cpp_flags)

    append_definitions("-D USE_ITT_BUILD")
    append_definitions("-D KMP_ARCH_STR=\"\\\\\"${legal_arch}\\\\\"\"")
    append_definitions("-D BUILD_I8")
    append_definitions("-D KMP_LIBRARY_FILE=\\\\\"${lib_file}\\\\\"") # yes... you need 5 backslashes...
    append_definitions("-D KMP_VERSION_MAJOR=${version}")
    append_definitions("-D KMP_NESTED_HOT_TEAMS")
    
    # customize to 128 bytes for ppc64
    if(${PPC64})
    	append_definitions("-D CACHE_LINE=128")
    else()
    	append_definitions("-D CACHE_LINE=64")
    endif()
    
    append_definitions("-D KMP_ADJUST_BLOCKTIME=1")
    append_definitions("-D BUILD_PARALLEL_ORDERED")
    append_definitions("-D KMP_ASM_INTRINS")
    if(${USE_ITT_NOTIFY})
        append_definitions("-D USE_ITT_NOTIFY=1")
    else()
        append_definitions("-D USE_ITT_NOTIFY=0")
        append_definitions("-D INTEL_NO_ITTNOTIFY_API")
    endif()
    append_definitions("-D INTEL_ITTNOTIFY_PREFIX=__kmp_itt_")

    if(${USE_VERSION_SYMBOLS})
        append_definitions("-D KMP_USE_VERSION_SYMBOLS")
    endif()

    #####################
    # Windows definitions
    if(${WINDOWS})
        append_definitions("-D _CRT_SECURE_NO_WARNINGS")
        append_definitions("-D _CRT_SECURE_NO_DEPRECATE")
        append_definitions("-D _WINDOWS")
        append_definitions("-D _WINNT")
        append_definitions("-D _WIN32_WINNT=0x0501")
        append_definitions("-D KMP_WIN_CDECL")
        append_definitions("-D _USRDLL")
        if(${DEBUG_BUILD})
            append_definitions("-D _ITERATOR_DEBUG_LEVEL=0")
        endif()
    else() # Other than windows... (Unix based systems, Intel(R) Many Integrated Core Architecture (Intel(R) MIC Architecture), and Mac)
        append_definitions("-D _GNU_SOURCE")
        append_definitions("-D _REENTRANT")
        append_definitions("-D BUILD_TV")
        append_definitions("-D USE_CBLKDATA")
        if(NOT "${version}" STREQUAL "4")
            append_definitions("-D KMP_GOMP_COMPAT")
        endif()
    endif()

    # Any architecture other than Intel(R) MIC Architecture
    if(NOT ${MIC}) 
        append_definitions("-D USE_LOAD_BALANCE")
    endif()

    ##################
    # Unix definitions
    if(${LINUX})
        append_definitions("-D KMP_TDATA_GTID")
    endif()

    ##################################
    # Other conditional definitions
    append_definitions("-D KMP_USE_ASSERT")
    append_definitions("-D GUIDEDLL_EXPORTS") 
    if(${STUBS_LIBRARY}) 
        append_definitions("-D KMP_STUB") 
    endif()
    if(${DEBUG_BUILD} OR ${RELWITHDEBINFO_BUILD}) 
        append_definitions("-D KMP_DEBUG") 
    endif()
    if(${DEBUG_BUILD})
        append_definitions("-D _DEBUG")
        append_definitions("-D BUILD_DEBUG")
    endif()
    if(${STATS_GATHERING})
        append_definitions("-D KMP_STATS_ENABLED=1")
    else()
        append_definitions("-D KMP_STATS_ENABLED=0")
    endif()

    # OpenMP version flags
    set(have_omp_50 0)
    set(have_omp_41 0)
    set(have_omp_40 0)
    set(have_omp_30 0)
    if(${omp_version} EQUAL 50 OR ${omp_version} GREATER 50)
        set(have_omp_50 1)
    endif()
    if(${omp_version} EQUAL 41 OR ${omp_version} GREATER 41)
        set(have_omp_41 1)
    endif()
    if(${omp_version} EQUAL 40 OR ${omp_version} GREATER 40)
        set(have_omp_40 1)
    endif()
    if(${omp_version} EQUAL 30 OR ${omp_version} GREATER 30)
        set(have_omp_30 1)
    endif()
    append_definitions("-D OMP_50_ENABLED=${have_omp_50}")
    append_definitions("-D OMP_41_ENABLED=${have_omp_41}")
    append_definitions("-D OMP_40_ENABLED=${have_omp_40}")
    append_definitions("-D OMP_30_ENABLED=${have_omp_30}")

    # Architectural definitions
    if(${INTEL64} OR ${IA32})
        if(${USE_ADAPTIVE_LOCKS})
            append_definitions("-D KMP_USE_ADAPTIVE_LOCKS=1")
        else()
            append_definitions("-D KMP_USE_ADAPTIVE_LOCKS=0")
        endif()
        append_definitions("-D KMP_DEBUG_ADAPTIVE_LOCKS=0")
    else()
        append_definitions("-D KMP_USE_ADAPTIVE_LOCKS=0")
        append_definitions("-D KMP_DEBUG_ADAPTIVE_LOCKS=0")
    endif()
    if(${USE_INTERNODE_ALIGNMENT})
        append_definitions("-D KMP_USE_INTERNODE_ALIGNMENT=1")
    else()
        append_definitions("-D KMP_USE_INTERNODE_ALIGNMENT=0")
    endif()
    set(${input_cpp_flags} "${${input_cpp_flags}}" "${local_cpp_flags}" "${USER_CPP_FLAGS}" "$ENV{CPPFLAGS}" PARENT_SCOPE)
endfunction()

OpenPOWER on IntegriCloud