Commit Graph

811 Commits

Author SHA1 Message Date
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 6036680376
hidapi: Use LIBUSB_LIBRARIES to link to libusb
Because we have an old-style find script that does not define a proper
CMake target for libusb, we need to use ${LIBUSB_LIBRARIES}
rather than "usb".

Ideally, we would fix the find script to define a target. However,
this issue breaks the fifoci-ogl-lin-mesa builder and I'd prefer it
to be fixed sooner rather than later.
2021-02-11 21:58:15 +01:00
Sergei Trofimovich 8cfc41fb3b Externals/rangeset: use qualified 'size_t'
On clang-11 build failed as:

```
[ 42%] Building CXX object Source/Core/Core/CMakeFiles/core.dir/PowerPC/Jit64/Jit.cpp.o
In file included from ../../../../Source/Core/Core/PowerPC/Jit64/Jit.cpp:5:
In file included from ../../../../Source/Core/Core/PowerPC/Jit64/Jit.h:21:
../../../../Externals/rangeset/include/rangeset/rangesizeset.h:325:3: error: unknown type name 'size_t'; did you mean 'std::size_t'?
  size_t size() const {
  ^
```

Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
2021-01-28 20:20:43 +00:00
Shawn Hoffman 500a694ca8 msbuild: bundle all dolphin "core" code into single library 2021-01-27 14:29:49 -08:00
Léo Lam 9069ad6cce
Merge pull request #9420 from MerryMage/ext
Externals: Link against required libraries
2021-01-05 15:15:15 +01:00
MerryMage 14c03388b3 Externals: Link against required libraries
* curl requires zlib
* hidapi when not using libudev requires libusb
2021-01-03 14:26:38 +00:00
Jordan Woyak 1699afff87 CMake: Update cmake_minimum_required calls using versions less than 2.8.12. CMake warns support will be removed in a future version. 2020-12-27 14:51:04 -06:00
Admiral H. Curtiss 3d8736f9d7 Update bundled libpng to version 1.6.37 2020-12-13 02:50:12 +01:00
Dentomologist 6136ac82b9 Fix liblzma config on macOS
/Externals/liblzma/config.h #defines HAVE_PTHREAD_CONDATTR_SETCLOCK
which results in /Externals/liblzma/tuklib/mythread.h calling the
function pthread_condattr_setclock.  This function doesn't exist in
macOS 10.12+, which are the only macOS versions Dolphin supports, but
inserting an include guard makes macOS use an alternate function.
2020-11-28 05:51:45 -08:00
Noah Santschi-Cooney 4d26f6ad95
Fixed non-UTF8 chars in PeakFinder.cpp 2020-11-18 19:50:40 +00: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 08f9ed043b
Merge pull request #8846 from nyanpasu64/fix-cmake-zlib
Fix Windows CMake builds with shared zlib
2020-10-22 01:11:27 +02:00
LC 5722c680a4
Merge pull request #8006 from JosJuice/qt-rtl
DolphinQt: Enable RTL layout
2020-10-19 07:46:40 -04:00
Stenzek 9649d13462 Externals: Update MoltenVK to v1.1 2020-10-02 22:47:51 +10:00
Admiral H. Curtiss fdab9783c7 Externals: Add rangeset. 2020-08-24 19:31:32 +02:00
Shawn Hoffman 03a263db20 msbuild: fixup linking of discord-rpc 2020-08-22 16:17:50 -07:00
Shawn Hoffman 2f47f486af msbuild: re-enable standalone vcxproj processing 2020-08-22 16:17:50 -07:00
Shawn Hoffman 390f509bbf windows: disable C4200 directly in libusb.h 2020-08-22 16:17:50 -07:00
Shawn Hoffman 7705f7c1a3 msbuild: refactor stuff out of project files (for externals) 2020-08-22 16:17:50 -07:00
Admiral H. Curtiss f859da112e Update Windows build to use Qt 5.15.0. 2020-08-22 20:08:38 +02:00
Shawn Hoffman adf22c0728 vs/msbuild: fix the build generating log files in source dirs 2020-08-16 00:01:22 -07:00
R2DLiu 7bf9feae0f For windows cmake builds, build curl with schannel/winssl capability 2020-07-28 17:40:41 -04:00
nyanpasu64 1a2b6ca2d6 Fix Windows CMake builds with shared zlib
On Linux, if shared zlib is present, zlib.h is always available and -lz
links to zlib, even if you don't run find_package(ZLIB).

