summaryrefslogtreecommitdiffstats
path: root/CMakeLists.txt (follow)
Commit message (Collapse)AuthorAgeFilesLines
* CMake: Require LLVM 17 or laterlat9nq2023-07-191-1/+1
| | | | API changes necessitate an update here.
* Merge pull request #10934 from abouvier/cmake-vmaliamwhite2023-07-171-0/+1
|\ | | | | cmake: allow using system VMA library
| * cmake: allow using system VMA libraryAlexandre Bouvier2023-07-121-0/+1
| |
* | Merge pull request #10912 from comex/sslliamwhite2023-07-161-0/+16
|\ \ | |/ |/| Implement SSL service
| * Updates:comex2023-07-021-1/+2
| | | | | | | | | | - Address PR feedback. - Add SecureTransport backend for macOS.
| * Merge remote-tracking branch 'origin/master' into sslcomex2023-07-021-2/+2
| |\
| * | Disable OpenSSL on Android.comex2023-06-261-1/+10
| | | | | | | | | | | | | | | Apparently Android uses BoringSSL, but doesn't actually expose headers for it in the NDK.
| * | Fixes:comex2023-06-261-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Add missing virtual destructor on `SSLBackend`. - On Windows, filter out `POLLWRBAND` (one of the new flags added) when calling `WSAPoll`, because despite the constant being defined on Windows, passing it calls `WSAPoll` to yield `EINVAL`. - Reduce OpenSSL version requirement to satisfy CI; I haven't tested whether it actually builds (or runs) against 1.1.1, but if not, I'll figure it out. - Change an instance of memcpy to memmove, even though the arguments cannot overlap, to avoid a [strange GCC error](https://github.com/yuzu-emu/yuzu/pull/10912#issuecomment-1606283351).
| * | Implement SSL servicecomex2023-06-251-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This implements some missing network APIs including a large chunk of the SSL service, enough for Mario Maker (with an appropriate mod applied) to connect to the fan server [Open Course World](https://opencourse.world/). Connecting to first-party servers is out of scope of this PR and is a minefield I'd rather not step into. ## TLS TLS is implemented with multiple backends depending on the system's 'native' TLS library. Currently there are two backends: Schannel for Windows, and OpenSSL for Linux. (In reality Linux is a bit of a free-for-all where there's no one 'native' library, but OpenSSL is the closest it gets.) On macOS the 'native' library is SecureTransport but that isn't implemented in this PR. (Instead, all non-Windows OSes will use OpenSSL unless disabled with `-DENABLE_OPENSSL=OFF`.) Why have multiple backends instead of just using a single library, especially given that Yuzu already embeds mbedtls for cryptographic algorithms? Well, I tried implementing this on mbedtls first, but the problem is TLS policies - mainly trusted certificate policies, and to a lesser extent trusted algorithms, SSL versions, etc. ...In practice, the chance that someone is going to conduct a man-in-the-middle attack on a third-party game server is pretty low, but I'm a security nerd so I like to do the right security things. My base assumption is that we want to use the host system's TLS policies. An alternative would be to more closely emulate the Switch's TLS implementation (which is based on NSS). But for one thing, I don't feel like reverse engineering it. And I'd argue that for third-party servers such as Open Course World, it's theoretically preferable to use the system's policies rather than the Switch's, for two reasons 1. Someday the Switch will stop being updated, and the trusted cert list, algorithms, etc. will start to go stale, but users will still want to connect to third-party servers, and there's no reason they shouldn't have up-to-date security when doing so. At that point, homebrew users on actual hardware may patch the TLS implementation, but for emulators it's simpler to just use the host's stack. 2. Also, it's good to respect any custom certificate policies the user may have added systemwide. For example, they may have added custom trusted CAs in order to use TLS debugging tools or pass through corporate MitM middleboxes. Or they may have removed some CAs that are normally trusted out of paranoia. Note that this policy wouldn't work as-is for connecting to first-party servers, because some of them serve certificates based on Nintendo's own CA rather than a publicly trusted one. However, this could probably be solved easily by using appropriate APIs to adding Nintendo's CA as an alternate trusted cert for Yuzu's connections. That is not implemented in this PR because, again, first-party servers are out of scope. (If anything I'd rather have an option to _block_ connections to Nintendo servers, but that's not implemented here.) To use the host's TLS policies, there are three theoretical options: a) Import the host's trusted certificate list into a cross-platform TLS library (presumably mbedtls). b) Use the native TLS library to verify certificates but use a cross-platform TLS library for everything else. c) Use the native TLS library for everything. Two problems with option a). First, importing the trusted certificate list at minimum requires a bunch of platform-specific code, which mbedtls does not have built in. Interestingly, OpenSSL recently gained the ability to import the Windows certificate trust store... but that leads to the second problem, which is that a list of trusted certificates is [not expressive enough](https://bugs.archlinux.org/task/41909) to express a modern certificate trust policy. For example, Windows has the concept of [explicitly distrusted certificates](https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-r2-and-2012/dn265983(v=ws.11)), and macOS requires Certificate Transparency validation for some certificates with complex rules for when it's required. Option b) (using native library just to verify certs) is probably feasible, but it would miss aspects of TLS policy other than trusted certs (like allowed algorithms), and in any case it might well require writing more code, not less, compared to using the native library for everything. So I ended up at option c), using the native library for everything. What I'd *really* prefer would be to use a third-party library that does option c) for me. Rust has a good library for this, [native-tls](https://docs.rs/native-tls/latest/native_tls/). I did search, but I couldn't find a good option in the C or C++ ecosystem, at least not any that wasn't part of some much larger framework. I was surprised - isn't this a pretty common use case? Well, many applications only need TLS for HTTPS, and they can use libcurl, which has a TLS abstraction layer internally but doesn't expose it. Other applications only support a single TLS library, or use one of the aforementioned larger frameworks, or are platform-specific to begin with, or of course are written in a non-C/C++ language, most of which have some canonical choice for TLS. But there are also many applications that have a set of TLS backends just like this; it's just that nobody has gone ahead and abstracted the pattern into a library, at least not a widespread one. Amusingly, there is one TLS abstraction layer that Yuzu already bundles: the one in ffmpeg. But it is missing some features that would be needed to use it here (like reusing an existing socket rather than managing the socket itself). Though, that does mean that the wiki's build instructions for Linux (and macOS for some reason?) already recommend installing OpenSSL, so no need to update those. ## Other APIs implemented - Sockets: - GetSockOpt(`SO_ERROR`) - SetSockOpt(`SO_NOSIGPIPE`) (stub, I have no idea what this does on Switch) - `DuplicateSocket` (because the SSL sysmodule calls it internally) - More `PollEvents` values - NSD: - `Resolve` and `ResolveEx` (stub, good enough for Open Course World and probably most third-party servers, but not first-party) - SFDNSRES: - `GetHostByNameRequest` and `GetHostByNameRequestWithOptions` - `ResolverSetOptionRequest` (stub) ## Fixes - Parts of the socket code were previously allocating a `sockaddr` object on the stack when calling functions that take a `sockaddr*` (e.g. `accept`). This might seem like the right thing to do to avoid illegal aliasing, but in fact `sockaddr` is not guaranteed to be large enough to hold any particular type of address, only the header. This worked in practice because in practice `sockaddr` is the same size as `sockaddr_in`, but it's not how the API is meant to be used. I changed this to allocate an `sockaddr_in` on the stack and `reinterpret_cast` it. I could try to do something cleverer with `aligned_storage`, but casting is the idiomatic way to use these particular APIs, so it's really the system's responsibility to avoid any aliasing issues. - I rewrote most of the `GetAddrInfoRequest[WithOptions]` implementation. The old implementation invoked the host's getaddrinfo directly from sfdnsres.cpp, and directly passed through the host's socket type, protocol, etc. values rather than looking up the corresponding constants on the Switch. To be fair, these constants don't tend to actually vary across systems, but still... I added a wrapper for `getaddrinfo` in `internal_network/network.cpp` similar to the ones for other socket APIs, and changed the `GetAddrInfoRequest` implementation to use it. While I was at it, I rewrote the serialization to use the same approach I used to implement `GetHostByNameRequest`, because it reduces the number of size calculations. While doing so I removed `AF_INET6` support because the Switch doesn't support IPv6; it might be nice to support IPv6 anyway, but that would have to apply to all of the socket APIs. I also corrected the IPC wrappers for `GetAddrInfoRequest` and `GetAddrInfoRequestWithOptions` based on reverse engineering and hardware testing. Every call to `GetAddrInfoRequestWithOptions` returns *four* different error codes (IPC status, getaddrinfo error code, netdb error code, and errno), and `GetAddrInfoRequest` returns three of those but in a different order, and it doesn't really matter but the existing implementation was a bit off, as I discovered while testing `GetHostByNameRequest`. - The new serialization code is based on two simple helper functions: ```cpp template <typename T> static void Append(std::vector<u8>& vec, T t); void AppendNulTerminated(std::vector<u8>& vec, std::string_view str); ``` I was thinking there must be existing functions somewhere that assist with serialization/deserialization of binary data, but all I could find was the helper methods in `IOFile` and `HLERequestContext`, not anything that could be used with a generic byte buffer. If I'm not missing something, then maybe I should move the above functions to a new header in `common`... right now they're just sitting in `sfdnsres.cpp` where they're used. - Not a fix, but `SocketBase::Recv`/`Send` is changed to use `std::span<u8>` rather than `std::vector<u8>&` to avoid needing to copy the data to/from a vector when those methods are called from the TLS implementation.
* | | general: Update VulkanSDK and Vulkan-HeadersMorph2023-07-071-1/+1
| | | | | | | | | | | | Latest as of this commit
* | | externals: Update sdl2 to 2.28.1ChaseKnowlden2023-07-041-1/+1
| |/ |/|
* | externals: Update sdl to 2.28.0Narr the Reg2023-06-221-2/+2
|/
* cmake: Add option to always download time zone datalat9nq2023-06-161-0/+2
|
* CMakeLists: Force C++20 on MSVC due to conflicts with C++23 modulesMorph2023-06-071-1/+1
| | | | | The latest version of MSVC STL brings C++23 standard library modules, which conflict with precompiled headers. Disabling with /experimental:module- has no effect, so force C++20 in the meantime while we wait for module support in other compilers.
* android: cmake: Use cmake_dependent_option as appropriate.bunnei2023-06-031-2/+2
|
* build: only enable adrenotools on arm64Liam2023-06-031-4/+12
|
* CMake: fix pkg-config behavior when building for Androidliushuyu2023-06-031-0/+3
|
* cmake: Integrate submoduled LLVM & fixes for Android.bunnei2023-06-031-3/+53
|
* Add support for deinterlaced videos playbackDanila Malyutin2023-05-211-0/+1
| | | | | This is a follow up to #10254 to improve the playback of cut scenes in Layton's Mystery Journey. It uses ffmpeg's yadif filter for deinterlacing.
* externals: update Vulkan-Headers to v1.3.246Jan Beich2023-04-011-1/+1
|
* CMakeLists: Require a minimum of boost 1.79.0Morph2023-03-261-1/+1
|
* CMakeLists: Update boost to 1.81.0Morph2023-03-241-1/+1
|
* general: fix spelling mistakesLiam2023-03-121-2/+2
|
* general: Target Windows 10 SDKMorph2023-03-051-2/+2
| | | | We no longer support operating systems below Windows 10.
* Merge pull request #9877 from abouvier/cmake-boostliamwhite2023-03-011-26/+2
|\ | | | | cmake: use correct boost imported targets
| * cmake: use correct boost imported targetsAlexandre Bouvier2023-02-281-26/+2
| |
* | cmake: support components in find modulesAlexandre Bouvier2023-02-281-3/+3
|/
* externals: use openssl from vcpkgAlexandre Bouvier2023-02-281-3/+3
|
* Merge pull request #9844 from abouvier/jwt-fixliamwhite2023-02-281-0/+3
|\ | | | | cmake: fix cpp-jwt build
| * cmake: fix cpp-jwt buildAlexandre Bouvier2023-02-221-0/+3
| |
* | Partially apply LTO to only core and video_core projects.Matías Locatti2023-02-271-0/+2
|/
* externals: Update cpp-httplib to latestAlexandre Bouvier2023-02-211-1/+1
|
* cmake: Download clang format 15german772023-01-301-1/+1
|
* cmake: prefer system llvm libraryAlexandre Bouvier2023-01-231-0/+1
|
* cmake: support the standard cmake testing optionAlexandre Bouvier2023-01-051-4/+5
|
* tests: update catch2 to 3.0.1Alexandre Bouvier2023-01-051-1/+1
|
* cmake: move find-modules to root cmake dirAlexandre Bouvier2023-01-021-1/+0
|
* Merge pull request #9541 from abouvier/cmake-optionliamwhite2023-01-021-4/+0
|\ | | | | cmake: allow options shadowing with normal variables
| * cmake: allow options shadowing with normal variablesAlexandre Bouvier2023-01-021-4/+0
| |
* | cmake: improve find_package failure messagesAlexandre Bouvier2023-01-021-11/+12
|/
* cmake: make Vulkan-Headers external the defaultLiam2022-12-291-1/+6
|
* cmake: make libusb optionalLiam2022-12-281-1/+6
|
* cmake: ignore missing package finders for packages with submodule fallbacksLiam2022-12-281-6/+6
|
* cmake: make room server optionalLiam2022-12-281-0/+2
|
* CMakeLists: bump required Vulkan package version to 1.3.238Liam2022-12-201-1/+1
|
* Merge pull request #9419 from liamwhite/no-glMai2022-12-111-0/+2
|\ | | | | cmake: make OpenGL loader optional
| * cmake: make OpenGL loader optionalLiam2022-12-101-0/+2
| | | | | | | | Co-authored-by: liushuyu <liushuyu@users.noreply.github.com>
* | cmake: enable faster linkers if availableLiam2022-12-101-0/+17
|/
* Merge pull request #9391 from abouvier/cmake-sdlliamwhite2022-12-061-13/+3
|\ | | | | cmake: use sdl2 imported target
| * cmake: use sdl2 imported targetAlexandre Bouvier2022-12-061-13/+3
| |
* | cmake: prefer system libusbAlexandre Bouvier2022-12-061-22/+1
| |
* | Merge pull request #9385 from Morph1984/dynarmic-verliamwhite2022-12-061-1/+1
|\ \ | |/ |/| externals: Bump dynarmic to 6.4.0
| * externals: Bump dynarmic to 6.4.0Morph2022-12-051-1/+1
| | | | | | | | Uses the tagged, versioned release instead.
* | CMakeLists: Remove version specifier for lz4Lioncash2022-12-051-1/+1
|/ | | | | | | Currently the exported version of lz4 provided by vcpkg is malformed and is "unknown". This makes querying for a specific version broken. Fixes configuring CMake with the use of vcpkg.
* cmake: prefer system librariesAlexandre Bouvier2022-12-041-13/+26
|
* externals: update dynarmic, SDL2Liam2022-12-041-3/+9
|
* Merge pull request #9300 from ameerj/pchliamwhite2022-12-031-0/+16
|\ | | | | CMake: Use precompiled headers to improve compile times
| * CMake: Disable PCH on MSVC + Buildcache configsameerj2022-11-301-0/+14
| |
| * CMake: Use precompiled headersameerj2022-11-301-0/+2
| |
* | CMake: Fix FFmpeg find modulelat9nq2022-12-011-16/+1
| | | | | | | | | | | | 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.
* | CMakeLists: Bump minimum required CMake version to 3.22lat9nq2022-11-291-1/+1
|/
* CMake: rework for Qt6 supportKyle Kienapfel2022-11-241-104/+147
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This PR rearranges things in the CMake system to make compiling with Qt6 possible 1. Camera API has changed in Qt6, so the camera feature is disabled 2. A previous fix involving QLocale is now version gated. 3. QRegExp replaced with QRegularExpression, see #5343 4. Qt6_LOCATION option added to specify a location to search for Qt6 (see examples below) 5. windeployqt is used to copy Qt6 files into the build directory on Windows Notes for Arch Linux Arch install happened to have qt6-base qt6-declarative qt6-translations installed mkdir build && cd build cmake .. -GNinja -DYUZU_USE_BUNDLED_VCPKG=ON -DYUZU_TESTS=OFF -DENABLE_QT6=YES -DYUZU_USE_BUNDLED_QT=NO Windows (MSVC) Qt wants users to download precompiled libraries via an online installer, it is worth noting that the GPL/LGPL takes precendence over any ... In the Qt Maintenance tool, under a version, such as 6.3.1 Select "MSVC 2019 64-bit" Under Additional Libraries Qt Multimedia may be of use for Camera support For the Web Applet I had to select the following: PDF Positioning WebChannel WebEngine mkdir build && cd build cmake -G "Visual Studio 16 2019" -DQt6_LOCATION=C:/Qt/6.4.0/msvc2019_64/ \ -DENABLE_COMPATIBILITY_LIST_DOWNLOAD=YES -DYUZU_USE_BUNDLED_QT=NO \ -DENABLE_QT_TRANSLATION=YES -DENABLE_QT6=YES .. Some numbers for reference (msvc2019_64) Qt5 (slimmed down) 508 MB Qt5.15.2 all in 929 MB Qt6.3.1 1.71 GB Qt6.3.2 1.73 GB Qt6.4.0-beta3 1.83 GB Qt6.4.0 1.67 GB
* Initial ARM64 supportLiam2022-11-091-4/+4
|
* Qt: enable recent Linux features on more UnicesJan Beich2022-11-041-3/+3
| | | | | | | - Prevent sleep via xdg-desktop-portal after fa7abafa5f2a - Pause on suspend after b7642cff3611 - Exit on SIGINT/SIGTERM after 9479940a1fc7 - Improve dark themes after b51db125676f
* CMakeLists: Disable C4100 and C4324Morph2022-10-221-2/+2
| | | | Disabling C4100 is similar to -Wno-unused-parameter
* cmake: Fix FindPkgConfigAlexandre Bouvier2022-09-201-3/+3
|
* vcpkg,cmake: Use vcpkg for dbghelplat9nq2022-09-051-0/+12
|
* Merge pull request #8485 from nezd5553/masterbunnei2022-08-271-0/+5
|\ | | | | cmake: Use compatibility list in source directory
| * cmake: Move source directory compatibility list...nezd55532022-07-031-4/+5
| | | | | | | | ... and copy it before the download check This makes it more consistent with the directory structure of the project.
| * cmake: Use compatibility list in source directorynezd55532022-06-201-0/+4
| | | | | | For Flatpak builds, the compatibility list is located in the source directory. In this case, CMake will copy it to the build directory.
* | Merge pull request #8676 from abouvier/no-check-subliamwhite2022-08-211-1/+3
|\ \ | | | | | | cmake: add option to check submodules
| * | cmake: add option to check submodulesAlexandre Bouvier2022-07-301-1/+3
| | |
* | | cmake,ci: vcpkg for MSVC default, fix lz4 include, catch2, cleanuplat9nq2022-07-281-10/+13
|/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | vcpkg: Add Catch2 2.13.9 Catch2 >= 3.0 is not compatible with earlier versions, and for now we must override the desired version in our vcpkg manifest. We can do this programmatically by using VCPKG_MANIFEST_FEATURES. CMakeLists: Search for lz4 CONFIG mode first vcpkg's lz4 CONFIG cmake script works in Release mode but not in Debug mode, failing to copy the correct DLLs at compile time. We still need to search for the regular mode for system-installed versions. CMakeLists: Clean up boost exports Remove some Conan-specific workarounds. CMakeLists: Use vcpkg for MSVC by default Not enabling it generally since it's much easier to have system dependencies installed for Linux and MinGW.
* | chore: make yuzu REUSE compliantAndrea Pappacoda2022-07-271-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [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 01cf05bc75b1e47beb08937439f3ed9339e7b254
* | yuzu: Hook qt camera to camera drivergerman772022-07-241-3/+3
| |
* | Merge pull request #8584 from Morph1984/qt5-cleanupbunnei2022-07-231-3/+3
|\ \ | | | | | | CMakeLists: Require QtConcurrent, and remove unused dlls
| * | CMakeLists: Mark WebEngine(Core/Widgets) as requiredMorph2022-07-151-1/+1
| | | | | | | | | | | | Mark these components as required when we are building with QtWebEngine enabled.
| * | CMakeLists: Add QtConcurrent to required componentsMorph2022-07-151-2/+2
| | | | | | | | | | | | We use QtConcurrent in various places in our Qt frontend, add it to the required components.
* | | ci,CMake: Integrate vcpkg into CMakeListslat9nq2022-07-231-0/+10
| | | | | | | | | | | | Uses manifest mode if the bundled vcpkg is used.
* | | ci,CMake: Drop Conan support for vcpkglat9nq2022-07-231-142/+18
|/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Between packages breaking, Conan always being a moving target for minimum required CMake support, and now their moves to Conan 2.0 causing existing packages to break, I suppose this was a long time coming. vcpkg isn't without its drawbacks, but at the moment it seems easier on the project to use for external packages. Mostly removes the logic for Conan from the root CMakeLists file, leaving basic find_package()'s in its place. Sets only the find_package()'s that require CONFIG mode as necessary. clang and linux CI now use the vcpkg toolchain file configured in the Docker container when possible. mingw CI turns off YUZU_TESTS because there's no way on the container to run Windows executables on a Linux host anyway, and it's not easy to get Catch2 there.
* / CI: fix cachingliushuyu2022-07-051-0/+8
|/
* core/debugger: Improved stepping mechanism and misc fixesLiam2022-06-011-0/+5
|
* CMakeLists: Update boost to 1.79.0Morph2022-05-301-2/+2
| | | | This version of boost brings in a number of bug fixes, especially to the asio library. Details can be seen here: https://www.boost.org/users/history/version_1_79_0.html
* dist: add AppStream metadataAndrea Pappacoda2022-04-291-9/+13
| | | | | | | | | | | | | | | | The AppStream file is mostly copied from the one already used by the Flatpak yuzu build: https://github.com/flathub/org.yuzu_emu.yuzu/blob/62fc225acfa0178ddf61be68ad9be60841077263/org.yuzu_emu.yuzu.metainfo.xml As it already defines the application id as org.yuzu_emu.yuzu I renamed the yuzu.desktop and yuzu.xml files so that they match. I've also made some minor tweaks to it, like fixing the capitalization of "yuzu", adding a few keys and sorting them as presented in the documentation. Lastly, I added PrefersNonDefaultGPU=true to the .desktop file so that yuzu is launched with the dedicated graphics card on Linux.
* CMakeLists: Download conan.cmake 0.18.1Morph2022-04-251-3/+1
|
* CMakeLists: Update Conan requirement to 1.45.0Morph2022-04-251-1/+1
|
* CMakeLists: Revert ad55faaa3lat9nq2022-04-231-19/+1
| | | | | | | | | | | | | | The premise behind ad55faaa3 was due to an issue between Conan's libiconv package and compiling SDL2 from our externals. Since none of our Conan externals require libiconv any longer, though, we can remove downloading our own Boost package and just rely on Conan again. Additionally, removing CONFIG from the find_package(boost) call fixes issues with finding Boost on Fedora and MSYS2, which was the main motivation for this. Also, remove QUIET since if something goes wrong finding Boost, this makes it harder to tell what went wrong.
* build(cmake): fix missing Qt5::DBus link target for bundled linux packageBytesGalore2022-03-121-1/+5
|
* Revert "build(cmake): fix missing Qt5::DBus target on linux"bunnei2022-03-121-1/+1
|
* build(cmake): fix missing Qt5::DBus link targetBytesGalore2022-03-061-1/+1
|
* cmake: make tests optionalAlexandre Bouvier2022-01-121-1/+7
|
* cmake: upgrade Conan package fmt to 8.1.1 ...liushuyu2022-01-091-1/+1
| | | | ... requirements for fmt stays at ^8.0.1
* Merge pull request #7610 from Tatsh/more-system-libsbunnei2022-01-051-0/+2
|\ | | | | Add support for linking against system Opus
| * Add support for linking against system opusAndrew Udvare2021-12-211-0/+2
| |
* | Merge pull request #7618 from goldenx86/patch-4bunnei2021-12-291-1/+1
|\ \ | | | | | | Increase boost requirement to 1.78.0
| * | Increase boost requirement to 1.78.0Matías Locatti2021-12-221-1/+1
| | | | | | | | | | | | Liu's finding, this allows to build yuzu on VS 2022. Ignore at will.
* | | main: fix wake lock in Flatpak ...liushuyu2021-12-221-1/+1
|/ / | | | | | | ... by using the XDP system
* | cmake: enable VA-API on more Unix-like after 0be4e402e213Jan Beich2021-12-181-1/+1
| |
* | video_core/codecs: (re-spin) refactor ffmpeg searching and handlingliushuyu2021-12-161-216/+2
|/
* Revert "video_core/codecs: refactor ffmpeg searching and handling in cmake"bunnei2021-12-151-2/+216
|
* ffmpeg: move the whole tree into externals/ffmpeg/ffmpeg ...liushuyu2021-12-141-213/+0
| | | | | | | * 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
* cmake: refactor ffmpeg searching and handling logic on Linuxliushuyu2021-12-141-16/+15
|
* Merge pull request #7527 from Tachi107/cubeb-result_ofbunnei2021-12-131-1/+1
|\ | | | | build: update cubeb and remove the result_of comment
| * build: update cubeb and remove the result_of commentAndrea Pappacoda2021-12-061-1/+1
| | | | | | | | | | Cubeb doesn't use result_of anymore, it has been dropped in commit mozilla/cubeb@75d9d125ee655ef80f3bfcd97ae5a805931042b8
* | input_common: Update SDL to 2.0.18Narr the Reg2021-12-061-2/+2
|/
* CMakeLists: Update fmt to 8.0.1Lioncash2021-11-261-1/+1
| | | | Ensures that we're using the latest version of fmt.
* Merge pull request #7273 from fpdotmonkey/submodule-checkout-command-on-new-linebunnei2021-11-191-1/+1
|\ | | | | Move the cmake submodule checkout command to a new line
| * Move the cmake submodule checkout command to a new lineFletcher Porter2021-11-021-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Presently, if you forget to initialize the git submodules before running cmake, there'll be a helpful message that reminds you to do so. However, on narrow terminals (e.g. 80 wide) there's a word wrap that includes a new line in the middle of the git command, precluding easy copy-paste. This moves the entire git command to its own line to avoid such tragedies. Before: ``` CMake Error at CMakeLists.txt:59 (message): Git submodule externals/inih/inih not found. Please run: git submodule update --init --recursive ``` After: ``` CMake Error at CMakeLists.txt:59 (message): Git submodule externals/inih/inih not found. Please run: git submodule update --init --recursive ```
* | CMakeLists: Update catch to 2.13.7Lioncash2021-11-171-1/+1
| | | | | | | | Keeps the testing libraries up to date.
* | CMake: Enable VP8 ffmpeg decodersameerj2021-11-131-0/+3
|/
* cmake: Update conan for VS2022 supportameerj2021-10-201-2/+3
|
* CMakeLists: Update to Qt 5.15.2Morph2021-10-031-5/+5
|
* CMakeLists: Remove BoxCat build optionMorph2021-09-291-6/+0
|
* externals: Remove libzipMorph2021-09-291-5/+0
|
* CMakeLists: Update to clang format version 12ameerj2021-09-241-1/+1
|
* Fix "Unknown C standard control flag" warningAndrew Strelsky2021-09-181-1/+1
|
* Merge pull request #6846 from ameerj/nvdec-gpu-decodeFernando S2021-09-111-12/+78
|\ | | | | nvdec: Add GPU video decoding for all capable drivers and platforms
| * cmake: Add VDPAU and NVDEC support to FFmpeglat9nq2021-08-161-7/+73
| | | | | | | | Adds {h264_,vp9_}{nvdec,vdpau} hwaccels.
| * cmake: Always find LIBVA, update windows FFmpeg versionameerj2021-08-121-5/+5
| | | | | | | | Allows the use of VAAPI gpu decoders on system installed ffmpeg as well.
* | Merge branch 'yuzu-emu:master' into fix-lan-playspholz2021-08-121-2/+2
|\ \
| * | externals: Update sdl2 to 2.0.16german772021-08-111-2/+2
| |/
* / configuration: add option to select network interfacespholz2021-08-121-1/+1
|/ | | | This commit renames the "Services" tab to "Network" and adds a combobox that allows the user to select the network interface that yuzu should use. This new setting is now used to get the local IP address in Network::GetHostIPv4Address. This prevents yuzu from selecting the wrong network interface and thus using the wrong IP address. The return type of Network::GetHostIPv4Adress has also been changed.
* nvdec: Implement VA-API hardware video acceleration (#6713)yzct123452021-08-041-4/+35
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * nvdec: VA-API * Verify formatting * Forgot a semicolon for Windows * Clarify comment about AV_PIX_FMT_NV12 * Fix assert log spam from missing negation * vic: Remove forgotten debug code * Address lioncash's review * Mention VA-API is Intel/AMD * Address v1993's review * Hopefully fix CMakeLists style this time * vic: Improve cache locality * vic: Fix off-by-one error * codec: Async * codec: Forgot the GetValue() * nvdec: Address ameerj's review * codec: Fallback to CPU without VA-API support * cmake: Address lat9nq's review * cmake: Make VA-API optional * vaapi: Multiple GPU * Apply suggestions from code review Co-authored-by: Ameer J <52414509+ameerj@users.noreply.github.com> * nvdec: Address ameerj's review * codec: Use anonymous instead of static * nvdec: Remove enum and fix memory leak * nvdec: Address ameerj's review * codec: Remove preparation for threading Co-authored-by: Ameer J <52414509+ameerj@users.noreply.github.com>
* Merge pull request #6565 from lat9nq/bundle-ffmpegAmeer J2021-08-011-1/+3
|\ | | | | cmake, ci: Build bundled FFmpeg with yuzu
| * cmake: Specify the compiler on autotools externalslat9nq2021-07-061-0/+2
| | | | | | | | Enables CCache on externals if available.
| * cmake, ci: Build bundled FFmpeg with yuzulat9nq2021-07-061-2/+4
| | | | | | | | | | | | | | | | | | Drops usage of CMAKE_DEPENDENT_OPTION to allow using YUZU_USE_BUNDLED_FFMPEG as an option on any platform. CI then now builds FFmpeg always, netting about 10 MB less used on the AppImage. Also somewhat fixes YUZU_USE_BUNDLED_QT so that it can be used even if CMake doesn't clean up its state after running the first find_package.
* | Merge pull request #6753 from jbeich/libusbAmeer J2021-07-281-1/+1
|\ \ | | | | | | cmake: unbreak libusb detection on FreeBSD
| * | cmake: don't use pkg-config directly with non-reference libusbJan Beich2021-07-271-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | CMake Error at externals/libusb/CMakeLists.txt:120 (add_library): Cannot find source file: libusb/libusb/core.c Tried extensions .c .C .c++ .cc .cpp .cxx .cu .mpp .m .M .mm .h .hh .h++ .hm .hpp .hxx .in .txx .f .F .for .f77 .f90 .f95 .f03 .ispc CMake Error at externals/libusb/CMakeLists.txt:120 (add_library): No SOURCES given to target: usb ld: error: undefined symbol: libusb_interrupt_transfer >>> referenced by gc_adapter.cpp >>> gc_adapter.cpp.o:(GCAdapter::Adapter::SendVibrations()) in archive src/input_common/libinput_common.a >>> referenced by gc_adapter.cpp >>> gc_adapter.cpp.o:(GCAdapter::Adapter::GetGCEndpoint(libusb_device*)) in archive src/input_common/libinput_common.a >>> referenced by gc_adapter.cpp >>> gc_adapter.cpp.o:(GCAdapter::Adapter::AdapterInputThread()) in archive src/input_common/libinput_common.a ld: error: undefined symbol: libusb_error_name >>> referenced by gc_adapter.cpp >>> gc_adapter.cpp.o:(GCAdapter::Adapter::SendVibrations()) in archive src/input_common/libinput_common.a ld: error: undefined symbol: libusb_control_transfer >>> referenced by gc_adapter.cpp >>> gc_adapter.cpp.o:(GCAdapter::Adapter::CheckDeviceAccess()) in archive src/input_common/libinput_common.a ld: error: undefined symbol: libusb_kernel_driver_active >>> referenced by gc_adapter.cpp >>> gc_adapter.cpp.o:(GCAdapter::Adapter::CheckDeviceAccess()) in archive src/input_common/libinput_common.a ld: error: undefined symbol: libusb_close >>> referenced by gc_adapter.cpp >>> gc_adapter.cpp.o:(GCAdapter::Adapter::CheckDeviceAccess()) in archive src/input_common/libinput_common.a >>> referenced by gc_adapter.cpp >>> gc_adapter.cpp.o:(GCAdapter::Adapter::ClearLibusbHandle()) in archive src/input_common/libinput_common.a >>> referenced by gc_adapter.cpp >>> gc_adapter.cpp.o:(GCAdapter::Adapter::Reset()) in archive src/input_common/libinput_common.a >>> referenced by gc_adapter.cpp >>> gc_adapter.cpp.o:(GCAdapter::Adapter::Setup()) in archive src/input_common/libinput_common.a >>> referenced by gc_adapter.cpp >>> gc_adapter.cpp.o:(GCAdapter::Adapter::AdapterScanThread()) in archive src/input_common/libinput_common.a ld: error: undefined symbol: libusb_detach_kernel_driver >>> referenced by gc_adapter.cpp >>> gc_adapter.cpp.o:(GCAdapter::Adapter::CheckDeviceAccess()) in archive src/input_common/libinput_common.a ld: error: undefined symbol: libusb_claim_interface >>> referenced by gc_adapter.cpp >>> gc_adapter.cpp.o:(GCAdapter::Adapter::CheckDeviceAccess()) in archive src/input_common/libinput_common.a ld: error: undefined symbol: libusb_get_config_descriptor >>> referenced by gc_adapter.cpp >>> gc_adapter.cpp.o:(GCAdapter::Adapter::GetGCEndpoint(libusb_device*)) in archive src/input_common/libinput_common.a ld: error: undefined symbol: libusb_release_interface >>> referenced by gc_adapter.cpp >>> gc_adapter.cpp.o:(GCAdapter::Adapter::ClearLibusbHandle()) in archive src/input_common/libinput_common.a >>> referenced by gc_adapter.cpp >>> gc_adapter.cpp.o:(GCAdapter::Adapter::Reset()) in archive src/input_common/libinput_common.a >>> referenced by gc_adapter.cpp >>> gc_adapter.cpp.o:(GCAdapter::Adapter::Setup()) in archive src/input_common/libinput_common.a >>> referenced by gc_adapter.cpp >>> gc_adapter.cpp.o:(GCAdapter::Adapter::AdapterScanThread()) in archive src/input_common/libinput_common.a ld: error: undefined symbol: libusb_init >>> referenced by gc_adapter.cpp >>> gc_adapter.cpp.o:(GCAdapter::Adapter::Adapter()) in archive src/input_common/libinput_common.a ld: error: undefined symbol: libusb_open_device_with_vid_pid >>> referenced by gc_adapter.cpp >>> gc_adapter.cpp.o:(GCAdapter::Adapter::Setup()) in archive src/input_common/libinput_common.a ld: error: undefined symbol: libusb_get_device >>> referenced by gc_adapter.cpp >>> gc_adapter.cpp.o:(GCAdapter::Adapter::Setup()) in archive src/input_common/libinput_common.a ld: error: undefined symbol: libusb_exit >>> referenced by gc_adapter.cpp >>> gc_adapter.cpp.o:(GCAdapter::Adapter::Reset()) in archive src/input_common/libinput_common.a
* | | Merge pull request #6652 from lat9nq/cmd-vulkan-fixesbunnei2021-07-201-18/+12
|\ \ \ | | | | | | | | yuzu-cmd: Linux Vulkan fixes
| * | | emu_window_sdl2_vk: Use the generated SDL configlat9nq2021-07-161-18/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* | | | cmake: Only search for Qt when we need tolat9nq2021-07-161-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When YUZU_USE_BUNDLED_QT was specified on a system with a compliant Qt version installed, CMake configuration would cause an error due to mixing YUZU_USE_BUNDLED_QT with the system Qt. Solution is to only search for Qt when YUZU_USE_BUNDLED_QT is disabled.
* | | | cmake: Only use NO_CMAKE_SYSTEM_PATH when needed for Qtlat9nq2021-07-161-1/+5
|/ / / | | | | | | | | | | | | | | | As-is causes issues with building yuzu using MinGW GCC on Linux-based machines. Only set the variable when needed. (I'm not quite sure how this was working before.)
* | / cmake: Only copy pre-commit hook if .git directory existsReinUsesLisp2021-07-091-3/+4
| |/ |/| | | | | Allow the usage of git worktrees on yuzu.
* | Merge pull request #6459 from lat9nq/ubuntu-fixesAmeer J2021-07-011-5/+84
|\ \ | | | | | | cmake: Improve Linux dependency checking for externals
| * | cmake: Check dependencies for Linux Qt packagelat9nq2021-06-131-4/+75
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently Qt will download whether or not the target system supports the package. Normally this isn't an issue since the package manager would work out the dependencies for us, but in this case we must make sure everything is in place before downloading the package. This checks for the package's requirements, as well as tries to provides hints as to what is required on some of the more cryptic dependencies.
| * | cmake: Fix find_program usage for 3.15lat9nq2021-06-131-1/+9
| |/ | | | | | | | | | | | | | | | | | | 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.
* / externals: Update fmt to 8.0.0Lioncash2021-06-231-1/+1
|/ | | | | | | Keeps us up to date with the latest major release. Also allows compilers that support it to perform compile-time format string checking.
* externals: libusb: Link libusb statically on Linuxlat9nq2021-06-031-4/+4
| | | | Turns out that this is possible. Also addresses my own review comment.
* cmake: General improvements to libusb linkinglat9nq2021-06-031-6/+10
| | | | | | | | | 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
* cmake: Use autotools to build libusb generally for GNUlat9nq2021-06-031-3/+9
| | | | | | | | | | 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.
* externals: libusb: Use autotools for MinGWlat9nq2021-05-311-1/+1
| | | | | | | | | | | | 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.
* cmake: Fix usage of CMAKE_DEPENDENT_OPTIONlat9nq2021-05-271-2/+2
| | | | | | | | CMAKE_DEPENDENT_OPTION takes a value argument, but as a macro function it will read a variable name as the name and not the value. For YUZU_USE_BUNDLED_QT, ensure that we are reading the value of MSVC. For YUZU_ALLOW_SYSTEM_SDL2, CMAKE_DEPENDENT_OPTION is redundant here anyway as we don't use that path on any toolchain by default.
* cmake: Download Qt binaries on Linux if neededlat9nq2021-05-261-6/+26
| | | | | | | | | | | | | If the local version of Qt is older than the minimum version required by yuzu, download a pre-built binary package from yuzu-emu/ext-linux-bin and build yuzu with it, instead. This also requires linking yuzu to the correct libraries after building it, and copying over the required binaries when building yuzu. This sets the Qt requirement to 5.12, which is intentionally behind the versions used by our toolchains since they are not all updated yet to 5.15.
* CMakeLists: Update zstd to 1.5.0Lioncash2021-05-211-1/+1
| | | | | zstd 1.5.0 brings numerous performance improvements to the library, as can be seen here: https://github.com/facebook/zstd/releases/tag/v1.5.0
* On Linux, build SDL2 from externals with HIDAPI supportv19932021-05-091-12/+18
|
* externals: Update SDL to 107db2d8lat9nq2021-05-091-2/+2
| | | | | In light of 72a49c2bbcce46c24b6d8ee0592989a507dcd68a, the SDL submodule also needs updated. Updates to the same commit used by the SDL package in ext-windows-bin.
* Update SDL2 to SDL2-2.0.15-prerelease.bunnei2021-05-081-1/+1
| | | - Improves native Switch JoyCon/Pro Controller support.
* cmake: Only config Boost during find_packagelat9nq2021-04-261-2/+2
| | | | | | | | | | Without the CONFIG option, find_package will perform Module search. On at least Linux Mint 20 (I'm unable to reproduce this on CentOS and Arch Linux), my guess is that this causes CMake to find "dirty" modules that modify the configuration state despite the Boost version being too low/absent. Use CONFIG to put CMake into pure Config mode and avoid Module search.
* cmake: Download Boost if inadequate local versionlat9nq2021-04-221-1/+19
| | | | | | | | | | | | | | Building SDL2 from externals is incompatible with Conan's version of libiconv, a requirement of Conan's Boost package. Solution is to use the same Boost package in use by the linux-fresh container. This tells CMake to download boost_1_75_0.tar.xz from yuzu-emu/ext-linux-bin at CMake's configuration step, much the same way Qt and FFmpeg are downloaded for Windows. Also makes DownloadExternals.cmake cross-platform. Although the CMake code is not entirely specific to Linux, only Linux has Boost libraries available at ext-linux-bin, whereas there is no equivalent Boost package for Windows at ext-windows-bin. caveat emptor
* cmake: Suppress SDL2 not found warninglat9nq2021-04-211-1/+1
| | | | | | If SDL2 is not found, the error is handled by falling back to externals. No need spill the full warning at the find_package if it's going to be handled later, so add QUIET to it.
* cmake: Allow FFmpeg external usage and cleanuplat9nq2021-04-211-6/+5
| | | | | | | | | | | | | Sets find_package(FFmpeg) to QUIET instead of REQUIRED. This allows using the FFmpeg external in cases where there is no suitable installed version of FFmpeg. Also fixes a bug where multiple CMake configures causes FFmpeg_LIBRARIES to concatenate on itself, producing cyclical dependencies. Unsets the variable before building it in the foreach loop. Fixes FFmpeg_INCLUDE_DIR not including the headers generated at run time.
* cmake: Use SDL 2.0.14 and fix CMake scope issuelat9nq2021-04-181-4/+4
| | | | | | | | | | Forces using SDL 2.0.14. Upgrades the SDL external to that version. Adds a message when switching to the external. Fixes an error where input_common only links to SDL when SDL2_FOUND is set, but externals/CMakeLists cannot set that variable to the required scope. Switch to using ENABLE_SDL2, which we can use since we now include the SDL source.
* externals: Add SDL 2.0.12lat9nq2021-04-171-9/+11
| | | | | | Since Bintray is (soon to be) no more, there needs to be a way to acquire SDL2. Since 20.04's version is older than our minimum required version (2.0.12), add it as an external.
* cmake: Remove use of bintray for externals.bunnei2021-04-161-40/+36
| | | | | | - Bintray will be deprecated on May 1st 2021 (https://bintray.com/) - We were previously using this for Qt (non-Windows) and SDL. - I've moved to bundled SDL on Windows.
* externals: Search for shared opus installation.Markus Wick2021-04-081-0/+2
| | | | | | | We had used conan for opus before, but there was a bug in the AVX detection. However we still had the Findopus.cmake file within the repository, but not used. This patch reenables the Findopus helper and prefer the system wide installation of opus.
* cmake: Update FFmpeg to 4.3.1lat9nq2021-02-101-1/+1
| | | | | | | Download FFmpeg package version 4.3.1. Uses a file defined within the package to determine with DLLs to copy. Also corrects a submodule name.
* cmake: Revert FFmpeg 4.3.1 update for Windows buildsameerj2021-02-091-1/+1
| | | | The new 4.3.1 externals build seems to not be compatible with yuzu. This also fixes an oversight when renaming CMake variables.
* CMakeLists: Use bundled FFmpeg as a fallbacklat9nq2021-02-061-13/+29
| | | | | | | | | | | | Sets YUZU_USE_BUNDLED_FFMPEG as a CMake dependent option that is OFF on Linux and ON for WIN32 targets. If FFmpeg is not found when YUZU_USE_BUNDLED_FFMPEG is OFF, the bundled module/binaries are used instead. Reverts earlier changes to FindFFmpeg a bit, mostly to keep parity with it's Citra version a bit. Now _FFmpeg_ALL_COMPONENTS lists all components. We overwrite FFmpeg_LIBRARIES and FFmpeg_INCLUDE_DIR after using the module.
* CMakeLists: Update to FFmpeg 4.3.1 for WIN32lat9nq2021-02-061-1/+1
| | | | Minimal binaries go brrrrrrr
* CMakeLists: Fixes for linux-freshlat9nq2021-02-061-1/+13
| | | | | | | | | Tells CMake to look for either nasm or yasm as it is required to build FFmpeg. Avoids a compile-time error by checking for it during configuration. Adds a workaround for Ubuntu Bionic's old version of make not communicating jobserver details properly.
* CMake: Port citra-emu/citra FindFFmpeg.cmakelat9nq2021-02-051-39/+43
| | | | | | | | | | | Also renames related CMake variables to match both the Find*FFmpeg* and variables defined within the file. Fixes odd errors produced by the old FindFFmpeg. Citra's FindFFmpeg is slightly modified here: adds Citra's copyright at the beginning, renames FFmpeg_INCLUDES to FFmpeg_INCLUDE_DIR, disables a few components in _FFmpeg_ALL_COMPONENTS, and adds the missing avutil component to the comment above.
* CMake: Implement YUZU_USE_BUNDLED_FFMPEGlat9nq2021-02-051-10/+102
| | | | | | | | For Linux, instructs CMake to use the FFmpeg submodule in externals. This is HEAVILY based on our usage of the late Unicorn. Minimal change to MSVC as it uses the yuzu-emu/ext-windows-bin. MinGW now targets the same ext-windows-bin libraries as MSVC for FFmpeg. Adds FFMPEG_LIBRARIES to WIN32 and simplifies video_core/CMakeLists.txt a bit.
* Bump conan SDL2 version to 2.0.14Valeri2021-01-211-1/+1
| | | | | Update conan package version used for building. A couple of new joystick-related functions might pose interest to yuzu's input system. Some sort of LED management have been added, but it doesn't seem to support leds used for player number indication JoyCons/ProCons use.
* CMakeLists: Disable YUZU_ENABLE_BOXCAT if ENABLE_WEB_SERVICE is disabledlat9nq2021-01-071-2/+6
| | | | | | | | | Boxcat is a web service but is still enabled if ENABLE_WEB_SERVICE is disabled during the CMake stage, which causes compilation issues with either missing headers or missing libraries. This disables YUZU_ENABLE_BOXCAT regardless of the input if ENABLE_WEB_SERVICE is disabled.
* Update zstd to v1.4.8FearlessTobi2021-01-031-1/+1
| | | | Co-Authored-By: Vitor K <29167336+vitor-k@users.noreply.github.com>
* cmake: Always enable VulkanReinUsesLisp2020-12-251-2/+0
| | | | | Removes the unnecesary burden of maintaining separate #ifdef paths and allows us sharing generic Vulkan code across APIs.
* cmake/conan: Conditionally add target Boost::contextlat9nq2020-12-161-6/+17
| | | | | | | | Addresses an issue with the two competing versions of Conan's Boost package that are currently floating around. Adds the Boost::context target only if it's recognized by CMake as a target.
* cmake: Fix generating CMake configs and linking with Boostlat9nq2020-12-131-1/+16
| | | | | | | | | | | | | | | Fixes regression by 761206cf81b271f7f4dd6a167a120325b760dbf3, causing yuzu to not build on Linux with any version of Boost except a cached 1.73 Conan version from before about a day ago. Moves the Boost requirement out of the `REQUIRED_LIBS` psuedo-2D-array for Conan to instead be manually configured, using Conan as a fallback solution if the system does not meet our requirements. Requires any update from the linux-fresh container in order to build. **DO NOT MERGE** until someone with the MSVC toolchain can verify this works there, too.
* CMakeLists,network: Create YUZU_UNIX macro to replace __unix__comex2020-12-071-0/+3
| | | | __unix__ is not predefined on Apple platforms even though they are Unix.
* externals: Update fmt to 7.1.2Lioncash2020-11-081-1/+1
| | | | Updates to the latest bugfix release of fmt.
* core: Remove usage of unicornLioncash2020-11-041-77/+0
| | | | | | | | Unicorn long-since lost most of its use, due to dynarmic gaining support for handling most instructions. At this point any further issues encountered should be used to make dynarmic better. This also allows us to remove our dependency on Python.
* Merge pull request #4831 from lioncash/fmtbunnei2020-10-291-1/+1
|\ | | | | externals: Update fmt to 7.1.0
| * externals: Update fmt to 7.1.0Lioncash2020-10-261-1/+1
| | | | | | | | Keeps the used version of the library up to date.
* | video_core: NVDEC Implementationameerj2020-10-271-0/+14
|/ | | | | | | | | | | | | | This commit aims to implement the NVDEC (Nvidia Decoder) functionality, with video frame decoding being handled by the FFmpeg library. The process begins with Ioctl commands being sent to the NVDEC and VIC (Video Image Composer) emulated devices. These allocate the necessary GPU buffers for the frame data, along with providing information on the incoming video data. A Submit command then signals the GPU to process and decode the frame data. To decode the frame, the respective codec's header must be manually composed from the information provided by NVDEC, then sent with the raw frame data to the ffmpeg library. Currently, H264 and VP9 are supported, with VP9 having some minor artifacting issues related mainly to the reference frame composition in its uncompressed header. Async GPU is not properly implemented at the moment. Co-Authored-By: David <25727384+ogniK5377@users.noreply.github.com>
* cmake: Update to Qt 5.12.8Morph2020-09-091-1/+1
|
* CMakeLists: Update fmt to 7.0.3Lioncash2020-08-141-1/+1
| | | | Keeps the library up to date and fixes a few bugs
* General: Tidy up clang-format warningsLioncash2020-08-091-1/+1
|
* CMakeLists: Update boost to 1.73Lioncash2020-07-281-1/+1
| | | | Keeps the library up to date.
* CMakeLists: Update catch to 2.13Lioncash2020-07-281-1/+1
| | | | Keeps the library up to date
* CMakeLists: Update zstd to 1.4.5Lioncash2020-07-281-1/+1
| | | | Keeps the library version up to date.
* CMakeFiles: Update json to 3.8.0Lioncash2020-07-281-1/+1
| | | | Keeps the tracked version of the library up to date.
* yuzu: Port translation support from CitraFearlessTobi2020-07-181-0/+5
| | | | Co-Authored-By: Weiyi Wang <wwylele@gmail.com>
* Merge pull request #4280 from jbeich/system-libusbLC2020-07-141-0/+1
|\ | | | | cmake: pass libusb include directory
| * cmake: pass libusb include directory as wellJan Beich2020-07-091-0/+1
| | | | | | | | | | | | | | In file included from src/input_common/gcadapter/gc_adapter.cpp:8: src/./input_common/gcadapter/gc_adapter.h:11:10: fatal error: 'libusb.h' file not found #include <libusb.h> ^~~~~~~~~~
* | CMakeLists: Enable usage of C++20 on LinuxLioncash2020-07-131-3/+3
| | | | | | | | | | This also fixes building on Linux with C++20, so we can enable it across the board for all OSes that we officially support.
* | CMakeLists: Correct boost asio disabling define nameLioncash2020-07-121-1/+1
| | | | | | | | Previously the name of the define was missing the BOOST_ prefix.
* | CMakeLists: Disable concepts in boost asioLioncash2020-07-121-0/+2
| |
* | Merge pull request #4290 from lioncash/latestLC2020-07-121-2/+9
|\ \ | | | | | | CMakeLists: Make use of /std:c++latest on MSVC
| * | CMakeLists: Make use of /std:c++latest on MSVCLioncash2020-07-111-2/+9
| | | | | | | | | | | | | | | | | | | | | | | | Provides the buildbot with one builder that is always tracking the latest version of the C++ standard, allowing us to progressively rectify our code and amend any differences between standards over time instead of waiting for a complete standard change, potentially breaking a lot of code all at once.
* | | CMakeLists: Do not search for system libusb on macOSMerryMage2020-07-111-3/+4
|/ /
* | Merge pull request #4221 from jbeich/unused-qt-openglbunnei2020-07-101-2/+2
|\ \ | | | | | | cmake: drop dependency on QtOpenGL
| * | cmake: stop linking against QGL after c6a0ab979239Jan Beich2020-07-021-2/+2
| | |
* | | Merge pull request #4287 from lioncash/fmt7bunnei2020-07-101-1/+1
|\ \ \ | | | | | | | | CMakeLists: Update fmt to 7.0.1
| * | | CMakeLists: Update fmt to 7.0.1Lioncash2020-07-101-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Keeps the package up to date with the latest major release of fmt. This version brings in quite a bit of improvements, such as code size reduction, etc.
* | | | CMakeLists: Use lower-case command namesLioncash2020-07-101-1/+1
|/ / / | | | | | | | | | | | | Our convention uses lower-case command names, so this is just a consistency change.
* | / cmake: Fix libusb builds breakingDavid Marcec2020-07-101-0/+1
| |/ |/|
* | cmake: unbreak system libusb supportJan Beich2020-07-071-2/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Reference libusb doesn't support DragonFly and FreeBSD because those ship a different libusb implementation (supports 0.1, 1.0, 2.0 API). ld: error: undefined symbol: usbi_backend >>> referenced by core.c >>> core.c.o:(usbi_alloc_device) in archive externals/libusb/libusb.a ld: error: undefined symbol: usbi_backend >>> referenced by core.c >>> core.c.o:(usbi_alloc_device) in archive externals/libusb/libusb.a ld: error: undefined symbol: usbi_backend >>> referenced by core.c >>> core.c.o:(libusb_has_capability) in archive externals/libusb/libusb.a ld: error: undefined symbol: usbi_backend >>> referenced by core.c >>> core.c.o:(libusb_has_capability) in archive externals/libusb/libusb.a ld: error: undefined symbol: usbi_backend >>> referenced by core.c >>> core.c.o:(libusb_has_capability) in archive externals/libusb/libusb.a ld: error: undefined symbol: usbi_backend >>> referenced by core.c >>> core.c.o:(usbi_connect_device) in archive externals/libusb/libusb.a ld: error: undefined symbol: usbi_backend >>> referenced by core.c >>> core.c.o:(usbi_disconnect_device) in archive externals/libusb/libusb.a ld: error: undefined symbol: usbi_backend >>> referenced by core.c >>> core.c.o:(libusb_get_device_list) in archive externals/libusb/libusb.a ld: error: undefined symbol: usbi_backend >>> referenced by core.c >>> core.c.o:(libusb_get_device_list) in archive externals/libusb/libusb.a ld: error: undefined symbol: usbi_backend >>> referenced by core.c >>> core.c.o:(libusb_unref_device) in archive externals/libusb/libusb.a ld: error: undefined symbol: usbi_backend >>> referenced by core.c >>> core.c.o:(libusb_unref_device) in archive externals/libusb/libusb.a ld: error: undefined symbol: usbi_write >>> referenced by core.c >>> core.c.o:(usbi_signal_event) in archive externals/libusb/libusb.a ld: error: undefined symbol: usbi_read >>> referenced by core.c >>> core.c.o:(usbi_clear_event) in archive externals/libusb/libusb.a ld: error: undefined symbol: usbi_backend >>> referenced by core.c >>> core.c.o:(libusb_wrap_sys_device) in archive externals/libusb/libusb.a ld: error: undefined symbol: usbi_backend >>> referenced by core.c >>> core.c.o:(libusb_wrap_sys_device) in archive externals/libusb/libusb.a ld: error: undefined symbol: usbi_backend >>> referenced by core.c >>> core.c.o:(libusb_wrap_sys_device) in archive externals/libusb/libusb.a ld: error: undefined symbol: usbi_backend >>> referenced by core.c >>> core.c.o:(libusb_open) in archive externals/libusb/libusb.a ld: error: undefined symbol: usbi_backend >>> referenced by core.c >>> core.c.o:(libusb_open) in archive externals/libusb/libusb.a ld: error: undefined symbol: usbi_read >>> referenced by core.c >>> core.c.o:(libusb_close) in archive externals/libusb/libusb.a ld: error: undefined symbol: usbi_write >>> referenced by core.c >>> core.c.o:(libusb_close) in archive externals/libusb/libusb.a ld: error: too many errors emitted, stopping now (use -error-limit=0 to see all errors) c++: error: linker command failed with exit code 1 (use -v to see invocation)
* | Fix merge conflicts?Ameer2020-07-041-2/+3
|\ \
| * | externals: Track opus as submodule instead of using conanDavid Marcec2020-07-011-2/+0
| |/ | | | | | | Supersedes #4068 see for details.
| * cmake: depend on WebEngine with system QtJan Beich2020-06-301-0/+3
| | | | | | | | | | | | | | CMake Error at src/yuzu/CMakeLists.txt:7 (add_executable): Target "yuzu" links to target "Qt5::WebEngineCore" but the target was not found. Perhaps a find_package() call is missing for an IMPORTED target, or an ALIAS target is missing?
* | Singleton GC Adapter class, remove globals, fix naming conventionAmeer2020-06-221-0/+6
|/ | | | | | | | Fix clang formatting Manual fix for configure_input_player formatting Add missing lib usb cmake command
* externals: Revert to libressl, as build is broken with find_package(OpenSSL). (#4093)bunnei2020-06-171-10/+0
| | | | | | | * externals: Revert to libressl, as build is broken with find_package(OpenSLL). * fixup! externals: Revert to libressl, as build is broken with find_package(OpenSLL). * fixup! externals: Revert to libressl, as build is broken with find_package(OpenSLL).
* Update CMakeLists.txtbunnei2020-06-011-1/+1
|
* Update CMakeLists.txtbunnei2020-05-311-1/+1
|
* Mark the opus version check as broken.Markus Wick2020-05-091-0/+1
|
* Replace externals with Conan (#3735)James Rowe2020-05-081-70/+217
| | | | | | | | | | | | | | | | | | | | | * Remove git submodules that will be loaded through conan * Move custom Find modules to their own folder * Use conan for downloading missing external dependencies * CI: Change the yuzu source folder user to the user that the containers run on * Attempt to remove dirty mingw build hack * Install conan on the msvc build * Only set release build type when using not using multi config generator * Re-add qt bundled to workaround an issue with conan qt not downloading prebuilt binaries * Add workaround for submodules that use legacy CMAKE variables * Re-add USE_BUNDLED_QT on the msvc build bot
* cmake: Silence -Werror=implicit-fallthrough in SDL2 headersJan Beich2020-04-191-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In file included from src/input_common/sdl/sdl_impl.cpp:16: In file included from /usr/local/include/SDL2/SDL.h:32: In file included from /usr/local/include/SDL2/SDL_main.h:25: /usr/local/include/SDL2/SDL_stdinc.h:445:9: error: unannotated fall-through between switch labels [-Werror,-Wimplicit-fallthrough] case 3: *_p++ = _val; /* fallthrough */ ^ /usr/local/include/SDL2/SDL_stdinc.h:445:9: note: insert '[[fallthrough]];' to silence this warning case 3: *_p++ = _val; /* fallthrough */ ^ [[fallthrough]]; /usr/local/include/SDL2/SDL_stdinc.h:445:9: note: insert 'break;' to avoid fall-through case 3: *_p++ = _val; /* fallthrough */ ^ break; /usr/local/include/SDL2/SDL_stdinc.h:446:9: error: unannotated fall-through between switch labels [-Werror,-Wimplicit-fallthrough] case 2: *_p++ = _val; /* fallthrough */ ^ /usr/local/include/SDL2/SDL_stdinc.h:446:9: note: insert '[[fallthrough]];' to silence this warning case 2: *_p++ = _val; /* fallthrough */ ^ [[fallthrough]]; /usr/local/include/SDL2/SDL_stdinc.h:446:9: note: insert 'break;' to avoid fall-through case 2: *_p++ = _val; /* fallthrough */ ^ break; /usr/local/include/SDL2/SDL_stdinc.h:447:9: error: unannotated fall-through between switch labels [-Werror,-Wimplicit-fallthrough] case 1: *_p++ = _val; /* fallthrough */ ^ /usr/local/include/SDL2/SDL_stdinc.h:447:9: note: insert '[[fallthrough]];' to silence this warning case 1: *_p++ = _val; /* fallthrough */ ^ [[fallthrough]]; /usr/local/include/SDL2/SDL_stdinc.h:447:9: note: insert 'break;' to avoid fall-through case 1: *_p++ = _val; /* fallthrough */ ^ break; 3 errors generated.
* fix CMake build errors for certain SDL2 installationsBrian Clinkenbeard2020-02-171-1/+7
|
* use config mode for finding SDL2 with CMakeBrian Clinkenbeard2020-02-111-5/+6
|
* Input: UDP Client to provide motion and touch controlsfearlessTobi2020-01-231-0/+7
| | | | | | | | An implementation of the cemuhook motion/touch protocol, this adds the ability for users to connect several different devices to citra to send direct motion and touch data to citra. Co-Authored-By: jroweboy <jroweboy@gmail.com>
* Ignore git-related files in cmake for EA tarballsJake Merdich2019-12-061-2/+5
| | | | | | | This fixes the early-access builds on Windows (tested on EA 58). Cmake was previously looking for git-related files that were stripped out of the early access builds and failing; check if those exist before reading them.
* cmake: Add cmake option to build Boxcat backendZach Hilman2019-09-301-0/+2
| | | | Default enabled
* Revert "CMake: Get Git submodule dependencies via CMake (#2474)"Tobias2019-06-291-12/+16
| | | | This reverts commit 5cef446f42e698a524c6c3240fedb0031f8e5694.
* CMake: Get Git submodule dependencies via CMake (#2474)Frederic L2019-06-201-16/+12
| | | | | | | | | | * CMake: Get Git submodule dependencies via CMake * CMakeLists: Fixed unintentional line break * travis: Bring parity between linux-mingw and linux build script * CMakeLists: Fixed typo in error message
* CMakeLists: Handle VS 2019 in a less annoying mannerLioncash2019-05-151-3/+3
| | | | | | VS 2019 is binary compatible with VS 2017, so we can safely use the prebuilt libraries for VS 2017 with VS 2019. This makes it less annoying to build yuzu with the most up to date toolchain.
* fix clang-format target when using a path with spaces on windowskhang062019-04-071-1/+1
|
* Merge pull request #2253 from lioncash/flagsbunnei2019-03-231-79/+9
|\ | | | | Migrate off directly modifying CMAKE_* compilation-related flags directly
| * CMakeLists: Move compilation flags into the src directoryLioncash2019-03-171-79/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | We generally shouldn't be hijacking CMAKE_CXX_FLAGS, etc as a means to append flags to the targets, since this adds the compilation flags to everything, including our externals, which can result in weird issues and makes the build hierarchy fragile. Instead, we want to just apply these compilation flags to our targets, and let those managing external libraries to properly specify their compilation flags. This also results in us not getting as many warnings, as we don't raise the warning level on every external target.
* | CMakeLists: Raise minimum Boost requirement to 1.66.0MerryMage2019-03-181-2/+2
|/ | | | Required due to bugfix in boost for changed template resolving rules in GCC 7.3.0 in C++17 mode
* CMakeLists: Remove now-unnecessary GCC special-casingLioncash2019-03-161-8/+2
| | | | | This issue has since been fixed in newer versions of Boost, so we don't need to worry about this anymore.
* cmake: Add Vulkan optionReinUsesLisp2019-02-121-0/+2
|
* gl_shader_disk_cache: Invalidate shader cache changes with CMake hashReinUsesLisp2019-02-071-13/+0
|
* Update Qt MSVC external to 5.12.0Zach Hilman2018-12-311-1/+1
|
* cmake: Add USE_QT_WEB_ENGINE flag and update build systemZach Hilman2018-12-281-0/+6
|
* GDBStub improvements:Hedges2018-11-131-1/+1
| | | | | | - Add FPU support - Fix access to TLS Fix clang-format.
* Merge pull request #1542 from lioncash/projectbunnei2018-10-241-19/+19
|\ | | | | CMakeLists: Use PROJECT_SOURCE_DIR instead of CMAKE_SOURCE_DIR
| * CMakeLists: Use PROJECT_SOURCE_DIR instead of CMAKE_SOURCE_DIRLioncash2018-10-201-19/+19
| | | | | | | | | | | | | | | | | | This is more localized to what we want to enforce directory-wise with the project. CMAKE_SOURCE_DIR indicates the root of the source tree, but this would cause the wrong behavior if someone included yuzu as part of a larger buildsystem (for whatever reason). Instead, we want to use the directory where the "project(yuzu)" command was declared as the root path reference.
* | CMakeLists: Remove EMU_ARCH_BITS definitionLioncash2018-10-231-4/+0
| | | | | | | | | | | | This was only ever used by the now-removed memory_util functions. Also, given we don't plan to support 32-bit architectures, this is just a leftover from citra at this point.
* | cmake: mingw also needs _FILE_OFFSET_BITS=64Weiyi Wang2018-10-231-1/+1
|/
* Merge pull request #1332 from FearlessTobi/port-web-backendbunnei2018-10-061-0/+4
|\ | | | | Port web_service from Citra
| * Review comments -part 4fearlessTobi2018-10-021-7/+0
| |
| * Port web_service from CitrafearlessTobi2018-10-021-0/+11
| |
* | string_util: unify UTF8<->UTF16 conversion to codecvtWeiyi Wang2018-10-021-8/+0
|/
* CMake: Remove superfluous CMAKE_RUNTIME_OUTPUT_DIRECTORY assignmentspycrab2018-09-251-2/+0
|
* Port citra-emu/citra#4214: "Set citra-qt project as default StartUp Project in Visual Studio"fearlessTobi2018-09-221-2/+6
|
* Merge pull request #1225 from tech4me/travis-windowsJames Rowe2018-09-211-4/+13
|\ | | | | travis: running mingw build on travis ci
| * travis: running mingw build on travis citech4me2018-09-191-4/+13
| | | | | | | | This commit also fixed a broken cmake dependency with unicorn
* | Update CMakeLists.txtFrederic Laing2018-09-121-0/+3
|/ | | Set yuzu project as default StartUp Project in Visual Studio
* Show game compatibility within yuzufearlessTobi2018-08-291-0/+13
|
* CMakeLists: Add architecture detection for AArch64Lioncash2018-08-151-0/+2
| | | | | We already have an equivalent in place for the 32-bit ARM architecture, so we should also have one for the newer 64-bit ARM architecture as well.
* externals: Update to SDL2-2.0.8.bunnei2018-08-121-1/+1
|
* CMakeLists: lowercase find_library usageLioncash2018-08-121-1/+1
| | | | | The rest of the CMake script uses lowercase for commands (which is the general CMake style), making it more consistent with surrounding code.
* CMakeLists: Change MSVC14 variable to MSVC_VERSIONLioncash2018-08-121-5/+5
| | | | | | Use of the MSVC14 variable is discouraged in the CMake documentation (which makes sense, since MSVC_VERSION is the more general appliable variable).
* audio_core: Implement Sink and SinkStream interfaces with cubeb.bunnei2018-07-311-0/+2
|
* Revert "Use Ninja for MSVC AppVeyor builds" (#584)bunnei2018-06-231-1/+1
|
* Drop /std:c++latest from MSVC command lineMichał Janiszewski2018-06-051-1/+1
| | | | CMake already sets it to version 17 in all cases
* Merge pull request #66 from RiverCityRansomware/qtUpdatebunnei2018-04-021-1/+1
|\ | | | | Updates CMakeLists to use Qt 5.10.0 instead of Qt 5.7
| * Update qtRiver City Ransomware2018-01-171-1/+1
| | | | | | Updates qt from 5.7 to 5.10.0, fixing some errors relating to setting the process dpi
* | CMake: Set EMU_ARCH_BITS in CMakeLists.txtN00byKing2018-03-211-0/+3
| |
* | Merge pull request #144 from KAMiKAZOW/patch-1bunnei2018-01-271-1/+1
|\ \ | | | | | | Install Linux icon in hicolor instead of pixmaps
| * | Install Linux icon in hicolor instead of pixmapsKAMiKAZOW2018-01-261-1/+1
| | | | | | | | | | | | | | | hicolor is the preferred location for applications. See https://specifications.freedesktop.org/icon-theme-spec/icon-theme-spec-latest.html#directory_layout Same as https://github.com/citra-emu/citra/pull/3007
* | | Fix typo for dependent optionsJames Rowe2018-01-261-1/+1
|/ /
* | CMakeLists: Fix unicorn build for macOS developers with x86_64-only systemsMerryMage2018-01-211-1/+1
| | | | | | | | Some of us do not have any i386 libraries required to build x86-32 universal libraries.
* | CMakeLists: Do not look for system Unicorn by defaultMerryMage2018-01-211-2/+5
| | | | | | | | | | Since we use a custom build of unicorn it doesn't make much sense to look for the system version, unless the user explicitly wants to override this.
* | CMake: Conditionally turn on bundled libs for MSVCJames Rowe2018-01-211-2/+5
| | | | | | | | | | | | | | | | Removes the annoying step when generating sln for MSVC where you have to click an extra checkbox after the first generate fails by using a conditional option. The USE_BUNDLED options will be off by default, but if the enable_lib option is enabled and the toolset is msvc, they are turned ON.
* | CMake: Add a custom clang format targetJames Rowe2018-01-201-0/+47
| | | | | | | | | | | | Checks to see if clang-format can be found, and if it is, sets up a custom target that will run against the src dir and auto formats all files. In MSVC, this is a project, and in Makefiles, its a make target
* | Port citra #3352 to yuzu (#103)River City Ransomware2018-01-201-8/+11
| | | | | | | | | | | | | | | | | | | | * Port citra #3352 to yuzu This change allows non x86_64 architectures to compile yuzu by skipping the building of dynarmic * Fixed clang-format errors * fixes more clang-format errors
* | CMakeLists: Derive the source directory grouping from targets themselvesLioncash2018-01-181-2/+4
|/ | | | | Removes the need to store to separate SRC and HEADER variables, and then construct the target in most cases.
* CMake: Override PYTHON environment variable for libunicornspycrab2018-01-161-1/+3
|
* Build: Automagically handle unicornJames Rowe2018-01-161-45/+47
| | | | | | | On MSVC if unicorn isn't found, fallback to bundled unicorn On everything else, fallback to building unicorn in externals Also fixes loading unicorn in msvc
* Build: Add unicorn as a submodule and build it if neededJames Rowe2018-01-161-0/+25
| | | | | | | Adds a cmake custom target that will build unicorn on first compile and uses this in the build scripts as well. Updates Appveyor and Travis build scripts to work with the new unicorn build, and updates the paths to all of the different artifacts.
* rename CITRA to YUZUSimonx222018-01-151-6/+6
|
* Merge pull request #17 from spycrab/bindirbunnei2018-01-151-0/+3
|\ | | | | CMake: Output binaries to bin/
| * CMake: Output binaries to bin/spycrab2018-01-151-0/+3
| |
* | fixed build for gcc c++17 / boost.icl incompatibilityHarry Prevor2018-01-151-0/+6
|/
* Fix compilation on case-sensitive OSXRobin Lambertz2018-01-141-1/+1
| | | | | When compiling on a case-sensitive filesystem on OSX, cmake doesn't find the FindUnicorn file, because it looks for Findunicorn.cmake. We should uses the correct case to avoid this issue.
* Add new icons and fix up the linux paths for installJames Rowe2018-01-131-15/+3
|
* Massive removal of unused modulesJames Rowe2018-01-131-22/+1
|
* CMakeLists: Use C++ 17.bunnei2018-01-131-2/+2
|
* cmake: Use LIBUNICORN_* on Windows.bunnei2018-01-091-2/+2
|
* fix macos buildMerryMage2018-01-091-2/+2
|
* externals: Use unicorn DLL instead of static lib.bunnei2018-01-041-2/+3
|
* unicorn: Use for arm interface on Windows.bunnei2018-01-041-0/+31
|
* Build: Enable SSL in mingw by linking against WinSSLJames Rowe2017-09-111-18/+10
| | | | | | | | | | The mingw builds aren't submitting telemetry because the curl library they are linked against is configured to use openSSL and openSSL looks for the certificates in the users home folder. This keeps it from contacting web services because it can't communicate over SSL. This commit adds a download in mingw builds that will download a precompiled curl for mingw linked against winssl and sspi.
* Add manifestDaMan2017-09-031-2/+2
|
* common: Add build timestamp to scm_rev.bunnei2017-08-041-1/+8
|
* tests: Add tests for vaddMerryMage2017-07-231-1/+1
|
* CMakeLists: Check that all submodules are presentMerryMage2017-07-161-0/+15
|
* web_service: Add CMake flag to enable.bunnei2017-07-121-0/+5
|
* Set global definition WIN32_LEAN_AND_MEAN (#2807)B3n302017-06-251-0/+2
| | | Set definition WIN32_LEAN_AND_MEAN to avoid windows.h including a lot of libs that are usually not used.
* CMake: Set MSVC flags for improved C++ standards conformanceYuri Kunde Schlesner2017-06-171-3/+6
| | | | This makes the compiler stricter and also enables small optimizations.
* CMake: Re-organize root CMakeLists.txt fileYuri Kunde Schlesner2017-05-281-56/+78
| | | | Separates the file into sections and re-orders things to fit in them
* CMake: Move definitions of externals to the CMakeLists in that directoryYuri Kunde Schlesner2017-05-281-26/+5
|
* CMake: Create INTERFACE targets for microprofile and nihstroYuri Kunde Schlesner2017-05-281-2/+6
|
* CMake: Add SoundTouch include path to target propertyYuri Kunde Schlesner2017-05-281-0/+2
|
* CMake: Use target properties to add inih include pathsYuri Kunde Schlesner2017-05-281-3/+1
|
* CMake: Define an interface target for SDL2 definitionsYuri Kunde Schlesner2017-05-281-0/+7
|
* CMake: Remove CITRA_QT_LIBS varYuri Kunde Schlesner2017-05-281-1/+0
| | | | | This used to be required to support both Qt4 and Qt5, but we dropped Qt4 so it's not needed anymore.
* CMake: Stop using FindOpenGL, which seems to not be required anymoreYuri Kunde Schlesner2017-05-281-3/+0
|
* CMake: Use append instead of set to modify listYuri Kunde Schlesner2017-05-281-1/+1
|
* CMake: Use IMPORTED target for BoostYuri Kunde Schlesner2017-05-281-6/+8
|
* CMake: Use IMPORTED target for libpngYuri Kunde Schlesner2017-05-281-5/+3
|
* Add the fmt string formatting libraryYuri Kunde Schlesner2017-05-271-0/+1
| | | | | | | More info at http://fmtlib.net/ This commit was based on @jroweboy's work on his spdlog branch, but with modifications.
* Fix Microprofile in MinGW (#2530)Fernando Sahmkow2017-02-051-2/+0
|
* Removed unused and outdated external qhexeditKloen2017-01-221-5/+0
|
* Change deploy to use github releases instead, but only for the citra-nightly repoJames Rowe2017-01-051-5/+0
|
* Add deploy to bintray for builds to masterJames Rowe2016-12-311-0/+5
|
* Merge pull request #2303 from freiro/citra-qt_missing_sdl2_dllbunnei2016-12-161-0/+1
|\ | | | | Copy SDL2.dll when compiling citra-qt with msvc
| * Modularization of copy_msvc_libraries cmake functfreiro2016-12-111-0/+1
| | | | | | | | | | Created a new folder in Citra's root called CMakeModules that should contain cmake functions used by the various CMakeLists.txt.
* | Externals: Add XbyakYuri Kunde Schlesner2016-12-151-0/+2
| |
* | CMakeLists: Autodetect clang and only then use libc++Jeffrey Pfau2016-12-131-2/+4
|/
* Merge pull request #2202 from j-selby/man-docsYuri Kunde Schlesner2016-12-091-0/+12
|\ | | | | Add man documentation
| * Add man documentationJames2016-11-261-0/+12
| | | | | | | | Includes both SDL and QT frontends
* | Disable Microprofile on Mingw buildsJames2016-12-051-0/+3
| | | | | | | | This fixes a crash when starting games
* | Appending PLATFORM_LIBRARIES instead of redefining themfreiro2016-11-301-3/+3
| |
* | WINVER definition moved to CMake and cleanupfreiro2016-11-301-8/+8
|/
* Move to SDL2-2.0.5freiro2016-11-221-1/+1
|
* Add mingw compile supportJames Rowe2016-11-141-1/+10
|
* build: don't install freedesktop.org metadata for SDL2-only buildsJan Beich2016-10-281-1/+1
| | | | | | | Citra SDL2 doesn't have a launcher, and citra.desktop tries to execute citra-qt which is N/A unless built with ENABLE_QT. Limiting installed files to one of the options also makes it easier to split them into separate non-conflicting packages downstream.
* build: add default install for DragonFly, Solaris, etc.Jan Beich2016-10-281-1/+1
|
* build: clock_gettime() is in libc on BSDsJan Beich2016-10-281-1/+1
|
* build: libc may not provide iconv() on UnixJan Beich2016-10-281-3/+10
| | | | /usr/bin/ld: ../common/libcommon.a(string_util.cpp.o): undefined reference to symbol 'libiconv_open'
* common: convert to standard stat()/fstat() interfacesAnthony J. Bentley2016-10-281-0/+9
| | | | | | | | | | | | | Most modern Unix environments use 64-bit off_t by default: OpenBSD, FreeBSD, OS X, and Linux libc implementations such as Musl. glibc is the lone exception; it can default to 32 bits but this is configurable by setting _FILE_OFFSET_BITS. Avoiding the stat64()/fstat64() interfaces is desirable because they are nonstandard and not implemented on many systems (including OpenBSD and FreeBSD), and using 64 bits for stat()/fstat() is either the default or trivial to set up.
* dynarmic: Add new submodule.bunnei2016-09-151-0/+3
|
* CMakeLists: Set Boost_INCLUDE_DIR.bunnei2016-09-151-4/+3
|
* Revert "MSVC: Add RelWithDebInfo and removing debugging from Release."bunnei2016-09-011-11/+7
|
* MSVC: Add RelWithDebInfo and removing debugging from Release.James Rowe2016-09-011-7/+11
| | | | This should reduce build size on windows from roughly 12MB compressed to 7MB
* qt: Use 5.7 on Windows.bunnei2016-08-161-1/+1
|
* CMake: Fix for QT 5.7 overwriting -std=c++1y flagJames Rowe2016-08-051-4/+6
| | | | | | | In QT 5.7 they added a new check for CXX features which appends a minimum required standard to the CXX_FLAGS. Because we were writing the flag directly previously, cmake assumed it needed to add a c++11 flag to the build. This tells cmake to use c++14 on every build.
* Remove the -msse4.1 on ¬MSVC.Emmanuel Gil Peyrot2016-07-231-5/+0
| | | | | | | This option makes the generated binary crash with an illegal instruction when the target CPU doesn’t support the SSE4.1 extension (see #1968), with no noticeable performance increase compared to a generic build.
* CMakeLists: Drop support for Qt 4Lioncash2016-06-171-11/+2
|
* Tests: Run tests on CIMerryMage2016-05-191-0/+2
|
* AudioCore: SDL2 SinkMerryMage2016-05-071-0/+3
|
* Externals: Add soundtouchMerryMage2016-04-281-0/+3
|
* CMakeLists: Use imported version of Threads::ThreadsSam Spilsbury2016-04-241-3/+5
| | | | | | | This requires bumping up to a minimum of CMake 3.1. The benefit of using the imported target is that you can switch to the -pthread compiler flag on request, which may be necessary for some systems if available.
* CMakeLists: Use CMAKE_THREAD_LIBS_INITSam Spilsbury2016-04-231-2/+4
|
* CMakeFiles: Compile as C++14Lioncash2016-04-031-1/+1
|
* Dependencies: Remove GLFW, Add SDL2MerryMage2016-03-021-17/+12
| | | | | | | | | | | | | | citra: Remove GLFW, Add SDL2 FindSDL2: Do not CACHE SDL2_* variables if library is not found EmuWindow_SDL2: Set minimal client area at initialisation time EmuWindow_SDL2: Corrections EmuWindow_SDL2: Fix no decorations on startup on OS X cmake: windows_copy_files
* Enable RTTI on Windows builds.Tony Wasserka2015-11-121-2/+1
|
* CMake: Silence more MSVC "deprecation" warningsYuri Kunde Schlesner2015-09-141-1/+1
|
* CMake: Make all cache options appear even in case of errorsYuri Kunde Schlesner2015-09-091-5/+7
| | | | | | | | The `option` commands have been moved to the top of the file, so that the relevant options are registered in the CMake cache even if one of the required libraries is not found. This solves an ergonomic problem when using bundled libraries where you have to first download GLFW before being able to select the option to also download Qt.
* CMake: Point binary downloads to new official repoYuri Kunde Schlesner2015-09-091-1/+1
|
* CMake: Remove support for QTDIR environment variableYuri Kunde Schlesner2015-09-091-8/+2
| | | | | | | | | | | Using this variable is problematic is the user has several versions of Qt installed on their system. There is no way to know ahead of time if the Qt version pointed to by QTDIR matches the toolchain that is being targeted. The Qt installation path can still be easily specified if it's not found by CMake by setting the Qt5_DIR cache variable after the initial configuration run, so this shouldn't present an usability issue.
* CMake: Don't complain when Boost isn't found in the system.Yuri Kunde Schlesner2015-09-091-1/+1
|
* CMake: Use HINTS option instead of modifying CMAKE_PREFIX_PATH for QtYuri Kunde Schlesner2015-09-091-4/+11
|
* CMake: Add option to download Qt and GLFW binaries over HTTPYuri Kunde Schlesner2015-09-091-45/+41
|
* CMake: Fix architecture detection on MSVCYuri Kunde Schlesner2015-09-091-5/+31
| | | | | CMAKE_SYSTEM_ARCHICTETURE always returns the *host* not target arch when using the MSVC generators. (CMake bugs 15170 and 14342.)
* Replace the previous OpenGL loader with a glad-generated 3.3 oneYuri Kunde Schlesner2015-08-301-0/+1
| | | | | | The main advantage of switching to glad from glLoadGen is that, apart from being actively maintained, it supports a customizable entrypoint loader function, which makes it possible to also support OpenGL ES.
* Integrate the MicroProfile profiling libraryYuri Kunde Schlesner2015-08-251-0/+1
| | | | | This brings goodies such as a configurable user interface and multi-threaded timeline view.
* Fix building under MinGWdarkf2015-08-181-1/+2
|
* Rename ARCHITECTURE_X64 definition to ARCHITECTURE_x86_64.bunnei2015-08-161-13/+14
|
* Common: Ported over Dolphin's code for x86 CPU capability detection.bunnei2015-08-151-2/+13
|
* Enable linker optimizations in MSVC Release buildsYuri Kunde Schlesner2015-07-281-1/+1
| | | | | | Apparently /DEBUG implicitly disables linker optimizations. This explicitly re-enables them, giving a 40% reduction in binary sizes and a very slight runtime speed improvement.
* Fix permissions in pre-commit hookJSFernandes2015-07-141-2/+1
|
* Implement new argument parsing using getopt and add the corresponding library to externalsGreg Wicks2015-07-121-0/+4
|
* CMake: Fix Debug build configuration in MSVCYuri Kunde Schlesner2015-07-091-15/+17
| | | | | | | | Debug was missing compiler flags, causing MSVC to default it to building with optimizations enabled (making for a not very useful binary for actual debugging...). Additionally, the variables were re-organized to remove some redundancy, the old Release build type was removed, and RelWithDebInfo was renamed to take its place instead.
* Merge pull request #839 from Lectem/whitespacepolicyYuri Kunde Schlesner2015-06-211-0/+7
|\ | | | | Enforce the "no tab, use spaces" policy with a pre-commit hook.
| * force no-tab/trailing spaces with git hookLectem2015-06-091-0/+7
| | | | | | | | | | | | | | | | | | Remove unneeded stuff from pre-commit script The check against an empty commit was not needed (it is only a security for the 1st commit after git init). It could also possibly pose problems because of the redirection to /dev/null on some windows systems. newline at EOF & fixed indent
* | Remove every trailing whitespace from the project (but externals).Emmanuel Gil Peyrot2015-05-291-2/+2
| |
* | Update bundled GLFW to 3.1.1Yuri Kunde Schlesner2015-05-251-1/+1
|/ | | | | It may be necessary to fix the CMake paths manually for an exsting CMake cache after this change.
* Merge pull request #675 from jroweboy/windows-build-fixesYuri Kunde Schlesner2015-05-151-8/+15
|\ | | | | Windows build fixes
| * Updated the copy commands to run on post_build and use generator expressions to simplify the code as wellJames Rowe2015-03-261-8/+8
| |
| * Changes to bring the previous commits in line with the comments on thepull request. Made the debug build a true debug build with no optimizxations and the RelWithDebInfo is what it says it is too. Changed the copying of the dlls to the build directories to happen at configuration time instead of build timeJames Rowe2015-03-261-5/+6
| |
| * More changes to the CMakeFiles for better MSVC compatibility. Added in the RelWithDebInfo target and setup copying the Qt 5 Dlls to the output directories.James Rowe2015-03-261-2/+2
| |
| * Small changes to the CMake file to make windows build easierJames Rowe2015-03-261-7/+13
| |
* | Install a .desktop file to make citra-qt launchable from DE menus.Emmanuel Gil Peyrot2015-05-131-0/+13
| |
* | Common: Remove many unnecessary cross-platform compatibility macrosYuri Kunde Schlesner2015-05-071-2/+5
|/
* Merge pull request #483 from yuriks/cmake-fixbunnei2015-02-031-3/+9
|\ | | | | CMake: Inform the user when architecture auto-detection fails
| * CMake: Inform the user when architecture auto-detection failsYuri Kunde Schlesner2015-01-191-2/+8
| |
| * CMake: Fix wrong filename in messageYuri Kunde Schlesner2015-01-131-1/+1
| |
* | Fix building on MinGWdarkf2015-01-121-0/+6
|/
* CMake: Consistently set _DEBUG and NDEBUG in all platformsYuri Kunde Schlesner2015-01-101-1/+5
|
* Fix Windows buildbunnei2015-01-101-1/+1
|
* Merge pull request #342 from uppfinnarn/masterbunnei2015-01-101-4/+11
|\ | | | | Build improvements
| * Looks like that might be needed on OSX after allJohannes Ekberg2015-01-091-6/+2
| |
| * Use -pthread where and only where neededJohannes Ekberg2015-01-091-1/+5
| | | | | | | | | | | | Passing -pthread to GCC as a flag makes it both link to libpthread, and make C standard library routines reentrant. This makes the additional explicit links unnecessary. Additionally, on OSX, this is the default behavior, and clang will print a message about it being unused if it's present there.
| * Link Cocoa, IOKit and CoreVideo on OSXJohannes Ekberg2015-01-091-3/+4
| | | | | | | | | | | | These are implicitly linked by Xcode, but with this, you can also build it with any other generator, which does not have this behavior. CoreFoundation is included as a part of Cocoa (which is an umbrella framework), and Cocoa is generally recommended to link against, rather than its individual components (CoreFoundation, Foundation, libobjc, ...).
| * Generic PLATFORM_LIBRARIES varJohannes Ekberg2015-01-091-0/+6
| | | | | | | | This both reduces redundancy in add_executable definitions, and makes it easier to link additional libraries. In particular, extra libraries are needed on OSX - see next commit.
* | Cleanup: Remove redundant /Oi flagchinhodado2015-01-091-2/+1
| | | | | | `/Oi` is included in `/Ox` already
* | CMake: Enable VS parallel builds for a good reduction in compile timesYuri Kunde Schlesner2015-01-091-1/+2
|/ | | | | | | | This enables the /MP compiler flag, which parallelizes builds of by distributing compilation of individual object files across workes processes, instead of being limited to per-project parallelism. Reduces the time for a full compile from 72 s to 45 s on my machine.
* CMake: Require Boost 1.57.0 (fixes Travis OS X)Yuri Kunde Schlesner2014-12-291-2/+2
|
* Merge pull request #275 from yuriks/cmake-cleanbunnei2014-12-221-4/+1
|\ | | | | Clean up CMake library specification
| * Clean up CMake library specificationYuri Kunde Schlesner2014-12-151-4/+1
| | | | | | | | The X11 libraries don't need to be specified when doing dynamic linking
* | CMake: Silence PNG not found errorYuri Kunde Schlesner2014-12-221-2/+4
| | | | | | | | Hopefully this will make people stop thinking it's a hard dependency.
* | CMake: Use improved optimization flags on MSVCYuri Kunde Schlesner2014-12-221-0/+19
| | | | | | | | | | | | While not having a noticeable effect on CPU-bound applications, this change gives an about 30-50% increase in performance for games using the GPU.
* | Add nihstro (a 3DS shader tools suite) as a submodule.Tony Wasserka2014-12-201-0/+2
| |
* | Remove C++14/1y requirementYuri Kunde Schlesner2014-12-201-2/+1
| |
* | Switch to C++14 to use std::make_uniqueYuri Kunde Schlesner2014-12-161-1/+2
|/
* Integrate Boost into build system and perform a trivial cleanup in vertex_shader.cpp.Tony Wasserka2014-12-071-0/+8
|
* CMake: Place all the built files in BUILD_DIR/bin/<Configuration> when compiling with MSVCSubv2014-12-021-0/+2
|
* Added configuration file system.archshift2014-10-081-1/+5
| | | | Uses QSettings on citra-qt, and inih on citra-cli.
* Removed the need for X11 on OS Xarchshift2014-09-031-1/+4
| | | | It only causes issues when someone (who doesn't need it) doesn't have it.
* CMake cleanupYuri Kunde Schlesner2014-09-011-46/+99
| | | | | | | | Several cleanups to the buildsystem: - Do better factoring of common libs between platforms. - Add support to building on Windows. - Remove Qt4 support. - Re-sort file lists and add missing headers.
* Replace GLEW with a glLoadGen loader.Yuri Kunde Schlesner2014-09-011-2/+0
| | | | | | | | | This should fix the GL loading errors that occur in some drivers due to the use of deprecated functions by GLEW. Side benefits are more accurate auto-completion (deprecated function and symbols don't exist) and faster pointer loading (less entrypoints to load). In addition it removes an external library depency, simplifying the build system a bit and eliminating one set of binary libraries for Windows.
* Pica: Add support for dumping textures.Tony Wasserka2014-08-251-0/+5
|
* Add Qt5 option. Use Qt5 by default.Sacha2014-08-191-13/+26
|
* CMake CleanupSacha2014-08-181-1/+1
|
* * Remove -fpermissivePhillip Stephens2014-05-201-1/+1
|
* CMakeLists: Fixed GLEW include var name, compile flag varsarchshift2014-05-201-5/+5
| | | | | | After adding FindGLEW.cmake to externals, the variable call for the GLEW include path needed to be revised. Append flags on OSX, rather than overwrite them. I realized that GCC_COMPILE_FLAGS was changed to CMAKE_CXX_FLAGS mistakenly, so both were changed to a more platform-independent name.
* CMakeLists: rename HEADS, improved commentsarchshift2014-05-201-3/+2
| | | | Changes for clarity of comments, removed redundant compiler flags.
* Indent fixesarchshift2014-05-191-1/+1
|
* Indent fixesarchshift2014-05-171-1/+1
|
* Added FindGLEW to cmake-modulesarchshift2014-05-171-1/+1
|
* Support for C++11 on OSXarchshift2014-05-011-3/+2
|
* A bit of Cmake lovearchshift2014-05-011-4/+7
|
* Some more experimentationarchshift2014-04-301-1/+5
|
* IT'S ALIVE!archshift2014-04-291-2/+9
|
* Fixed CMake's import of GLFW.Thomas Edvalson2014-04-251-0/+2
|
* removed "COVERAGE_" from "GCC_COVERAGE_COMPILE_FLAGS"bunnei2014-04-241-2/+2
|
* fixes to scm_rev generation to make it conistent with windows buildbunnei2014-04-241-0/+1
|
* added scm rev generation on Linux/cmakebunnei2014-04-241-0/+6
|
* fixes to build on linuxbunnei2014-04-231-0/+3
|
* fixed a bunch of errors in CMakeListsbunnei2014-04-101-8/+1
|
* updated CMakeListsbunnei2014-04-101-3/+1
|
* renamed from citrus to citraShizZy2013-09-261-2/+2
|
* renamed project to 'citrus'ShizZy2013-09-141-3/+2
|
* adding initial project layoutShizZy2013-08-301-0/+49