Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #84456 from AndersonTorres/update-higan
higan: 106 -> 110
- Loading branch information
Showing
2 changed files
with
104 additions
and
78 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,26 +1,25 @@ | ||
diff -Naur higan_v105-source.old/higan/GNUmakefile higan_v105-source.new/higan/GNUmakefile | ||
--- higan_v105-source.old/higan/GNUmakefile 2017-10-07 01:34:22.000000000 -0300 | ||
+++ higan_v105-source.new/higan/GNUmakefile 2017-10-17 00:02:40.580957396 -0200 | ||
@@ -26,7 +26,7 @@ | ||
flags += -fopenmp | ||
link += -fopenmp | ||
ifeq ($(binary),application) | ||
- flags += -march=native | ||
+ flags += | ||
link += -Wl,-export-dynamic | ||
link += -lX11 -lXext | ||
else ifeq ($(binary),library) | ||
diff -Naur higan_v105-source.old/nall/GNUmakefile higan_v105-source.new/nall/GNUmakefile | ||
--- higan_v105-source.old/nall/GNUmakefile 2017-09-23 18:34:22.000000000 -0300 | ||
+++ higan_v105-source.new/nall/GNUmakefile 2017-10-17 00:03:33.568916550 -0200 | ||
@@ -40,8 +40,8 @@ | ||
objcflags := -x objective-c -std=c11 | ||
cppflags := -x c++ -std=c++14 | ||
objcppflags := -x objective-c++ -std=c++14 | ||
-flags := | ||
-link := | ||
+flags := $(CXXFLAGS) | ||
+link := $(LDFLAGS) | ||
diff -Naur higan-110-old/higan/GNUmakefile higan-110-new/higan/GNUmakefile | ||
--- higan-110-old/higan/GNUmakefile 2020-04-15 11:06:00.279935557 -0300 | ||
+++ higan-110-new/higan/GNUmakefile 2020-04-15 11:08:32.982417291 -0300 | ||
@@ -11,7 +11,7 @@ | ||
include $(nall.path)/GNUmakefile | ||
|
||
# compiler detection | ||
ifeq ($(compiler),) | ||
ifeq ($(platform),local) | ||
- flags += -march=native | ||
+ flags += | ||
endif | ||
|
||
ifeq ($(platform),windows) | ||
diff -Naur higan-110-old/nall/GNUmakefile higan-110-new/nall/GNUmakefile | ||
--- higan-110-old/nall/GNUmakefile 2020-04-15 11:06:00.396935154 -0300 | ||
+++ higan-110-new/nall/GNUmakefile 2020-04-15 11:10:37.738011488 -0300 | ||
@@ -127,7 +127,8 @@ | ||
|
||
# linux settings | ||
ifeq ($(platform),linux) | ||
- options += -ldl | ||
+ flags += $(CXXFLAGS) | ||
+ options += $(LDFLAGS) -ldl | ||
endif | ||
|
||
# bsd settings |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,108 +1,135 @@ | ||
{ stdenv, fetchurl | ||
, p7zip, pkgconfig, libicns | ||
{ stdenv, fetchFromGitHub | ||
, pkgconfig | ||
, libX11, libXv | ||
, udev | ||
, libGLU, libGL, SDL | ||
, Carbon, Cocoa, OpenGL, OpenAL | ||
, libGLU, libGL, SDL2 | ||
, libao, openal, libpulseaudio | ||
, alsaLib | ||
, gtk2, gtksourceview | ||
, runtimeShell }: | ||
, runtimeShell | ||
# Darwin dependencies | ||
, libicns, Carbon, Cocoa, OpenGL, OpenAL}: | ||
|
||
with stdenv.lib; | ||
let | ||
inherit (stdenv.lib) optionals; | ||
in | ||
stdenv.mkDerivation rec { | ||
|
||
pname = "higan"; | ||
version = "106"; | ||
sourceName = "higan_v${version}-source"; | ||
version = "110"; | ||
|
||
src = fetchurl { | ||
urls = [ "https://download.byuu.org/${sourceName}.7z" ]; | ||
sha256 = "063dzp9wrdnbvagraxi31xg0154y2gf67rrd0mnc8h104cgzjr35"; | ||
curlOpts = "--user-agent 'Mozilla/5.0'"; # the good old user-agent trick... | ||
src = fetchFromGitHub { | ||
owner = "higan-emu"; | ||
repo = "higan"; | ||
rev = "v${version}"; | ||
sha256 = "11rvm53c3p2f6zk8xbyv2j51xp8zmqnch7zravhj3fk590qrjrr2"; | ||
}; | ||
|
||
patches = [ ./0001-change-flags.diff ]; | ||
postPatch = '' | ||
sed '1i#include <cmath>' -i higan/fc/ppu/ppu.cpp | ||
for file in icarus/GNUmakefile higan/target-tomoko/GNUmakefile; do | ||
for file in icarus/GNUmakefile higan/target-higan/GNUmakefile; do | ||
substituteInPlace "$file" \ | ||
--replace 'sips -s format icns data/$(name).png --out out/$(name).app/Contents/Resources/$(name).icns' \ | ||
'png2icns out/$(name).app/Contents/Resources/$(name).icns data/$(name).png' | ||
done | ||
''; | ||
|
||
nativeBuildInputs = [ p7zip pkgconfig ] | ||
++ optional stdenv.isDarwin [ libicns ]; | ||
nativeBuildInputs = [ pkgconfig ] | ||
++ optionals stdenv.isDarwin [ libicns ]; | ||
|
||
buildInputs = | ||
[ SDL libao ] | ||
++ optionals stdenv.isLinux [ openal libpulseaudio udev libX11 libXv libGLU libGL gtk2 gtksourceview ] | ||
++ optionals stdenv.isDarwin [ Carbon Cocoa OpenGL OpenAL ] | ||
; | ||
|
||
unpackPhase = '' | ||
7z x $src | ||
sourceRoot=${sourceName} | ||
''; | ||
buildInputs = [ SDL2 libao ] | ||
++ optionals stdenv.isLinux [ alsaLib udev libpulseaudio openal | ||
gtk2 gtksourceview libX11 libXv | ||
libGLU libGL ] | ||
++ optionals stdenv.isDarwin [ Carbon Cocoa OpenGL OpenAL ]; | ||
|
||
buildPhase = '' | ||
make compiler=c++ -C icarus | ||
make compiler=c++ -C higan | ||
make compiler=c++ -C higan openmp=true target=higan | ||
make compiler=c++ -C genius openmp=true | ||
make compiler=c++ -C icarus openmp=true | ||
''; | ||
|
||
# Now the cheats file will be distributed separately | ||
installPhase = (if !stdenv.isDarwin then '' | ||
mkdir -p "$out"/bin "$out"/share/applications "$out"/share/pixmaps | ||
install -m 755 icarus/out/icarus "$out"/bin/ | ||
install -m 755 higan/out/higan "$out"/bin/ | ||
install -m 644 higan/data/higan.desktop "$out"/share/applications/ | ||
install -m 644 higan/data/higan.png "$out"/share/pixmaps/higan-icon.png | ||
install -m 644 higan/resource/logo/higan.png "$out"/share/pixmaps/higan-logo.png | ||
'' else '' | ||
installPhase = (if stdenv.isDarwin then '' | ||
mkdir "$out" | ||
mv higan/out/higan.app "$out"/ | ||
mv icarus/out/icarus.app "$out"/ | ||
mv genius/out/genius.app "$out"/ | ||
'' else '' | ||
install -dm 755 "$out"/bin "$out"/share/applications "$out"/share/pixmaps | ||
install -m 755 higan/out/higan -t "$out"/bin/ | ||
install -m 644 higan/target-higan/resource/higan.desktop \ | ||
-t $out/share/applications/ | ||
install -m 644 higan/target-higan/resource/higan.svg \ | ||
$out/share/pixmaps/higan-icon.svg | ||
install -m 644 higan/target-higan/resource/higan.png \ | ||
$out/share/pixmaps/higan-icon.png | ||
install -m 755 icarus/out/icarus -t "$out"/bin/ | ||
install -m 644 icarus/data/icarus.desktop -t $out/share/applications/ | ||
install -m 644 icarus/data/icarus.svg $out/share/pixmaps/icarus-icon.svg | ||
install -m 644 icarus/data/icarus.png $out/share/pixmaps/icarus-icon.png | ||
install -m 755 genius/out/genius -t "$out"/bin/ | ||
install -m 644 genius/data/genius.desktop -t $out/share/applications/ | ||
install -m 644 genius/data/genius.svg $out/share/pixmaps/genius-icon.svg | ||
install -m 644 genius/data/genius.png $out/share/pixmaps/genius-icon.png | ||
'') + '' | ||
mkdir -p "$out"/share/higan | ||
mkdir -p "$out"/share/higan "$out"/share/icarus | ||
cp --recursive --no-dereference --preserve='links' --no-preserve='ownership' \ | ||
higan/System/ "$out"/share/higan/ | ||
cp --recursive --no-dereference --preserve='links' --no-preserve='ownership' \ | ||
higan/systems/* "$out"/share/higan/ | ||
icarus/Database icarus/Firmware $out/share/icarus/ | ||
''; | ||
|
||
fixupPhase = let | ||
dest = if !stdenv.isDarwin then "\\$HOME/.local/share/higan" else "\\$HOME/Library/Application Support/higan"; | ||
dest = if stdenv.isDarwin | ||
then "\\$HOME/Library/Application Support/higan" | ||
else "\\$HOME/higan"; | ||
in '' | ||
# A dirty workaround, suggested by @cpages: | ||
# we create a first-run script to populate | ||
# the local $HOME with all the auxiliary | ||
# stuff needed by higan at runtime | ||
# $HOME with all the stuff needed at runtime | ||
mkdir -p "$out"/bin | ||
cat <<EOF > $out/bin/higan-init.sh | ||
#!${runtimeShell} | ||
cp --recursive --update $out/share/higan/*.sys "${dest}"/ | ||
cp --recursive --update $out/share/higan/System/ "${dest}"/ | ||
EOF | ||
chmod +x $out/bin/higan-init.sh | ||
''; | ||
|
||
meta = { | ||
description = "An open-source, cycle-accurate Nintendo multi-system emulator"; | ||
meta = with stdenv.lib; { | ||
description = "An open-source, cycle-accurate multi-system emulator"; | ||
longDescription = '' | ||
higan (formerly bsnes) is a multi-system game console emulator. | ||
higan is a multi-system game console emulator. The purpose of higan is to | ||
serve as hardware documentation in source code form: it is meant to be as | ||
accurate and complete as possible, with code that is easy to read and | ||
understand. | ||
It currently supports the following systems: | ||
- Nintendo's Famicom, Super Famicom (with subsystems: | ||
Super Game Boy, BS-X Satellaview, Sufami Turbo); | ||
Game Boy, Game Boy Color, Game Boy Advance; | ||
- Sega's Master System, Game Gear, Mega Drive; | ||
- NEC's PC Engine, SuperGrafx; | ||
- Bandai's WonderSwan, WonderSwan Color. | ||
- Famicom + Famicom Disk System | ||
- Super Famicom + Super Game Boy | ||
- Game Boy + Game Boy Color | ||
- Game Boy Advance + Game Boy Player | ||
- SG-1000 + SC-3000 | ||
- Master System + Game Gear | ||
- Mega Drive + Mega CD | ||
- PC Engine + SuperGrafx | ||
- MSX + MSX2 | ||
- ColecoVision | ||
- Neo Geo Pocket + Neo Geo Pocket Color | ||
- WonderSwan + WonderSwan Color + SwanCrystal + Pocket Challenge V2 | ||
''; | ||
homepage = "https://byuu.org/emulation/higan/"; | ||
homepage = "https://byuu.org/higan/"; | ||
license = licenses.gpl3Plus; | ||
maintainers = with maintainers; [ AndersonTorres ]; | ||
platforms = with platforms; unix; | ||
platforms = platforms.unix; | ||
}; | ||
} | ||
# TODO: Qt and GTK3+ support |