cmake: Split compile definitions and options

This commit is contained in:
Florent Castelli 2017-01-25 06:02:01 +01:00
parent 5129ba1289
commit aac17b06d1
1 changed files with 17 additions and 10 deletions

View File

@ -169,7 +169,9 @@ if(ENABLE_GENERIC)
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64|amd64|AMD64") elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64|amd64|AMD64")
set(_M_X86 1) set(_M_X86 1)
set(_M_X86_64 1) set(_M_X86_64 1)
add_definitions(-D_M_X86=1 -D_M_X86_64=1 -msse2) add_definitions(-D_M_X86=1)
add_definitions(-D_M_X86_64=1)
check_and_add_flag(HAVE_SSE2 -msse2)
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fno-pie") set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fno-pie")
if(CMAKE_CXX_COMPILER_ID STREQUAL GNU) if(CMAKE_CXX_COMPILER_ID STREQUAL GNU)
CHECK_C_COMPILER_FLAG("-no-pie" NO_PIE_UPSTREAM) CHECK_C_COMPILER_FLAG("-no-pie" NO_PIE_UPSTREAM)
@ -184,8 +186,10 @@ elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64|amd64|AMD64")
elseif(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "aarch64") elseif(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "aarch64")
set(_M_ARM 1) set(_M_ARM 1)
set(_M_ARM_64 1) set(_M_ARM_64 1)
add_definitions(-D_M_ARM=1 -D_M_ARM_64=1) add_definitions(-D_M_ARM=1)
add_definitions(-march=armv8-a+crc) add_definitions(-D_M_ARM_64=1)
# CRC instruction set is used in the CRC32 hash function
check_and_add_flag(HAVE_ARCH_ARMV8 -march=armv8-a+crc)
else() else()
message(FATAL_ERROR "You're building on an unsupported platform. Enable generic build if you really want a JIT-less binary.") message(FATAL_ERROR "You're building on an unsupported platform. Enable generic build if you really want a JIT-less binary.")
endif() endif()
@ -196,10 +200,9 @@ if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_L
message(FATAL_ERROR "Dolphin requires at least GCC 5.0 (found ${CMAKE_CXX_COMPILER_VERSION})") message(FATAL_ERROR "Dolphin requires at least GCC 5.0 (found ${CMAKE_CXX_COMPILER_VERSION})")
endif() endif()
# Enabling all warnings in MSVC spams too much
if(NOT MSVC) if(NOT MSVC)
add_definitions(-Wall)
add_definitions(-D_DEFAULT_SOURCE) add_definitions(-D_DEFAULT_SOURCE)
check_and_add_flag(HAVE_WALL -Wall)
# TODO: would like these but they produce overwhelming amounts of warnings # TODO: would like these but they produce overwhelming amounts of warnings
#check_and_add_flag(EXTRA -Wextra) #check_and_add_flag(EXTRA -Wextra)
#check_and_add_flag(MISSING_FIELD_INITIALIZERS -Wmissing-field-initializers) #check_and_add_flag(MISSING_FIELD_INITIALIZERS -Wmissing-field-initializers)
@ -311,7 +314,7 @@ endif()
if(UNIX) if(UNIX)
option(LINUX_LOCAL_DEV "Enable relocatable binary" OFF) option(LINUX_LOCAL_DEV "Enable relocatable binary" OFF)
if(LINUX_LOCAL_DEV) if(LINUX_LOCAL_DEV)
add_definitions('-DLINUX_LOCAL_DEV') add_definitions(-DLINUX_LOCAL_DEV)
endif(LINUX_LOCAL_DEV) endif(LINUX_LOCAL_DEV)
endif(UNIX) endif(UNIX)
@ -335,15 +338,19 @@ if(NOT CMAKE_BUILD_TYPE)
endif(NOT CMAKE_BUILD_TYPE) endif(NOT CMAKE_BUILD_TYPE)
if(CMAKE_BUILD_TYPE STREQUAL Debug) if(CMAKE_BUILD_TYPE STREQUAL "Debug")
add_definitions(-D_DEBUG -ggdb) add_definitions(-D_DEBUG)
check_and_add_flag(GGDB -ggdb)
option(ENABLE_GPROF "Enable gprof profiling (must be using Debug build)" OFF) option(ENABLE_GPROF "Enable gprof profiling (must be using Debug build)" OFF)
if(ENABLE_GPROF) if(ENABLE_GPROF)
add_definitions(-pg) check_and_add_flag(HAVE_PG -pg)
if(NOT FLAG_C_HAVE_PG)
message(FATAL_ERROR "Compiler option -pg is not supported")
endif()
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -pg") set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -pg")
endif() endif()
endif(CMAKE_BUILD_TYPE STREQUAL Debug) endif()
if(FASTLOG) if(FASTLOG)
add_definitions(-DDEBUGFAST) add_definitions(-DDEBUGFAST)