Commit Graph

565 Commits (0047d8a01ee7a6680c176022e5ab31a68bdeaf35)

Author SHA1 Message Date
liamwhite 2b110d61e7
Merge pull request #9541 from abouvier/cmake-option
cmake: allow options shadowing with normal variables
2 years ago
Alexandre Bouvier 306c791e67 cmake: allow options shadowing with normal variables 2 years ago
Alexandre Bouvier 1dfcf19c36 cmake: improve find_package failure messages 2 years ago
Liam 9ce23bde24 cmake: make Vulkan-Headers external the default 2 years ago
Liam be43b62d79 cmake: make libusb optional 2 years ago
Jan Beich b60a93a936 externals: update Vulkan-Headers to v1.3.238 2 years ago
Andrea Pappacoda 4447c9a46e
build: tweak the find modules even more
As described in
https://github.com/yuzu-emu/yuzu/pull/9395#discussion_r1047456172
checking for PKG_CONFIG_FOUND before calling pkg_search_module() is
unneeded, and some find modules (like FindFFmpeg.cmake) don't do this
already. Consequently, this patch removes these checks.
2 years ago
liamwhite 131ed37803
Merge pull request #9395 from abouvier/cmake-find
cmake: correct find modules
3 years ago
Alexandre Bouvier bb3440f7c4 cmake: correct find modules 3 years ago
Alexandre Bouvier f385175aa2 cmake: prefer system libusb 3 years ago
Morph 7381f873e9 externals: Bump dynarmic to 6.4.0
Uses the tagged, versioned release instead.
3 years ago
liamwhite 3b19f741bd
Merge pull request #6833 from abouvier/unbundle
cmake: prefer system libraries
3 years ago
liamwhite ec547824f1
Merge pull request #9372 from liamwhite/vk12
vulkan_common: promote extension usages to core when possible
3 years ago
Alexandre Bouvier 8e17b5469f cmake: prefer system libraries 3 years ago
Liam 0cbfdf7ecb yuzu-cmd: link SDL2 correctly 3 years ago
Liam 18831e0933 vulkan_common: clean up extension usage 3 years ago
liamwhite f4b5570e7c
Merge pull request #9375 from jbeich/xbyak-no-install
externals: don't install xbyak as part of yuzu install
3 years ago
Liam 6d2c597371 externals: update dynarmic, SDL2 3 years ago
Jan Beich 14440b195c externals: disable xbyak install targets after cbaf642ffe
Prevent yuzu from trying to install bundled xbyak as it'd likely
conflict with system xbyak package.

