aboutsummaryrefslogtreecommitdiff
path: root/emulators/lisaem
diff options
context:
space:
mode:
authorPawel Pekala <pawel@FreeBSD.org>2013-12-20 16:43:48 +0000
committerPawel Pekala <pawel@FreeBSD.org>2013-12-20 16:43:48 +0000
commit7a49fda5bf083bf8ce76a0328c933189d3b56f47 (patch)
tree376671ea32422ed0e58bb3928faafc32e3cadaf1 /emulators/lisaem
parent6ff46fa5158fab7ee6bdc9800dcc6aa06cdeab60 (diff)
downloadports-7a49fda5bf083bf8ce76a0328c933189d3b56f47.tar.gz
ports-7a49fda5bf083bf8ce76a0328c933189d3b56f47.zip
- Fix build with clang
- Add desktop entry file - Support staging PR: ports/184866 Submitted by: KATO Tsuguru <tkato432@yahoo.com>
Notes
Notes: svn path=/head/; revision=337039
Diffstat (limited to 'emulators/lisaem')
-rw-r--r--emulators/lisaem/Makefile27
-rw-r--r--emulators/lisaem/files/patch-build.sh46
-rw-r--r--emulators/lisaem/files/patch-generator__cpu68k.c161
-rw-r--r--emulators/lisaem/files/patch-generator__reg68k.c19
4 files changed, 228 insertions, 25 deletions
diff --git a/emulators/lisaem/Makefile b/emulators/lisaem/Makefile
index 528bbd3cbc48..78dbd5e3e8de 100644
--- a/emulators/lisaem/Makefile
+++ b/emulators/lisaem/Makefile
@@ -3,7 +3,7 @@
PORTNAME= lisaem
DISTVERSION= 1.2.6
-PORTREVISION= 5
+PORTREVISION= 6
CATEGORIES= emulators
MASTER_SITES= http://lisaem.sunder.net/downloads/
@@ -12,25 +12,26 @@ COMMENT= Apple Lisa 2 Emulator
BUILD_DEPENDS= pngtopnm:${PORTSDIR}/graphics/netpbm
-LICENSE= GPLv2
-LICENSE_FILE= ${WRKSRC}/COPYING
+LICENSE= GPLv2 # (or later)
USE_BZIP2= yes
USE_WX= 2.8
-NO_STAGE= yes
+DESKTOP_ENTRIES="LisaEm" "" "${DATADIR}/lisa2icon.xpm" "${PORTNAME}" "" ""
+
post-patch:
- ${REINPLACE_CMD} -e "s|/usr/local|${PREFIX}|g" \
- -e "s|wx-config|${WX_CONFIG}|g" ${WRKSRC}/build.sh
+ @${REINPLACE_CMD} -e \
+ 's|%%PREFIX%%|${PREFIX}|g ; \
+ s|%%WX_CONFIG%%|${WX_CONFIG}|g' ${WRKSRC}/build.sh
+
do-build:
- cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} ./build.sh build
+ ${FIND} ${WRKSRC} -type l -delete
+ cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} ./build.sh build
do-install:
- @# This file is a symlink to itself; result of mistyped command?
- ${RM} -f ${WRKSRC}/resources/resources
- ${INSTALL_PROGRAM} ${WRKSRC}/bin/lisaem ${PREFIX}/bin
- ${MKDIR} ${PREFIX}/share/lisaem
- ${INSTALL_DATA} ${WRKSRC}/resources/* ${PREFIX}/share/lisaem/
- ${LN} -sf ${PREFIX}/share/lisaem ${PREFIX}/share/LisaEm
+ (cd ${WRKSRC}/bin && ${INSTALL_PROGRAM} lisaem ${STAGEDIR}${PREFIX}/bin)
+ @${MKDIR} ${STAGEDIR}${DATADIR}
+ (cd ${WRKSRC}/resources && ${INSTALL_DATA} * ${STAGEDIR}${DATADIR})
+ ${LN} -sf lisaem ${STAGEDIR}${PREFIX}/share/LisaEm
.include <bsd.port.mk>
diff --git a/emulators/lisaem/files/patch-build.sh b/emulators/lisaem/files/patch-build.sh
index 382fcf7ce67f..b45f94bea580 100644
--- a/emulators/lisaem/files/patch-build.sh
+++ b/emulators/lisaem/files/patch-build.sh
@@ -20,7 +20,7 @@
WXVER=0
-case "`wx-config --version`" in
-+case "`/usr/local/bin/wxgtk2-2.8-config --version`" in
++case "`%%WX_CONFIG%% --version`" in
2.9*|3*)
echo WARNING: wxWidgets versions higher than 2.8 have not been tested.
echo It might work if they are compiled with backwards compatibility.
@@ -28,7 +28,7 @@
2.8*) ;;
*) echo Could not find wxWidgets 2.8.0 or higher.
- echo Please install it and ensure that wx-config is in the path
-+ echo Please install it and ensure that /usr/local/bin/wxgtk2-2.8-config is in the path
++ echo Please install it and ensure that %%WX_CONFIG%% is in the path
exit 1
;;
esac
@@ -47,11 +47,22 @@
then
- WXREL="`wx-config --release`"
- if [ -n "`wx-config --list | grep $WXREL | grep unicode`" ]
-+ WXREL="`/usr/local/bin/wxgtk2-2.8-config --release`"
-+ if [ -n "`/usr/local/bin/wxgtk2-2.8-config --list | grep $WXREL | grep unicode`" ]
++ WXREL="`%%WX_CONFIG%% --release`"
++ if [ -n "`%%WX_CONFIG%% --list | grep $WXREL | grep unicode`" ]
then
WITHUNICODE="--unicode=yes"
fi
+@@ -210,8 +210,8 @@
+ PREFIX="/cygdrive/c/Program Files/Sunder.NET/LisaEm"
+ PREFIXLIB="/cygdrive/c/Program Files/Sunder.NET/LisaEm"
+ else
+- PREFIX="/usr/local/bin"
+- PREFIXLIB="/usr/local/share/"
++ PREFIX="%%PREFIX%%/bin"
++ PREFIXLIB="%%PREFIX%%/share/"
+ fi
+ fi
+ fi
@@ -230,11 +230,11 @@
# if the object is older than the source, it will return true.
##############################################################################
@@ -72,8 +83,8 @@
(default for non-OS X)
---with-unicode Ask wx-config for a unicode build (might not yet work)
---without-unicode Ask wx-config for a non-unicode build (default)
-+--with-unicode Ask /usr/local/bin/wxgtk2-2.8-config for a unicode build (might not yet work)
-+--without-unicode Ask /usr/local/bin/wxgtk2-2.8-config for a non-unicode build (default)
++--with-unicode Ask %%WX_CONFIG%% for a unicode build (might not yet work)
++--without-unicode Ask %%WX_CONFIG%% for a non-unicode build (default)
Environment Variables you can pass:
@@ -82,13 +93,13 @@
# many thanks to David Cecchin for finding the unicode issues fixed below.
- WXCONFIGFLAGS=`wx-config --cppflags $WITHUNICODE `
-+ WXCONFIGFLAGS=`/usr/local/bin/wxgtk2-2.8-config --cppflags $WITHUNICODE `
++ WXCONFIGFLAGS=`%%WX_CONFIG%% --cppflags $WITHUNICODE `
if [ -z "$WXCONFIGFLAGS" ]
then
- echo wx-config has failed, or returned an error. Ensure that it exists in your path.
- which wx-config
-+ echo /usr/local/bin/wxgtk2-2.8-config has failed, or returned an error. Ensure that it exists in your path.
-+ which /usr/local/bin/wxgtk2-2.8-config
++ echo %%WX_CONFIG%% has failed, or returned an error. Ensure that it exists in your path.
++ which %%WX_CONFIG%%
exit 3
fi
- CFLAGS="-I. -I../include -I../cpu68k -I../wxui $WXCONFIGFLAGS $WITHOPTIMIZE $WITHDEBUG"
@@ -96,13 +107,13 @@
- LINKOPTS="`wx-config $STATIC $WITHUNICODE --libs --linkdeps --cppflags`"
+ CFLAGS="$CFLAGS -I. -I../include -I../cpu68k -I../wxui $WXCONFIGFLAGS"
+ CXXFLAGS="$CXXFLAGS -I. -I../include -I../cpu68k -I../wxui $WXCONFIGFLAGS"
-+ LINKOPTS="`/usr/local/bin/wxgtk2-2.8-config $STATIC $WITHUNICODE --libs --linkdeps --cppflags`"
++ LINKOPTS="`%%WX_CONFIG%% $STATIC $WITHUNICODE --libs --linkdeps --cppflags`"
if [ -z "$LINKOPTS" ]
then
- echo wx-config has failed, or returned an error. Ensure that it exists in your path.
- which wx-config
-+ echo /usr/local/bin/wxgtk2-2.8-config has failed, or returned an error. Ensure that it exists in your path.
-+ which /usr/local/bin/wxgtk2-2.8-config
++ echo %%WX_CONFIG%% has failed, or returned an error. Ensure that it exists in your path.
++ which %%WX_CONFIG%%
exit 3
fi
@@ -115,3 +126,14 @@
fi
if [ -f ../bin/lisaem ]
+@@ -960,8 +960,8 @@
+ then
+
+ echo "Freshly compiled `du -sh lisaem`"
+- strip lisaem${EXT}
+- echo "Stripped `du -sh lisaem`"
++# strip lisaem${EXT}
++# echo "Stripped `du -sh lisaem`"
+
+ # compress it if upx exists.
+ if [ -z "$WITHOUTUPX" ]; then
diff --git a/emulators/lisaem/files/patch-generator__cpu68k.c b/emulators/lisaem/files/patch-generator__cpu68k.c
new file mode 100644
index 000000000000..c148a1b8aa7c
--- /dev/null
+++ b/emulators/lisaem/files/patch-generator__cpu68k.c
@@ -0,0 +1,161 @@
+--- generator/cpu68k.c.orig
++++ generator/cpu68k.c
+@@ -259,7 +259,7 @@
+ continue;
+ }
+ }
+- if (cpu68k_iibtable[bitmap] != NULL) {EXIT(283,0,"CPU definition #%d conflicts (0x%x)", i, bitmap);}
++ if (cpu68k_iibtable[bitmap] != NULL) {EXITR(283,0,"CPU definition #%d conflicts (0x%x)", i, bitmap);}
+
+ cpu68k_iibtable[bitmap] = iib;
+ /* set both flag and non-flag versions */
+@@ -285,7 +285,7 @@
+
+ if (j != cpu68k_totalinstr)
+ {
+- EXIT(84,0,"Instruction count not verified (%d/%d)\n",
++ EXITR(84,0,"Instruction count not verified (%d/%d)\n",
+ cpu68k_totalinstr, i);
+ }
+
+@@ -904,19 +904,19 @@
+ else /*---- Nope! We're out of IPCt's, allocate some more. ----*/
+ {
+
+- if ( ipcts_free) { EXIT(3,0,"Bug! ipcts_free is %ld, but ipct_free_head is null",ipcts_free);}
++ if ( ipcts_free) { EXITR(3,0,"Bug! ipcts_free is %ld, but ipct_free_head is null",ipcts_free);}
+
+ //check_iib();
+
+ /*--- Did we call Malloc too many times? ---*/
+- if ((iipct_mallocs++)>MAX_IPCT_MALLOCS) { EXIT(2,0,"Excessive mallocs of ipct's recompile with more!");}
++ if ((iipct_mallocs++)>MAX_IPCT_MALLOCS) { EXITR(2,0,"Excessive mallocs of ipct's recompile with more!");}
+
+ size_to_get = (ipcts_allocated/IPCT_ALLOC_PERCENT)+1; // add a percentange of what we have, least 1
+ if ( (ipct_mallocs[iipct_mallocs]=(t_ipc_table *)malloc(size_to_get * sizeof(t_ipc_table)+1) )==NULL)
+ {
+ DEBUG_LOG(0,"Out of memory getting more ipcs: %p was returned", ipct_mallocs[iipct_mallocs]);
+ DEBUG_LOG(0,"%d ipcts allocated so far, %d are free, %d used, %d mallocs done", ipcts_allocated, ipcts_free, ipcts_used, iipct_mallocs);
+- EXIT(86,0,"Out of memory while allocating more ipct's");
++ EXITR(86,0,"Out of memory while allocating more ipct's");
+ }
+
+ // DEBUG_LOG(0,"zzzzzzz ipct land allocated:: %p -to- %p", ipct_mallocs[iipct_mallocs], (void *)(ipct_mallocs[iipct_mallocs]+size_to_get * sizeof(t_ipc_table)));
+@@ -1084,8 +1084,8 @@
+ DEBUG_LOG(1000,"Nope - calling get_ipct()");
+ mmu_trn->table=get_ipct(); // allocate an ipc table for this mmu_t
+ table=mmu_trn->table;
+- if (!table) {EXIT(21,0,"Couldn't get IPC Table! Doh!");}
+- if (pc&1) {EXIT(14,0,"odd pc!");}
++ if (!table) {EXITR(21,0,"Couldn't get IPC Table! Doh!");}
++ if (pc&1) {EXITR(14,0,"odd pc!");}
+
+ //check_iib();
+
+@@ -1094,11 +1094,11 @@
+ // ipc points to the MMU translation table entry for this page.
+ ipc = &(table->ipc[((pc>>1) & 0xff)]);
+ DEBUG_LOG(200,"ipc is now %p at pc %06x max %06x",ipc,pc,xpc);
+- if (!ipc) {EXIT(501,0,"cpu68k_makeipclist: But! ipc is null!"); }
+- if (pc&1) {EXIT(501,0,"odd pc!");}
++ if (!ipc) {EXITR(501,0,"cpu68k_makeipclist: But! ipc is null!"); }
++ if (pc&1) {EXITR(501,0,"odd pc!");}
+ }
+ else
+- {EXIT(502,0,"Let the bodies hit the floor!\nLet the bodies hit the floor!\nLet the bodies hit the floor!\n\n Either mmu_trn or table is null!");}
++ {EXITR(502,0,"Let the bodies hit the floor!\nLet the bodies hit the floor!\nLet the bodies hit the floor!\n\n Either mmu_trn or table is null!");}
+ }
+
+ //check_iib();
+@@ -1106,7 +1106,7 @@
+
+ if ( !ipc)
+ {
+- EXIT(17,0,"ipc=NULL\n1. Something's got to give 2. Something's got to give. 3. Something's got to give 4. Something's got to give.\nNOW!");
++ EXITR(17,0,"ipc=NULL\n1. Something's got to give 2. Something's got to give. 3. Something's got to give 4. Something's got to give.\nNOW!");
+ }
+
+ //check_iib();
+@@ -1126,7 +1126,7 @@
+
+ if ( !ipc)
+ {
+- EXIT(20,0,"ipc=NULL\n1. Something's got to give 2. Something's got to give. 3. Something's got to give 4. Something's got to give.\nNOW!");
++ EXITR(20,0,"ipc=NULL\n1. Something's got to give 2. Something's got to give. 3. Something's got to give 4. Something's got to give.\nNOW!");
+ }
+
+ //check_iib();
+@@ -1236,8 +1236,8 @@
+ // fflush(buglog);
+ // #endif
+
+- if (!iib) {EXIT(53,0,"There's no proper IIB for the possibly illegal instruction opcode %04x @ pc=%08x\n",opcode,pc);}
+- if ( !ipc) {EXIT(54,0,"Have a cow man! ipc=NULL\n"); }
++ if (!iib) {EXITR(53,0,"There's no proper IIB for the possibly illegal instruction opcode %04x @ pc=%08x\n",opcode,pc);}
++ if ( !ipc) {EXITR(54,0,"Have a cow man! ipc=NULL\n"); }
+
+ //DEBUG_LOG(200,"ipc is %s",(!ipc)?"null":"ok");
+
+@@ -1283,7 +1283,7 @@
+ // grow the list of ipcs if we need to.
+ if (instrs>=ipcs_to_get)
+ {
+- EXIT(24,0,"Welcome to the realms of chaos! I'm dealing with over %d instructions, %d ipcs! %d/%d/%d pc=%d/%08x",instrs,ipcs_to_get,segment1,segment2,start,context,pc);
++ EXITR(24,0,"Welcome to the realms of chaos! I'm dealing with over %d instructions, %d ipcs! %d/%d/%d pc=%d/%08x",instrs,ipcs_to_get,segment1,segment2,start,context,pc);
+ pc24=pc;
+ }
+
+@@ -1308,7 +1308,7 @@
+ table=mmu_trn->table;
+
+ if (!table) {
+- EXIT(99,0,"Couldnt get IPC Table! Doh!\n");}
++ EXITR(99,0,"Couldnt get IPC Table! Doh!\n");}
+
+ //if (pc&1) {DEBUG_LOG(200,"odd pc!"); EXIT(26);}
+ }
+@@ -1333,7 +1333,7 @@
+
+ // check_iib();
+
+- if (!table) {EXIT(27,0,"Couldnt get IPC Table! Doh!");}
++ if (!table) {EXITR(27,0,"Couldnt get IPC Table! Doh!");}
+ //ipc = &(mmu_trn->table->ipc[((pc>>1) & 0xff)]);
+ //myiib=cpu68k_iibtable[opcode]; iib=myiib; // iib = myiib ? myiib : illegaliib;
+ //////cpu68k_ipc(pc, iib, ipc);
+@@ -1370,7 +1370,7 @@
+ if (instrs == 2)
+ {
+
+- if (pc&1) {EXIT(28,0,"odd pc!");}
++ if (pc&1) {EXITR(28,0,"odd pc!");}
+ DEBUG_LOG(200,"*~*~*~*~*~*~ in 2instrs ipc is now %p at pc %06x max %06x",ipc,pc,xpc);
+ ipc=ipcs[instrs-1-1]; //ipc--
+ DEBUG_LOG(200,"ipc is now %p at pc %06x max %06x",ipc,pc,xpc);
+@@ -1443,7 +1443,7 @@
+ DEBUG_LOG(200,"ipc is now %p at pc %06x max %06x ix=%d",ipc,pc,xpc,ix);
+ if ( !ipc)
+ {
+- EXIT(29,0,"Null ipc, bye");
++ EXITR(29,0,"Null ipc, bye");
+ }
+
+ //check_iib();
+@@ -1460,7 +1460,7 @@
+
+ if (!ipc->function)
+ {
+- EXIT(3,0,"Null IPC fn returned for opcode:%04x ix=%d of %d instrs",ipc->opcode,ix,instrs);
++ EXITR(3,0,"Null IPC fn returned for opcode:%04x ix=%d of %d instrs",ipc->opcode,ix,instrs);
+ // cpu68k_printipc(ipc);
+ }
+
+@@ -1479,7 +1479,7 @@
+ {
+ // check_iib();
+ ipc=ipcs[ix];
+- EXIT(6,0,"FATAL ipc with null fnction at index %d-> used:%d, set:%d, opcode %04x, len %02x, src %08x, dst %08x\n",
++ EXITR(6,0,"FATAL ipc with null fnction at index %d-> used:%d, set:%d, opcode %04x, len %02x, src %08x, dst %08x\n",
+ ix, ipc->used, ipc->set, ipc->opcode, ipc->wordlen, ipc->src, ipc->dst);
+ }
+
diff --git a/emulators/lisaem/files/patch-generator__reg68k.c b/emulators/lisaem/files/patch-generator__reg68k.c
new file mode 100644
index 000000000000..99f84b4a8deb
--- /dev/null
+++ b/emulators/lisaem/files/patch-generator__reg68k.c
@@ -0,0 +1,19 @@
+--- generator/reg68k.c.orig
++++ generator/reg68k.c
+@@ -1308,7 +1308,7 @@
+
+ ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+- if (abort_opcode==1) {EXIT(476,0,"MMU/BUS/Address exception occured on opcode fetch!\n");}
++ if (abort_opcode==1) {EXITR(476,0,"MMU/BUS/Address exception occured on opcode fetch!\n");}
+ abort_opcode=0; // clear any addr/bus errors/traps/etc that may have occured.
+
+ InstructionRegister=ipc->opcode;
+@@ -1397,7 +1397,7 @@
+ InstructionRegister=ipc->opcode;
+ abort_opcode=0;
+ if (ipc->function) ipc->function(ipc);
+- else { EXIT(277,0,"No ipc function at %d/%08x, even after attempting to get one!\n",context,pc24);}
++ else { EXITR(277,0,"No ipc function at %d/%08x, even after attempting to get one!\n",context,pc24);}
+ }
+ } // if we have it, execute, else loop is done. :)