aboutsummaryrefslogtreecommitdiff
path: root/src/yuzu/CMakeLists.txt
AgeCommit message (Collapse)Author
2023-01-02cmake: move find-modules to root cmake dirAlexandre Bouvier
2022-12-10cmake: make OpenGL loader optionalLiam
Co-authored-by: liushuyu <liushuyu@users.noreply.github.com>
2022-12-06cmake: use sdl2 imported targetAlexandre Bouvier
2022-12-05Merge pull request #6833 from abouvier/unbundleliamwhite
cmake: prefer system libraries
2022-12-04Merge pull request #9273 from ameerj/per-game-profileliamwhite
Configuration: Add per-game input profiles
2022-12-04cmake: prefer system librariesAlexandre Bouvier
2022-12-03Merge pull request #9300 from ameerj/pchliamwhite
CMake: Use precompiled headers to improve compile times
2022-11-29CMake: Use precompiled headersameerj
2022-11-28CMake: Directly link to SDL2-static when appropriatelat9nq
Trying to be lazy and alias SDL2 to SDL2-static causes issues in later versions of CMake. Just use the same condition to tell which one to use.
2022-11-27Merge pull request #8829 from Docteh/qt6_0002liamwhite
CMake: rework for Qt6 support
2022-11-24CMake: rework for Qt6 supportKyle Kienapfel
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
2022-11-20Configuration: Add per-game input profilesameerj
2022-11-13general: Address review commentsgerman77
2022-11-13yuzu: Implement cabinet applet frontendgerman77
2022-11-09Initial ARM64 supportLiam
2022-11-04Qt: enable recent Linux features on more UnicesJan Beich
- Prevent sleep via xdg-desktop-portal after fa7abafa5f2a - Pause on suspend after b7642cff3611 - Exit on SIGINT/SIGTERM after 9479940a1fc7 - Improve dark themes after b51db125676f
2022-09-04mini_dump: Address review feedbacklat9nq
Uses fmt::print as opposed to std::fprintf. Adds a missing return. static's a single-use function. Initializes structs as opposed to std::memset where possible. Fixes CMake linkage. Co-authored-by: Lioncash <mathew1800@gmail.com> mini_dump: Use a namespace Co-authored-by: Lioncash <mathew1800@gmail.com>
2022-09-04vcpkg,cmake: Use vcpkg for dbghelplat9nq
2022-09-04yuzu: Use a debugger to generate minidumpslat9nq
yuzu: Move mini_dump out of core startup_checks: Better exception handling
2022-07-30Translate english pluralsKyle Kienapfel
Turns out that for Qt to properly handle plurals in English a translation needs to be provided, otherwise the user is left with messages such as "Building: 2 shader(s)" Plurals for other all other languages are handled on transifex. I wrote the README.md to just refer to it as a translation collaboration site just in case we ever switch. These translations being out of date won't pose any technical problems so I believe it is fine to handle them manually on a "best effort" basis. The files are generated into the source directory so that the relative filenames are correct. The generated file is added to .gitignore
2022-07-27chore: make yuzu REUSE compliantAndrea Pappacoda
[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
2022-07-25Address first part of review commentsFearlessTobi
2022-07-25yuzu: Add ui files for multiplayer roomsFearlessTobi
2022-07-25Merge pull request #8564 from lat9nq/dinner-forkbunnei
yuzu: Streamline broken Vulkan handling
2022-07-23yuzu: Hook qt camera to camera drivergerman77
2022-07-10yuzu: Rename check_vulkan to startup_checkslat9nq
2022-06-11Merge pull request #8353 from Docteh/msvc_report_runtimeMai M
log the MSVC runtime version when running on MSVC build
2022-06-11Merge pull request #8393 from lat9nq/default-vulkanbunnei
general: Set renderer_backend's default to Vulkan
2022-06-10log the MSVC runtime version when running on MSVC buildKyle Kienapfel
This might be useful information, not 100% sure. [ 0.958068] Frontend <Info> yuzu\main.cpp:GMainWindow:275: yuzu Version: yuzu Development Build | master-0b9ef3c0b-dirty [ 0.958095] Frontend <Info> yuzu\main.cpp:LogRuntimes:220: MSVC Compiler: 1931 Runtime: 14.32.31326.0
2022-06-10Merge pull request #8318 from Docteh/cmake-qt56-entryMai M
Update some files with Qt 5.15.2 best practices in mind
2022-06-01core/debugger: Improved stepping mechanism and misc fixesLiam
2022-05-30yuzu-qt: Attempt to workaround broken Vulkan installationslat9nq
This does a few things in order to make the default setting Vulkan workable. - When yuzu boots, it just opens the Vulkan library. - If it works, all good and we continue with Vulkan as the default. - If something breaks, a new file in the config directory will be left behind (this is deleted normally). - If Vulkan is not working, has_broken_vulkan is set to true. - The first time this happens, a warning is displayed to notify the user. - This forces use of OpenGL, and Vulkan cannot be selected. - The Shader Backend selector is made accessible for use in custom configurations. - To disable has_broken_vulkan, the user needs to press a button in Graphics Configuration to manually run the Vulkan device enumeration.
2022-05-29Update some files with Qt 5.15.2 best practices in mindKyle K
There was some discussion about updating to Qt6 and I figured I would work on some smaller parts. For Windows platform the WinMain function has moved from the Qt5::WinMain to a new one called Qt6::EntryPointPrivate Also Qt5 supports versionless CMake targets https://www.qt.io/blog/versionless-cmake-targets-qt-5.15 These other changes in this commit are to support Qt6, but in ways that don't mess with Qt5. src/yuzu/bootmanager.cpp: Qt6 complains about not being able to know to use QPoint or QPointF, picking QPoint src/yuzu/bootmanager.h: Qt6 prefers that QStringList.h be included rather than an empty class definition src/yuzu/configuration/configure_system.cpp: toULongLong intends to return unsigned 64 bit integer, but Settings::values.rng_seed is only 32 bits wide src/yuzu/game_list.cpp: Qt6 returns a different datatype for QStringList.length than Qt5, it used to be int, but in Qt6 its now qsizetype src/yuzu/loading_screen.cpp: Qt5's for QStyleOption.init say to switch to initFrom. The QStyleOption.init doesn't exist in Qt6 src/yuzu/main.cpp: Another QPointer and QStringList.size, lets standardize on size()
2022-05-28yuzu-qt: Call -Wl,--subsystem,windows directlylat9nq
-mwindows doesn't work with Clang. tpoechtrager/wclang resolves this by just using MinGW-GCC to link the executable, however this prevents us from using LLVM-exclusive tools when building yuzu. Solution is to send the linker argument we need from -mwindows directly to the linker. From https://gcc-help.gcc.gnu.narkive.com/FogklN5J/gcc-wl-subsystem-windows-mwindows-options
2022-04-16yuzu: Add custom ringcon configurationgerman77
2022-03-27build: cleanup installation of yuzu and yuzu-cmdAndrea Pappacoda
Explicitly specifying an install destination is not needed anymore since CMake 3.14. By removing the hardcoded ${CMAKE_INSTALL_PREFIX}/bin it is also now possible to override the install destination via the command line. For example, you can now install yuzu to /usr/games with -DCMAKE_INSTALL_BINDIR=games
2021-12-22main: fix wake lock in Flatpak ...liushuyu
... by using the XDP system
2021-12-02yuzu: Implement basic controller navigationgerman77
2021-11-24core/hid: Fully implement native mousegerman77
2021-10-30yuzu qt: Disable the screensaver with SDL2lat9nq
Disables the screen saver when a game boots using SDL2 so that it works on any supported platform.
2021-09-29CMakeLists: Remove BoxCat build optionMorph
2021-09-18config: Move TAS options to it's own menugerman77
2021-08-23Merge pull request #6912 from lioncash/pluralbunnei
CMakeLists: Ensure proper numerusform tags are generated for pluralized translations
2021-08-22CMakeLists: Ensure proper numerusform tags are generated for pluralized ↵Lioncash
translations If we don't set an explicit source and target language for the base english translation, then we'll generate an incorrect number of <numerusform> tags (which Transifex doesn't like).
2021-08-12configuration: add option to select network interfacespholz
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.
2021-07-14applets: Append qt_ prefix to Qt frontend appletsMorph
2021-07-08settings, arm_dynarmic, yuzu qt: Move CPU debugging optionlat9nq
Decouples the CPU debugging mode from the enumeration to its own boolean. After this, it moves the CPU Debugging tab over to a sub tab underneath the Debug tab in the configuration UI.
2021-05-26cmake: Download Qt binaries on Linux if neededlat9nq
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.
2021-04-15applets/swkbd: Implement the Qt Software Keyboard frontendMorph
The Qt Software Keyboard frontend attempts to mimic the software keyboard rendered by the Nintendo Switch. This frontend implements multiple keyboard types, such as the normal software keyboard, the numeric pad software keyboard and the inline software keyboard. Keyboard and controller input is also supported in this frontend. Keyboard input is handled as native keyboard input, and so the on-screen keyboard cannot be navigated with the keyboard arrow keys as the arrow keys are used to move the text cursor. Controller input is translated into mouse hover movements on the onscreen keyboard or their respective button actions (B for backspace, A for entering the selected button, L/R for moving the text cursor, etc). The text check dialogs can also be confirmed with controller input through the use of the OverlayDialog Massive thanks to Rei for creating all the UI for the various keyboards and OverlayDialog. This would not have been possible without his excellent work. Co-authored-by: Its-Rei <kupfel@gmail.com>
2021-04-15overlay_dialog: Add an overlay text dialog that accepts controller inputMorph
An OverlayDialog is an interactive dialog that accepts controller input (while a game is running) This dialog attempts to replicate the look and feel of the Nintendo Switch's overlay dialogs and provide some extra features such as embedding HTML/Rich Text content in a QTextBrowser. The OverlayDialog provides 2 modes: one to embed regular text into a QLabel and another to embed HTML/Rich Text content into a QTextBrowser. Co-authored-by: Its-Rei <kupfel@gmail.com>