Error: Orphaned: include/xbyak/xbyak.h
Error: Orphaned: include/xbyak/xbyak_bin2hex.h
Error: Orphaned: include/xbyak/xbyak_mnemonic.h
Error: Orphaned: include/xbyak/xbyak_util.h
Error: Orphaned: lib/cmake/xbyak/xbyak-config-version.cmake
Error: Orphaned: lib/cmake/xbyak/xbyak-config.cmake
Error: Orphaned: lib/cmake/xbyak/xbyak-targets.cmake
3 years ago
liamwhite 75e16547f8
Merge pull request #9300 from ameerj/pch
CMake: Use precompiled headers to improve compile times
3 years ago
liamwhite 22aff09b33
Merge pull request #9289 from liamwhite/fruit-company
general: fix compile for Apple Clang
3 years ago
Matías Locatti c043ba8467
Merge pull request #9303 from liamwhite/new-vulkan-init
Vulkan: update initialization
3 years ago
lat9nq 5ff19890e9 CMake: Fix FFmpeg find module
Uses find_package_handle_standard_args to handle the find_package call
from the root CMakeLists. Removes all the unnecessary logic after the
find_package and just sets it to REQUIRED.
3 years ago
ameerj 5695ae6bdd externals: Update dynarmic
Includes precompiled headers commit
3 years ago
lat9nq 0941ae0b61 CMake: Directly link to SDL2-static when appropriate
Trying to be lazy and alias SDL2 to SDL2-static causes issues in later
versions of CMake. Just use the same condition to tell which one to use.
3 years ago
Liam 2956a33463 Vulkan: update initialization
Co-authored-by: bylaws <bylaws@users.noreply.github.com>
3 years ago
Liam cdb2e4eaff externals: always use LibreSSL on Windows 3 years ago
Liam 9737615948 general: fix compile for Apple Clang 3 years ago
Merry 344e171cc7 dynarmic: Fix stack misalignment in GenMemory128Accessors 3 years ago
Valeri fa660190ff
externals: microprofileui: Remove unused variables
Allows yuzu to be built with Clang 15
3 years ago
Liam cbaf642ffe Initial ARM64 support 3 years ago
Alexandre Bouvier 09a87966e0 cmake: Fix FindPkgConfig 3 years ago
Vamsi Krishna 016fa3ffee
Fix Cmake warning for CMP0077 3 years ago
liamwhite b99596e312
Merge pull request #8660 from Tachi107/findmodules-pkg-config
build: simplify find modules
3 years ago
liamwhite 167d948ce1
Merge pull request #8730 from lat9nq/fmt-9.0.0
vcpkg,yuzu: Update to fmt 9.0.0
3 years ago
lat9nq 795ccc058d vcpkg: Update and update fmt to 9.0.0 3 years ago
Andrea Pappacoda adc8c03fe4
build(externals): rename Findopus to FindOpus
This better matches upstream's FindOpus.cmake file, and it will make
using upstream's FindOpus.cmake file easier.
3 years ago
Merry 8c933beb48 externals: Update dynarmic to 6.2.3 3 years ago
Andrea Pappacoda 064625ef58
build: simplify find modules
With this patch I've deleted a few find modules that are now unused
since the vcpkg transition, as the CMake code now forces CONFIG mode for
Catch2, fmt and nlohmann_json.

I've then simplified the lz4, opus, and zstd modules by exclusively
using pkg-config. They were using it already, but were ignoring the
result. Also, I believe that manually looking for libraries was required
for Conan to work, and it is thus not needed anymore.

Lastly, I believe that there is no platform that ships these system libs
without pkg-config/pkgconf, so requiring it should be fine.
3 years ago
lat9nq 58bc6125d7 externals: Use yuzu-emu/discord-rpc to provide Discord integration
Our fork includes a commit to disable clang-format, preventing the dirty
flag from being set when building yuzu on CI.
3 years ago
Andrea Pappacoda cdb240f3d4
chore: make yuzu REUSE compliant
[REUSE] is a specification that aims at making file copyright
information consistent, so that it can be both human and machine
readable. It basically requires that all files have a header containing
copyright and licensing information. When this isn't possible, like
when dealing with binary assets, generated files or embedded third-party
dependencies, it is permitted to insert copyright information in the
`.reuse/dep5` file.

Oh, and it also requires that all the licenses used in the project are
present in the `LICENSES` folder, that's why the diff is so huge.
This can be done automatically with `reuse download --all`.

The `reuse` tool also contains a handy subcommand that analyzes the
project and tells whether or not the project is (still) compliant,
`reuse lint`.

Following REUSE has a few advantages over the current approach:

- Copyright information is easy to access for users / downstream
- Files like `dist/license.md` do not need to exist anymore, as
  `.reuse/dep5` is used instead
- `reuse lint` makes it easy to ensure that copyright information of
  files like binary assets / images is always accurate and up to date

To add copyright information of files that didn't have it I looked up
who committed what and when, for each file. As yuzu contributors do not
have to sign a CLA or similar I couldn't assume that copyright ownership
was of the "yuzu Emulator Project", so I used the name and/or email of
the commit author instead.

[REUSE]: https://reuse.software

