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("$<$:${MEDIA_COMPILER_FLAGS_DEBUG}>") add_compile_options("$<$:${MEDIA_COMPILER_FLAGS_RELEASE}>") add_compile_options("$<$:${MEDIA_COMPILER_FLAGS_RELEASEINTERNAL}>") +endif(OVERRIDE_COMPILER_FLAGS) foreach (flag ${MEDIA_COMPILER_CXX_FLAGS_COMMON}) SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}")