Commit Graph

572 Commits

Author SHA1 Message Date
S David 21f42fafb7 MacOS: Fixes configuration hang; bump MacOS SDK.
Removed conditional use of std::mutex instead of std::shared_mutex on MacOS.

Because MacOS < 10.12 did not support std::shared_mutex, a previous commit
naïvely substituted std::mutex, which does not have the same behavior.

Reverses PR #8273, which substitues std::mutex for std::shared_mutex on
macOS, and results in several bugs that seem to only affect MacOS

- https://bugs.dolphin-emu.org/issues/11919
- https://bugs.dolphin-emu.org/issues/11842
- https://bugs.dolphin-emu.org/issues/11845

This change eliminates conditional code for MacOS in the core configuration
layer code and enables the use of modern language features that are more
secure and thread-safe.
2019-12-22 00:49:17 -05:00
Adrien Guinet 7f74707ad6 cmake: set OpenGL_GL_PREFERENCE as a cached variable that can be modified via the command line
This allows the user to set this to LEGACY. This can be useful for
people under Linux using optirun/primusrun with "old" nvidia drivers
that don't support GLVND properly.
2019-11-03 13:16:42 +01:00
Jordan Woyak d2c1dbef16 CMake: Enable SDL by default on macOS. 2019-10-14 20:51:08 -05:00
Lioncash d5d60c6e64
Externals: Add libfmt 5.3.0 to externals
Allows us to migrate off of printf specifiers and have more type-safe
formatting facilities. It also allows for custom type support as well.
fmt is also on track to have part of it standardized within C++2a, so
this will also lessen the transitional work necessary later on by
allowing new code to use it.

This simply adds the library but doesn't do anything with it yet.
2019-06-10 15:26:43 -04:00
spycrab d15f5936b3 CMake: Output Windows binaries into Binary 2019-05-15 19:17:03 +02:00
spycrab ec734065db
Merge pull request #8087 from spycrab/cmake_win2019
Support CMake on Windows
2019-05-14 21:07:26 +02:00
spycrab 53ef641da4 CMake: Add MSVC support 2019-05-12 00:44:00 +02:00
Léo Lam 123bbbca2c
Merge pull request #8073 from vladfi1/re-frame-mw
Bring back MemoryWatcher, but without CoreTiming
2019-05-10 14:55:27 +02:00
Vlad Firoiu f4d950f4e2 Revert "Core: Remove MemoryWatcher"
This reverts commit 0c02e77eee.
2019-05-05 21:43:45 +01:00
Léo Lam 9133e8f1be Require CMake 3.10 and use CMAKE_CXX_STANDARD
Removes the need to add -std= flags manually. CMake 3.10 is available
in Ubuntu 18.04, which is the oldest LTS version we support.
2019-05-05 00:13:13 +02:00
Léo Lam c40ae4508d Bump minimum GCC version to 7.0
GCC 7.0 is the first version with full support for C++17.
Also fixes some bugs like https://stackoverflow.com/questions/32097759
2019-05-04 23:04:18 +02:00
Techjar 0c02e77eee Core: Remove MemoryWatcher
MemoryWatcher only works on Linux and affects emulation determinism due
to scheduling additional events, which causes NetPlay to desync.
Considering that this interface is a rather specialized use case, the
communication with it is kinda crappy *and* it's affecting emulation, I
think it's best to just axe it and come up with a better implementation
of the functionality.
2019-04-28 06:22:27 -04:00
Stenzek eabde77892 CMake: Add an ENABLE_NOGUI option 2019-02-15 18:40:46 +10:00
LAGonauta 7b9375875c Added FreeSurround to Externals
Also cleaned up its source code to support only 5.1 and 7.1 setups.
2019-02-13 22:52:39 -02:00
spycrab 6a6fc56865 Externals/ed25519: Add CMakeLists.txt 2019-02-06 20:50:09 +01:00
spycrab 4badc961d0 Qt: Bump minimum macOS version required 2019-01-25 13:18:07 +01:00
orbea 1327772173 cmake: Conditionally build the unit tests.
This allows to skip building the unit tests and avoids the dependency
on gtest when doing so.
2018-12-08 14:07:06 -08:00
Stenzek cfdbd45105 Externals: Add imgui 2018-11-26 20:40:34 +10:00
Pierre Bourdon e6b2758ab4
Merge pull request #7477 from Zexaron/ext-minizip
Externals: Add a stripped down version of minizip
2018-11-17 22:23:02 +01:00
Stenzek c95802afeb CMake: Make X11 and EGL optional 2018-10-20 21:11:34 +10:00
Stenzek 0559311f92 GLContext: Runtime selection of EGL/GLX on Linux 2018-10-20 21:11:34 +10:00
Stenzek 74b82bab3b GLInterface: Drop Haiku support 2018-10-20 21:11:33 +10:00
Pierre Bourdon 8e26d33133 Externals: Add a stripped down version of minizip. 2018-10-09 14:27:53 +02:00
Léo Lam 80c402e1ad
Merge pull request #7161 from lioncash/disasm
CMake: Only link in Bochs on x86 platforms
2018-09-16 15:16:00 +02:00
orbea 227807df36 cmake: Support system cubeb builds. 2018-08-08 07:36:19 -07:00
Lioncash 7f8cdbb2a4
CMake: Only link in Bochs on x86 platforms
Bochs' disassembler is only for disassembling x86 code. On non-x86
platforms it doesn't really make sense to build and link this in.
2018-07-12 16:44:17 -04:00
Markus Wick 196bf8dbe2
Merge pull request #7223 from lioncash/cmake
CMakeLists: Minor changes
2018-07-12 14:51:19 +02:00
spycrab 13ba24c5a6 Move DolphinQt2 to DolphinQt 2018-07-07 00:48:38 +02:00
Lioncash 0a4c0a9b4b
CMakeLists: Replace tab indentation with spaces
We use spaces everywhere else in the CMake scripts, so this just makes
indentation consistent.
2018-07-06 13:24:22 -04:00
Lioncash a7cf1548b0
CMakeLists: Remove trailing space
While we're in the same area, amend the newlining of the if block
2018-07-06 13:23:39 -04:00
Lioncash 23bc463ec9
CMakeLists: Uppercase "string" in deployment target setting for macOS
The documentation for setting cache entries dicates that the type must
either be BOOL, FILEPATH, PATH, STRING, or INTERNAL (with those exact
casings). Also, given we properly case it in other places, this is just
consistent.
2018-07-06 13:20:42 -04:00
Lioncash 904057e611
CMakeLists: Use lowercase for commands
The general convention for CMake is to use lowercase for commands, and
given we also follow that convention through most CMake files, this just
makes it more consistent.
2018-07-06 13:13:23 -04:00
David Korth 0149d22385 Removed some more double-expansions of CMAKE_SYSTEM_NAME. 2018-07-02 13:01:16 -04:00
David Korth 72458c1cff CMake: Use thin archives on Linux.
Thin archives contain pathnames pointing to the object files instead of
full copies of the object files. This significantly reduces the disk
usage when building Dolphin.