Follow-up to 01cf05bc75
3 years ago
lat9nq bf14790f08 externals: Use GitHub for FFmpeg
FFmpeg's own git repo seems to be down, so switch to GitHub like we use
for most externals.
3 years ago
FearlessTobi 6c8e456185 Address first part of review comments 3 years ago
FearlessTobi 705f7db84d yuzu: Add ui files for multiplayer rooms 3 years ago
FearlessTobi dcfe0a5feb network: Add initial files and enet dependency 3 years ago
lat9nq 265d1d6979 ci,CMake: Integrate vcpkg into CMakeLists
Uses manifest mode if the bundled vcpkg is used.
3 years ago
Narr the Reg bcd0ca6076
Merge pull request #8607 from lat9nq/sdl-2.0.20
externals: Revert SDL2 to release-2.0.20
3 years ago
lat9nq f5964fe2a9 externals: Revert SDL2 to release-2.0.20
prerelease-2.23.1 appears to have issues on the SteamDeck with external
controllers. Revert to 2.0.20 for now (and as opposed to using
prerelease-2.0.19 like before.)
3 years ago
Merry b4ee3fa39a externals: Update dynarmic to 6.2.1
Fix issue with A64CallbackConfigPass
3 years ago
merry 09300abe92
Merge pull request #8569 from merryhime/watchpoints
dynarmic: Abort watchpoints ASAP
3 years ago
bunnei e4eb7acd49
Merge pull request #8525 from lat9nq/update-sdl
externals/SDL: Update to prerelease-2.23.1
3 years ago
Merry 40e39ddd46 dynarmic: Abort watchpoints ASAP 3 years ago
Merry adc617ccc4 externals: Update dynarmic to 6.1.1
Fixes for fast dispatcher
3 years ago
lat9nq 4f847621af externals/SDL: Update to prerelease-2.23.1
This includes a fix needed for building with MSYS2/MinGW.
3 years ago
Liam 1fd194141a dynarmic: Stop ReadCode callbacks to unmapped addresses 3 years ago
Liam 208ed712f4 core/debugger: memory breakpoint support 3 years ago
Mai 103997ee56
Merge pull request #8383 from Morph1984/shadow-of-the-past
yuzu: Make variable shadowing a compile-time error
3 years ago
Morph 7620e1a631 externals: Update cpp-httplib to latest 3 years ago
Morph 8b55f2c615 externals: microprofileui: Eliminate variable shadowing 3 years ago
Liam ebecdd3a74 general: fix compilation on MinGW GCC 12 3 years ago
Morph d0328f49f1 externals: microprofile: Eliminate variable shadowing 3 years ago
Alexandre Bouvier 020982508d video_core: Support new VkResult 3 years ago
Alexandre Bouvier 55b0dda57c sirit: Allow using system spirv-headers 3 years ago
Mai M 5687bc6e10
Merge pull request #8282 from liamwhite/gcc-12
GCC 12 fixes
3 years ago
Liam 709d7fd92c GCC 12 fixes 3 years ago
Morph 1b0bf6efe9 externals: Update libressl to 3.5.2
This resolves compiler errors in Visual Studio 2022.
3 years ago
Liam 75ec9f57a0 Update dynarmic 3 years ago
Fernando S 50192eb4ad
Merge pull request #8148 from merryhime/interrupts
dynarmic: Better interrupts
3 years ago
merry f8b8af47ad dynarmic: Better interrupts 3 years ago
merry 51a8dd4919 externals: Update dynarmic to 8bcd46b7
* Ensure 128-bit ordered load/stores are atomic
* Always order exclusive load/stores
3 years ago
merry 1f74b25fd1 externals: Update dynarmic to 9cadab8fa91a63564774ae7dbe74e7c18715f586
Enforce memory ordering for acquire/release instructions.
3 years ago
Andrea Pappacoda faf6a9876c
audio_core: remove time stretcher
Also drop the SoundTouch dependency
3 years ago
merry 3a9a0d9cb3 externals: Update dynarmic
IC instructions now check for a need to halt execution
3 years ago
Merry d1c0cdf4f2 dynarmic: Accelerate SHA256 and implement for A32 frontend
* Implements hardware acceleration for SHA256 instructions.
 * Adds SHA256 instructions introduced in ARMv8 to A32 frontend.
 * Implements polyfill for processors that do not support hardware
   accelerated SHA instructions.
