44# SPDX-License-Identifier: GPL-2.0-only OR BSD-3-Clause
55#
66
7- cmake_minimum_required (VERSION 2.8.12 )
7+ cmake_minimum_required (VERSION 3.5 )
88
9- if (POLICY CMP0048)
9+ if (POLICY CMP0048)
1010 # The `project()` command manages `VERSION` variables
1111 cmake_policy (SET CMP0048 NEW)
1212endif ()
@@ -23,19 +23,25 @@ endif()
2323
2424project (ittapi)
2525
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 )
2929
30- IF (FORCE_32 AND UNIX )
30+ if (FORCE_32 AND UNIX )
3131 SET (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m32" )
3232 SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m32" )
33- ENDIF ()
33+ endif ()
3434
3535if (CMAKE_SIZEOF_VOID_P MATCHES "8" AND NOT (FORCE_32))
3636 set (ARCH_64 ON )
3737endif ()
3838
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+
3945if (CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "^(Apple)?Clang$" )
4046 # override default -O3
4147 string (REPLACE "-O3" "-O2" CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} " )
@@ -48,10 +54,10 @@ endif()
4854
4955set (LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR} /bin)
5056
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 ()
5561
5662set (ITT_PUBLIC_HDRS
5763 include /ittnotify.h
@@ -61,45 +67,66 @@ set(ITT_PUBLIC_HDRS
6167
6268file (GLOB ITT_SRCS "src/ittnotify/*.c" "src/ittnotify/*.h" )
6369
64- if (ITT_API_IPT_SUPPORT)
70+ if (ITT_API_IPT_SUPPORT)
6571 set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DITT_API_IPT_SUPPORT" )
6672 set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DITT_API_IPT_SUPPORT" )
67- if (NOT WIN32 )
73+ if (NOT WIN32 )
6874 enable_language (ASM)
69- if (ARCH_64)
75+ if (ARCH_64)
7076 set (ITT_PT src/ittnotify/ittptmark64.S)
7177 else ()
7278 set (ASM_OPTIONS "-m32" )
7379 set (ITT_PT src/ittnotify/ittptmark32.S)
7480 endif ()
75- set (CMAKE_ASM_FLAGS "${CFLAGS} ${ASM_OPTIONS} " )
81+ set (CMAKE_ASM_FLAGS "${CFLAGS} ${ASM_OPTIONS} " )
7682 else ()
7783 enable_language (ASM_MASM)
78- if (ARCH_64)
84+ if (ARCH_64)
7985 set (ITT_PT src/ittnotify/ittptmark64.asm)
8086 else ()
8187 set (ITT_PT src/ittnotify/ittptmark32.asm)
8288 endif ()
8389 endif ()
8490endif ()
8591
86- if (NOT WIN32 )
92+ if (NOT WIN32 )
8793 set (PLATFORM_PATH "posix" )
8894 set (PLATFORM_EXT "o" )
8995else ()
9096 set (PLATFORM_PATH "win32" )
9197 set (PLATFORM_EXT "obj" )
9298endif ()
9399
94- if (ARCH_64)
95- set (ARCH_PATH "x86_64" )
96- else ()
97- set (ARCH_PATH "x86" )
98- endif ()
99-
100100if (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" )
103130
104131 add_library (ittnotify STATIC ${ITT_SRCS} ${ITT_PUBLIC_HDRS} ${ITT_PT} ${ITT_FORTRAN} )
105132 add_library (advisor STATIC ${ADVISOR_ANNOTATION} )
@@ -111,24 +138,24 @@ set(JITPROFILING_SRC "src/ittnotify/jitprofiling.c")
111138add_library (jitprofiling STATIC ${JITPROFILING_SRC} )
112139
113140if (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)
116143 if (ITT_API_FORTRAN_SUPPORT)
117- SET_TARGET_PROPERTIES (advisor PROPERTIES OUTPUT_NAME libadvisor)
144+ set_target_properties (advisor PROPERTIES OUTPUT_NAME libadvisor)
118145 endif ()
119146else ()
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)
122149 if (ITT_API_FORTRAN_SUPPORT)
123- SET_TARGET_PROPERTIES (advisor PROPERTIES OUTPUT_NAME advisor)
150+ set_target_properties (advisor PROPERTIES OUTPUT_NAME advisor)
124151 endif ()
125152endif ()
126153
127- TARGET_LINK_LIBRARIES (ittnotify PRIVATE ${CMAKE_DL_LIBS} )
154+ target_link_libraries (ittnotify PRIVATE ${CMAKE_DL_LIBS} )
128155
129- SET_TARGET_PROPERTIES (ittnotify PROPERTIES LINKER_LANGUAGE C)
156+ set_target_properties (ittnotify PROPERTIES LINKER_LANGUAGE C)
130157if (ITT_API_FORTRAN_SUPPORT)
131- SET_TARGET_PROPERTIES (advisor PROPERTIES LINKER_LANGUAGE C)
158+ set_target_properties (advisor PROPERTIES LINKER_LANGUAGE C)
132159endif ()
133160
134161target_include_directories (ittnotify
0 commit comments