-
-
Notifications
You must be signed in to change notification settings - Fork 14.5k
Commit
- Loading branch information
There are no files selected for viewing
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 |
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"; | ||
This comment has been minimized.
Sorry, something went wrong.
This comment has been minimized.
Sorry, something went wrong.
This comment has been minimized.
Sorry, something went wrong.
kinnala
Contributor
|
||
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 |
This path is wrong, should be
$HOME/.local/share/higan
.