3 years ago
Fernando S e06a133717
Merge pull request #7959 from merryhime/cmpxchg
dynarmic: Inline exclusive memory accesses
3 years ago
Merry c4df0d8cdc ffmpeg: Fix mis-maching argument warning for endif 3 years ago
merry ec9689f200 dynarmic: Update to latest master 3 years ago
merry 16784e5bb3 dynarmic: Inline exclusive memory accesses
Inlines implementation of exclusive instructions into JITted code,
improving performance of applications relying heavily on these
instructions.

We also fastmem these instructions for additional speed, with
support for appropriate recompilation on fastmem failure.

An unsafe optimization to disable the intercore global_monitor is also
provided, should one wish to rely solely on cmpxchg semantics for
safety.

See also: merryhime/dynarmic#664
3 years ago
bunnei ce46aa4721 externals: Dynarmic: Update to latest rev.
- Fixes inaccurate size reporting in SpaceRemaining, which caused crashes in yuzu with SSBU.
3 years ago
Fernando Sahmkow e5c83b5a3e Update dynarmic. 3 years ago
Moonlacer fdde08bd01 Update FSR to 1.0.2
Updates yuzu's FSR implementation to 1.0.2
3 years ago
Valeri f68be36159
Improve FFmpeg cmake file
* Fix compilation if CUDA_INCLUDE_DIRS is empty/contains multiple paths
* Pass CMAKE_{C,CXX}_COMPILER_LAUNCHER to ffmpeg compiler
3 years ago
Alexandre Bouvier c8b358dba2 cmake: make tests optional 3 years ago
liushuyu b590e5572d
externals/dynarmic: update to latest revision ...
... to resolve compilation errors with fmt 8.1
3 years ago
bunnei 6af82fd070
Merge pull request #7610 from Tatsh/more-system-libs
Add support for linking against system Opus
3 years ago
Morph af89f7683d externals: Update dynarmic to 28714ee7
Reduces compilation times on MSVC.
3 years ago
bunnei 36df305b13
Merge pull request #7599 from FernandoS27/primrestart-vulkan
Vulkan: Fix Primitive Restart and implement Logical Operations
3 years ago
Andrew Udvare 78759d98dc
Add support for linking against system opus 3 years ago
bunnei 2030522d86
Merge pull request #7587 from liushuyu/fix-linux-decoding
[Patch v2] externals/ffmpeg: refactor ffmpeg searching and handling in cmake
4 years ago
Fernando Sahmkow 6430fc29a9 Vulkan: Implement VK_EXT_primitive_topology_list_restart 4 years ago
Andrew Udvare 9b3611eb8d
externals/SDL: update SDL to version with Wayland build fix 4 years ago
Andrew Udvare e610485cd2
externals/CMakeLists: fix detection/init of Switch controllers in SDL 2.0.18
Enable SDL_THREADS and SDL_ATOMIC
Also set SDL_WAYLAND=OFF due to build issue

Closes #7572
4 years ago
liushuyu 476637d143
externals/ffmpeg: set the cmake variable twice ...
... to avoid leaving variable undefined in the current scope
4 years ago
liushuyu 3ae9258efe externals: fix a regression when using MSVC 4 years ago
liushuyu 3f765ea9a4 video_core/codecs: (re-spin) refactor ffmpeg searching and handling 4 years ago
bunnei 2f32133ad5
Revert "video_core/codecs: refactor ffmpeg searching and handling in cmake" 4 years ago
liushuyu dd72e4dce4
CI: fix CI on Linux 4 years ago
liushuyu f91b6fbbcb ffmpeg: move the whole tree into externals/ffmpeg/ffmpeg ...
* this resolves the todo items in the CMakeLists.txt
* a version requirement check for ffmpeg is added to catch issues early
* for future-proof reasons, nasm/yasm is now only required when build on
  x86/AMD64 systems
