mirror of
https://github.com/citra-emu/citra.git
synced 2024-11-26 06:30:05 +00:00
Finished cmake optimization options as well as cpu specific building.
This commit is contained in:
parent
47f3711dbf
commit
d3f8878cec
@ -40,9 +40,46 @@ option(CITRA_USE_BUNDLED_SDL2 "Download bundled SDL2 binaries" OFF)
|
||||
option(ENABLE_QT "Enable the Qt frontend" ON)
|
||||
option(CITRA_USE_BUNDLED_QT "Download bundled Qt binaries" OFF)
|
||||
|
||||
# uses O3 instead of O2
|
||||
# uses full optimization on compilers
|
||||
option(ENABLE_HIGH_OP "Enable highest optimizations possible" OFF)
|
||||
|
||||
set(CPU_TARGET "base" CACHE STRING "CPU minimum for this build, use base as default")
|
||||
set(CPU_TYPES "base;pentium4;haswell;skylake;modern")
|
||||
set_property(CACHE CPU_TARGET PROPERTY STRINGS ${CPU_TYPES})
|
||||
|
||||
set(CC_OP_LEVEL "")
|
||||
set(CC_EXTRA "")
|
||||
set(CC_CPU_FLAGS "")
|
||||
if (MSVC)
|
||||
set(CC_OP_LEVEL "/O2")
|
||||
if (ENABLE_HIGH_OP)
|
||||
# /GL - produces global unified optimizations instead of module-based
|
||||
set(CC_OP_LEVEL "/Ox /GL /Gw")
|
||||
endif()
|
||||
if (CPU_TARGET MATCHES "base")
|
||||
set(CC_CPU_FLAGS "/arch:SSE2")
|
||||
else()
|
||||
set(CC_CPU_FLAGS "/arch:SSE2 /arch:AVX2")
|
||||
endif()
|
||||
elseif (MINGW)
|
||||
set(CC_EXTRA "${CC_EXTRA} -pthread")
|
||||
set(CC_OP_LEVEL "-O2")
|
||||
if (ENABLE_HIGH_OP)
|
||||
set(CC_OP_LEVEL "-O3")
|
||||
endif()
|
||||
if (CPU_TARGET MATCHES "skylake")
|
||||
set(CC_CPU_FLAGS "-march=skylake -maccumulate-outgoing-args")
|
||||
elseif (CPU_TARGET MATCHES "modern")
|
||||
set(CC_CPU_FLAGS "-mmmx -mmovbe -msse3 -msse4 -mavx -mavx2 -mbmi -mbmi2 -mf16c -maccumulate-outgoing-args")
|
||||
elseif (CPU_TARGET MATCHES "pentium4")
|
||||
set(CC_CPU_FLAGS "-march=pentium4")
|
||||
elseif (CPU_TARGET MATCHES "haswell")
|
||||
set(CC_CPU_FLAGS "-march=haswell -maccumulate-outgoing-args")
|
||||
else ()
|
||||
set(CC_CPU_FLAGS "-mmmx -msse -msse2")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/.git/hooks/pre-commit)
|
||||
message(STATUS "Copying pre-commit hook")
|
||||
file(COPY hooks/pre-commit
|
||||
@ -68,9 +105,11 @@ message(STATUS "Target architecture: ${ARCHITECTURE}")
|
||||
set(CMAKE_CXX_STANDARD 14)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
|
||||
set(COMP_FLAGS "${CC_OP_LEVEL} ${CC_CPU_FLAGS} ${CC_EXTRA}")
|
||||
|
||||
if (NOT MSVC)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-attributes")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${COMP_FLAGS} -Wno-attributes")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${COMP_FLAGS}")
|
||||
|
||||
if (MINGW)
|
||||
add_definitions(-DMINGW_HAS_SECURE_API)
|
||||
@ -110,14 +149,9 @@ else()
|
||||
set(CMAKE_C_FLAGS_DEBUG "/Od /MDd" CACHE STRING "" FORCE)
|
||||
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG}" CACHE STRING "" FORCE)
|
||||
|
||||
set(OP_LEVEL "/O2")
|
||||
if (ENABLE_HIGH_OP)
|
||||
set(OP_LEVEL "/O3")
|
||||
|
||||
# /O2 - Optimization level 2
|
||||
# /GS- - No stack buffer overflow checks
|
||||
# /MD - Multi-threaded runtime DLL
|
||||
set(CMAKE_C_FLAGS_RELEASE "${OP_LEVEL} /GS- /MD" CACHE STRING "" FORCE)
|
||||
set(CMAKE_C_FLAGS_RELEASE "${COMP_FLAGS} /GS- /MD" CACHE STRING "" FORCE)
|
||||
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}" CACHE STRING "" FORCE)
|
||||
|
||||
set(CMAKE_EXE_LINKER_FLAGS_DEBUG "/DEBUG" CACHE STRING "" FORCE)
|
||||
@ -157,7 +191,6 @@ list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/externals/cmake-modules")
|
||||
|
||||
find_package(OpenGL REQUIRED)
|
||||
include_directories(${OPENGL_INCLUDE_DIR})
|
||||
|
||||
# Prefer the -pthread flag on Linux.
|
||||
set (THREADS_PREFER_PTHREAD_FLAG ON)
|
||||
find_package(Threads REQUIRED)
|
||||
@ -212,6 +245,8 @@ if (UNIX OR MINGW)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
message(STATUS "Compiler Flags: ${CMAKE_CXX_FLAGS}")
|
||||
|
||||
if (ENABLE_QT)
|
||||
if (CITRA_USE_BUNDLED_QT)
|
||||
if (MSVC14 AND ARCHITECTURE_x86_64)
|
||||
|
Loading…
Reference in New Issue
Block a user