- Update to 102

PR:		211855
Submitted by:	cyberbotx@cyberbotx.com (maintainer)
This commit is contained in:
Dmitry Marakasov 2017-04-10 13:17:17 +00:00
parent 8f7efa27a2
commit b7dda5b4c0
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=438163
15 changed files with 171 additions and 129 deletions

View file

@ -2,59 +2,49 @@
# $FreeBSD$
PORTNAME= higan
PORTVERSION= 0.94
PORTREVISION= 5
PORTVERSION= 102
CATEGORIES= emulators
MASTER_SITES= http://byuu.org/files/ \
MASTER_SITES= http://download.byuu.org/ \
http://www.cyberbotx.com/higan/
DISTNAME= ${PORTNAME}_v${PORTVERSION:S/.//}-source
DISTNAME= ${PORTNAME}_v${PORTVERSION}-source
MAINTAINER= cyberbotx@cyberbotx.com
COMMENT= Nintendo multi-system emulator
USES= compiler:c++11-lib gmake pkgconfig tar:xz
USES= 7z:p7zip compiler:c++14-lang gmake pkgconfig
USE_LDCONFIG= yes
USE_XORG= x11 xext
USE_CSTD= c99
USE_CXXSTD= c++14
USE_GCC= yes
MAKEFILE= GNUmakefile
ONLY_FOR_ARCHS= i386 amd64
MAKE_ENV+= compiler="${CXX}" cflags="-x c -std=c99 ${CFLAGS}" \
cppflags="-x c++ -std=c++11 ${CXXFLAGS}"
MAKE_ENV+= compiler="${CXX}"
OPTIONS_DEFINE= DEBUG
OPTIONS_SINGLE= PROFILE GUI
OPTIONS_SINGLE_PROFILE= ACCURACY BALANCED PERFORMANCE
OPTIONS_SINGLE= GUI
OPTIONS_SINGLE_GUI= GTK2 QT4
OPTIONS_MULTI= VIDEO SOUND INPUT
OPTIONS_MULTI_VIDEO= GLX SDL XSHM XV
OPTIONS_MULTI_SOUND= AO OPENAL OSS PULSEAUDIO
OPTIONS_MULTI_INPUT= INPUT_SDL INPUT_X
OPTIONS_DEFAULT= BALANCED GTK2 GLX XSHM XV SDL \
OPTIONS_DEFAULT= GTK2 GLX XSHM XV SDL \
OSS INPUT_SDL INPUT_X
ACCURACY_DESC= Use accuracy profile
BALANCED_DESC= Use balanced profile
PERFORMANCE_DESC= Use performance profile
GTK2_DESC= Build with GTK+2 GUI
QT4_DESC= Build with QT4 GUI
GLX_DESC= Build GLX video driver
SDL_DESC= Build SDL video driver
XSHM_DESC= Build XShm video driver
XV_DESC= Build Xv video driver
AO_DESC= Build AO sound driver
OPENAL_DESC= Build OpenAL sound driver
OSS_DESC= Build OSS sound driver
PULSEAUDIO_DESC= Build Pulseaudio sound driver
INPUT_SDL_DESC= Build SDL input driver
INPUT_X_DESC= Build X input driver
ACCURACY_MAKE_ENV= profile="accuracy"
BALANCED_MAKE_ENV= profile="balanced"
PERFORMANCE_MAKE_ENV= profile="performance"
GTK2_LIB_DEPENDS= libfontconfig.so:x11-fonts/fontconfig \
libfreetype.so:print/freetype2
GTK2_MAKE_ENV= hiro="gtk"
GTK2_USE= GNOME=cairo,gdkpixbuf2,gtk20,gtksourceview2
GTK2_USES= gettext
GTK2_USE= GNOME=gtk20
GTK2_MAKE_ENV= phoenix="gtk"
QT4_USE= QT4=gui,moc_build
QT4_MAKE_ENV= phoenix="qt"
QT4_MAKE_ENV= hiro="qt"
QT4_USE= QT4=corelib,gui,moc_build
GLX_USE= GL=gl
GLX_VARS= VIDEO_DRIVER+=video.glx
@ -89,33 +79,27 @@ post-patch:
-e 's|%%VIDEO%%|${VIDEO_DRIVER}|' \
-e 's|%%AUDIO%%|${AUDIO_DRIVER}|' \
-e 's|%%INPUT%%|${INPUT_DRIVER}|' \
${WRKSRC}/target-ethos/Makefile
${WRKSRC}/higan/target-tomoko/GNUmakefile
${REINPLACE_CMD} -e 's|/usr/share/|${PREFIX}/share/|' \
${WRKSRC}/nall/string/platform.hpp
${WRKSRC}/nall/path.hpp
post-patch-DEBUG-on:
${REINPLACE_CMD} -e 's|-O3|-g|g' \
${WRKSRC}/ananke/Makefile \
${WRKSRC}/Makefile
${REINPLACE_CMD} -e 's|:= -s|:= #|g' \
${WRKSRC}/Makefile
pre-build-QT4-on:
(cd ${WRKSRC}/phoenix/qt && ${MOC} -i -o platform.moc platform.moc.hpp)
${WRKSRC}/higan/GNUmakefile \
${WRKSRC}/icarus/GNUmakefile
do-build:
.for d in . ananke
(cd ${WRKSRC}/${d} && ${MAKE_CMD} ${MAKE_ENV})
.for d in higan icarus
@${DO_MAKE_BUILD} ${ALL_TARGET} -C${WRKSRC}/${d}
.endfor
do-install:
${INSTALL_LIB} ${WRKSRC}/ananke/libananke.so ${STAGEDIR}${PREFIX}/lib/libananke.so.1
${LN} -sf libananke.so.1 ${STAGEDIR}${PREFIX}/lib/libananke.so
${INSTALL_PROGRAM} ${WRKSRC}/out/higan ${STAGEDIR}${PREFIX}/bin/
${INSTALL_DATA} ${WRKSRC}/data/higan.png ${STAGEDIR}${PREFIX}/share/pixmaps/
${INSTALL_DATA} ${WRKSRC}/data/higan.desktop ${STAGEDIR}${PREFIX}/share/applications/
${MKDIR} ${STAGEDIR}${DATADIR}/shaders
(cd ${WRKSRC}/profile && ${COPYTREE_SHARE} \* ${STAGEDIR}${DATADIR}/)
(cd ${WRKSRC}/shaders && ${COPYTREE_SHARE} \*.shader ${STAGEDIR}${DATADIR}/shaders/)
${INSTALL_PROGRAM} ${WRKSRC}/higan/out/higan ${STAGEDIR}${PREFIX}/bin/
${INSTALL_PROGRAM} ${WRKSRC}/icarus/out/icarus ${STAGEDIR}${PREFIX}/bin/
${INSTALL_DATA} ${WRKSRC}/higan/data/higan.png ${STAGEDIR}${PREFIX}/share/pixmaps/
${INSTALL_DATA} ${WRKSRC}/higan/data/higan.desktop ${STAGEDIR}${PREFIX}/share/applications/
(cd ${WRKSRC}/higan/systems && ${COPYTREE_SHARE} . ${STAGEDIR}${DATADIR}/)
${INSTALL_DATA} ${WRKSRC}/higan/data/cheats.bml ${STAGEDIR}${DATADIR}/
(cd ${WRKSRC}/icarus/Database && ${COPYTREE_SHARE} . ${STAGEDIR}${PREFIX}/share/icarus/Database/)
.include <bsd.port.mk>

View file

@ -1,2 +1,3 @@
SHA256 (higan_v094-source.tar.xz) = 5e149df9d50c1066eb97c0d66665428d75304da782bba5a87078b87fc311151b
SIZE (higan_v094-source.tar.xz) = 882732
TIMESTAMP = 1489861177
SHA256 (higan_v102-source.7z) = 52dadcf2ec5cfab0952e2948cc8acb4883b3996458bce4ecb3995830bb1699f1
SIZE (higan_v102-source.7z) = 1246258

View file

@ -1,15 +1,15 @@
--- target-ethos/Makefile.orig 2014-01-13 05:26:29 UTC
+++ target-ethos/Makefile
--- higan/target-tomoko/GNUmakefile.orig 2016-01-14 03:20:56 UTC
+++ higan/target-tomoko/GNUmakefile
@@ -27,9 +27,9 @@ else ifeq ($(platform),linux)
ruby += audio.alsa audio.openal audio.oss audio.pulseaudio audio.pulseaudiosimple audio.ao
ruby += input.udev input.sdl input.x
ruby += input.udev input.sdl input.xlib
else ifeq ($(platform),bsd)
- ruby := video.glx
- ruby += video.glx video.xv video.xshm video.sdl
- ruby += audio.openal audio.oss
- ruby += input.x
+ ruby := %%VIDEO%%
- ruby += input.sdl input.xlib
+ ruby += %%VIDEO%%
+ ruby += %%AUDIO%%
+ ruby += %%INPUT%%
endif
# phoenix
# ruby

View file

@ -0,0 +1,11 @@
--- higan/target-tomoko/presentation/presentation.cpp.orig 2017-01-13 17:52:31 UTC
+++ higan/target-tomoko/presentation/presentation.cpp
@@ -278,7 +278,7 @@ auto Presentation::toggleFullScreen() ->
}
auto Presentation::loadShaders() -> void {
- auto pathname = locate("Video Shaders/");
+ auto pathname = locateShared("Video Shaders/");
if(settings["Video/Driver"].text() == "OpenGL") {
for(auto shader : directory::folders(pathname, "*.shader")) {

View file

@ -0,0 +1,11 @@
--- higan/target-tomoko/program/medium.cpp.orig 2017-01-13 10:43:46 UTC
+++ higan/target-tomoko/program/medium.cpp
@@ -17,7 +17,7 @@ auto Program::loadMedium() -> void {
auto Program::loadMedium(Emulator::Interface& interface, const Emulator::Interface::Medium& medium) -> void {
unloadMedium();
- mediumPaths.append(locate({medium.name, ".sys/"}));
+ mediumPaths.append(locateShared({medium.name, ".sys/"}));
Emulator::audio.reset(2, audio->get(Audio::Frequency).get<uint>(44100));
inputManager->bind(emulator = &interface);

View file

@ -0,0 +1,23 @@
--- higan/target-tomoko/tomoko.cpp.orig 2016-07-01 08:21:27 UTC
+++ higan/target-tomoko/tomoko.cpp
@@ -4,6 +4,20 @@ unique_pointer<Audio> audio;
unique_pointer<Input> input;
Emulator::Interface* emulator = nullptr;
+auto locateShared(string name) -> string {
+ string location = {Path::program(), name};
+ if(inode::exists(location)) return location;
+
+ location = {Path::shared(), "higan/", name};
+ if(inode::exists(location)) return location;
+
+ location = {Path::config(), "higan/", name};
+ if(inode::exists(location)) return location;
+
+ directory::create({Path::local(), "higan/"});
+ return {Path::local(), "higan/", name};
+}
+
auto locate(string name) -> string {
string location = {Path::program(), name};
if(inode::exists(location)) return location;

View file

@ -0,0 +1,8 @@
--- higan/target-tomoko/tomoko.hpp.orig 2017-01-11 11:35:22 UTC
+++ higan/target-tomoko/tomoko.hpp
@@ -18,4 +18,5 @@ extern Emulator::Interface* emulator;
#include "tools/tools.hpp"
#include "presentation/presentation.hpp"
+auto locateShared(string name) -> string;
auto locate(string name) -> string;

View file

@ -0,0 +1,11 @@
--- higan/target-tomoko/tools/cheat-database.cpp.orig 2016-05-03 22:40:39 UTC
+++ higan/target-tomoko/tools/cheat-database.cpp
@@ -18,7 +18,7 @@ auto CheatDatabase::findCodes() -> void
if(!emulator) return;
auto sha256 = emulator->sha256();
- auto contents = string::read(locate("cheats.bml"));
+ auto contents = string::read(locateShared("cheats.bml"));
auto document = BML::unserialize(contents);
for(auto cartridge : document.find("cartridge")) {

View file

@ -0,0 +1,33 @@
--- icarus/core/core.cpp.orig 2017-01-11 13:27:39 UTC
+++ icarus/core/core.cpp
@@ -1,17 +1,17 @@
Icarus::Icarus() {
- database.famicom = BML::unserialize(string::read(locate("Database/Famicom.bml")));
- database.superFamicom = BML::unserialize(string::read(locate("Database/Super Famicom.bml")));
- database.masterSystem = BML::unserialize(string::read(locate("Database/Master System.bml")));
- database.megaDrive = BML::unserialize(string::read(locate("Database/Mega Drive.bml")));
- database.pcEngine = BML::unserialize(string::read(locate("Database/PC Engine.bml")));
- database.gameBoy = BML::unserialize(string::read(locate("Database/Game Boy.bml")));
- database.gameBoyColor = BML::unserialize(string::read(locate("Database/Game Boy Color.bml")));
- database.gameBoyAdvance = BML::unserialize(string::read(locate("Database/Game Boy Advance.bml")));
- database.gameGear = BML::unserialize(string::read(locate("Database/Game Gear.bml")));
- database.wonderSwan = BML::unserialize(string::read(locate("Database/WonderSwan.bml")));
- database.wonderSwanColor = BML::unserialize(string::read(locate("Database/WonderSwan Color.bml")));
- database.bsMemory = BML::unserialize(string::read(locate("Database/BS Memory.bml")));
- database.sufamiTurbo = BML::unserialize(string::read(locate("Database/Sufami Turbo.bml")));
+ database.famicom = BML::unserialize(string::read(locateShared("Database/Famicom.bml")));
+ database.superFamicom = BML::unserialize(string::read(locateShared("Database/Super Famicom.bml")));
+ database.masterSystem = BML::unserialize(string::read(locateShared("Database/Master System.bml")));
+ database.megaDrive = BML::unserialize(string::read(locateShared("Database/Mega Drive.bml")));
+ database.pcEngine = BML::unserialize(string::read(locateShared("Database/PC Engine.bml")));
+ database.gameBoy = BML::unserialize(string::read(locateShared("Database/Game Boy.bml")));
+ database.gameBoyColor = BML::unserialize(string::read(locateShared("Database/Game Boy Color.bml")));
+ database.gameBoyAdvance = BML::unserialize(string::read(locateShared("Database/Game Boy Advance.bml")));
+ database.gameGear = BML::unserialize(string::read(locateShared("Database/Game Gear.bml")));
+ database.wonderSwan = BML::unserialize(string::read(locateShared("Database/WonderSwan.bml")));
+ database.wonderSwanColor = BML::unserialize(string::read(locateShared("Database/WonderSwan Color.bml")));
+ database.bsMemory = BML::unserialize(string::read(locateShared("Database/BS Memory.bml")));
+ database.sufamiTurbo = BML::unserialize(string::read(locateShared("Database/Sufami Turbo.bml")));
}
auto Icarus::error() const -> string {

View file

@ -0,0 +1,23 @@
--- icarus/icarus.cpp.orig 2017-01-11 13:07:07 UTC
+++ icarus/icarus.cpp
@@ -4,6 +4,20 @@ using namespace nall;
#include <hiro/hiro.hpp>
using namespace hiro;
+auto locateShared(string name) -> string {
+ string location = {Path::program(), name};
+ if(inode::exists(location)) return location;
+
+ location = {Path::shared(), "icarus/", name};
+ if(inode::exists(location)) return location;
+
+ location = {Path::config(), "icarus/", name};
+ if(inode::exists(location)) return location;
+
+ directory::create({Path::local(), "icarus/"});
+ return {Path::local(), "icarus/", name};
+}
+
auto locate(string name) -> string {
string location = {Path::program(), name};
if(inode::exists(location)) return location;

View file

@ -1,11 +0,0 @@
--- nall/platform.hpp.orig 2014-01-20 06:37:12 UTC
+++ nall/platform.hpp
@@ -41,7 +41,7 @@ namespace Math {
#undef interface
#define dllexport __declspec(dllexport)
#else
- #include <endian.h>
+ #include <sys/endian.h>
#include <unistd.h>
#include <pwd.h>
#define dllexport

View file

@ -1,31 +0,0 @@
--- ruby/video/glx.cpp.orig 2014-01-20 06:37:14 UTC
+++ ruby/video/glx.cpp
@@ -128,6 +128,28 @@ struct pVideoGLX : OpenGL {
//require GLX 1.2+ API
if(glx.version_major < 1 || (glx.version_major == 1 && glx.version_minor < 2)) return false;
+ int major, minor;
+ const char *version = (const char *) glGetString (GL_VERSION);
+ const char *dot = version == NULL ? NULL : strchr (version, '.');
+ const char *major_start = dot;
+
+ /* Sanity check */
+ if (dot == NULL || dot == version || *(dot + 1) == '\0') {
+ major = 0;
+ minor = 0;
+ } else {
+ /* Find the start of the major version in the string */
+ while (major_start > version && *major_start != ' ')
+ --major_start;
+ major = strtol (major_start, NULL, 10);
+ minor = strtol (dot + 1, NULL, 0);
+ }
+
+ if(major < 3 || (major == 3 && minor < 2)) {
+ printf("Error: OpenGL 3.2 is not available. Select another video driver on the Advanced Configuration tab and restart higan.\n");
+ return false;
+ }
+
XWindowAttributes window_attributes;
XGetWindowAttributes(display, settings.handle, &window_attributes);

View file

@ -1,11 +0,0 @@
--- target-ethos/general/presentation.cpp.orig 2013-12-06 20:19:40 UTC
+++ target-ethos/general/presentation.cpp
@@ -235,7 +235,7 @@ void Presentation::bootstrap() {
void Presentation::loadShaders() {
//only the OpenGL driver has video shader support
if(config->video.driver == "OpenGL") {
- string pathname = program->path("Video Shaders/");
+ string pathname = program->path("shaders/");
lstring shaders = directory::folders(pathname, "*.shader");
for(auto& name : shaders) {
auto shader = new RadioItem;

View file

@ -1,11 +0,0 @@
--- target-ethos/utility/utility.cpp.orig 2013-12-21 07:00:03 UTC
+++ target-ethos/utility/utility.cpp
@@ -203,7 +203,7 @@ void Utility::updateShader() {
video.set(Video::Filter, Video::FilterLinear);
} else if(config->video.shader == "Display Emulation") {
if(program->active) {
- string pathname = program->path("Video Shaders/");
+ string pathname = program->path("shaders/");
pathname.append("Display Emulation/");
pathname.append(presentation->systemName, ".shader/");
if(directory::exists(pathname)) {

View file

@ -1,6 +1,5 @@
bin/higan
lib/libananke.so.1
lib/libananke.so
bin/icarus
share/applications/higan.desktop
%%DATADIR%%/Famicom.sys/manifest.bml
%%DATADIR%%/Game Boy Advance.sys/manifest.bml
@ -8,12 +7,14 @@ share/applications/higan.desktop
%%DATADIR%%/Game Boy Color.sys/manifest.bml
%%DATADIR%%/Game Boy.sys/boot.rom
%%DATADIR%%/Game Boy.sys/manifest.bml
%%DATADIR%%/Game Gear.sys/manifest.bml
%%DATADIR%%/Master System.sys/manifest.bml
%%DATADIR%%/Mega Drive.sys/manifest.bml
%%DATADIR%%/PC Engine.sys/manifest.bml
%%DATADIR%%/Super Famicom.sys/ipl.rom
%%DATADIR%%/Super Famicom.sys/manifest.bml
%%DATADIR%%/shaders/Curvature.shader/curvature.fs
%%DATADIR%%/shaders/Curvature.shader/manifest.bml
%%DATADIR%%/shaders/Edge Detection.shader/edge-detection.fs
%%DATADIR%%/shaders/Edge Detection.shader/manifest.bml
%%DATADIR%%/shaders/Scanline.shader/manifest.bml
%%DATADIR%%/shaders/Scanline.shader/scanline.fs
%%DATADIR%%/WonderSwan Color.sys/manifest.bml
%%DATADIR%%/WonderSwan.sys/manifest.bml
%%DATADIR%%/cheats.bml
share/icarus/Database/Super Famicom.bml
share/pixmaps/higan.png