For some reason I have zlib installed on Windows (possibly from vcpkg),
so find_package(ZLIB) succeeds and ZLIB_FOUND is true.
When Dolphin uses shared zlib on Windows, the problem is that zlib.h
is not in the default include path, and the CMake target is called
ZLIB::ZLIB and there's neither a target nor a library called z.

However, both find_package(ZLIB) and add_subdirectory(Externals/zlib)
create a target called ZLIB::ZLIB, so I'll switch to that instead.
Hopefully this change doesn't break anyone's build.
2020-07-15 23:25:18 -07:00
Tillmann Karras 506ae2f6b1 Externals/zstd: fix CMake project name 2020-06-16 19:42:55 +01:00
JosJuice 19ce87fa63 Externals: Update msgfmt.exe to 0.20.2
Needed for the next commit. Downloaded from
https://mlocati.github.io/articles/gettext-iconv-windows.html
2020-06-02 22:23:05 +02:00
orbea ba2d04b793 Externals: Fix build failures with the newer glslang.
v2: Don't include glslang project wide.
2020-05-30 18:54:21 -07:00
orbea 690dee3533 Externals: Update glslang.
This updates glslang to commit 4fc7a33910fb8e40b970d160e1b38ab3f67fe0f3
which is the current version listed in the known_good.json file for the
version 1.2.131.2 of the Vulkan-ValidationLayers repo.
2020-05-30 18:06:03 -07:00
Tillmann Karras 8b23170f13 Externals/licenses: add bzip2 link and update googletest 2020-05-18 00:15:39 +01:00
JosJuice d7389dc287 Add bzip2, liblzma, zstd to Externals/licenses.md 2020-05-13 21:08:08 +02: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
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
Stenzek 52d4756679 Externals: Update MoltenVK to SDK version 1.2.131.2 2020-04-07 18:53:26 +10:00
Léo Lam 5038ae384b
Merge pull request #8427 from CookiePLMonster/wil-submodule
Add Windows Implementation Libraries as an external library
2020-03-15 23:28:53 +01:00
spycrab 6a3bd259a7 Update to Qt 5.14.1 2020-02-09 22:30:57 +01:00
Silent f52a0aba24
Add Windows Implementation Libraries 2020-02-09 19:01:44 +01:00
Lioncash 1873b7a398 Externals: Update fmt to 6.1.2 2020-02-04 14:50:46 -05:00
Stenzek 2a18d1beb4 Externals: Update Qt submodule for ARM64 Windows binaries 2020-01-12 15:23:32 +10:00
Stenzek 6fcb1c6c46 Add an ARM64 target to Visual Studio projects 2019-12-28 19:20:41 +10:00
Shawn Hoffman 392fc1dcdc update the rapidjson used by discord-rpc to current master dfbe1db9da455552f7a9ad5d2aea17dd9d832ac1 2019-12-18 22:20:11 -08:00
Shawn Hoffman e3a30fbdf2 update minilzo to 2.10 2019-12-18 22:20:11 -08:00
Stenzek dd23a1ee79 Update VS projects/solutions to VS2019 2019-11-30 13:42:52 +10:00
spycrab ec526fee56 Externals/Qt: Update to 5.13.1 2019-10-13 16:06:56 +02:00
Connor McLaughlin 19ed64122c
Merge pull request #8371 from stenzek/vulkan-headers
Externals: Update Vulkan headers to 1.1.121.2
2019-10-07 10:46:03 +10:00
Stenzek 6ae1ddabe1 Externals: Update Vulkan headers to 1.1.121.2 2019-10-01 01:30:51 +10:00
Michael M 0f3695a14b Remove XAudio2
Audio on Windows is provided by the cubeb (shared mode) and WASAPI
(exclusive mode) backends, both of which exhibit lower latency.
2019-09-14 14:08:13 -07:00
Stenzek 9a2075f7fa MoltenVK: Update to Vulkan SDK version 1.1.108.0 2019-06-24 13:21:17 +10: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
Lioncash 3053fea160 Externals: Update mbedtls to 2.16.1
On a few of our buildbot instances, we get warnings about the usage of
deprecated functions. We should correct these, especially if we're
delegating to system versions of the libraries if they're available.
However, in order to do that, we need to update our library variant from
2.1.1 so that the non-deprecated alternatives are actually available.
2019-06-07 21:56:28 -04:00
Alex James 24226419ed zlib/CMakeLists: Fix check for unistd.h
The CMakeLists file for the static zlib checks for presence of
unistd.h, but it doesn't properly define HAVE_UNISTD_H if it's found.

