mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2026-03-18 11:23:38 +00:00
This introduces a CMakePresets file for both Unix-likes and Windows that replace the old CMakeSettings. It adds presets for **Debug** and **Release** profiles for both **x64** and **ARM64** architectures, as well as **Generic builds**. Presets can be used using[ Visual Studio's built-in CMakePresets support](https://learn.microsoft.com/en-us/cpp/build/cmake-presets-vs?view=msvc-170), or [Visual Studio Code's CMake Tools](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cmake-tools) extension. They can also be used from the command line, like so: - x64/Unix-like/Ninja: - Configure: `cmake --preset ninja-release-x64` - Build: `cmake --build --preset ninja-build-release-x64` - Configure + Build: `cmake --workflow --preset ninja-release-x64` - ARM64/Windows/Visual Studio: - Configure: `cmake --preset visualstudio-release-arm64` - Build: `cmake --build --preset visualstudio-build-release-arm64` - Configure + Build: `cmake --workflow --preset visualstudio-release-arm64` The Ninja generator is available to both Windows and Unix-likes, while the Visual Studio Generator is only available on Windows. **Cross-compiling** On **Windows**, the Visual Studio generator automatically takes care of everything, you just need to select an ARM64 preset. On **Unix-likes**, to cross-compile you need to install a cross-compiler and (optionally) a sysroot of the target system. Here is an example to compile from x64 to ARM64 with a sysroot: - `cmake --preset ninja-release-arm64 -DCMAKE_C_COMPILER=aarch64-linux-gnu-gcc -DCMAKE_CXX_COMPILER=aarch64-linux-gnu-g++ -DCMAKE_SYSROOT=/opt/sysroots/aarch64-linux-gnu` - `cmake --build --preset ninja-build-release-arm64` You will need a sysroot to link against Qt, since we do not vendor it in on platforms other than Windows. **User presets** A `CMakeUserPresets.json` file may be created locally at the root of the project to further customize your presets. For example, here are the user presets I used to test this PR on Arch Linux with a generic Arch Linux ARM sysroot: ```json { "version": 10, "configurePresets": [ { "name": "gcc-debug-arm64", "inherits": "ninja-debug-arm64", "cacheVariables": { "CMAKE_C_COMPILER": "aarch64-linux-gnu-gcc", "CMAKE_CXX_COMPILER": "aarch64-linux-gnu-g++", "CMAKE_EXE_LINKER_FLAGS": "-L/opt/sysroots/ArchLinuxARM/lib", "CMAKE_SYSROOT": "/opt/sysroots/ArchLinuxARM" } }, { "name": "clang-debug-arm64", "inherits": "ninja-debug-arm64", "cacheVariables": { "CMAKE_C_COMPILER": "clang", "CMAKE_CXX_COMPILER": "clang++", "CMAKE_C_FLAGS": "-target aarch64-linux-gnu", "CMAKE_CXX_FLAGS": "-target aarch64-linux-gnu", "CMAKE_SYSROOT": "/opt/sysroots/ArchLinuxARM" } }, { "name": "clang-debug-x64", "inherits": "ninja-debug-x64", "cacheVariables": { "CMAKE_C_COMPILER": "clang", "CMAKE_CXX_COMPILER": "clang++" } } ], "buildPresets": [ { "name": "gcc-build-debug-arm64", "configurePreset": "gcc-debug-arm64" }, { "name": "clang-build-debug-arm64", "configurePreset": "clang-debug-arm64" }, { "name": "clang-build-debug-x64", "configurePreset": "clang-debug-x64" } ], "workflowPresets": [ { "name": "gcc-debug-arm64", "steps": [ { "type": "configure", "name": "gcc-debug-arm64" }, { "type": "build", "name": "gcc-build-debug-arm64" } ] }, { "name": "clang-debug-arm64", "steps": [ { "type": "configure", "name": "clang-debug-arm64" }, { "type": "build", "name": "clang-build-debug-arm64" } ] }, { "name": "clang-debug-x64", "steps": [ { "type": "configure", "name": "clang-debug-x64" }, { "type": "build", "name": "clang-build-debug-x64" } ] } ] } ``` They are then used like so: Configure + Build with GCC: `cmake --workflow --preset gcc-debug-arm64` Configure + Build with Clang: `cmake --workflow --preset clang-debug-arm64` Configure + Build with Clang (x64): `cmake --workflow --preset clang-debug-x64` *Addendum: It should also now be possible to cross-compile from Windows to Unix-likes, and Unix-like to other Unix-like (e.g. Linux -> FreeBSD), however this is untested.*
200 lines
8.4 KiB
Markdown
200 lines
8.4 KiB
Markdown
# Dolphin - A GameCube and Wii Emulator
|
|
|
|
[Homepage](https://dolphin-emu.org/) | [Project Site](https://github.com/dolphin-emu/dolphin) | [Buildbot](https://dolphin.ci/) | [Forums](https://forums.dolphin-emu.org/) | [Wiki](https://wiki.dolphin-emu.org/) | [GitHub Wiki](https://github.com/dolphin-emu/dolphin/wiki) | [Issue Tracker](https://bugs.dolphin-emu.org/projects/emulator/issues) | [Coding Style](https://github.com/dolphin-emu/dolphin/blob/master/Contributing.md) | [Transifex Page](https://app.transifex.com/dolphinemu/dolphin-emu/dashboard/) | [Analytics](https://mon.dolphin-emu.org/)
|
|
|
|
Dolphin is an emulator for running GameCube and Wii games on Windows,
|
|
Linux, macOS, and recent Android devices. It's licensed under the terms
|
|
of the GNU General Public License, version 2 or later (GPLv2+).
|
|
|
|
Please read the [FAQ](https://dolphin-emu.org/docs/faq/) before using Dolphin.
|
|
|
|
## System Requirements
|
|
|
|
### Desktop
|
|
|
|
* OS
|
|
* Windows (10 1903 or higher).
|
|
* Linux.
|
|
* macOS (11.0 Big Sur or higher).
|
|
* Unix-like systems other than Linux are not officially supported but might work.
|
|
* Processor
|
|
* A CPU with SSE2 support.
|
|
* A modern CPU (3 GHz and Dual Core, not older than 2008) is highly recommended.
|
|
* Graphics
|
|
* A reasonably modern graphics card (Direct3D 11.1 / OpenGL 3.3).
|
|
* A graphics card that supports Direct3D 11.1 / OpenGL 4.4 is recommended.
|
|
|
|
### Android
|
|
|
|
* OS
|
|
* Android (5.0 Lollipop or higher).
|
|
* Processor
|
|
* A processor with support for 64-bit applications (either ARMv8 or x86-64).
|
|
* Graphics
|
|
* A graphics processor that supports OpenGL ES 3.0 or higher. Performance varies heavily with [driver quality](https://dolphin-emu.org/blog/2013/09/26/dolphin-emulator-and-opengl-drivers-hall-fameshame/).
|
|
* A graphics processor that supports standard desktop OpenGL features is recommended for best performance.
|
|
|
|
Dolphin can only be installed on devices that satisfy the above requirements. Attempting to install on an unsupported device will fail and display an error message.
|
|
|
|
## Building
|
|
|
|
You may find building instructions on the appropriate wiki page for your operating system:
|
|
|
|
* [Windows](https://github.com/dolphin-emu/dolphin/wiki/Building-for-Windows)
|
|
* [Linux](https://github.com/dolphin-emu/dolphin/wiki/Building-for-Linux)
|
|
* [macOS](https://github.com/dolphin-emu/dolphin/wiki/Building-for-macOS)
|
|
* [Android](#android-specific-instructions) <!-- TODO: Create a "Building for Android" wiki page and link it here -->
|
|
* [OpenBSD](https://github.com/dolphin-emu/dolphin/wiki/Building-for-OpenBSD) (unsupported)
|
|
|
|
Before building, make sure to pull all submodules:
|
|
|
|
```sh
|
|
git submodule update --init --recursive
|
|
```
|
|
|
|
### Android-specific instructions
|
|
|
|
These instructions assume familiarity with Android development. If you do not have an
|
|
Android dev environment set up, see [AndroidSetup.md](AndroidSetup.md).
|
|
|
|
If using Android Studio, import the Gradle project located in `./Source/Android`.
|
|
|
|
Android apps are compiled using a build system called Gradle. Dolphin's native component,
|
|
however, is compiled using CMake. The Gradle script will attempt to run a CMake build
|
|
automatically while building the Java code.
|
|
|
|
## Uninstalling
|
|
|
|
On Windows, simply remove the extracted directory, unless it was installed with the NSIS installer,
|
|
in which case you can uninstall Dolphin like any other Windows application.
|
|
|
|
Linux users can run `cat install_manifest.txt | xargs -d '\n' rm` as root from the build directory
|
|
to uninstall Dolphin from their system.
|
|
|
|
macOS users can simply delete Dolphin.app to uninstall it.
|
|
|
|
Additionally, you'll want to remove the global user directory if you don't plan on reinstalling Dolphin.
|
|
|
|
## Command Line Usage
|
|
|
|
```
|
|
Usage: Dolphin.exe [options]... [FILE]...
|
|
|
|
Options:
|
|
--version show program's version number and exit
|
|
-h, --help show this help message and exit
|
|
-u USER, --user=USER User folder path
|
|
-m MOVIE, --movie=MOVIE
|
|
Play a movie file
|
|
-e <file>, --exec=<file>
|
|
Load the specified file
|
|
-n <16-character ASCII title ID>, --nand_title=<16-character ASCII title ID>
|
|
Launch a NAND title
|
|
-C <System>.<Section>.<Key>=<Value>, --config=<System>.<Section>.<Key>=<Value>
|
|
Set a configuration option
|
|
-s <file>, --save_state=<file>
|
|
Load the initial save state
|
|
-d, --debugger Show the debugger pane and additional View menu options
|
|
-l, --logger Open the logger
|
|
-b, --batch Run Dolphin without the user interface (Requires
|
|
--exec or --nand-title)
|
|
-c, --confirm Set Confirm on Stop
|
|
-v VIDEO_BACKEND, --video_backend=VIDEO_BACKEND
|
|
Specify a video backend
|
|
-a AUDIO_EMULATION, --audio_emulation=AUDIO_EMULATION
|
|
Choose audio emulation from [HLE|LLE]
|
|
```
|
|
|
|
Available DSP emulation engines are HLE (High Level Emulation) and
|
|
LLE (Low Level Emulation). HLE is faster but less accurate whereas
|
|
LLE is slower but close to perfect. Note that LLE has two submodes (Interpreter and Recompiler)
|
|
but they cannot be selected from the command line.
|
|
|
|
Available video backends are "D3D" and "D3D12" (they are only available on Windows), "OGL", and "Vulkan".
|
|
There's also "Null", which will not render anything, and
|
|
"Software Renderer", which uses the CPU for rendering and
|
|
is intended for debugging purposes only.
|
|
|
|
## DolphinTool Usage
|
|
```
|
|
usage: dolphin-tool COMMAND -h
|
|
|
|
commands supported: [convert, verify, header, extract]
|
|
```
|
|
|
|
```
|
|
Usage: convert [options]... [FILE]...
|
|
|
|
Options:
|
|
-h, --help show this help message and exit
|
|
-u USER, --user=USER User folder path, required for temporary processing
|
|
files.Will be automatically created if this option is
|
|
not set.
|
|
-i FILE, --input=FILE
|
|
Path to disc image FILE.
|
|
-o FILE, --output=FILE
|
|
Path to the destination FILE.
|
|
-f FORMAT, --format=FORMAT
|
|
Container format to use. Default is RVZ. [iso|gcz|wia|rvz]
|
|
-s, --scrub Scrub junk data as part of conversion.
|
|
-b BLOCK_SIZE, --block_size=BLOCK_SIZE
|
|
Block size for GCZ/WIA/RVZ formats, as an integer.
|
|
Suggested value for RVZ: 131072 (128 KiB)
|
|
-c COMPRESSION, --compression=COMPRESSION
|
|
Compression method to use when converting to WIA/RVZ.
|
|
Suggested value for RVZ: zstd [none|zstd|bzip|lzma|lzma2]
|
|
-l COMPRESSION_LEVEL, --compression_level=COMPRESSION_LEVEL
|
|
Level of compression for the selected method. Ignored
|
|
if 'none'. Suggested value for zstd: 5
|
|
```
|
|
|
|
```
|
|
Usage: verify [options]...
|
|
|
|
Options:
|
|
-h, --help show this help message and exit
|
|
-u USER, --user=USER User folder path, required for temporary processing
|
|
files.Will be automatically created if this option is
|
|
not set.
|
|
-i FILE, --input=FILE
|
|
Path to disc image FILE.
|
|
-a ALGORITHM, --algorithm=ALGORITHM
|
|
Optional. Compute and print the digest using the
|
|
selected algorithm, then exit. [crc32|md5|sha1|rchash]
|
|
```
|
|
|
|
```
|
|
Usage: header [options]...
|
|
|
|
Options:
|
|
-h, --help show this help message and exit
|
|
-i FILE, --input=FILE
|
|
Path to disc image FILE.
|
|
-b, --block_size Optional. Print the block size of GCZ/WIA/RVZ formats,
|
|
then exit.
|
|
-c, --compression Optional. Print the compression method of GCZ/WIA/RVZ
|
|
formats, then exit.
|
|
-l, --compression_level
|
|
Optional. Print the level of compression for WIA/RVZ
|
|
formats, then exit.
|
|
```
|
|
|
|
```
|
|
Usage: extract [options]...
|
|
|
|
Options:
|
|
-h, --help show this help message and exit
|
|
-i FILE, --input=FILE
|
|
Path to disc image FILE.
|
|
-o FOLDER, --output=FOLDER
|
|
Path to the destination FOLDER.
|
|
-p PARTITION, --partition=PARTITION
|
|
Which specific partition you want to extract.
|
|
-s SINGLE, --single=SINGLE
|
|
Which specific file/directory you want to extract.
|
|
-l, --list List all files in volume/partition. Will print the
|
|
directory/file specified with --single if defined.
|
|
-q, --quiet Mute all messages except for errors.
|
|
-g, --gameonly Only extracts the DATA partition.
|
|
```
|