diff options
author | Alyssa Ross <hi@alyssa.is> | 2020-07-13 23:20:04 +0000 |
---|---|---|
committer | Alyssa Ross <hi@alyssa.is> | 2020-07-13 23:21:06 +0000 |
commit | a42c1d6d62656dcf9bd85de620f2e200a5ad22d8 (patch) | |
tree | 7d481fea9872f62a034452612be17f4494159baa /nixpkgs/pkgs/misc/emulators/np2kai/default.nix | |
parent | 55f69a6b0e53c1c4b3e0396937c53bf5662b5519 (diff) | |
parent | 9480bae337095fd24f61380bce3174fdfe926a00 (diff) | |
download | nixlib-a42c1d6d62656dcf9bd85de620f2e200a5ad22d8.tar nixlib-a42c1d6d62656dcf9bd85de620f2e200a5ad22d8.tar.gz nixlib-a42c1d6d62656dcf9bd85de620f2e200a5ad22d8.tar.bz2 nixlib-a42c1d6d62656dcf9bd85de620f2e200a5ad22d8.tar.lz nixlib-a42c1d6d62656dcf9bd85de620f2e200a5ad22d8.tar.xz nixlib-a42c1d6d62656dcf9bd85de620f2e200a5ad22d8.tar.zst nixlib-a42c1d6d62656dcf9bd85de620f2e200a5ad22d8.zip |
Merge commit '9480bae337095fd24f61380bce3174fdfe926a00'
This is the last nixos-unstable release before 13b2903169f, which I'm a bit nervous about. So I want the update including that one to be as small as possible, hence going to this one first.
Diffstat (limited to 'nixpkgs/pkgs/misc/emulators/np2kai/default.nix')
-rw-r--r-- | nixpkgs/pkgs/misc/emulators/np2kai/default.nix | 196 |
1 files changed, 196 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/misc/emulators/np2kai/default.nix b/nixpkgs/pkgs/misc/emulators/np2kai/default.nix new file mode 100644 index 000000000000..245bad1d535f --- /dev/null +++ b/nixpkgs/pkgs/misc/emulators/np2kai/default.nix @@ -0,0 +1,196 @@ +{ stdenv +, lib +, fetchFromGitHub +, enable16Bit ? true +, enable32Bit ? true + +, enableSDL ? true +, withSDLVersion ? "2" +, SDL +, SDL_ttf +, SDL_mixer +, SDL2 +, SDL2_ttf +, SDL2_mixer + +, enableX11 ? stdenv.hostPlatform.isLinux +, automake +, autoconf +, autoconf-archive +, libtool +, pkg-config +, unzip +, gtk2 +, libusb1 +, libXxf86vm +, nasm +, libICE +, libSM + + # HAXM build succeeds but the binary segfaults, seemingly due to the missing HAXM kernel module + # Enable once there is a HAXM kernel module option in NixOS? Or somehow bind it to the system kernel having HAXM? + # Or leave it disabled by default? + # https://github.com/intel/haxm/blob/master/docs/manual-linux.md +, enableHAXM ? false +}: + +assert lib.assertMsg (enable16Bit || enable32Bit) + "Must enable 16-Bit and/or 32-Bit system variant."; +assert lib.assertMsg (enableSDL || enableX11) + "Must enable SDL and/or X11 graphics interfaces."; +assert lib.assertOneOf "withSDLVersion" withSDLVersion [ "1" "2" ]; +assert enableHAXM -> (lib.assertMsg enableX11 + "Must enable X11 graphics interface for HAXM build."); +let + inherit (lib) optional optionals optionalString; + inherit (lib.strings) concatStringsSep concatMapStringsSep; + isSDL2 = (withSDLVersion == "2"); + sdlInfix = optionalString isSDL2 "2"; + sdlDeps1 = [ + SDL + SDL_ttf + SDL_mixer + ]; + sdlDeps2 = [ + SDL2 + SDL2_ttf + SDL2_mixer + ]; + sdlDepsBuildonly = if isSDL2 then sdlDeps1 else sdlDeps2; + sdlDepsTarget = if isSDL2 then sdlDeps2 else sdlDeps1; + sdlMakefileSuffix = + if stdenv.hostPlatform.isWindows then "win" + else if stdenv.hostPlatform.isDarwin then "mac" + else "unix"; + sdlMakefiles = concatMapStringsSep " " (x: x + "." + sdlMakefileSuffix) + (optionals enable16Bit [ + "Makefile" + ] ++ optionals enable32Bit [ + "Makefile21" + ]); + sdlBuildFlags = concatStringsSep " " + (optionals enableSDL [ + "SDL_VERSION=${withSDLVersion}" + ]); + sdlBins = concatStringsSep " " + (optionals enable16Bit [ + "np2kai" + ] ++ optionals enable32Bit [ + "np21kai" + ]); + x11ConfigureFlags = concatStringsSep " " + (( + if ((enableHAXM && (enable16Bit || enable32Bit)) || (enable16Bit && enable32Bit)) then [ + "--enable-build-all" + ] else if enableHAXM then [ + "--enable-haxm" + ] else if enable32Bit then [ + "--enable-ia32" + ] else [ ] + ) ++ optionals (!isSDL2) [ + "--enable-sdl" + "--enable-sdlmixer" + "--enable-sdlttf" + + "--enable-sdl2=no" + "--enable-sdl2mixer=no" + "--enable-sdl2ttf=no" + ]); + x11BuildFlags = concatStringsSep " " [ + "SDL2_CONFIG=sdl2-config" + "SDL_CONFIG=sdl-config" + "SDL_CFLAGS=\"$(sdl${sdlInfix}-config --cflags)\"" + "SDL_LIBS=\"$(sdl${sdlInfix}-config --libs) -lSDL${sdlInfix}_mixer -lSDL${sdlInfix}_ttf\"" + ]; + x11Bins = concatStringsSep " " + (optionals enable16Bit [ + "xnp2kai" + ] ++ optionals enable32Bit [ + "xnp21kai" + ] ++ optionals enableHAXM [ + "xnp21kai_haxm" + ]); +in +stdenv.mkDerivation rec { + pname = "np2kai"; + version = "0.86rev22"; #update src.rev to commit rev accordingly + + src = fetchFromGitHub rec { + owner = "AZO234"; + repo = "NP2kai"; + rev = "4a317747724669343e4c33ebdd34783fb7043221"; + sha256 = "0kxysxhx6jyk82mx30ni0ydzmwdcbnlxlnarrlq018rsnwb4md72"; + }; + + configurePhase = '' + export GIT_VERSION=${builtins.substring 0 7 src.rev} + buildFlags="$buildFlags ''${enableParallelBuilding:+-j$NIX_BUILD_CORES -l$NIX_BUILD_CORES}" + '' + optionalString enableX11 '' + cd x11 + substituteInPlace Makefile.am \ + --replace 'GIT_VERSION :=' 'GIT_VERSION ?=' + ./autogen.sh ${x11ConfigureFlags} + ./configure ${x11ConfigureFlags} + cd .. + ''; + + nativeBuildInputs = sdlDepsBuildonly + ++ optionals enableX11 [ + automake + autoconf + autoconf-archive + libtool + pkg-config + unzip + nasm + ]; + + buildInputs = sdlDepsTarget + ++ optionals enableX11 [ + gtk2 + libICE + libSM + libusb1 + libXxf86vm + ]; + + enableParallelBuilding = true; + + buildPhase = optionalString enableSDL '' + cd sdl2 + for mkfile in ${sdlMakefiles}; do + substituteInPlace $mkfile \ + --replace 'GIT_VERSION :=' 'GIT_VERSION ?=' + echo make -f $mkfile $buildFlags ${sdlBuildFlags} clean + make -f $mkfile $buildFlags ${sdlBuildFlags} clean + make -f $mkfile $buildFlags ${sdlBuildFlags} + done + cd .. + '' + optionalString enableX11 '' + cd x11 + make $buildFlags ${x11BuildFlags} + cd .. + ''; + + installPhase = optionalString enableSDL '' + cd sdl2 + for emu in ${sdlBins}; do + install -D -m 755 $emu $out/bin/$emu + done + cd .. + '' + optionalString enableX11 '' + cd x11 + for emu in ${x11Bins}; do + install -D -m 755 $emu $out/bin/$emu + done + cd .. + ''; + + meta = with lib; { + description = "A PC-9801 series emulator."; + homepage = "https://github.com/AZO234/NP2kai"; + license = licenses.mit; + maintainers = with maintainers; [ OPNA2608 ]; + platforms = platforms.x86; + }; +} |