Commit Graph

733 Commits

Author SHA1 Message Date
ssdsnake 1aa8a4d46f DolphinTool: CLI utility interface and disc image tools 2021-12-03 15:40:19 -06:00
OatmealDome 2209dc0355 MoltenVK: Use an external project instead of a pre-compiled dylib
Also, update MoltenVK to match Vulkan SDK 1.2.189.
2021-11-13 11:43:23 -08:00
Scott Mansell b997048cfe
Merge pull request #10142 from aldelaro5/gdb-stub-rework
Rework the entire logic of the GDB stub
2021-10-24 01:51:29 +13:00
aldelaro5 94a0f416eb GDBStub: remove the cmake option and the ifdefs 2021-10-21 08:26:42 -04:00
ooshlablu fa6821aeb0 Enable deb package generation with cpack 2021-10-16 09:15:22 -04:00
nonoteal 90437d1574 Change how FFmpeg is imported for Apple computers.
Imports Apple libraries and also pulls swresample in, so when compiling Dolphin doesn't throw undefined symbols.
2021-10-06 18:11:32 -10:00
OatmealDome e5a80995dc Bump minimum macOS to 10.13 High Sierra 2021-08-17 16:27:22 -04:00
Bonta 44aaf108d1 Externals: Integrate mGBA as a submodule 2021-07-13 16:39:29 +02:00
Skyler Saleh 12c439860d Apple M1: Only add x86 compile flags to x86 builds
- Removed -mssse3 flag from arm64 builds
- Removed -march=core2 from arm64 builds
2021-05-22 15:25:18 -07:00
Skyler Saleh 948764d37b Apple M1: Build, Analytics, and Memory Management
Analytics:
- Incorporated fix to allow the full set of analytics that was recommended by
  spotlightishere

BuildMacOSUniversalBinary:
- The x86_64 slice for a universal binary is now built for 10.12
- The universal binary build script now can be configured though command line
  options instead of modifying the script itself.
- os.system calls were replaced with equivalent subprocess calls
- Formatting was reworked to be more PEP 8 compliant
- The script was refactored to make it more modular
- The com.apple.security.cs.disable-library-validation entitlement was removed

Memory Management:
- Changed the JITPageWrite*Execute*() functions to incorporate support for
  nesting

Other:
- Fixed several small lint errors
- Fixed doc and formatting mistakes
- Several small refactors to make things clearer
2021-05-22 15:25:17 -07:00
Skyler Saleh 4ecb3084b7 Apple M1 Support for MacOS
This commit adds support for compiling Dolphin for ARM on MacOS so that it can
run natively on the M1 processors without running through Rosseta2 emulation
providing a 30-50% performance speedup and less hitches from Rosseta2.

It consists of several key changes:

- Adding support for W^X allocation(MAP_JIT) for the ARM JIT
- Adding the machine context and config info to identify the M1 processor
- Additions to the build system and docs to support building universal binaries
- Adding code signing entitlements to access the MAP_JIT functionality
- Updating the MoltenVK libvulkan.dylib to a newer version with M1 support
2021-05-22 15:25:17 -07:00
Léo Lam ae9ac510e2
CMake: Do not enable LTO by default for MSVC
LTO is supposed to be enabled by default for VS Release builds
according to the VS prop files but a build log from JMC reveals
that /GL and /LTCG are not actually passed to cl.exe/link.exe
for some reason...

LTO also leads to *extremely* and unacceptably slow build times
when using link.exe, so let's disable it by default to actually
match the project files.
2021-04-27 12:54:18 +02:00
Léo Lam 20d00dfc79
CMake: Add missing MSVC optimization flags to match VS project props 2021-04-27 12:54:18 +02:00
Léo Lam c69747c7fb
CMake: Fix CMAKE_RUNTIME_OUTPUT_DIRECTORY being ignored in UnitTests
CMAKE_RUNTIME_OUTPUT_DIRECTORY_<mode> overrode CMAKE_RUNTIME_OUTPUT_DIRECTORY.

It's just unnecessary and it broke UnitTests's custom output directory
2021-04-27 12:54:18 +02:00
Léo Lam dcf3ca0f89
CMake: Force gtest to link CRT dynamically to avoid runtime mismatches
Required to fix unit test builds for Windows+MSVC+CMake.

For more information, see:

