mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-02-16 09:03:42 +00:00
Merge pull request #213533 from atorres1985-contrib/small-fixups
ppsspp: refactor
This commit is contained in:
commit
57cbd07426
@ -12,89 +12,92 @@
|
||||
, makeWrapper
|
||||
, pkg-config
|
||||
, python3
|
||||
, qtbase ? null
|
||||
, qtmultimedia ? null
|
||||
, qtbase
|
||||
, qtmultimedia
|
||||
, snappy
|
||||
, vulkan-loader
|
||||
, wayland
|
||||
, wrapQtAppsHook ? null
|
||||
, wrapQtAppsHook
|
||||
, zlib
|
||||
, enableQt ? false
|
||||
, enableVulkan ? true
|
||||
, forceWayland ? false
|
||||
}:
|
||||
|
||||
let
|
||||
enableQt = (qtbase != null);
|
||||
frontend = if enableQt then "Qt" else "SDL and headless";
|
||||
vulkanPath = lib.makeLibraryPath [ vulkan-loader ];
|
||||
|
||||
# experimental, see https://github.com/hrydgard/ppsspp/issues/13845
|
||||
vulkanWayland = enableVulkan && forceWayland;
|
||||
in
|
||||
# Only SDL front end needs to specify whether to use Wayland
|
||||
assert forceWayland -> !enableQt;
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "ppsspp"
|
||||
+ lib.optionalString enableQt "-qt"
|
||||
+ lib.optionalString (!enableQt) "-sdl"
|
||||
+ lib.optionalString forceWayland "-wayland";
|
||||
version = "1.14.4";
|
||||
# Only SDL frontend needs to specify whether to use Wayland
|
||||
assert forceWayland -> !enableQt;
|
||||
stdenv.mkDerivation (self: {
|
||||
pname = "ppsspp"
|
||||
+ lib.optionalString enableQt "-qt"
|
||||
+ lib.optionalString (!enableQt) "-sdl"
|
||||
+ lib.optionalString forceWayland "-wayland";
|
||||
version = "1.14.4";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "hrydgard";
|
||||
repo = "ppsspp";
|
||||
rev = "v${finalAttrs.version}";
|
||||
fetchSubmodules = true;
|
||||
sha256 = "sha256-7xzhN8JIQD4LZg8sQ8rLNYZrW0nCNBfZFgzoKdoWbKc=";
|
||||
};
|
||||
src = fetchFromGitHub {
|
||||
owner = "hrydgard";
|
||||
repo = "ppsspp";
|
||||
rev = "v${self.version}";
|
||||
fetchSubmodules = true;
|
||||
sha256 = "sha256-7xzhN8JIQD4LZg8sQ8rLNYZrW0nCNBfZFgzoKdoWbKc=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace git-version.cmake --replace unknown ${finalAttrs.src.rev}
|
||||
substituteInPlace UI/NativeApp.cpp --replace /usr/share $out/share
|
||||
'';
|
||||
postPatch = ''
|
||||
substituteInPlace git-version.cmake --replace unknown ${self.src.rev}
|
||||
substituteInPlace UI/NativeApp.cpp --replace /usr/share $out/share
|
||||
'';
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
copyDesktopItems
|
||||
makeWrapper
|
||||
pkg-config
|
||||
python3
|
||||
wrapQtAppsHook
|
||||
];
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
copyDesktopItems
|
||||
makeWrapper
|
||||
pkg-config
|
||||
python3
|
||||
] ++ lib.optional enableQt wrapQtAppsHook;
|
||||
|
||||
buildInputs = [
|
||||
SDL2
|
||||
ffmpeg
|
||||
(glew.override { enableEGL = forceWayland; })
|
||||
libzip
|
||||
qtbase
|
||||
qtmultimedia
|
||||
snappy
|
||||
zlib
|
||||
] ++ lib.optional enableVulkan vulkan-loader
|
||||
++ lib.optionals vulkanWayland [ wayland libffi ];
|
||||
buildInputs = [
|
||||
SDL2
|
||||
ffmpeg
|
||||
(glew.override { enableEGL = forceWayland; })
|
||||
libzip
|
||||
snappy
|
||||
zlib
|
||||
] ++ lib.optionals enableQt [
|
||||
qtbase
|
||||
qtmultimedia
|
||||
] ++ lib.optional enableVulkan vulkan-loader
|
||||
++ lib.optionals vulkanWayland [ wayland libffi ];
|
||||
|
||||
cmakeFlags = [
|
||||
"-DHEADLESS=${if enableQt then "OFF" else "ON"}"
|
||||
"-DOpenGL_GL_PREFERENCE=GLVND"
|
||||
"-DUSE_SYSTEM_FFMPEG=ON"
|
||||
"-DUSE_SYSTEM_LIBZIP=ON"
|
||||
"-DUSE_SYSTEM_SNAPPY=ON"
|
||||
"-DUSE_WAYLAND_WSI=${if vulkanWayland then "ON" else "OFF"}"
|
||||
"-DUSING_QT_UI=${if enableQt then "ON" else "OFF"}"
|
||||
];
|
||||
cmakeFlags = [
|
||||
"-DHEADLESS=${if enableQt then "OFF" else "ON"}"
|
||||
"-DOpenGL_GL_PREFERENCE=GLVND"
|
||||
"-DUSE_SYSTEM_FFMPEG=ON"
|
||||
"-DUSE_SYSTEM_LIBZIP=ON"
|
||||
"-DUSE_SYSTEM_SNAPPY=ON"
|
||||
"-DUSE_WAYLAND_WSI=${if vulkanWayland then "ON" else "OFF"}"
|
||||
"-DUSING_QT_UI=${if enableQt then "ON" else "OFF"}"
|
||||
];
|
||||
|
||||
desktopItems = [(makeDesktopItem {
|
||||
desktopItems = [
|
||||
(makeDesktopItem {
|
||||
desktopName = "PPSSPP";
|
||||
name = "ppsspp";
|
||||
exec = "ppsspp";
|
||||
icon = "ppsspp";
|
||||
comment = "Play PSP games on your computer";
|
||||
categories = [ "Game" "Emulator" ];
|
||||
})];
|
||||
})
|
||||
];
|
||||
|
||||
installPhase = ''
|
||||
installPhase = let
|
||||
vulkanPath = lib.makeLibraryPath [ vulkan-loader ];
|
||||
in
|
||||
''
|
||||
runHook preInstall
|
||||
|
||||
mkdir -p $out/share/{applications,ppsspp}
|
||||
'' + (if enableQt then ''
|
||||
install -Dm555 PPSSPPQt $out/bin/ppsspp
|
||||
@ -108,14 +111,16 @@ in
|
||||
--prefix LD_LIBRARY_PATH : ${vulkanPath} \
|
||||
'' + "\n" + ''
|
||||
mv assets $out/share/ppsspp
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://www.ppsspp.org/";
|
||||
description = "A HLE Playstation Portable emulator, written in C++ (${frontend})";
|
||||
license = licenses.gpl2Plus;
|
||||
maintainers = with maintainers; [ AndersonTorres ];
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
})
|
||||
meta = with lib; {
|
||||
homepage = "https://www.ppsspp.org/";
|
||||
description = "A HLE Playstation Portable emulator, written in C++ ("
|
||||
++ (if enableQt then "Qt" else "SDL + headless") ++ ")";
|
||||
license = lib.licenses.gpl2Plus;
|
||||
maintainers = [ lib.maintainers.AndersonTorres ];
|
||||
platforms = lib.platforms.linux;
|
||||
};
|
||||
})
|
||||
|
@ -2182,6 +2182,7 @@ with pkgs;
|
||||
|
||||
ppsspp-qt = ppsspp.override {
|
||||
inherit (libsForQt5) qtbase qtmultimedia wrapQtAppsHook;
|
||||
enableQt = true;
|
||||
enableVulkan = false; # https://github.com/hrydgard/ppsspp/issues/11628
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user