summaryrefslogtreecommitdiffstats
path: root/pkgs/applications/emulators/dolphin-emu
diff options
context:
space:
mode:
authorSandro <sandro.jaeckel@gmail.com>2022-09-25 23:41:05 +0200
committerGitHub <noreply@github.com>2022-09-25 23:41:05 +0200
commit7c9cb921e6f6f36bd2d06930b02d3a25b647fad1 (patch)
treefd8510dd1983e6c3bd17a320e8f30d60e2a54b7e /pkgs/applications/emulators/dolphin-emu
parentb39c59506df71399895c027d150f29b76e0b0f4a (diff)
parente8743bf62d00b05c3cc8d177895d0762e9bad0aa (diff)
Merge pull request #190373 from IvarWithoutBones/fix-darwin-dolphin
Diffstat (limited to 'pkgs/applications/emulators/dolphin-emu')
-rw-r--r--pkgs/applications/emulators/dolphin-emu/master.nix165
-rw-r--r--pkgs/applications/emulators/dolphin-emu/minizip-external-missing-include.patch18
2 files changed, 149 insertions, 34 deletions
diff --git a/pkgs/applications/emulators/dolphin-emu/master.nix b/pkgs/applications/emulators/dolphin-emu/master.nix
index a5c6c4aa3aa9..35a00503ed50 100644
--- a/pkgs/applications/emulators/dolphin-emu/master.nix
+++ b/pkgs/applications/emulators/dolphin-emu/master.nix
@@ -1,12 +1,52 @@
-{ lib, stdenv, fetchFromGitHub, pkg-config, cmake
-, wrapQtAppsHook, qtbase, bluez, ffmpeg, libao, libGLU, libGL, pcre, gettext
-, libXrandr, libusb1, libpthreadstubs, libXext, libXxf86vm, libXinerama
-, libSM, libXdmcp, readline, openal, udev, libevdev, portaudio, curl, alsa-lib
-, miniupnpc, enet, mbedtls, soundtouch, sfml, xz, writeScript
-, vulkan-loader ? null, libpulseaudio ? null
+{ lib
+, stdenv
+, fetchFromGitHub
+, pkg-config
+, cmake
+, wrapQtAppsHook
+, qtbase
+, bluez
+, ffmpeg
+, libGL
+, libXrandr
+, libusb1
+, libXext
+, openal
+, udev
+, libevdev
+, curl
+, alsa-lib
+, miniupnpc
+, enet
+, mbedtls
+, soundtouch
+, sfml
+, xz
+, hidapi
+, fmt_8
+, vulkan-loader
+, libpulseaudio
+, bzip2
+, libiconv
+, pugixml
+, xxHash
-# - Inputs used for Darwin
-, CoreBluetooth, ForceFeedback, IOKit, OpenGL, libpng, hidapi }:
+ # Used in passthru
+, testers
+, dolphin-emu-beta
+, writeShellScript
+, common-updater-scripts
+, jq
+
+ # Darwin-only dependencies
+, CoreBluetooth
+, ForceFeedback
+, IOKit
+, VideoToolbox
+, OpenGL
+, libpng
+, moltenvk
+}:
stdenv.mkDerivation rec {
pname = "dolphin-emu";
@@ -20,27 +60,70 @@ stdenv.mkDerivation rec {
fetchSubmodules = true;
};
- nativeBuildInputs = [ cmake pkg-config ]
- ++ lib.optional stdenv.isLinux wrapQtAppsHook;
+ patches = [
+ # On x86_64-darwin CMake reportedly does not work without this in some cases.
+ # See https://github.com/NixOS/nixpkgs/pull/190373#issuecomment-1241310765
+ ./minizip-external-missing-include.patch
+ ];
+
+ nativeBuildInputs = [
+ cmake
+ pkg-config
+ wrapQtAppsHook
+ ];
buildInputs = [
- curl ffmpeg libao libGLU libGL pcre gettext libpthreadstubs libpulseaudio
- libXrandr libXext libXxf86vm libXinerama libSM readline openal libXdmcp
- portaudio libusb1 libpng hidapi miniupnpc enet mbedtls soundtouch sfml xz
+ curl
+ ffmpeg
+ pugixml
+ xxHash
+ libGL
+ libpulseaudio
+ openal
+ libusb1
+ libiconv
+ libpng
+ hidapi
+ miniupnpc
+ enet
+ mbedtls
+ soundtouch
+ sfml
+ xz
qtbase
+ fmt_8
+ bzip2
] ++ lib.optionals stdenv.isLinux [
- bluez udev libevdev alsa-lib vulkan-loader
+ libXrandr
+ libXext
+ bluez
+ udev
+ libevdev
+ alsa-lib
+ vulkan-loader
] ++ lib.optionals stdenv.isDarwin [
- CoreBluetooth OpenGL ForceFeedback IOKit
+ CoreBluetooth
+ OpenGL
+ ForceFeedback
+ IOKit
+ VideoToolbox
+ moltenvk
];
cmakeFlags = [
+ "-DDISTRIBUTOR=NixOS"
"-DUSE_SHARED_ENET=ON"
"-DDOLPHIN_WC_REVISION=${src.rev}"
"-DDOLPHIN_WC_DESCRIBE=${version}"
"-DDOLPHIN_WC_BRANCH=master"
] ++ lib.optionals stdenv.isDarwin [
"-DOSX_USE_DEFAULT_SEARCH_PATH=True"
+ "-DUSE_BUNDLED_MOLTENVK=OFF"
+ # Bundles the application folder into a standalone executable, so we cannot devendor libraries
+ "-DSKIP_POSTPROCESS_BUNDLE=ON"
+ # Needs xcode so compilation fails with it enabled. We would want the version to be fixed anyways.
+ # Note: The updater isn't available on linux, so we dont need to disable it there.
+ "-DENABLE_AUTOUPDATE=OFF"
];
qtWrapperArgs = lib.optionals stdenv.isLinux [
@@ -50,37 +133,51 @@ stdenv.mkDerivation rec {
"--set QT_QPA_PLATFORM xcb"
];
- # - Allow Dolphin to use nix-provided libraries instead of building them
- postPatch = ''
- sed -i -e 's,DISTRIBUTOR "None",DISTRIBUTOR "NixOS",g' CMakeLists.txt
- '' + lib.optionalString stdenv.isDarwin ''
- sed -i -e 's,if(NOT APPLE),if(true),g' CMakeLists.txt
- sed -i -e 's,if(LIBUSB_FOUND AND NOT APPLE),if(LIBUSB_FOUND),g' \
- CMakeLists.txt
+ # Use nix-provided libraries instead of submodules
+ postPatch = lib.optionalString stdenv.isDarwin ''
+ substituteInPlace CMakeLists.txt \
+ --replace "if(NOT APPLE)" "if(true)" \
+ --replace "if(LIBUSB_FOUND AND NOT APPLE)" "if(LIBUSB_FOUND)"
'';
postInstall = lib.optionalString stdenv.hostPlatform.isLinux ''
install -D $src/Data/51-usb-device.rules $out/etc/udev/rules.d/51-usb-device.rules
+ '' + lib.optionalString stdenv.hostPlatform.isDarwin ''
+ # Only gets installed automatically if the standalone executable is used
+ mkdir -p $out/Applications
+ cp -r ./Binaries/Dolphin.app $out/Applications
+ ln -s $out/Applications/Dolphin.app/Contents/MacOS/Dolphin $out/bin
'';
+ passthru = {
+ tests.version = testers.testVersion {
+ package = dolphin-emu-beta;
+ command = "dolphin-emu-nogui --version";
+ };
- passthru.updateScript = writeScript "dolphin-update-script" ''
- #!/usr/bin/env nix-shell
- #!nix-shell -i bash -p curl jq common-updater-scripts
- set -eou pipefail
- json="$(curl -s https://dolphin-emu.org/update/latest/beta)"
- version="$(jq -r '.shortrev' <<< "$json")"
- rev="$(jq -r '.hash' <<< "$json")"
- update-source-version dolphin-emu-beta "$version" --rev="$rev"
- '';
+ updateScript = writeShellScript "dolphin-update-script" ''
+ set -eou pipefail
+ export PATH=${lib.makeBinPath [ curl jq common-updater-scripts ]}
+
+ json="$(curl -s https://dolphin-emu.org/update/latest/beta)"
+ version="$(jq -r '.shortrev' <<< "$json")"
+ rev="$(jq -r '.hash' <<< "$json")"
+ update-source-version dolphin-emu-beta "$version" --rev="$rev"
+ '';
+ };
meta = with lib; {
homepage = "https://dolphin-emu.org";
description = "Gamecube/Wii/Triforce emulator for x86_64 and ARMv8";
- license = licenses.gpl2Plus;
- maintainers = with maintainers; [ MP2E ashkitten xfix ];
+ mainProgram = "Dolphin";
branch = "master";
- broken = stdenv.isDarwin;
+ license = licenses.gpl2Plus;
platforms = platforms.unix;
+ maintainers = with maintainers; [
+ MP2E
+ ashkitten
+ xfix
+ ivar
+ ];
};
}
diff --git a/pkgs/applications/emulators/dolphin-emu/minizip-external-missing-include.patch b/pkgs/applications/emulators/dolphin-emu/minizip-external-missing-include.patch
new file mode 100644
index 000000000000..7da013ecd8f6
--- /dev/null
+++ b/pkgs/applications/emulators/dolphin-emu/minizip-external-missing-include.patch
@@ -0,0 +1,18 @@
+commit 5e0cb8066fb1653399c54e93e42375295c2562bd
+Author: Ivar Scholten <ivar.scholten@protonmail.com>
+Date: Fri Sep 9 14:27:55 2022 +0200
+
+ Externals/minizip: add missing include to CheckFunctionExists
+
+diff --git a/Externals/minizip/CMakeLists.txt b/Externals/minizip/CMakeLists.txt
+index c3d7c5512e..f59f8b295c 100644
+--- a/Externals/minizip/CMakeLists.txt
++++ b/Externals/minizip/CMakeLists.txt
+@@ -60,6 +60,7 @@ if (HAVE_INTTYPES_H)
+ target_compile_definitions(minizip PRIVATE HAVE_INTTYPES_H)
+ endif()
+
++include(CheckFunctionExists)
+ check_function_exists(fseeko HAVE_FSEEKO)
+ if (NOT HAVE_FSEEKO)
+ target_compile_definitions(minizip PRIVATE NO_FSEEKO)