4 years ago
Mai M 4e2fb9e51a
Merge pull request #7554 from Tachi107/build-remove-unicorn
build: remove remaining bits of Unicorn
4 years ago
bunnei a2f842ce54
Merge pull request #7527 from Tachi107/cubeb-result_of
build: update cubeb and remove the result_of comment
4 years ago
Andrea Pappacoda eec9aace60
build: remove remaining bits of Unicorn
Unicorn has been removed in fc6db97a09
4 years ago
Narr the Reg 133504b74b input_common: Update SDL to 2.0.18 4 years ago
Andrea Pappacoda f4587c596f
build: update cubeb and remove the result_of comment
Cubeb doesn't use result_of anymore, it has been dropped in commit
mozilla/cubeb@75d9d125ee
4 years ago
Marshall Mohror bb03675485 Vulkan: Reimplement FSR constant generation functions to avoid GCC warnings 4 years ago
Marshall Mohror dcc5b4f6b0 Presentation: Only use FP16 in scaling shaders on supported devices in Vulkan 4 years ago
ameerj 77b0812d69 externals: Add only included ffx-fsr headers
The submodule adds a lot of unneeded bloat due its addition of samples that contain large media files that are difficult to compress.
4 years ago
Morph 74a6222b3e externals: Update dynarmic to cce7e4ee 4 years ago
Morph 5f6cd32c9e externals: Remove libzip 4 years ago
Merry af6290ed12 dynarmic: Update and enable DYNARMIC_IGNORE_ASSERTS 4 years ago
Merry 1770503185 xbyak: Update include path 4 years ago
german77 fe2e710003 externals: Update sdl2 to 2.0.16 4 years ago
Ameer J a086ee6a00
Merge pull request #6565 from lat9nq/bundle-ffmpeg
cmake, ci: Build bundled FFmpeg with yuzu
4 years ago
ReinUsesLisp c67d64365a shader: Remove old shader management 4 years ago
ReinUsesLisp b5d7279d87 spirv: Initial bindings support 4 years ago
ReinUsesLisp 1b0cf2309c shader: Add support for forward declarations 4 years ago
ReinUsesLisp 9170200a11 shader: Initial implementation of an AST 4 years ago
ReinUsesLisp 2930dccecc spirv: Initial SPIR-V support 4 years ago
lat9nq d3748cad73 emu_window_sdl2_vk: Use the generated SDL config
On Linux, due to the way we include SDL2 as a submodule, it makes it
difficult for us to specify which SDL_config.h we intended to include.
Before, CMake would default to the dummy one included with SDL and
ignore the generated one.

This tells CMake to use the generated one. In addition, we define
USING_GENERATED_CONFIG_H to throw an error in case the dummy config is
used by accident. Fixes Vulkan not working on Linux yuzu-cmd.
4 years ago
lat9nq ef70054367 cmake: Specify the compiler on autotools externals
Enables CCache on externals if available.
4 years ago
Ameer J bab400daaf
Merge pull request #6459 from lat9nq/ubuntu-fixes
cmake: Improve Linux dependency checking for externals
4 years ago
MerryMage f54f29198f libusb: Apple is a POSIX system 4 years ago
Lioncash c3fe071723 externals: Update dynarmic to allow fmt compilation to succeed 4 years ago
bunnei 0485b8e84b
Merge pull request #6499 from FernandoS27/we-were-on-a-break
Update dynarmic and add new unsafe CPU option.
4 years ago
Fernando Sahmkow 2298508465 Update dynarmic and add new unsafe CPU option. 4 years ago
Vortex e704da9192 externals: httplib: replace custom httplib header with upstream as submodule.
This also includes a minor change to web_service.cpp - to fix compatibility with upstream changes.
4 years ago
Vortex 8a83e3412a update submodule discord-rpc to latest [now deprecated] 4 years ago
bunnei abb0124b84
Merge pull request #6418 from clementgallet/sdl-audio-backend
Audio: SDL2 audio backend
4 years ago
lat9nq 932c0184a7 cmake: Fix find_program usage for 3.15
yuzu requires CMake 3.15 yet find_program was using REQUIRED, which is
only available on 3.18 and later. Instead, we check for
"<VAR>-NOTFOUND".

In addition, check for additional requirements before building libusb or
FFmpeg with autotools. Otherwise, CMake configuration will pass yet
compilation will fail.
4 years ago
lat9nq 2817ef1a53 externals: Don't set FOUND or VERSION on LIBUSB
Fixes an issue where libusb.h wouldn't be found when building yuzu on
MSVC.

