4
4
# SPDX-License-Identifier: GPL-2.0-only OR BSD-3-Clause
5
5
#
6
6
7
- cmake_minimum_required (VERSION 2.8.12 )
7
+ cmake_minimum_required (VERSION 3.5 )
8
8
9
- if (POLICY CMP0048)
9
+ if (POLICY CMP0048)
10
10
# The `project()` command manages `VERSION` variables
11
11
cmake_policy (SET CMP0048 NEW)
12
12
endif ()
@@ -23,19 +23,25 @@ endif()
23
23
24
24
project (ittapi)
25
25
26
- OPTION (FORCE_32 "Force a 32bit compile on 64bit " OFF )
27
- OPTION (ITT_API_IPT_SUPPORT "ptmarks support" OFF )
28
- OPTION (ITT_API_FORTRAN_SUPPORT "fortran support" OFF )
26
+ option (FORCE_32 "Force a 32-bit compile on 64-bit " OFF )
27
+ option (ITT_API_IPT_SUPPORT "ptmarks support" OFF )
28
+ option (ITT_API_FORTRAN_SUPPORT "fortran support" OFF )
29
29
30
- IF (FORCE_32 AND UNIX )
30
+ if (FORCE_32 AND UNIX )
31
31
SET (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m32" )
32
32
SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m32" )
33
- ENDIF ()
33
+ endif ()
34
34
35
35
if (CMAKE_SIZEOF_VOID_P MATCHES "8" AND NOT (FORCE_32))
36
36
set (ARCH_64 ON )
37
37
endif ()
38
38
39
+ if (FORCE_32 AND ITT_API_FORTRAN_SUPPORT)
40
+ # ifx dropped 32-bit support
41
+ message (WARNING "Fortran support for 32-bit has been discontinued" )
42
+ set (ITT_API_FORTRAN_SUPPORT OFF )
43
+ endif ()
44
+
39
45
if (CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "^(Apple)?Clang$" )
40
46
# override default -O3
41
47
string (REPLACE "-O3" "-O2" CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} " )
@@ -48,10 +54,10 @@ endif()
48
54
49
55
set (LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR} /bin)
50
56
51
- foreach ( OUTPUTCONFIG ${CMAKE_CONFIGURATION_TYPES} )
52
- string ( TOUPPER ${OUTPUTCONFIG} OUTPUTCONFIG )
53
- set ( CMAKE_LIBRARY_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${LIBRARY_OUTPUT_PATH} )
54
- endforeach ( )
57
+ foreach (OUTPUTCONFIG ${CMAKE_CONFIGURATION_TYPES} )
58
+ string (TOUPPER ${OUTPUTCONFIG} OUTPUTCONFIG)
59
+ set (CMAKE_LIBRARY_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${LIBRARY_OUTPUT_PATH} )
60
+ endforeach ()
55
61
56
62
set (ITT_PUBLIC_HDRS
57
63
include /ittnotify.h
@@ -61,45 +67,66 @@ set(ITT_PUBLIC_HDRS
61
67
62
68
file (GLOB ITT_SRCS "src/ittnotify/*.c" "src/ittnotify/*.h" )
63
69
64
- if (ITT_API_IPT_SUPPORT)
70
+ if (ITT_API_IPT_SUPPORT)
65
71
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DITT_API_IPT_SUPPORT" )
66
72
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DITT_API_IPT_SUPPORT" )
67
- if (NOT WIN32 )
73
+ if (NOT WIN32 )
68
74
enable_language (ASM)
69
- if (ARCH_64)
75
+ if (ARCH_64)
70
76
set (ITT_PT src/ittnotify/ittptmark64.S)
71
77
else ()
72
78
set (ASM_OPTIONS "-m32" )
73
79
set (ITT_PT src/ittnotify/ittptmark32.S)
74
80
endif ()
75
- set (CMAKE_ASM_FLAGS "${CFLAGS} ${ASM_OPTIONS} " )
81
+ set (CMAKE_ASM_FLAGS "${CFLAGS} ${ASM_OPTIONS} " )
76
82
else ()
77
83
enable_language (ASM_MASM)
78
- if (ARCH_64)
84
+ if (ARCH_64)
79
85
set (ITT_PT src/ittnotify/ittptmark64.asm)
80
86
else ()
81
87
set (ITT_PT src/ittnotify/ittptmark32.asm)
82
88
endif ()
83
89
endif ()
84
90
endif ()
85
91
86
- if (NOT WIN32 )
92
+ if (NOT WIN32 )
87
93
set (PLATFORM_PATH "posix" )
88
94
set (PLATFORM_EXT "o" )
89
95
else ()
90
96
set (PLATFORM_PATH "win32" )
91
97
set (PLATFORM_EXT "obj" )
92
98
endif ()
93
99
94
- if (ARCH_64)
95
- set (ARCH_PATH "x86_64" )
96
- else ()
97
- set (ARCH_PATH "x86" )
98
- endif ()
99
-
100
100
if (ITT_API_FORTRAN_SUPPORT)
101
- set (ITT_FORTRAN include /fortran/${PLATFORM_PATH} /${ARCH_PATH} /ittfortran.${PLATFORM_EXT} )
102
- set (ADVISOR_ANNOTATION include /fortran/${PLATFORM_PATH} /${ARCH_PATH} /advisor_annotate.${PLATFORM_EXT} )
101
+ enable_language (Fortran)
102
+
103
+ set (FORTRAN_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR} /fortran)
104
+ file (MAKE_DIRECTORY ${FORTRAN_BINARY_DIR} )
105
+
106
+ set (ITT_FORTRAN_SRC ${CMAKE_CURRENT_SOURCE_DIR} /include /fortran/${PLATFORM_PATH} /ittnotify.f90)
107
+ set (ADVISOR_ANNOTATION_SRC ${CMAKE_CURRENT_SOURCE_DIR} /include /fortran/advisor_annotate.f90)
108
+ set (ITT_FORTRAN ${FORTRAN_BINARY_DIR} /ittfortran.${PLATFORM_EXT} )
109
+ set (ADVISOR_ANNOTATION ${FORTRAN_BINARY_DIR} /advisor_annotate.${PLATFORM_EXT} )
110
+
111
+ if (WIN32 )
112
+ set (FORTRAN_BUILD_CMD ${CMAKE_Fortran_COMPILER} /Z7 /nologo /libdir:noauto /c /O2 /module:${FORTRAN_BINARY_DIR} )
113
+ set (ITT_FORTRAN_BUILD_CMD ${FORTRAN_BUILD_CMD} /object:${ITT_FORTRAN} ${ITT_FORTRAN_SRC} )
114
+ set (ADVISOR_ANNOTATION_BUILD_CMD ${FORTRAN_BUILD_CMD} /object:${ADVISOR_ANNOTATION} ${ADVISOR_ANNOTATION_SRC} )
115
+ else ()
116
+ set (FORTRAN_BUILD_CMD ${CMAKE_Fortran_COMPILER} -g -c -fPIC -O2 -module ${FORTRAN_BINARY_DIR} )
117
+ set (ITT_FORTRAN_BUILD_CMD ${FORTRAN_BUILD_CMD} -o ${ITT_FORTRAN} ${ITT_FORTRAN_SRC} )
118
+ set (ADVISOR_ANNOTATION_BUILD_CMD ${FORTRAN_BUILD_CMD} -o ${ADVISOR_ANNOTATION} ${ADVISOR_ANNOTATION_SRC} )
119
+ endif ()
120
+
121
+ add_custom_command (OUTPUT ${ITT_FORTRAN}
122
+ COMMAND ${ITT_FORTRAN_BUILD_CMD}
123
+ DEPENDS ${ITT_FORTRAN_SRC}
124
+ COMMENT "Building ITT Fortran" )
125
+
126
+ add_custom_command (OUTPUT ${ADVISOR_ANNOTATION}
127
+ COMMAND ${ADVISOR_ANNOTATION_BUILD_CMD}
128
+ DEPENDS ${ADVISOR_ANNOTATION_SRC}
129
+ COMMENT "Building Advisor Annotation" )
103
130
104
131
add_library (ittnotify STATIC ${ITT_SRCS} ${ITT_PUBLIC_HDRS} ${ITT_PT} ${ITT_FORTRAN} )
105
132
add_library (advisor STATIC ${ADVISOR_ANNOTATION} )
@@ -111,24 +138,24 @@ set(JITPROFILING_SRC "src/ittnotify/jitprofiling.c")
111
138
add_library (jitprofiling STATIC ${JITPROFILING_SRC} )
112
139
113
140
if (WIN32 )
114
- SET_TARGET_PROPERTIES (ittnotify PROPERTIES OUTPUT_NAME libittnotify)
115
- SET_TARGET_PROPERTIES (jitprofiling PROPERTIES OUTPUT_NAME libjitprofiling)
141
+ set_target_properties (ittnotify PROPERTIES OUTPUT_NAME libittnotify)
142
+ set_target_properties (jitprofiling PROPERTIES OUTPUT_NAME libjitprofiling)
116
143
if (ITT_API_FORTRAN_SUPPORT)
117
- SET_TARGET_PROPERTIES (advisor PROPERTIES OUTPUT_NAME libadvisor)
144
+ set_target_properties (advisor PROPERTIES OUTPUT_NAME libadvisor)
118
145
endif ()
119
146
else ()
120
- SET_TARGET_PROPERTIES (ittnotify PROPERTIES OUTPUT_NAME ittnotify)
121
- SET_TARGET_PROPERTIES (jitprofiling PROPERTIES OUTPUT_NAME jitprofiling)
147
+ set_target_properties (ittnotify PROPERTIES OUTPUT_NAME ittnotify)
148
+ set_target_properties (jitprofiling PROPERTIES OUTPUT_NAME jitprofiling)
122
149
if (ITT_API_FORTRAN_SUPPORT)
123
- SET_TARGET_PROPERTIES (advisor PROPERTIES OUTPUT_NAME advisor)
150
+ set_target_properties (advisor PROPERTIES OUTPUT_NAME advisor)
124
151
endif ()
125
152
endif ()
126
153
127
- TARGET_LINK_LIBRARIES (ittnotify PRIVATE ${CMAKE_DL_LIBS} )
154
+ target_link_libraries (ittnotify PRIVATE ${CMAKE_DL_LIBS} )
128
155
129
- SET_TARGET_PROPERTIES (ittnotify PROPERTIES LINKER_LANGUAGE C)
156
+ set_target_properties (ittnotify PROPERTIES LINKER_LANGUAGE C)
130
157
if (ITT_API_FORTRAN_SUPPORT)
131
- SET_TARGET_PROPERTIES (advisor PROPERTIES LINKER_LANGUAGE C)
158
+ set_target_properties (advisor PROPERTIES LINKER_LANGUAGE C)
132
159
endif ()
133
160
134
161
target_include_directories (ittnotify
0 commit comments