e6612d6d8d
Modifying CMAKE_* related flags directly applies those changes to every single CMake target. This includes even the targets we have in the externals directory. So, if we ever increased our warning levels, or enabled particular ones, or enabled any other compilation setting, then this would apply to externals as well, which is often not desirable. This makes our compilation flag setup less error prone by only applying our settings to our targets and leaving the externals alone entirely. This also means we don't end up clobbering any provided flags on the command line either, allowing users to specifically use the flags they want.
80 lines
2.6 KiB
CMake
80 lines
2.6 KiB
CMake
# Enable modules to include each other's files
|
|
include_directories(.)
|
|
|
|
# CMake seems to only define _DEBUG on Windows
|
|
set_property(DIRECTORY APPEND PROPERTY
|
|
COMPILE_DEFINITIONS $<$<CONFIG:Debug>:_DEBUG> $<$<NOT:$<CONFIG:Debug>>:NDEBUG>)
|
|
|
|
# Set compilation flags
|
|
if (MSVC)
|
|
set(CMAKE_CONFIGURATION_TYPES Debug Release CACHE STRING "" FORCE)
|
|
|
|
# Silence "deprecation" warnings
|
|
add_definitions(-D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_DEPRECATE -D_SCL_SECURE_NO_WARNINGS)
|
|
|
|
# Avoid windows.h junk
|
|
add_definitions(-DNOMINMAX)
|
|
|
|
# Avoid windows.h from including some usually unused libs like winsocks.h, since this might cause some redefinition errors.
|
|
add_definitions(-DWIN32_LEAN_AND_MEAN)
|
|
|
|
# /W3 - Level 3 warnings
|
|
# /MP - Multi-threaded compilation
|
|
# /Zi - Output debugging information
|
|
# /Zo - enhanced debug info for optimized builds
|
|
# /permissive- - enables stricter C++ standards conformance checks
|
|
# /EHsc - C++-only exception handling semantics
|
|
# /Zc:throwingNew - let codegen assume `operator new` will never return null
|
|
# /Zc:inline - let codegen omit inline functions in object files
|
|
add_compile_options(/W3 /MP /Zi /Zo /permissive- /EHsc /std:c++latest /Zc:throwingNew,inline)
|
|
|
|
# /GS- - No stack buffer overflow checks
|
|
add_compile_options("$<$<CONFIG:Release>:/GS->")
|
|
|
|
set(CMAKE_EXE_LINKER_FLAGS_DEBUG "/DEBUG /MANIFEST:NO" CACHE STRING "" FORCE)
|
|
set(CMAKE_EXE_LINKER_FLAGS_RELEASE "/DEBUG /MANIFEST:NO /INCREMENTAL:NO /OPT:REF,ICF" CACHE STRING "" FORCE)
|
|
else()
|
|
add_compile_options("-Wno-attributes")
|
|
|
|
if (APPLE AND CMAKE_CXX_COMPILER_ID STREQUAL Clang)
|
|
add_compile_options("-stdlib=libc++")
|
|
endif()
|
|
|
|
# Set file offset size to 64 bits.
|
|
#
|
|
# On modern Unixes, this is typically already the case. The lone exception is
|
|
# glibc, which may default to 32 bits. glibc allows this to be configured
|
|
# by setting _FILE_OFFSET_BITS.
|
|
if(CMAKE_SYSTEM_NAME STREQUAL "Linux" OR MINGW)
|
|
add_definitions(-D_FILE_OFFSET_BITS=64)
|
|
endif()
|
|
|
|
if (MINGW)
|
|
add_definitions(-DMINGW_HAS_SECURE_API)
|
|
|
|
if (MINGW_STATIC_BUILD)
|
|
add_definitions(-DQT_STATICPLUGIN)
|
|
add_compile_options("-static")
|
|
endif()
|
|
endif()
|
|
endif()
|
|
|
|
add_subdirectory(common)
|
|
add_subdirectory(core)
|
|
add_subdirectory(audio_core)
|
|
add_subdirectory(video_core)
|
|
add_subdirectory(input_common)
|
|
add_subdirectory(tests)
|
|
|
|
if (ENABLE_SDL2)
|
|
add_subdirectory(yuzu_cmd)
|
|
endif()
|
|
|
|
if (ENABLE_QT)
|
|
add_subdirectory(yuzu)
|
|
endif()
|
|
|
|
if (ENABLE_WEB_SERVICE)
|
|
add_subdirectory(web_service)
|
|
endif()
|