This only affects the "traditional" CMake pathway for linking libusb to
yuzu AKA MSVC. For autotools we still want to set these variables before
configuring SDL.
4 years ago
Markus Wick 621f3f5f47 core: Make use of fastmem 4 years ago
lat9nq f738c6b231 externals: Update SDL to 2f248a2a 4 years ago
bunnei c1b8e59ea0
Merge pull request #6407 from lat9nq/fix-libusb-2
cmake: Use autotools for libusb linking generally on GNU, and cleanup
4 years ago
Clément Gallet c7c99905f4 Add SDL2 audio backend 4 years ago
ReinUsesLisp 71a3c60d95 externals: Update dynarmic 4 years ago
lat9nq 7395cd3124 externals: libusb: Call program names not full paths 4 years ago
lat9nq 890acfa2c0 externals: libusb: Link libusb statically on Linux
Turns out that this is possible. Also addresses my own review comment.
4 years ago
lat9nq ddc47e6df8 cmake: General improvements to libusb linking
Delegates libusb external communication to externals/CMakeLists.txt
Ensures an interface library `usb` for every pathway
input_common just links to the `usb` library now
externals/libusb/CMakeLists.txt sets variables to override SDL2's libusb
finding
Other minor cleanup
4 years ago
lat9nq 55dd027115 cmake: Use autotools to build libusb generally for GNU
Building libusb was also broken on GCC (and maybe Clang) on our
CMakeLists after upgrading to 1.0.24, but it was not being checked
because our 18.04 container had libusb installed on it.
This builds on the MinGW work from earlier and extends it to the rest of
the GNU toolchains. In addition we make use of pkg-config when present
to find libusb. pkg-config is preferrable because we can specify a
minimum required version.
4 years ago
lat9nq 185e405bc1 externals: Use defaults for building SDL2 on WIN32
Whatever those settings do breaks controller detection on Windows, at
least with the MinGW container. If-guard it against WIN32 and just let
SDL2 configure using its defaults, aside from static linking.
4 years ago
lat9nq 1914a1d21c externals: libusb: Use autotools for MinGW
After updating to 1.0.24, MinGW fails to build libusb as a result of
numerous errors. So we build libusb their way and let them update the
nontrivial stuff.

This only applies to MinGW: the old path is still in use for Linux
toolchains as well as MSVC.

This will dynamically link libusb, since I hit build errors with the old
way we used to resolve the conflict with SDL2.
4 years ago
bunnei 95f45112e9
Merge pull request #6344 from german77/update-libusb
Update libusb to 1.0.24
4 years ago
Markus Wick d2d7a5060f externals: Update dynarmic.
The new version supports fastmem on a64.
4 years ago
german77 3a6e2922a2 Update libusb to 1.0.24 4 years ago
Morph 9edfd88a8a
Merge pull request #6293 from v1993/master
On Linux, build SDL2 from externals with HIDAPI support
4 years ago
Ameer J 904584e4ba
Merge pull request #6300 from Morph1984/mbedtls
externals: Update mbedtls to 8c88150ca
4 years ago
lat9nq 0ecb6c6647 externals: Checkout 79e8d17024 for FFmpeg
6b6b9e593d does not exist on FFmpeg master, and tag n4.3.1 requires
manually fetching all of FFmpeg's tags. `git` reports that the commit
does not exist initially and can be confusing as a result. Instead,
checkout the immediately previous commit from n4.3.1 on their master
branch.
4 years ago
Morph 02547439b1 externals: Update mbedtls to 8c88150ca 4 years ago
v1993 fa647cc0b9
Only build SDL2 subsystems that we use
While at it, use better way to enable HIDAPI.
4 years ago
v1993 648bef235e
On Linux, build SDL2 from externals with HIDAPI support 4 years ago
lat9nq b021e09fc0 externals: Use SDL2 statically
Building it as a shared library causes issues distributing it to an
AppImage, since linuxdeploy expects the executable to only dynamically
link to system libraries. Additionally, simply dynamically linking to a
library in the binary directory is bound to cause issues.

Solution is to use SDL's CMake switches and build it statically. We also
alias `SDL2` to `SDL2-static` on the external submodule for
compatibility with the rest of the project.
4 years ago