blob: fd62b4a8fc036faed3ca3e5c50d0a02a6217cfb1 [file] [log] [blame]
# Copyright(c) 2017 Intel Corporation
# Permission is hereby granted, free of charge, to any person obtaining a
# copy of this software and associated documentation files(the "Software"),
# to deal in the Software without restriction, including without limitation
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
# and / or sell copies of the Software, and to permit persons to whom the
# Software is furnished to do so, subject to the following conditions:
# The above copyright notice and this permission notice shall be included
# in all copies or substantial portions of the Software.
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
# OTHER DEALINGS IN THE SOFTWARE.
#this file should contain only compiler and linker flags
SET (GMMLIB_COMPILER_FLAGS_COMMON
#general warnings
-Wall
-Winit-self
-Winvalid-pch
-Wpointer-arith
-Wno-unused
-Wno-unknown-pragmas
-Wno-comments
-Wno-narrowing
-Wno-overflow
-Wno-parentheses
-Wno-missing-braces
-Wno-sign-compare
-Werror=address
-Werror=format-security
-Werror=non-virtual-dtor
-Werror=return-type
# General optimization options
-march=${GMMLIB_MARCH}
-mpopcnt
-msse
-msse2
-msse3
-mssse3
-msse4
-msse4.1
-msse4.2
-mfpmath=sse
-finline-functions
-fno-short-enums
-Wa,--noexecstack
-fno-strict-aliasing
# Common defines
-DUSE_MMX
-DUSE_SSE
-DUSE_SSE2
-DUSE_SSE3
-DUSE_SSSE3
# Other common flags
-fstack-protector
-fdata-sections
-ffunction-sections
-fmessage-length=0
-fvisibility=hidden
-fPIC
-g
# -m32 or -m64
-m${GMMLIB_ARCH}
)
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
#Gcc only flags
list (APPEND GMMLIB_COMPILER_FLAGS_COMMON
-funswitch-loops
-Wl,--no-undefined
-Wl,--no-as-needed
-Wl,--gc-sections
)
endif()
SET (GMMLIB_COMPILER_CXX_FLAGS_COMMON
#cpp
-Wno-reorder
-Wsign-promo
-Wnon-virtual-dtor
-Wno-invalid-offsetof
-fvisibility-inlines-hidden
-fno-use-cxa-atexit
-fno-rtti
-fexceptions
-fcheck-new
-std=c++11
-pthread
)
SET (GMMLIB_COMPILER_FLAGS_DEBUG
-O0
-DINSTR_GTUNE_EXT
)
SET (GMMLIB_COMPILER_FLAGS_RELEASE
-O2
-fno-omit-frame-pointer
#-flto
#-Wl,-flto
)
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
list(APPEND GMMLIB_COMPILER_FLAGS_RELEASE
-finline-limit=100
)
endif()
#if("${CMAKE_BUILD_TYPE}" STREQUAL "Release")
# For LTO support, use special wrappers around ar and ranlib commands:
# ... and if using "nm", use gcc-nm
# SET(CMAKE_AR "gcc-ar")
# SET(CMAKE_RANLIB "gcc-ranlib")
#endif()
SET( GMMLIB_COMPILER_FLAGS_RELEASEINTERNAL ${GMMLIB_COMPILER_FLAGS_RELEASE})
#set predefined compiler flags set
add_compile_options("${GMMLIB_COMPILER_FLAGS_COMMON}")
add_compile_options("$<$<CONFIG:Debug>:${GMMLIB_COMPILER_FLAGS_DEBUG}>")
add_compile_options("$<$<CONFIG:Release>:${GMMLIB_COMPILER_FLAGS_RELEASE}>")
add_compile_options("$<$<CONFIG:ReleaseInternal>:${GMMLIB_COMPILER_FLAGS_RELEASEINTERNAL}>")
#cmake 3.3+, add_compile_options("$<$<COMPILE_LANGUAGE:CXX>:${GMMLIB_COMPILER_CXX_FLAGS_COMMON}>")
foreach (flag ${GMMLIB_COMPILER_CXX_FLAGS_COMMON})
SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}")
endforeach()
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -m${GMMLIB_ARCH}")
SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -m${GMMLIB_ARCH}")