This change adds the necessary preprocessor definition if unistd.h is
found.

Upstream zlib handles this with by configuring zconf.h with CMake:
cacf7f1d4e/zconf.h.cmakein (L11)

Dolphin's static version of zlib doesn't do this, which is why setting
Z_HAVE_UNISTD_H in zlib's CMakeLists.txt isn't enough.

This probably wasn't noticed since because most *nix systems will use
the shared zlib. Force use of the static zlib (comment out
find_package(ZLIB) in the root CMakeLists.txt) and you'll see implicit
function declaration warnings during its compilation.
2019-05-29 15:03:37 +02:00
Léo Lam 054b1172e3 Externals/libusb: Set policy ISO_ALWAYS_START_ASAP for libusbK
In some cases, this is required to avoid eventually getting a
USBD_STATUS_BAD_START_FRAME error back from the Windows USB stack.

This makes the libusbK code match the behaviour of the Linux backend.

It appears that the libusbK backend tried to get this behaviour by
setting StartFrame to 0. However, libusbK docs state that:

"Specifing 0 for KISO_CONTEXT::StartFrame (start transfer ASAP) is
restricted to the first transaction on a newly opened or reset pipe."
2019-05-27 20:09:55 +02:00
Léo Lam 20770fe22b Externals/libusb: Bounds check the interface number 2019-05-27 20:09:55 +02:00
Léo Lam 99b340a6d0 Externals/libusb: Mask index for control transfers correctly 2019-05-27 20:09:55 +02:00
Léo Lam 8ea197357c Externals: remove unused libusb files and add them to gitignore
This prevents them from being re-added in the future whenever someone
updates libusb. Also removes the need to manually remove those files.
2019-05-27 20:09:55 +02:00
Léo Lam 1b9617c85c Externals: Update libusb to 1.0.23-rc1
Now has support for isochronous transfers in the WinUSB backend,
which may or may not work better than the UsbDk backend.
2019-05-27 20:09:55 +02:00
spycrab d4633ceded Externals/Qt: Update to latest commit 2019-05-08 20:58:44 +02:00
spycrab 51e025f6dc Externals/minizip: Link against zlib 2019-05-08 20:58:16 +02:00
spycrab c2903f8b4e Externals/libpng: Link against zlib 2019-05-08 20:57:34 +02:00
Stenzek f8c088a1fb Externals: Update imgui to 1.70 WIP 2019-04-19 15:13:05 +10:00
Stenzek 565e604679 Externals: Update MoltenVK to SDK version 1.1.101.0 2019-03-06 22:00:22 +10:00
Stenzek a4c64e7964 Externals: Set target platform to 10.0.17134 for FreeSurround 2019-02-14 20:42:06 +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
Yohann Martel 31bb0327e5 update windows 10 sdk from 10.0.15063.0 to 10.0.17134.0 for imgui 2018-12-21 10:40:58 -05:00
Stenzek e3708ea8c3 Externals: Add MoltenVK binary, copy to package on macOS 2018-12-01 14:35:45 +10:00
Pierre Bourdon ad890d5c5b
Merge pull request #7593 from stenzek/externals-imgui
Externals: Add imgui
2018-11-29 03:32:47 +01:00
Yohann Martel ca4389bbbe update windows 10 sdk from 10.0.15063.0 to 10.0.17134.0 for minizip 2018-11-28 19:18:46 -05: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
Tillmann Karras 97cc9894e4 Update to Visual Studio's default Windows SDK 2018-10-20 00:53:08 +01:00
Tillmann Karras 636ccdfc2b Externals: update discord-rpc for readlink fix 2018-10-09 23:50:26 +01:00
Pierre Bourdon 8e26d33133 Externals: Add a stripped down version of minizip. 2018-10-09 14:27:53 +02:00
Shawn Hoffman 3b3551f040 fix debug build on recent VS releases of msvc 2018-09-29 22:32:36 -07:00
Léo Lam a482299df6 Externals/discord: Don't run clang-format on source files
It's annoying to have source files automatically reformatted every time
Dolphin is built because it causes git to consider the source tree to
be dirty.
2018-09-16 15:32:48 +02:00
Lioncash 3130d388db Externals: Update SFML to 2.5.0
Among other things, this finally allows pushing 64-bit values into
packets without needing to manually subdivide the value into two 32-bit
values.
2018-08-27 17:18:24 -04:00
spycrab 7cb310791b Cleanup: Remove some left over references to wxWidgets 2018-08-07 15:48:17 +02:00
spycrab e22c5333ab
Merge pull request #6819 from spycrab/delete_wx
Remove DolphinWX
2018-06-30 00:12:24 +02:00
spycrab d2527db8ec Externals/Qt: Update to 5.11.1 2018-06-28 14:38:17 +02: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
spycrab fe6e46f846 Externals/GTest: Update to latest master 2018-06-12 14:52:43 +02:00
Sleepy Flower Girl f25d833dbd Fixed issue Discord RPC library not clearing presence during shutdown 2018-06-03 15:37:27 -04:00
Sleepy Flower Girl 678f8da95b Moved Discord RPC library's source code to external 2018-06-03 15:29:01 -04:00
Sleepy Flower Girl d5303ddf0b Add Discord Rich Presence support 2018-06-03 15:27:20 -04:00
Stenzek bc96557ec4 Externals: Update glslang to upstream commit 32d3ec3 2018-06-02 07:34:31 +00:00
Stenzek c05dd2ee56 Externals: Update Vulkan headers to 1.1.75 2018-05-31 11:37:23 +00:00
Emmanuel Gil Peyrot c51ae9c62a Remove SOIL altogether from the project. 2018-05-20 13:44:42 +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 b256f873ca
CMakeLists: Link in zlib privately where applicable
Also, use the target name introduced via find_package(ZLIB) instead
of hardcoding the 'z' name in the link libraries.
2018-04-13 08:29:46 -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 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
Pierre Bourdon 0427d3474c Import ed25519 implementation from https://github.com/orlp/ed25519 2018-03-19 00:11:55 +01:00
Pierre Bourdon 891a1eeb6a Import picojson to Externals from https://github.com/kazuho/picojson 2018-03-19 00:11:55 +01:00
Vincent Duvert bb5e5d964a Added patches for hidapi modifications
This allows tracking what modifications were made to the upstream code.
2018-01-13 21:20:54 +01:00
Vincent Duvert 3abc288e02 macOS: Add errno setting in set_report (HID)
IsDeviceUsable in IOhidapi.cpp uses errno to detect if hid_write failed because of an unconnected Wiimote on a Dolphinbar (it expects errno == EPIPE in this case).
macOS’s implementation of hid_write detected this specific error (IOHIDDeviceSetReport returns kUSBHostReturnPipeStalled) but didn’t set errno so the check failed.
This add errno assignment to failure cases of macOS’s hid_write.
2018-01-07 11:14:51 +01:00
Vincent Duvert 8d5810a103 macOS: Use unique IDs for HID paths
If available, use the system-generated unique ID for HID device paths instead of a transport/vid/pid/location tuple.
The Mayflash Dolphinbar registers four HID devices (regardless of the number of connected Wiimotes) which had the same path with the previous path building method, causing a bit of confusion when detecting and connecting to Wiimotes.
The unique IDs do not change if the computer is suspended and resumed, but do change if the HID device is unplugged/replugged.
2018-01-07 11:00:01 +01:00