Size of *.a files: (gcc-8.1.0, Linux amd64)
- Before: 83,876 KB
- After:   1,876 KB
- Diff:  -82,000 KB

The resulting binaries are the same as before.

A similar change was implemented in the Linux kernel v4.8:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=a5967db9af51a84f5e181600954714a9e4c69f1f
2018-07-02 12:59:09 -04:00
spycrab 44b22c90df Remove DolphinWX 2018-06-26 20:50:39 +02:00
Pierre Bourdon 2cfdf89898
Merge pull request #6983 from yourWaifu/add-discord-rpc-support
Add Discord Rich Presence support
2018-06-25 00:06:27 +02:00
yourWaifu 63f03455f3 Discord Rich Presence CMake integration
I have no idea if this works or not. Hopefully the build bot will tell me.
2018-06-19 22:43:03 -04:00
Tilka 9bf5ad1f0e
Merge pull request #7021 from akien-mga/cmake-pugixml
CMake: Fix case in FindPugixml resulting in false negative
2018-05-30 09:02:44 +01:00
Rémi Verschelde d37ccc844e CMake: Fix case in FindPugixml resulting in false negative
As mentioned in GH-6652.
2018-05-30 09:12:24 +02:00
Rémi Verschelde c36695175f CMake: Increase minimum GCC version to 6.0
Dolphin uses nested namespaces from the C++17 standard,
which are only supported in GCC 6.0 and later.

See comments in GH-6866 for details.
2018-05-30 09:02:14 +02:00
spycrab 94a4c05640 CMakeLists: Remove "Enabling GUI" from the "Wx enabled" message 2018-05-20 17:12:27 +02:00
Emmanuel Gil Peyrot c51ae9c62a Remove SOIL altogether from the project. 2018-05-20 13:44:42 +02:00
degasus be3ce97560 CMake: Prefer GLVND for OpenGL.
We have to decide if we want to link to
libGL.so -- legacy
libOpenGL.so -- GLVND

As we use xxxGetProcAddress, we don't care about feature
levels of the linked library, so we're very fine with the
new way.
2018-05-09 09:08:22 +02:00
Tillmann Karras dd6a505380 CMake: update and simplify VTune integration 2018-04-21 18:14:02 +01:00
spycrab 694df74b0b Qt/Wx: Turn Qt into the default interface 2018-04-21 17:54:00 +02:00
Léo Lam f4ec261719 CMake: Use system-wide pugixml if available
Makes it possible to use a system-wide pugixml instead of always
using Externals. This is nicer for distro packagers.
2018-04-15 18:57:39 +02:00
Lioncash b31281527a
CMakeLists: Define an OProfile target and use it
Allows us to bring includes and relevant libraries into scope by explicitly declaring linkage against the target
as opposed to using a variable. Also removes the dumping of OProfile includes into the top-level directory.
2018-04-13 19:35:17 -04:00
Léo Lam b1bbd8a50e
Merge pull request #6625 from lioncash/evdev-udev
InputCommon/CMakeLists: Include evdev and udev includes on a by-target basis
2018-04-13 20:50:31 +02:00
Léo Lam 48242f1521
Merge pull request #6638 from lioncash/lzo
CMakeLists: Don't dump LZO's includes into the top-level directory
2018-04-13 20:28:44 +02:00
Lioncash 2851c7e5ee
CMakeLists: Don't dump zlib's includes into the top-level directory 2018-04-13 08:32:48 -04:00