2010-06-03 17:28:20 +00:00
### Select the build type
2011-10-31 10:25:24 +00:00
# Use Release/Devel/Debug : -DCMAKE_BUILD_TYPE=Release|Devel|Debug
2011-10-30 00:32:22 +00:00
# Enable/disable the stripping : -DCMAKE_BUILD_STRIP=TRUE|FALSE
2011-10-31 10:25:24 +00:00
# generation .po based on src : -DCMAKE_BUILD_PO=TRUE|FALSE
2011-10-30 00:32:22 +00:00
2011-07-17 11:25:17 +00:00
### GCC optimization options
2010-07-07 11:36:54 +00:00
# control C flags : -DUSER_CMAKE_C_FLAGS="cflags"
# control C++ flags : -DUSER_CMAKE_CXX_FLAGS="cxxflags"
2010-07-13 09:16:13 +00:00
# control link flags : -DUSER_CMAKE_LD_FLAGS="ldflags"
2010-06-03 17:28:20 +00:00
#-------------------------------------------------------------------------------
2021-04-17 22:29:55 +00:00
# Extra preprocessor definitions that will be added to all pcsx2 builds
set ( PCSX2_DEFS "" )
2015-01-06 22:45:43 +00:00
#-------------------------------------------------------------------------------
# Misc option
#-------------------------------------------------------------------------------
2015-07-27 18:00:47 +00:00
option ( DISABLE_BUILD_DATE "Disable including the binary compile date" )
2020-08-19 08:19:28 +00:00
option ( ENABLE_TESTS "Enables building the unit tests" ON )
2020-12-06 19:39:25 +00:00
option ( USE_SYSTEM_YAML "Uses a system version of yaml, if found" )
2021-09-02 03:32:14 +00:00
option ( LTO_PCSX2_CORE "Enable LTO/IPO/LTCG on the subset of pcsx2 that benefits most from it but not anything else" )
2015-07-27 18:00:47 +00:00
2021-08-02 06:55:11 +00:00
if ( WIN32 )
set ( DEFAULT_NATIVE_TOOLS ON )
else ( )
set ( DEFAULT_NATIVE_TOOLS OFF )
endif ( )
option ( USE_NATIVE_TOOLS "Uses c++ tools instead of ones written in scripting languages. OFF requires perl, ON may fail if cross compiling" ${ DEFAULT_NATIVE_TOOLS } )
2015-07-27 18:00:47 +00:00
if ( DISABLE_BUILD_DATE OR openSUSE )
2021-07-04 05:24:21 +00:00
message ( STATUS "Disabling the inclusion of the binary compile date." )
2021-04-17 22:29:55 +00:00
list ( APPEND PCSX2_DEFS DISABLE_BUILD_DATE )
2015-07-27 18:00:47 +00:00
endif ( )
2015-01-06 22:45:43 +00:00
2021-06-20 03:59:14 +00:00
option ( USE_VTUNE "Plug VTUNE to profile GS JIT." )
2016-11-18 21:40:52 +00:00
2014-07-05 12:54:56 +00:00
#-------------------------------------------------------------------------------
# Graphical option
#-------------------------------------------------------------------------------
option ( BUILD_REPLAY_LOADERS "Build GS replayer to ease testing (developer option)" )
#-------------------------------------------------------------------------------
# Path and lib option
#-------------------------------------------------------------------------------
option ( PACKAGE_MODE "Use this option to ease packaging of PCSX2 (developer/distribution option)" )
2015-08-07 06:39:39 +00:00
option ( DISABLE_CHEATS_ZIP "Disable including the cheats_ws.zip file" )
option ( DISABLE_PCSX2_WRAPPER "Disable including the PCSX2-linux.sh file" )
2020-10-30 05:25:41 +00:00
option ( DISABLE_SETCAP "Do not set files capabilities" )
2014-07-05 12:54:56 +00:00
option ( XDG_STD "Use XDG standard path instead of the standard PCSX2 path" )
2021-02-23 15:45:47 +00:00
option ( PORTAUDIO_API "Build portaudio support on SPU2" ON )
2020-12-17 23:48:33 +00:00
option ( SDL2_API "Use SDL2 on SPU2 and PAD Linux (wxWidget mustn't be built with SDL1.2 support" ON )
2020-10-30 05:30:03 +00:00
option ( GTK2_API "Use GTK2 api (legacy)" )
2014-07-05 12:54:56 +00:00
if ( PACKAGE_MODE )
2021-07-04 05:24:21 +00:00
# Compile all source codes with those defines
2021-04-17 22:29:55 +00:00
list ( APPEND PCSX2_DEFS
G A M E I N D E X _ D I R _ C O M P I L A T I O N = $ { C M A K E _ I N S T A L L _ F U L L _ D A T A D I R } / P C S X 2
D O C _ D I R _ C O M P I L A T I O N = $ { C M A K E _ I N S T A L L _ F U L L _ D O C D I R } )
2014-12-21 15:48:41 +00:00
endif ( )
2014-07-05 12:54:56 +00:00
2020-05-24 06:19:47 +00:00
if ( APPLE )
2021-07-04 05:24:21 +00:00
option ( OSX_USE_DEFAULT_SEARCH_PATH "Don't prioritize system library paths" OFF )
option ( SKIP_POSTPROCESS_BUNDLE "Skip postprocessing bundle for redistributability" OFF )
2020-05-24 06:19:47 +00:00
endif ( )
2014-07-12 14:04:57 +00:00
#-------------------------------------------------------------------------------
# Compiler extra
#-------------------------------------------------------------------------------
2014-07-12 17:57:26 +00:00
option ( USE_ASAN "Enable address sanitizer" )
2014-07-12 14:04:57 +00:00
2015-01-04 03:07:16 +00:00
if ( CMAKE_CXX_COMPILER_ID STREQUAL "Clang" )
2021-07-04 05:24:21 +00:00
set ( USE_CLANG TRUE )
message ( STATUS "Building with Clang/LLVM." )
2016-07-28 08:35:21 +00:00
elseif ( CMAKE_CXX_COMPILER_ID STREQUAL "Intel" )
2021-07-04 05:24:21 +00:00
set ( USE_ICC TRUE )
message ( STATUS "Building with Intel's ICC." )
2016-07-28 08:35:21 +00:00
elseif ( CMAKE_CXX_COMPILER_ID STREQUAL "GNU" )
2021-07-04 05:24:21 +00:00
set ( USE_GCC TRUE )
message ( STATUS "Building with GNU GCC" )
2021-08-04 05:43:25 +00:00
elseif ( MSVC )
message ( STATUS "Building with MSVC" )
2016-07-28 08:35:21 +00:00
else ( )
2021-07-04 05:24:21 +00:00
message ( FATAL_ERROR "Unknown compiler: ${CMAKE_CXX_COMPILER_ID}" )
2014-12-28 09:05:22 +00:00
endif ( )
2016-05-17 17:31:39 +00:00
#-------------------------------------------------------------------------------
# if no build type is set, use Devel as default
# Note without the CMAKE_BUILD_TYPE options the value is still defined to ""
# Ensure that the value set by the User is correct to avoid some bad behavior later
#-------------------------------------------------------------------------------
2021-04-17 22:29:55 +00:00
if ( NOT CMAKE_BUILD_TYPE MATCHES "Debug|Devel|MinSizeRel|RelWithDebInfo|Release" )
2016-05-17 17:31:39 +00:00
set ( CMAKE_BUILD_TYPE Devel )
message ( STATUS "BuildType set to ${CMAKE_BUILD_TYPE} by default" )
endif ( )
2021-04-17 22:29:55 +00:00
# Add Devel build type
set ( CMAKE_C_FLAGS_DEVEL "${CMAKE_C_FLAGS_RELWITHDEBINFO}"
C A C H E S T R I N G " F l a g s u s e d b y t h e C c o m p i l e r d u r i n g d e v e l o p m e n t b u i l d s " F O R C E )
set ( CMAKE_CXX_FLAGS_DEVEL "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}"
C A C H E S T R I N G " F l a g s u s e d b y t h e C + + c o m p i l e r d u r i n g d e v e l o p m e n t b u i l d s " F O R C E )
set ( CMAKE_LINKER_FLAGS_DEVEL "${CMAKE_LINKER_FLAGS_RELWITHDEBINFO}"
C A C H E S T R I N G " F l a g s u s e d f o r l i n k i n g b i n a r i e s d u r i n g d e v e l o p m e n t b u i l d s " F O R C E )
set ( CMAKE_SHARED_LINKER_FLAGS_DEVEL "${CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO}"
C A C H E S T R I N G " F l a g s u s e d f o r l i n k i n g s h a r e d l i b r a r i e s d u r i n g d e v e l o p m e n t b u i l d s " F O R C E )
2021-08-04 05:43:25 +00:00
set ( CMAKE_EXE_LINKER_FLAGS_DEVEL "${CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO}"
C A C H E S T R I N G " F l a g s u s e d f o r l i n k i n g e x e c u t a b l e s d u r i n g d e v e l o p m e n t b u i l d s " F O R C E )
2021-04-17 22:29:55 +00:00
if ( CMAKE_CONFIGURATION_TYPES )
list ( INSERT CMAKE_CONFIGURATION_TYPES 0 Devel )
endif ( )
2021-09-04 02:33:11 +00:00
mark_as_advanced ( CMAKE_C_FLAGS_DEVEL CMAKE_CXX_FLAGS_DEVEL CMAKE_LINKER_FLAGS_DEVEL CMAKE_SHARED_LINKER_FLAGS_DEVEL CMAKE_EXE_LINKER_FLAGS_DEVEL )
2016-05-17 17:31:39 +00:00
# AVX2 doesn't play well with gdb
if ( CMAKE_BUILD_TYPE MATCHES "Debug" )
2021-07-04 05:24:21 +00:00
SET ( DISABLE_ADVANCE_SIMD ON )
2016-05-17 17:31:39 +00:00
endif ( )
# Initially strip was disabled on release build but it is not stackstrace friendly!
# It only cost several MB so disbable it by default
option ( CMAKE_BUILD_STRIP "Srip binaries to save a couple of MB (developer option)" )
if ( NOT DEFINED CMAKE_BUILD_PO )
2021-07-04 05:24:21 +00:00
if ( CMAKE_BUILD_TYPE STREQUAL "Release" )
set ( CMAKE_BUILD_PO TRUE )
message ( STATUS "Enable the building of po files by default in ${CMAKE_BUILD_TYPE} build !!!" )
else ( )
set ( CMAKE_BUILD_PO FALSE )
message ( STATUS "Disable the building of po files by default in ${CMAKE_BUILD_TYPE} build !!!" )
endif ( )
2016-05-17 17:31:39 +00:00
endif ( )
2014-07-05 12:54:56 +00:00
#-------------------------------------------------------------------------------
# Select the architecture
#-------------------------------------------------------------------------------
2014-11-11 13:50:56 +00:00
option ( DISABLE_ADVANCE_SIMD "Disable advance use of SIMD (SSE2+ & AVX)" OFF )
2014-07-05 12:54:56 +00:00
2014-12-25 02:18:28 +00:00
# Print if we are cross compiling.
if ( CMAKE_CROSSCOMPILING )
2021-07-04 05:24:21 +00:00
message ( STATUS "Cross compilation is enabled." )
2014-12-25 02:18:28 +00:00
else ( )
2021-07-04 05:24:21 +00:00
message ( STATUS "Cross compilation is disabled." )
2014-12-25 02:18:28 +00:00
endif ( )
2014-07-05 12:54:56 +00:00
# Architecture bitness detection
2014-12-24 20:39:51 +00:00
include ( TargetArch )
target_architecture ( PCSX2_TARGET_ARCHITECTURES )
2014-12-24 22:12:34 +00:00
if ( ${ PCSX2_TARGET_ARCHITECTURES } MATCHES "x86_64" OR ${ PCSX2_TARGET_ARCHITECTURES } MATCHES "i386" )
message ( STATUS "Compiling a ${PCSX2_TARGET_ARCHITECTURES} build on a ${CMAKE_HOST_SYSTEM_PROCESSOR} host." )
2014-12-24 20:39:51 +00:00
else ( )
message ( FATAL_ERROR "Unsupported architecture: ${PCSX2_TARGET_ARCHITECTURES}" )
2014-07-05 12:54:56 +00:00
endif ( )
2014-12-24 22:12:34 +00:00
if ( ${ PCSX2_TARGET_ARCHITECTURES } MATCHES "i386" )
2021-07-04 05:24:21 +00:00
# * -fPIC option was removed for multiple reasons.
# - Code only supports the x86 architecture.
# - code uses the ebx register so it's not compliant with PIC.
# - Impacts the performance too much.
# - Only plugins. No package will link to them.
set ( CMAKE_POSITION_INDEPENDENT_CODE OFF )
if ( NOT DEFINED ARCH_FLAG )
2021-08-04 05:43:25 +00:00
if ( MSVC )
set ( ARCH_FLAG /arch:SSE2 )
else ( )
if ( DISABLE_ADVANCE_SIMD )
if ( USE_ICC )
set ( ARCH_FLAG "-msse2 -msse4.1" )
else ( )
set ( ARCH_FLAG "-msse -msse2 -msse4.1 -mfxsr -march=i686" )
endif ( )
2021-07-04 05:24:21 +00:00
else ( )
2021-08-04 05:43:25 +00:00
# AVX requires some fix of the ABI (mangling) (default 2)
# Note: V6 requires GCC 4.7
#set(ARCH_FLAG "-march=native -fabi-version=6")
set ( ARCH_FLAG "-mfxsr -march=native" )
2021-07-04 05:24:21 +00:00
endif ( )
endif ( )
endif ( )
2021-04-17 22:29:55 +00:00
list ( APPEND PCSX2_DEFS _ARCH_32=1 _M_X86=1 _M_X86_32=1 )
2021-07-04 05:24:21 +00:00
set ( _ARCH_32 1 )
set ( _M_X86 1 )
set ( _M_X86_32 1 )
2014-12-24 22:12:34 +00:00
elseif ( ${ PCSX2_TARGET_ARCHITECTURES } MATCHES "x86_64" )
2021-07-04 05:24:21 +00:00
# x86_64 requires -fPIC
set ( CMAKE_POSITION_INDEPENDENT_CODE ON )
2021-08-04 05:43:25 +00:00
if ( NOT DEFINED ARCH_FLAG AND NOT MSVC )
2021-07-04 05:24:21 +00:00
if ( DISABLE_ADVANCE_SIMD )
if ( USE_ICC )
set ( ARCH_FLAG "-msse2 -msse4.1" )
else ( )
set ( ARCH_FLAG "-msse -msse2 -msse4.1 -mfxsr" )
endif ( )
else ( )
#set(ARCH_FLAG "-march=native -fabi-version=6")
set ( ARCH_FLAG "-march=native" )
endif ( )
endif ( )
2021-04-17 22:29:55 +00:00
list ( APPEND PCSX2_DEFS _ARCH_64=1 _M_X86=1 _M_X86_64=1 __M_X86_64=1 )
2021-07-04 05:24:21 +00:00
set ( _ARCH_64 1 )
set ( _M_X86 1 )
set ( _M_X86_64 1 )
2014-07-05 12:54:56 +00:00
else ( )
2021-07-04 05:24:21 +00:00
# All but i386 requires -fPIC
set ( CMAKE_POSITION_INDEPENDENT_CODE ON )
2014-12-24 22:12:34 +00:00
2021-07-04 05:24:21 +00:00
message ( FATAL_ERROR "Unsupported architecture: ${PCSX2_TARGET_ARCHITECTURES}" )
2014-07-05 12:54:56 +00:00
endif ( )
2021-04-17 22:29:55 +00:00
string ( REPLACE " " ";" ARCH_FLAG_LIST "${ARCH_FLAG}" )
add_compile_options ( "${ARCH_FLAG_LIST}" )
2014-07-05 12:54:56 +00:00
2011-10-29 11:39:06 +00:00
#-------------------------------------------------------------------------------
2011-10-30 00:32:22 +00:00
# Set some default compiler flags
2011-10-29 11:39:06 +00:00
#-------------------------------------------------------------------------------
2016-12-05 15:57:53 +00:00
option ( USE_PGO_GENERATE "Enable PGO optimization (generate profile)" )
option ( USE_PGO_OPTIMIZE "Enable PGO optimization (use profile)" )
2015-11-15 12:54:47 +00:00
2016-02-09 17:24:12 +00:00
# Note1: Builtin strcmp/memcmp was proved to be slower on Mesa than stdlib version.
# Note2: float operation SSE is impacted by the PCSX2 SSE configuration. In particular, flush to zero denormal.
2021-08-04 05:43:25 +00:00
if ( NOT MSVC )
add_compile_options ( -pipe -fvisibility=hidden -pthread -fno-builtin-strcmp -fno-builtin-memcmp -mfpmath=sse -fno-operator-names )
endif ( )
if ( WIN32 )
2021-09-04 02:33:11 +00:00
add_compile_definitions (
$ < $ < C O N F I G : D e b u g > : _ I T E R A T O R _ D E B U G _ L E V E L = 2 >
$ < $ < C O N F I G : D e v e l > : _ I T E R A T O R _ D E B U G _ L E V E L = 1 >
$ < $ < C O N F I G : R e l W i t h D e b I n f o > : _ I T E R A T O R _ D E B U G _ L E V E L = 0 >
$ < $ < C O N F I G : M i n S i z e R e l > : _ I T E R A T O R _ D E B U G _ L E V E L = 0 >
$ < $ < C O N F I G : R e l e a s e > : _ I T E R A T O R _ D E B U G _ L E V E L = 0 >
)
2021-08-04 05:43:25 +00:00
list ( APPEND PCSX2_DEFS TIXML_USE_STL _SCL_SECURE_NO_WARNINGS _UNICODE UNICODE )
endif ( )
2019-08-25 01:47:49 +00:00
2016-12-04 17:46:02 +00:00
if ( USE_VTUNE )
2021-04-17 22:29:55 +00:00
list ( APPEND PCSX2_DEFS ENABLE_VTUNE )
2019-08-25 01:47:49 +00:00
endif ( )
2014-04-18 21:39:12 +00:00
# -Wno-attributes: "always_inline function might not be inlinable" <= real spam (thousand of warnings!!!)
# -Wno-missing-field-initializers: standard allow to init only the begin of struct/array in static init. Just a silly warning.
cmake: add -Wextra warning on GCC
Add 3 new warnings (first one must be fixed I think)
pcsx2/gui/MessageBoxes.cpp: In copy constructor ‘BaseMessageBoxEvent::BaseMessageBoxEvent(const BaseMessageBoxEvent&)’:
pcsx2/gui/MessageBoxes.cpp:62:1: warning: base class ‘class pxActionEvent’ should be explicitly initialized in the copy constructor [-Wextra]
BaseMessageBoxEvent::BaseMessageBoxEvent( const BaseMessageBoxEvent& event )
plugins/GSdx/GSPng.cpp: In function ‘bool GSPng::SaveFile(const string&, GSPng::Format, uint8*, uint8*, int, int, int, int, bool, bool)’:
/home/gregory/playstation/emulateur/pcsx2_merge/plugins/GSdx/GSPng.cpp:64:14: warning: variable ‘success’ might be clobbered by ‘longjmp’ or ‘vfork’ [-Wclobbered]
bool success = false;
^
plugins/GSdx/GSPng.cpp:44:58: warning: argument ‘image’ might be clobbered by ‘longjmp’ or ‘vfork’ [-Wclobbered]
bool SaveFile(const string& file, Format fmt, uint8* image, uint8* row,
2016-08-12 17:27:24 +00:00
# Note: future GCC (aka GCC 5.1.1) has less false positive so warning could maybe put back
2014-04-18 21:39:12 +00:00
# -Wno-unused-function: warn for function not used in release build
2014-08-02 06:42:28 +00:00
# -Wno-unused-value: lots of warning for this kind of statements "0 && ...". There are used to disable some parts of code in release/dev build.
2019-08-23 21:40:33 +00:00
# -Wno-overloaded-virtual: Gives a fair number of warnings under clang over in the wxwidget gui section of the code.
2020-11-14 04:42:18 +00:00
# -Wno-deprecated-declarations: The USB plugins dialogs are written in straight gtk 2, which gives a million deprecated warnings. Suppress them until we can deal with them.
2020-11-27 15:57:28 +00:00
# -Wno-format*: Yeah, these need to be taken care of, but...
2020-11-21 18:29:06 +00:00
# -Wno-stringop-truncation: Who comes up with these compiler warnings, anyways?
# -Wno-stringop-overflow: Probably the same people as this one...
2020-11-14 04:42:18 +00:00
2021-08-04 05:43:25 +00:00
if ( MSVC )
set ( DEFAULT_WARNINGS )
else ( )
set ( DEFAULT_WARNINGS -Wall -Wextra -Wno-attributes -Wno-unused-function -Wno-unused-parameter -Wno-missing-field-initializers -Wno-deprecated-declarations -Wno-format -Wno-format-security -Wno-overloaded-virtual )
if ( NOT USE_ICC )
list ( APPEND DEFAULT_WARNINGS -Wno-unused-value )
endif ( )
2016-07-28 08:35:21 +00:00
endif ( )
2020-11-27 15:57:28 +00:00
if ( USE_CLANG )
2021-04-17 22:29:55 +00:00
list ( APPEND DEFAULT_WARNINGS -Wno-overloaded-virtual )
2020-11-27 15:57:28 +00:00
endif ( )
2020-11-21 18:29:06 +00:00
if ( USE_GCC )
2021-04-17 22:29:55 +00:00
list ( APPEND DEFAULT_WARNINGS -Wno-stringop-truncation -Wno-stringop-overflow )
2020-11-21 18:29:06 +00:00
endif ( )
2014-12-20 12:22:54 +00:00
# -Wstrict-aliasing=n: to fix one day aliasing issue. n=1/2/3
2016-07-28 08:35:21 +00:00
if ( USE_ICC )
2021-04-17 22:29:55 +00:00
set ( AGGRESSIVE_WARNING -Wstrict-aliasing )
2021-08-04 05:43:25 +00:00
elseif ( NOT MSVC )
2021-04-17 22:29:55 +00:00
set ( AGGRESSIVE_WARNING -Wstrict-aliasing -Wstrict-overflow=1 )
2016-07-28 08:35:21 +00:00
endif ( )
2014-07-14 11:58:06 +00:00
2014-07-12 14:04:57 +00:00
if ( USE_CLANG )
2021-07-04 05:24:21 +00:00
# -Wno-deprecated-register: glib issue...
2021-04-17 22:29:55 +00:00
list ( APPEND DEFAULT_WARNINGS -Wno-deprecated-register -Wno-c++14-extensions )
2014-07-12 14:04:57 +00:00
endif ( )
2016-12-10 21:51:21 +00:00
if ( USE_PGO_GENERATE OR USE_PGO_OPTIMIZE )
2021-04-17 22:29:55 +00:00
add_compile_options ( "-fprofile-dir=${CMAKE_SOURCE_DIR}/profile" )
2016-12-10 21:51:21 +00:00
endif ( )
2016-12-05 15:57:53 +00:00
if ( USE_PGO_GENERATE )
2021-04-17 22:29:55 +00:00
add_compile_options ( -fprofile-generate )
2016-12-05 15:57:53 +00:00
endif ( )
if ( USE_PGO_OPTIMIZE )
2021-04-17 22:29:55 +00:00
add_compile_options ( -fprofile-use )
2016-12-05 15:57:53 +00:00
endif ( )
2021-04-17 22:29:55 +00:00
list ( APPEND PCSX2_DEFS
" $ < $ < C O N F I G : D e b u g > : P C S X 2 _ D E V B U I L D ; P C S X 2 _ D E B U G ; _ D E B U G > "
" $ < $ < C O N F I G : D e v e l > : P C S X 2 _ D E V B U I L D ; _ D E V E L > " )
2014-07-11 21:33:09 +00:00
2014-07-12 17:57:26 +00:00
if ( USE_ASAN )
2021-04-17 22:29:55 +00:00
add_compile_options ( -fsanitize=address )
list ( APPEND PCSX2_DEFS ASAN_WORKAROUND )
2014-07-12 17:57:26 +00:00
endif ( )
2021-04-17 22:29:55 +00:00
if ( USE_CLANG AND TIMETRACE )
add_compile_options ( -ftime-trace )
2015-08-08 13:25:17 +00:00
endif ( )
2021-04-17 22:29:55 +00:00
set ( PCSX2_WARNINGS ${ DEFAULT_WARNINGS } ${ AGGRESSIVE_WARNING } )
2015-11-14 08:47:29 +00:00
2014-07-05 12:54:56 +00:00
if ( CMAKE_BUILD_STRIP )
2021-04-17 22:29:55 +00:00
add_link_options ( -s )
2014-07-05 13:08:39 +00:00
endif ( )
2014-12-21 09:46:33 +00:00
2021-08-15 06:54:37 +00:00
# Enable special stuff for CI builds
2021-08-28 04:27:59 +00:00
if ( "$ENV{CI}" STREQUAL "true" )
2021-08-15 06:54:37 +00:00
list ( APPEND PCSX2_DEFS PCSX2_CI )
endif ( )
2020-05-24 06:19:47 +00:00
#-------------------------------------------------------------------------------
# MacOS-specific things
#-------------------------------------------------------------------------------
set ( CMAKE_OSX_DEPLOYMENT_TARGET 10.9 )
2021-04-17 22:29:55 +00:00
if ( APPLE AND ${ CMAKE_OSX_DEPLOYMENT_TARGET } VERSION_LESS 10.14 AND NOT ${ CMAKE_CXX_COMPILER_VERSION } VERSION_LESS 10 )
2021-07-04 05:24:21 +00:00
# Older versions of the macOS stdlib don't have operator new(size_t, align_val_t)
# Disable use of them with this flag
# Not great, but also no worse that what we were getting before we turned on C++17
2021-04-17 22:29:55 +00:00
add_compile_options ( -fno-aligned-allocation )
2020-10-22 01:43:25 +00:00
endif ( )
2020-05-24 06:19:47 +00:00
# CMake defaults the suffix for modules to .so on macOS but wx tells us that the
# extension is .dylib (so that's what we search for)
if ( APPLE )
2021-07-04 05:24:21 +00:00
set ( CMAKE_SHARED_MODULE_SUFFIX ".dylib" )
2020-05-24 06:19:47 +00:00
endif ( )
if ( CMAKE_SYSTEM_NAME MATCHES "Darwin" )
2021-07-04 05:24:21 +00:00
if ( NOT OSX_USE_DEFAULT_SEARCH_PATH )
# Hack up the path to prioritize the path to built-in OS libraries to
# increase the chance of not depending on a bunch of copies of them
# installed by MacPorts, Fink, Homebrew, etc, and ending up copying
# them into the bundle. Since we depend on libraries which are not
# part of OS X (wx, etc.), however, don't remove the default path
# entirely. This is still kinda evil, since it defeats the user's
# path settings...
# See http://www.cmake.org/cmake/help/v3.0/command/find_program.html
list ( APPEND CMAKE_PREFIX_PATH "/usr" )
endif ( )
2021-04-17 22:29:55 +00:00
add_link_options ( -Wl,-dead_strip,-dead_strip_dylibs )
2020-11-27 15:57:28 +00:00
endif ( )