1# 2# Copyright (C) 2005-2019 Intel Corporation 3# 4# SPDX-License-Identifier: GPL-2.0-only OR BSD-3-Clause 5# 6 7cmake_minimum_required(VERSION 2.8.12) 8 9project(ittapi) 10 11OPTION(FORCE_32 "Force a 32bit compile on 64bit" OFF) 12OPTION(ITT_API_IPT_SUPPORT "ptmarks support") 13 14IF(FORCE_32 AND UNIX) 15 SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m32") 16 SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m32") 17ENDIF() 18 19if(CMAKE_SIZEOF_VOID_P MATCHES "8" AND NOT(FORCE_32)) 20 set(ARCH_64 1) 21endif() 22 23if(CMAKE_BUILD_TYPE STREQUAL "Debug") 24 add_definitions(-D_DEBUG) 25 if (NOT WIN32) 26 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g") 27 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g") 28 endif() 29else() 30 if (NOT WIN32) 31 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O2") 32 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O2") 33 endif() 34 add_definitions(-DNDEBUG) 35endif() 36 37set(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin) 38 39foreach( OUTPUTCONFIG ${CMAKE_CONFIGURATION_TYPES} ) 40 string( TOUPPER ${OUTPUTCONFIG} OUTPUTCONFIG ) 41 set( CMAKE_LIBRARY_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${LIBRARY_OUTPUT_PATH} ) 42endforeach( OUTPUTCONFIG CMAKE_CONFIGURATION_TYPES ) 43 44set(ITT_PUBLIC_HDRS 45 include/ittnotify.h 46 include/jitprofiling.h 47 include/libittnotify.h 48) 49 50if (ITT_API_IPT_SUPPORT) 51 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DITT_API_IPT_SUPPORT") 52 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DITT_API_IPT_SUPPORT") 53 if (NOT WIN32) 54 enable_language(ASM) 55 if (ARCH_64) 56 set(ITT_PT src/ittnotify/ittptmark64.S) 57 else() 58 set(ASM_OPTIONS "-m32") 59 set(ITT_PT src/ittnotify/ittptmark32.S) 60 endif() 61 set(CMAKE_ASM_FLAGS "${CFLAGS} ${ASM_OPTIONS}" ) 62 else() 63 enable_language(ASM_MASM) 64 if (ARCH_64) 65 set(ITT_PT src/ittnotify/ittptmark64.asm) 66 else() 67 set(ITT_PT src/ittnotify/ittptmark32.asm) 68 endif() 69 endif() 70endif() 71 72file(GLOB ITT_SRCS "src/ittnotify/*.c" "src/ittnotify/*.h") 73 74add_library(ittnotify STATIC ${ITT_SRCS} ${ITT_PUBLIC_HDRS} ${ITT_PT}) 75 76if(WIN32) 77 SET_TARGET_PROPERTIES(ittnotify PROPERTIES OUTPUT_NAME libittnotify) 78else() 79 SET_TARGET_PROPERTIES(ittnotify PROPERTIES OUTPUT_NAME ittnotify) 80endif() 81 82if (NOT WIN32) 83 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC") 84 TARGET_LINK_LIBRARIES(ittnotify dl) 85endif() 86 87SET_TARGET_PROPERTIES(ittnotify PROPERTIES LINKER_LANGUAGE C) 88 89target_include_directories(ittnotify 90 PUBLIC include src/ittnotify 91) 92 93set(CMAKE_SUPPRESS_REGENERATION true) 94