2017-10-23 17:59:54 +00: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 08:58:21 +00: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 00:28:37 +00:00
|
|
|
add_definitions(-D_SCL_SECURE_NO_WARNINGS)
|
2017-01-27 08:58:21 +00:00
|
|
|
add_definitions(-D_CRT_SECURE_NO_WARNINGS)
|
|
|
|
add_definitions(-D_CRT_SECURE_NO_DEPRECATE)
|
2019-05-08 22:18:14 +00:00
|
|
|
add_definitions(-D_CRT_NONSTDC_NO_WARNINGS)
|
2020-07-30 18:21:51 +00:00
|
|
|
add_definitions(-D_SILENCE_CXX17_CODECVT_HEADER_DEPRECATION_WARNING)
|
2021-08-24 13:07:15 +00:00
|
|
|
# The replacement for the old atomic shared_ptr functions was added in C++20, so we can't use it yet
|
|
|
|
add_definitions(-D_SILENCE_CXX20_OLD_SHARED_PTR_ATOMIC_SUPPORT_DEPRECATION_WARNING)
|
2017-01-27 08:58:21 +00:00
|
|
|
endif()
|
|
|
|
|
2022-05-21 01:31:41 +00:00
|
|
|
if (NOT MSVC)
|
2021-03-03 22:44:35 +00:00
|
|
|
set(CMAKE_CXX_STANDARD 17)
|
2022-05-21 01:31:41 +00:00
|
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
|
|
set(CMAKE_CXX_EXTENSIONS OFF)
|
2021-03-03 22:44:35 +00:00
|
|
|
endif()
|
|
|
|
|
2019-10-06 12:59:23 +00:00
|
|
|
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
2017-05-26 21:01:41 +00:00
|
|
|
|
2019-05-08 21:57:47 +00:00
|
|
|
if (MSVC)
|
2022-04-27 06:57:13 +00:00
|
|
|
# Compile PCH
|
2019-05-15 17:28:04 +00:00
|
|
|
add_subdirectory(PCH)
|
2020-11-20 23:59:17 +00:00
|
|
|
else()
|
|
|
|
check_and_add_flag(HAVE_WALL -Wall)
|
|
|
|
# TODO: would like these but they produce overwhelming amounts of warnings
|
|
|
|
#check_and_add_flag(EXTRA -Wextra)
|
|
|
|
#check_and_add_flag(MISSING_FIELD_INITIALIZERS -Wmissing-field-initializers)
|
|
|
|
#check_and_add_flag(SWITCH_DEFAULT -Wswitch-default)
|
|
|
|
#check_and_add_flag(FLOAT_EQUAL -Wfloat-equal)
|
|
|
|
#check_and_add_flag(CONVERSION -Wconversion)
|
|
|
|
#check_and_add_flag(ZERO_AS_NULL_POINTER_CONSTANT -Wzero-as-null-pointer-constant)
|
|
|
|
check_and_add_flag(TYPE_LIMITS -Wtype-limits)
|
|
|
|
check_and_add_flag(SIGN_COMPARE -Wsign-compare)
|
|
|
|
check_and_add_flag(IGNORED_QUALIFIERS -Wignored-qualifiers)
|
|
|
|
check_and_add_flag(UNINITIALIZED -Wuninitialized)
|
|
|
|
check_and_add_flag(LOGICAL_OP -Wlogical-op)
|
|
|
|
check_and_add_flag(SHADOW -Wshadow)
|
|
|
|
check_and_add_flag(INIT_SELF -Winit-self)
|
|
|
|
check_and_add_flag(MISSING_DECLARATIONS -Wmissing-declarations)
|
|
|
|
check_and_add_flag(MISSING_VARIABLE_DECLARATIONS -Wmissing-variable-declarations)
|
2020-11-21 00:44:15 +00:00
|
|
|
|
|
|
|
# Disable -Wstringop-truncation warnings as they result in many false positives.
|
|
|
|
# In most (all?) cases where std::strncpy is used, we want to fill the entire buffer
|
|
|
|
# or match emulated code that also ignores the null terminator, so the warnings are not useful.
|
|
|
|
# Given that Dolphin itself mostly uses std::string, they do not really help catch any bugs.
|
|
|
|
check_cxx_compiler_flag(-Wstringop-truncation HAS_STRINGOP_TRUNCATION_WARNING)
|
|
|
|
if (HAS_STRINGOP_TRUNCATION_WARNING)
|
|
|
|
check_and_add_flag(NO_STRINGOP_TRUNCATION -Wno-stringop-truncation)
|
|
|
|
endif()
|
2020-11-25 17:59:47 +00:00
|
|
|
|
|
|
|
# Format string issues that the compiler can detect should be compile time errors.
|
|
|
|
check_cxx_compiler_flag(-Wformat HAS_FORMAT_WARNING)
|
|
|
|
if (HAS_FORMAT_WARNING)
|
|
|
|
check_and_add_flag(FORMAT_WARNING_TO_ERROR -Werror=format)
|
|
|
|
endif()
|
2019-05-08 21:57:47 +00:00
|
|
|
endif()
|
|
|
|
|
2017-01-20 16:44:23 +00: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 15:47:02 +00:00
|
|
|
add_subdirectory(Core)
|
2016-01-20 16:32:53 +00:00
|
|
|
if (ANDROID)
|
|
|
|
add_subdirectory(Android/jni)
|
|
|
|
endif()
|
2018-12-08 22:06:23 +00:00
|
|
|
|
|
|
|
if (ENABLE_TESTS)
|
|
|
|
add_subdirectory(UnitTests)
|
|
|
|
endif()
|
2011-07-18 01:47:55 +00:00
|
|
|
|
|
|
|
if (DSPTOOL)
|
|
|
|
add_subdirectory(DSPTool)
|
|
|
|
endif()
|
|
|
|
|
2016-09-11 22:25:45 +00:00
|
|
|
# TODO: Add DSPSpy. Preferably make it option() and cpack component
|