2017-10-23 19:59:54 +02:00
|
|
|
option(DOLPHIN_CXX_FLAGS "Flags used to compile Dolphin-only sources" "")
|
|
|
|
if(DOLPHIN_CXX_FLAGS)
|
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${DOLPHIN_CXX_FLAGS}")
|
|
|
|
endif()
|
|
|
|
|
2017-01-27 09:58:21 +01:00
|
|
|
if(CMAKE_SYSTEM_NAME MATCHES "Windows")
|
|
|
|
add_definitions(-DNOMINMAX)
|
|
|
|
add_definitions(-DUNICODE)
|
|
|
|
add_definitions(-D_UNICODE)
|
|
|
|
add_definitions(-DWIN32_LEAN_AND_MEAN)
|
|
|
|
add_definitions(-D_WIN32_WINNT=0x0602)
|
2017-02-11 01:28:37 +01:00
|
|
|
add_definitions(-D_SCL_SECURE_NO_WARNINGS)
|
2017-01-27 09:58:21 +01:00
|
|
|
add_definitions(-D_CRT_SECURE_NO_WARNINGS)
|
|
|
|
add_definitions(-D_CRT_SECURE_NO_DEPRECATE)
|
2019-05-09 00:18:14 +02:00
|
|
|
add_definitions(-D_CRT_NONSTDC_NO_WARNINGS)
|
2020-07-30 20:21:51 +02:00
|
|
|
add_definitions(-D_SILENCE_CXX17_CODECVT_HEADER_DEPRECATION_WARNING)
|
2017-01-27 09:58:21 +01:00
|
|
|
endif()
|
|
|
|
|
2019-05-04 23:54:25 +02:00
|
|
|
set(CMAKE_CXX_STANDARD 17)
|
|
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
|
|
set(CMAKE_CXX_EXTENSIONS OFF)
|
2019-10-06 14:59:23 +02:00
|
|
|
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
2017-05-26 23:01:41 +02:00
|
|
|
|
2019-05-08 23:57:47 +02:00
|
|
|
if (MSVC)
|
2019-10-18 15:52:46 +02:00
|
|
|
# TODO: Use https://cmake.org/cmake/help/latest/policy/CMP0092.html instead (once we can require CMake >= 3.15)
|
|
|
|
# Taken from http://www.cmake.org/Wiki/CMake_FAQ#Dynamic_Replace.
|
|
|
|
foreach(flag_var
|
|
|
|
CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE
|
|
|
|
MAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO)
|
|
|
|
# Replaces /W3 with /W4 in defaults (add_compile_options would cause very annoying warnings here)
|
|
|
|
string(REPLACE "/W3" "/W4" ${flag_var} "${${flag_var}}")
|
|
|
|
endforeach()
|
2019-05-08 23:57:47 +02:00
|
|
|
|
|
|
|
# Disable some warnings
|
|
|
|
add_compile_options(
|
|
|
|
/wd4201 # nonstandard extension used : nameless struct/union
|
|
|
|
/wd4127 # conditional expression is constant
|
|
|
|
/wd4100 # 'identifier' : unreferenced formal parameter
|
|
|
|
/wd4200 # InputCommon fix temp.
|
|
|
|
/wd4244 # 'conversion' conversion from 'type1' to 'type2', possible loss of data
|
|
|
|
/wd4121 # 'symbol' : alignment of a member was sensitive to packing
|
|
|
|
/wd4324 # Padding was added at the end of a structure because you specified a __declspec(align) value.
|
|
|
|
/wd4714 # function 'function' marked as __forceinline not inlined
|
|
|
|
/wd4351 # new behavior: elements of array 'array' will be default initialized
|
|
|
|
# TODO: Enable this warning once possible
|
|
|
|
/wd4245 # conversion from 'type1' to 'type2', signed/unsigned mismatch
|
|
|
|
# Currently jits use some annoying code patterns which makes this common
|
|
|
|
)
|
|
|
|
|
|
|
|
# Additional warnings
|
|
|
|
add_compile_options(
|
|
|
|
/w44263 # Non-virtual member function hides base class virtual function
|
|
|
|
/w44265 # Class has virtual functions, but destructor is not virtual
|
|
|
|
)
|
|
|
|
|
|
|
|
# Treat all warnings as errors
|
|
|
|
add_compile_options(/WX)
|
|
|
|
|
2019-05-09 00:18:14 +02:00
|
|
|
# All files are encoded as UTF-8
|
|
|
|
add_compile_options(/utf-8)
|
|
|
|
|
2019-05-15 19:28:04 +02:00
|
|
|
# Use PCH
|
|
|
|
add_subdirectory(PCH)
|
|
|
|
add_definitions(/I${PCH_DIRECTORY})
|
|
|
|
add_definitions(/Yu${PCH_PATH})
|
2019-10-18 16:00:15 +02:00
|
|
|
|
2020-06-26 17:52:31 +02:00
|
|
|
# Don't include timestamps in binaries
|
|
|
|
add_link_options(/Brepro)
|
2019-05-08 23:57:47 +02:00
|
|
|
endif()
|
|
|
|
|
2017-01-20 17:44:23 +01:00
|
|
|
# These aren't actually needed for C11/C++11
|
|
|
|
# but some dependencies require them (LLVM, libav).
|
|
|
|
add_definitions(-D__STDC_LIMIT_MACROS)
|
|
|
|
add_definitions(-D__STDC_CONSTANT_MACROS)
|
|
|
|
|
2010-11-01 16:47:02 +01:00
|
|
|
add_subdirectory(Core)
|
2016-01-20 17:32:53 +01:00
|
|
|
if (ANDROID)
|
2017-03-01 13:43:43 +01:00
|
|
|
add_subdirectory(Android/jni)
|
2016-01-20 17:32:53 +01:00
|
|
|
endif()
|
2018-12-08 23:06:23 +01:00
|
|
|
|
|
|
|
if (ENABLE_TESTS)
|
|
|
|
add_subdirectory(UnitTests)
|
|
|
|
endif()
|
2011-07-18 03:47:55 +02:00
|
|
|
|
|
|
|
if (DSPTOOL)
|
2017-03-01 13:43:43 +01:00
|
|
|
add_subdirectory(DSPTool)
|
2011-07-18 03:47:55 +02:00
|
|
|
endif()
|
|
|
|
|
2016-09-12 00:25:45 +02:00
|
|
|
# TODO: Add DSPSpy. Preferably make it option() and cpack component
|