23ef29555e/googletest/README.md (visual-studio-dynamic-vs-static-runtimes)
2021-04-27 12:54:18 +02:00
Léo Lam 18174d3ed6
Merge pull request #9649 from leoetlino/cmake-auto-update-track
Make it possible to enable auto-updates by default with CMake builds
2021-04-24 19:44:51 +02:00
JosJuice 91669c25fe
Merge pull request #9650 from leoetlino/consistent-build-binary-dirs
Put x86_64 Windows binaries in Binary/x64 for consistency with ARM64
2021-04-24 19:22:05 +02:00
Florent Castelli 6910fab63f
cmake: Replace /Zi with /Z7 for sccache support
Also allows better parallelization since there's no contention on a PDB
file with compiling.
2021-04-24 17:59:34 +02:00
Léo Lam a7a69ecd2e
Put x86_64 Windows binaries in Binary/x64 for consistency with ARM64
...and with our existing Visual Studio project files and
buildbot config.
2021-04-17 21:33:07 +02:00
Léo Lam 5f355690e0
Make it possible to enable auto-updates by default with CMake builds
This adds a CMake option (DOLPHIN_DEFAULT_UPDATE_TRACK) to allow
configuring SCM_UPDATE_TRACK_STR. This is needed to enable auto-updates
in Windows CMake builds by default.
2021-04-17 19:45:43 +02:00
Skyler Saleh b2d5eea20c Build: Fix -fno-strict-aliasing on Xcode builds
Xcode is configured by default to turn on the strict aliasing optimization
through a separate project setting. This would cause the compiler to be called
with both -fno-strict-aliasing and -fstrict-aliasing. This change turns off
that project setting causing only the -fno-strict-aliasing flag to be provided
to the compiler.
2021-04-10 21:28:10 -07:00
Skyler Saleh b0d91a5399 Build: Check for zstd headers
Modify the CMakeLists.txt so that it doesn't try to use a shared zstd library
that doesn't have header files. This was a support issue on Macs because
homebrew was installing headerless zstd libraries with Qt.
2021-04-02 12:05:12 -07:00
Dentomologist 7eaa98d461 CMake: Fix unused compiler flag warning
Add a check to define FMT_EXCEPTIONS = 0 when compiling on MacOS.

