summaryrefslogtreecommitdiff
blob: 436e2fe892e62b78ed1d5a278ffa40e13ece8482 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
    Prevent overriding of user-define CFLAGS, including -march flag.

    The flag -msse4.1 is required otherwise compile will not be able to inline sse4.1 code.

--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -52,6 +52,8 @@ option (BUILD_CMRTLIB "Build and Install cmrtlib together with media driver" ON)
 
 option (ENABLE_PRODUCTION_KMD "Enable Production KMD header files" OFF)
 
+option (OVERRIDE_COMPILER_FLAGS "Override user compiler FLAGS and use lib defaults" ON)
+
 include(GNUInstallDirs)
 
 if (BUILD_CMRTLIB)

--- a/cmrtlib/linux/CMakeLists.txt
+++ b/cmrtlib/linux/CMakeLists.txt
@@ -33,15 +33,19 @@ endif()
 
 # Set up compile options that will be used for the Linux build
 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CPP_STANDARD_OPTION} -fPIC -fpermissive -fstack-protector-all -Werror")
+if (OVERRIDE_COMPILER_FLAGS)
 if(CMAKE_SIZEOF_VOID_P EQUAL 8)
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse4.1")
 endif()
+endif()
 set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -fno-strict-aliasing -D_FORTIFY_SOURCE=2")
 set(CMAKE_CXX_FLAGS_DEBUG   "${CMAKE_CXX_FLAGS_DEBUG} -D_DEBUG -D__DEBUG -O0")
 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${CPP_STANDARD_OPTION} -fPIC -fpermissive -fstack-protector-all -Werror")
+if (OVERRIDE_COMPILER_FLAGS)
 if(CMAKE_SIZEOF_VOID_P EQUAL 8)
    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -msse4.1")
 endif()
+endif()
 set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -fno-strict-aliasing -D_FORTIFY_SOURCE=2")
 set(CMAKE_C_FLAGS_DEBUG   "${CMAKE_C_FLAGS_DEBUG} -D_DEBUG -D__DEBUG -O0")
 

--- a/media_driver/cmake/linux/media_compile_flags_linux.cmake
+++ b/media_driver/cmake/linux/media_compile_flags_linux.cmake
@@ -36,7 +36,10 @@ set(MEDIA_COMPILER_FLAGS_COMMON
     -Werror=format-security
     -Werror=non-virtual-dtor
     -Werror=return-type
+)
 
+if (OVERRIDE_COMPILER_FLAGS)
+    list (APPEND MEDIA_COMPILER_FLAGS_COMMON
     # General optimization options
     -march=${UFO_MARCH}
     -mpopcnt
@@ -44,23 +47,33 @@ set(MEDIA_COMPILER_FLAGS_COMMON
     -msse2
     -msse3
     -mssse3
-    -msse4.1
     -msse4.2
     -msse4
+)
+endif(OVERRIDE_COMPILER_FLAGS)
+
+list (APPEND MEDIA_COMPILER_FLAGS_COMMON
+    -msse4.1	# SSE4.1 support is required to build the library
     -mfpmath=sse
     -finline-functions
     -funswitch-loops
     -fno-short-enums
     -Wa,--noexecstack
     -fno-strict-aliasing
+)
 
+if (OVERRIDE_COMPILER_FLAGS)
+    list (APPEND MEDIA_COMPILER_FLAGS_COMMON
     # Common defines
     -DUSE_MMX
     -DUSE_SSE
     -DUSE_SSE2
     -DUSE_SSE3
     -DUSE_SSSE3
+)
+endif(OVERRIDE_COMPILER_FLAGS)
 
+list (APPEND MEDIA_COMPILER_FLAGS_COMMON
     # Other common flags
     -fmessage-length=0
     -fvisibility=hidden
@@ -68,16 +81,26 @@ set(MEDIA_COMPILER_FLAGS_COMMON
     -fdata-sections
     -ffunction-sections
     -Wl,--gc-sections
+)
 
+if (OVERRIDE_COMPILER_FLAGS)
+    list (APPEND MEDIA_COMPILER_FLAGS_COMMON
     # -m32 or -m64
     -m${ARCH}
+)
+endif(OVERRIDE_COMPILER_FLAGS)
 
+list (APPEND MEDIA_COMPILER_FLAGS_COMMON
     # Global defines
     -DLINUX=1
     -DLINUX
     -DNO_RTTI
     -DNO_EXCEPTION_HANDLING
     -DINTEL_NOT_PUBLIC
+)
+
+if (OVERRIDE_COMPILER_FLAGS)
+    list (APPEND MEDIA_COMPILER_FLAGS_COMMON
     -g
 )
 
@@ -90,6 +113,7 @@ if(${UFO_MARCH} STREQUAL "slm")
         -mtune=atom
     )
 endif()
+endif(OVERRIDE_COMPILER_FLAGS)
 
 if(${ARCH} STREQUAL "64")
     set(MEDIA_COMPILER_FLAGS_COMMON
@@ -206,9 +230,11 @@ include(${MEDIA_EXT_CMAKE}/ext/linux/media_compile_flags_linux_ext.cmake OPTIONA
 if(${PLATFORM} STREQUAL "linux")
     #set predefined compiler flags set
     add_compile_options("${MEDIA_COMPILER_FLAGS_COMMON}")
+if (OVERRIDE_COMPILER_FLAGS)
     add_compile_options("$<$<CONFIG:Debug>:${MEDIA_COMPILER_FLAGS_DEBUG}>")
     add_compile_options("$<$<CONFIG:Release>:${MEDIA_COMPILER_FLAGS_RELEASE}>")
     add_compile_options("$<$<CONFIG:ReleaseInternal>:${MEDIA_COMPILER_FLAGS_RELEASEINTERNAL}>")
+endif(OVERRIDE_COMPILER_FLAGS)
 
     foreach (flag ${MEDIA_COMPILER_CXX_FLAGS_COMMON})
         SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}")