• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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