Replaces -fno-objc-exceptions, which also disabled fmt exceptions but
generated warnings when compiling c++ files.
2021-03-16 13:11:36 -07:00
JosJuice 2cb3f663bc CMake: Include WIL headers
MSBuild does this, so CMake should too. Fixes a Windows build error.
2021-03-04 10:26:31 +01:00
Norbert Lange d4b293e969 Simplify macro guards for HAVE_XRANDR 2021-02-22 14:32:53 +01:00
Léo Lam eafb9de047
Merge pull request #9323 from waddlesplash/haiku
Rehabilitate Haiku support.
2021-01-05 16:09:43 +01:00
waddlesplash 2df11d3911 Rehabilitate Haiku support. 2021-01-02 16:54:24 -05:00
Léo Lam 0aadb9fd7b
Build the gdbstub by default
While the gdbstub is somewhat broken at the moment, building it by
default should keep us from breaking the build (which has happened
several times in the past: #2614, #5904, #8262).

It isn't very intrusive and it does nothing unless it is enabled
in the config file.
2020-12-25 01:21:36 +01:00
C.W. Betts 1100a31407 CMake: Apple Silicon detection
CMake's CMAKE_SYSTEM_PROCESSOR call returns "arm64" on Apple Silicon. This patch makes sure that arm64 and aarch64 are treated as the same architecture.
2020-12-24 14:34:04 -07:00
Ryan Burns aefbf9c445 Exclude Discord RPC lib from installation
This vendored library does not need to be installed,
as it is statically linked in.
2020-12-02 19:23:28 -08:00
Léo Lam 5d9eb8f6ce
Merge pull request #9271 from leoetlino/warnings
Fix several warnings and only enable extra warnings for our own code
2020-11-22 02:04:53 +01:00
Léo Lam f53a7a2b66
CMake: Pass various /Zc flags to MSVC for consistency with Base.props
969ea6e4f5

Fixes non-conformant handling of __VA_ARGS__.
2020-11-21 14:43:26 +01:00
Léo Lam ade9f92a63
Enable extra warnings in Source CMakeLists, not in root CMakeLists
Having extra warnings enabled for everything including external
libraries produces an overwhelming amount of warnings in code that
isn't even part of our codebase.

Move the various warning flags to Source/CMakeLists.txt to get rid
of those useless warnings.

Note that the Source CMakeLists.txt is already where the MSVC warnings
are defined, so this commit improves consistency as well.
2020-11-21 00:59:17 +01:00
JosJuice 56e68e7b72 CMake: Bump fmt version requirement to 7.1.0
We use make_args_checked, which was added in 7.1.0.
2020-11-16 13:06:20 +01:00
Lioncash 369a9e01dc Externals: Update fmt to 7.1.0
Updates fmt to the latest release from 6.1.2
2020-10-27 11:36:47 -04:00
Léo Lam 23c9179fb6
Merge pull request #9071 from orbea/cmake
cmake: Silence warnings.
2020-10-26 18:48:42 +01:00
iwubcode 02c3242078 CMake: Change "USE_VULKAN" to "HAS_VULKAN" 2020-10-24 13:48:51 -05:00
iwubcode 22b0d10568 CMake: Set HAS_OPENGL for every system other than arm64 2020-10-24 13:48:51 -05:00
mazes-80 f375ee72a2
CMake: Add option to enable/disable Vulkan video backend 2020-10-23 20:14:46 +02:00
James Sharpe 135cd390e7
Require zstd >= 1.4.0
<leoetlino: Dolphin fails to build with zstd 1.3.8.>
2020-10-21 21:52:59 +02:00
JosJuice cb14b65aad CMake: Fix build errors exposed by making common dependent on fmt 2020-10-19 14:36:09 +02:00
orbea 2bfbc4d79f cmake: Silence warnings. 2020-09-08 21:18:40 -07:00
Admiral H. Curtiss fdab9783c7 Externals: Add rangeset. 2020-08-24 19:31:32 +02:00
JosJuice c9edfa0eaa Replace Windows CMake lambda constexpr capture workaround
While manually capturing constexpr variables used in lambda
expressions does work, it's really easy to forget doing so since
we don't have a Windows CMake builder and the workaround isn't
necessary anywhere else. Fortunately, MSVC has a flag that fixes
the constexpr capture behavior, so let's use that instead.
2020-06-25 13:11:29 +02:00
Tillmann Karras 24eee74937 CMake: support using system-wide zstd library
CMake does not have native support for zstd yet.
2020-06-16 19:42:55 +01:00
tokumeiwokiboushimasu 6fb6d16f0a
Specify the system minizip's include directory
Without this, build fails on Fedora32.
2020-06-11 17:15:41 +09:00
JosJuice 2137fb7813 Externals: Add zstd
I had to rename Source/Common/Compiler.h because the VS build
confuses it with Externals/zstd/lib/common/compiler.h otherwise.
2020-05-13 20:53:10 +02:00
Pierre Bourdon 143131a6a1
cmake: add an option to control dependencies vendoring
Disable by default, to be used by distributions who care to try and
prefer system-wide libraries when available. It makes sense for us to
keep using vendored libs by default when possible to make it easier for
users to compile, but we should provide appropriate tools for distro to
figure out which dependencies they can share with the rest of the
system.
2020-05-10 09:34:14 +02:00
degasus 9fd1385733 Externals: Fix OpenAL include directory. 2020-04-29 13:07:51 +02:00
degasus 990acbb17d Externals: Fix ed25519 include path. 2020-04-29 12:55:42 +02:00
degasus ae2d567f59 Externals: Fix include path for picojson and discord 2020-04-29 11:45:59 +02:00
degasus 239cde8aea Externals: Alter the soundtouch include directory.
We must not provide the /Externals directory as global include directory.
Here, this yield a crash because of external minizip header and system library mismatch.

Soundtouch itself recormends to include it with <SoundTouch.h> and -I/usr/include/soundtouch, so this should fit better.
2020-04-29 11:30:26 +02:00
Techjar d5f356f937 Require minizip 2.0.0 or newer
Minizip 1.x is the old broken version, while 2.x is the newer fork we
use. Many distros ship the old version which is causing stack smashing
in RedumpVerifier, so we'll only use the shared lib if it's the newer
version.
2020-04-28 20:42:02 -04:00
degasus 9fd03cda9d Externals: Add libLZMA. 2020-04-24 15:18:09 +02:00
degasus 4385afdb0a Externals: Add bzip2. 2020-04-24 15:18:09 +02:00
Léo Lam 5db7add9c7
Merge pull request #8667 from Mystro256/master
Allow for some shared minizip/fmt
2020-03-15 16:25:11 +01:00
mazes-80 209db1f96c Build system: default to fmt shared library when available 2020-03-15 14:30:44 +01:00
Mystro256 9f12e0f5a9 Allow using shared minizip 2020-03-11 10:55:05 -04:00
spycrab 213a9adcff CMake: Fix building ARM64 on Windows 2020-02-12 12:29:31 +01:00
Connor McLaughlin ae6d3be449
Merge pull request #8530 from s-daveb/master
MacOS: Fixes configuration hang; bump MacOS SDK.
2020-01-13 20:21:08 +10:00
Stenzek 5a65031611 Add a Win32 NoGUI platform and project 2019-12-28 08:56:27 +10:00
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
Lioncash 7de2d1c9d6
CMakeLists: Don't dump LZO's includes into the top-level directory
Instead, we add the includes to the LZO target's interface. That way
only libraries that link it in can see them.
2018-04-13 07:39:09 -04:00
Lioncash 6a637cfc22
CMakeLists: Don't dump libpng's includes into the top-level directory
Instead, add the includes to the target, which only libraries that link it in can actually see.
2018-04-11 17:33:52 -04:00
Lioncash d63d0b5069
InputCommon/CMakeLists: Include evdev and udev includes on a by-target basis
Avoids including the evdev/udev includes in the top-level directory
2018-04-10 09:59:51 -04:00
Lioncash b9c872dbca
CMakeLists: Don't dump bochs' includes into the top-level directory
Instead add it to the target interface. This way, only libraries that
link in bochs will see its include directories.
2018-04-08 20:43:18 -04:00
Lioncash a4ba92c697
CMakeLists: Don't dump xxhash's includes into top-level directory scope
We already use a custom CMakeLists file for xxhash, so we can just make it's headers
public as part of its target interface.

This way, only libraries that link in the xxhash target will see its headers, as opposed
to every target under the top-level directory.
2018-04-06 10:41:58 -04:00
Lioncash b4e36bbd27
CMakeLists: Move build options to the top of the file
Makes the configurable aspects of the build more immediately discoverable
as opposed to needing to read down the entire file.
2018-04-05 08:27:49 -04:00
Lioncash 84ed6fd445
CMakeLists: Remove the LIBS variable
Now that we link all libraries in explicitly, the top-level LIBS variable can finally go.
2018-04-04 11:46:30 -04:00
Lioncash 8db4ab7dd6
CMakeLists: Remove iconv from the LIBS variable
Adjusts Common to use the ICONV_LIBRARIES variable directly and doesn't
append it to the LIBS variable.

After this, there's only one remaining usage where libraries are added
to the LIBS variable, after which it can be removed once the rest of
the targets are migrated off add_dolphin_library
2018-04-01 14:00:55 -04:00
Lioncash 677b9b717f
CMakeLists: Remove enet from the LIBS variable
All libraries that use enet already link it in explicitly. This reduces
the usages of the LIBS variable.
2018-04-01 11:18:08 -04:00
Lioncash eee32c030b
CMakeLists: Remove lzo from the LIBS variable and make linkage private
The only place this library is needed (core) is already linked in the core target.
Also make the linkage private to create linkage failures if the dependency isn't
explicitly linked in elsewhere where it should be.

Reduces the dependency on the LIBS variable.
2018-03-31 15:01:05 -04:00
Lioncash e93159e54a
CMakeLists: Link in system framework libraries explicitly on macOS
Makes our libraries explicitly link in which libraries they need.
This makes our dependencies explicit and removes the reliance on the
LIBS variable to contain the libraries that they need.
2018-03-30 16:14:10 -04:00
Lioncash b8a4ab23dd
InputCommon/CMakeLists: Link in ForceFeedback library explicitly on macOS
Makes an implicit dependency explicit. Also makes the macOS libraries link privately
as they aren't used in the exposed interface.
2018-03-29 11:53:50 -04:00
Lioncash b818cc682c VideoCommon/Vulkan: Explicitly link in xxhash
Lessens the dependency on the LIBS variable (and also makes the required
libraries explicit).
2018-03-28 17:03:16 -04:00
spycrab 4f63d7f204 Qt: Fix low-resolution icon 2018-03-27 17:32:45 +02:00
Pierre Bourdon f221fac02e cmake: check for optional libsystemd presence 2018-03-08 06:00:40 +00:00
Greg V be716a680f Do not link to libusbhid on FreeBSD/NetBSD
Both libusbhid (system library) and libhidapi (3rd party library)
provide a function called hid_init. Dolphin was being linked to both.

The WiimoteScannerHidapi constructor was calling hid_init without
arguments. libusbhid's hid_init expects one argument (a file path).
It was being called as if it was defined without arguments, which
resulted in a garbage path being passed in, and because of that,
the Qt GUI was failing to launch with the following error:
'dolphin-emu-qt2: @ : No such file or directory'
2018-02-05 00:46:59 +03:00
Greg Wicks c2dcb97d06 Android: Fix NDK r16b2 build 2017-11-07 11:02:27 -05:00
spycrab 28799bbe79 CMake: Build DolphinQt2 by default 2017-09-04 22:28:48 +02:00
spycrab fc4de1b872 CMake: Move DISABLE_WX to ENABLE_WX 2017-09-02 18:59:27 +02:00
Michael M fc306faad8 CMake: use miniupnpc target instead of global vars 2017-08-17 13:15:02 -07:00
Michael Maltese 18e70cdf91 Only build OpenAL on Windows 2017-06-27 00:06:14 -07:00
Michael Maltese 0fb742581a CMake: remove duplicated call to find OpenAL 2017-06-27 00:06:13 -07:00
Léo Lam b08201654e Externals: Add zeux/pugixml@38edf25
Along with VS boilerplate to get it to build on Windows.
2017-06-13 14:05:10 +02:00
Shawn Hoffman fffe2c0a2b cmake: enable same conformance-related flags as msbuild 2017-06-05 23:25:13 -07:00
shuffle2 192fec50b9 Merge pull request #5276 from ligfx/macosheadless
Add headless support on macOS
2017-06-05 20:49:02 -07:00
shuffle2 3443454ba2 Merge pull request #5271 from JosJuice/allow-aslr
Allow (but don't force) ASLR
2017-06-02 21:53:02 -07:00
Michael Maltese 34ad1eb547 Externals: remove PortAudio 2017-05-27 18:28:57 -07:00
Michael Maltese 812520cc65 Add cubeb@62871b2 to Externals/
Includes submodule sanitizers-cmake@f09151b
2017-05-27 18:28:56 -07:00
Michael Maltese 53acd25de4 Rename define HAVE_LIBAV->HAVE_FFMPEG 2017-05-26 00:53:58 -07:00
Michael Maltese d951d2e4c4 CMake: libav/ffmpeg cleanups
Use @Orphis's FindFFmpeg module from ppsspp:
2149d3db7f

From that commit:

> This new module should be able to handle both libraries in the regular
> paths and fallback to pkg-config.
> It is also able to find dynamic libraries, not just static libraries.
> It will generate imported targets with the name FFmpeg::<lib> that you
> can use in your scripts.
2017-05-26 00:53:58 -07:00
Michael Maltese be2f4466e3 CMake: move unittests target to UnitTests 2017-05-22 00:19:14 -07:00
JosJuice e019872d62 Remove no-pie build flags 2017-05-20 09:35:53 +02:00
JosJuice 4b4cf509f8 Remove code for only allocating low memory
This is unnecessary when we have position-independent code.
2017-05-20 09:35:53 +02:00
Matthew Parlane d20bb985ad Merge pull request #5369 from ligfx/cmakegtestnosystem
CMake: don't look for shared Google Test
2017-05-04 13:24:10 +12:00
Mat M f3052b7a15 Merge pull request #5318 from ligfx/cmakehidapi
CMake: clean up HIDAPI build
2017-05-03 19:54:06 -04:00
Michael Maltese cd7af32e0b CMake: gtest already propagates include directories 2017-05-03 16:22:14 -07:00
Michael Maltese 9ac94d0135 CMake: don't look for shared Google Test
Google Test recommends not using a pre-compiled system copy[1] and
Debian and Ubuntu no longer distribute compiled packages.

This removes an unhelpful line from the CMake log: "Could NOT find GTest
(missing: GTEST_LIBRARY GTEST_INCLUDE_DIR GTEST_MAIN_LIBRARY)."

[1]: https://github.com/google/googletest/blob/master/googletest/docs/FAQ.md#why-is-it-not-recommended-to-install-a-pre-compiled-copy-of-google-test-for-example-into-usrlocal
2017-05-03 15:29:29 -07:00
Michael Maltese 5230a8c996 CMake: only look for Bluez on Linux
Stops CMake from saying "BlueZ NOT found, disabling bluetooth support"
on other OSes. Windows, macOS, and Android support Bluetooth using other
libraries. I'm not sure if non-Linux, non-Android Unices (like FreeBSD)
need another message?
2017-05-03 15:15:47 -07:00
Michael Maltese 655ab9b4e2 CMake: clean up HIDAPI build 2017-04-27 02:41:00 -07:00