1# Copyright (c) 2021, Intel Corporation 2# 3# Permission is hereby granted, free of charge, to any person obtaining a 4# copy of this software and associated documentation files (the "Software"), 5# to deal in the Software without restriction, including without limitation 6# the rights to use, copy, modify, merge, publish, distribute, sublicense, 7# and/or sell copies of the Software, and to permit persons to whom the 8# Software is furnished to do so, subject to the following conditions: 9# 10# The above copyright notice and this permission notice shall be included 11# in all copies or substantial portions of the Software. 12# 13# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 14# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 16# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR 17# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 18# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 19# OTHER DEALINGS IN THE SOFTWARE. 20 21set(MEDIA_COMPILER_FLAGS_COMMON 22 # Global setting for warnings 23 -Wall 24 -Winit-self 25 -Wpointer-arith 26 -Wno-unused 27 -Wno-unknown-pragmas 28 -Wno-comments 29 -Wno-sign-compare 30 -Wno-attributes 31 -Wno-narrowing 32 -Wno-overflow 33 -Wno-parentheses 34 -Wno-delete-incomplete 35 -Werror=address 36 -Werror=format-security 37 -Werror=non-virtual-dtor 38 -Werror=return-type 39 -Wno-overloaded-virtual 40 41 # General optimization options 42 -finline-functions 43 -funswitch-loops 44 -fno-short-enums 45 -Wa,--noexecstack 46 -fno-strict-aliasing 47 48 # Other common flags 49 -fmessage-length=0 50 -fvisibility=hidden 51 -fstack-protector 52 -fdata-sections 53 -ffunction-sections 54 -Wl,--gc-sections 55 56 # -m32 or -m64 57 -m${ARCH} 58 59 # Global defines 60 -DLINUX=1 61 -DLINUX 62 -DNO_RTTI 63 -DNO_EXCEPTION_HANDLING 64 -DINTEL_NOT_PUBLIC 65 -g 66) 67 68 69if(${UFO_MARCH} STREQUAL "slm") 70 set(MEDIA_COMPILER_FLAGS_COMMON 71 ${MEDIA_COMPILER_FLAGS_COMMON} 72 -maes 73 # Optimizing driver for Intel 74 -mtune=atom 75 ) 76endif() 77 78if(${ARCH} STREQUAL "64") 79 set(MEDIA_COMPILER_FLAGS_COMMON 80 ${MEDIA_COMPILER_FLAGS_COMMON} 81 -D_AMD64_ 82 -D__CT__ 83 ) 84endif() 85 86if(NOT ${PLATFORM} STREQUAL "android") 87 set(MEDIA_COMPILER_FLAGS_COMMON 88 ${MEDIA_COMPILER_FLAGS_COMMON} 89 -D__linux__ 90 -fno-tree-pre 91 -fPIC 92 -Wl,--no-as-needed 93 ) 94 endif() 95 96set(MEDIA_COMPILER_CXX_FLAGS_COMMON 97 # for cpp 98 -Wreorder 99 -Wsign-promo 100 -Wnon-virtual-dtor 101 -Wno-invalid-offsetof 102 -fvisibility-inlines-hidden 103 -fno-use-cxa-atexit 104 -frtti 105 -fexceptions 106 -fpermissive 107 -fcheck-new 108) 109 110if(NOT ${PLATFORM} STREQUAL "android") 111 set(MEDIA_COMPILER_CXX_FLAGS_COMMON 112 ${MEDIA_COMPILER_CXX_FLAGS_COMMON} 113 -std=c++1y 114 ) 115endif() 116 117set(MEDIA_COMPILER_FLAGS_RELEASE "") 118 119if(${UFO_VARIANT} STREQUAL "default") 120 set(MEDIA_COMPILER_FLAGS_RELEASE 121 ${MEDIA_COMPILER_FLAGS_RELEASE} 122 -O2 123 -D_FORTIFY_SOURCE=2 124 -fno-omit-frame-pointer 125 ) 126endif() 127 128if(NOT ${PLATFORM} STREQUAL "android") 129 if(${UFO_VARIANT} STREQUAL "default") 130 set(MEDIA_COMPILER_FLAGS_RELEASE 131 ${MEDIA_COMPILER_FLAGS_RELEASE} 132 -finline-limit=100 133 ) 134 elseif(${UFO_VARIANT} STREQUAL "nano") 135 set(MEDIA_COMPILER_FLAGS_RELEASE 136 ${MEDIA_COMPILER_FLAGS_RELEASE} 137 -Os 138 -fomit-frame-pointer 139 -fno-asynchronous-unwind-tables 140 -flto 141 -Wl,-flto 142 ) 143 endif() 144endif() 145 146set(MEDIA_COMPILER_FLAGS_RELEASEINTERNAL 147 -O0 148 -fno-omit-frame-pointer 149) 150 151if(NOT ${PLATFORM} STREQUAL "android") 152 set(MEDIA_COMPILER_FLAGS_RELEASEINTERNAL 153 ${MEDIA_COMPILER_FLAGS_RELEASEINTERNAL} 154 -finline-limit=100 155 ) 156 endif() 157 158if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") 159 list(APPEND MEDIA_COMPILER_FLAGS_COMMON 160 -Wno-deprecated 161 -Wno-missing-braces 162 -Wno-overloaded-virtual 163 -Wbitfield-constant-conversion 164 ) 165 list(REMOVE_ITEM MEDIA_COMPILER_FLAGS_COMMON 166 -funswitch-loops 167 -Wl,--gc-sections 168 -Wl,--no-as-needed 169 -fno-tree-pre 170 ) 171 list(REMOVE_ITEM MEDIA_COMPILER_FLAGS_RELEASE 172 -finline-limit=100 173 ) 174 list(REMOVE_ITEM MEDIA_COMPILER_FLAGS_RELEASEINTERNAL 175 -finline-limit=100 176 ) 177endif() 178 179set(MEDIA_COMPILER_FLAGS_DEBUG 180 -O0 181 -DINSTR_GTUNE_EXT 182) 183 184if(X11_FOUND) 185 add_definitions(-DX11_FOUND) 186endif() 187 188include(${MEDIA_SOFTLET_EXT_CMAKE}/linux/media_compile_flags_linux_ext.cmake OPTIONAL) 189 190if(${PLATFORM} STREQUAL "linux") 191 #set predefined compiler flags set 192 add_compile_options("${MEDIA_COMPILER_FLAGS_COMMON}") 193 add_compile_options("$<$<CONFIG:Debug>:${MEDIA_COMPILER_FLAGS_DEBUG}>") 194 add_compile_options("$<$<CONFIG:Release>:${MEDIA_COMPILER_FLAGS_RELEASE}>") 195 add_compile_options("$<$<CONFIG:ReleaseInternal>:${MEDIA_COMPILER_FLAGS_RELEASEINTERNAL}>") 196 197 foreach (flag ${MEDIA_COMPILER_CXX_FLAGS_COMMON}) 198 SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}") 199 endforeach() 200endif() 201 202if (NOT DEFINED GIT_COMMIT) 203 execute_process( 204 COMMAND git rev-parse --short HEAD 205 OUTPUT_VARIABLE GIT_COMMIT 206 OUTPUT_STRIP_TRAILING_WHITESPACE 207 WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} 208 ) 209endif() 210 211add_definitions(-DMEDIA_VERSION="${MEDIA_VERSION}") 212add_definitions(-DMEDIA_VERSION_DETAILS="${GIT_COMMIT}") 213