diff --git a/emulators/x49gp/Makefile b/emulators/x49gp/Makefile index 5c53db7d679c..ea8c43d5cacb 100644 --- a/emulators/x49gp/Makefile +++ b/emulators/x49gp/Makefile @@ -1,98 +1,101 @@ # Note: sdcard64.tar.gz contains just an empty 64MB FAT-16 disk image PORTNAME= x49gp PORTVERSION= 20100425 PORTREVISION= 9 CATEGORIES= emulators math MASTER_SITES= LOCAL/shaun DISTFILES= ${DISTNAME}${EXTRACT_SUFX} sdcard64.tar.gz EXTRACT_ONLY= ${DISTNAME}${EXTRACT_SUFX} MAINTAINER= shaun@FreeBSD.org COMMENT= HP 49g+/50g graphics calculator emulator WWW= https://sourceforge.net/projects/x49gp/ BROKEN_i386= does not build on i386 (error: frame pointer required, but reserved) BROKEN_powerpc64= fails to build: qemu/qemu-git/arm-softmmu/i386-dis.o: No such file or directory NOT_FOR_ARCHS= aarch64 armv6 armv7 NOT_FOR_ARCHS_REASON= unsupported CPU = unknown WRKSRC= ${WRKDIR}/x49gp/x49gp-code USES= gmake gnome pkgconfig xorg USE_GCC= 13 USE_XORG= x11 USE_GNOME= gtk20 OPTIONS_SINGLE= FIRMWARE OPTIONS_SINGLE_FIRMWARE=FIRMWARE_215 FIRMWARE_209 #OPTIONS_SINGLE_FIRMWARE=FIRMWARE_215H3 FIRMWARE_215 FIRMWARE_209 #FIRMWARE_215H3_DESC= Calculator ROM firmware version 2.15 plus HPGCC3 FIRMWARE_215_DESC= Calculator ROM firmware version 2.15 FIRMWARE_209_DESC= Calculator ROM firmware version 2.09 OPTIONS_DEFINE= GRAYSCALE GRAYSCALE_DESC= Apply patch for grayscale support OPTIONS_DEFAULT=FIRMWARE_215 GRAYSCALE SUB_FILES= hp50g.sh .if defined(WITH_DEBUG) MAKE_ENV+= DEBUGB=1 .endif .include MAKE_ARGS+=CC="${CC}" .if ${PORT_OPTIONS:MGRAYSCALE} EXTRA_PATCHES+= ${FILESDIR}/grayscale.diff .endif .if ${PORT_OPTIONS:MFIRMWARE_215H3} || ${PORT_OPTIONS:MFIRMWARE_215} MAKE_ARGS+=FIRMWARE=4950_215.bin DISTFILES+=hp4950v215.zip EXTRACT_ONLY+=hp4950v215.zip .else MAKE_ARGS+=FIRMWARE=4950_92.bin .endif #.if ${PORT_OPTIONS:MFIRMWARE_215H3} #DISTFILES+=rom215_hpgcc3_R004.tar.gz #EXTRACT_ONLY+=rom215_hpgcc3_R004.tar.gz #.endif post-patch: +.if ${ARCH:Mpowerpc*} + @${REINPLACE_CMD} -e 's|i386-dis.o|ppc-dis.o|' ${WRKSRC}/Makefile +.endif .if ${PORT_OPTIONS:MFIRMWARE_215H3} || ${PORT_OPTIONS:MFIRMWARE_215} @${CP} ${WRKDIR}/hp4950v215/*.lib ${WRKSRC}/ @${CP} ${WRKDIR}/hp4950v215/*.bin ${WRKSRC}/ @${CP} ${WRKDIR}/hp4950v215/*.scp ${WRKSRC}/ .endif #.if ${PORT_OPTIONS:MFIRMWARE_215H3} # @${CP} ${WRKDIR}/rom215_hpgcc3_R004/hpgccrom.bin ${WRKSRC}/4950_215.bin #.endif do-configure: cd ${WRKSRC}/qemu/qemu-git && ./configure-small --extra-cflags=-DX49GP --cc="${CC}" do-build: cd ${WRKSRC} && ${SETENV} -u MAKELEVEL -u MAKEFLAGS ${MAKE_CMD} ${MAKE_ARGS} do-install: @${MKDIR} ${STAGEDIR}${DATADIR} .for f in flash-50g hp50g.png hp50g-hack.png hp49g+.png flash-49g+ sram s3c2410-sram ${INSTALL_DATA} ${WRKSRC}/${f} ${STAGEDIR}${DATADIR}/ .endfor ${INSTALL_DATA} ${FILESDIR}/config-hp50g ${STAGEDIR}${DATADIR}/ ${INSTALL_DATA} ${FILESDIR}/config-hp49g+ ${STAGEDIR}${DATADIR}/ ${INSTALL_PROGRAM} ${WRKSRC}/x49gp ${STAGEDIR}${PREFIX}/bin/x49gp-bin ${INSTALL_SCRIPT} ${WRKDIR}/hp50g.sh ${STAGEDIR}${PREFIX}/bin/hp50g ${RM} ${STAGEDIR}${PREFIX}/bin/hp49g+ ${LN} ${STAGEDIR}${PREFIX}/bin/hp50g ${STAGEDIR}${PREFIX}/bin/hp49g+ ${INSTALL_DATA} ${DISTDIR}/sdcard64.tar.gz ${STAGEDIR}${DATADIR}/ .include diff --git a/emulators/x49gp/files/patch-qemu_qemu-git_cache-utils.h b/emulators/x49gp/files/patch-qemu_qemu-git_cache-utils.h new file mode 100644 index 000000000000..f6f37c966608 --- /dev/null +++ b/emulators/x49gp/files/patch-qemu_qemu-git_cache-utils.h @@ -0,0 +1,40 @@ +--- qemu/qemu-git/cache-utils.h.orig 2014-01-09 18:03:02.000000000 +0000 ++++ qemu/qemu-git/cache-utils.h 2014-01-09 18:04:14.000000000 +0000 +@@ -2,6 +2,9 @@ + #define QEMU_CACHE_UTILS_H + + #if defined(_ARCH_PPC) ++#include ++#include ++ + struct qemu_cache_conf { + unsigned long dcache_bsize; + unsigned long icache_bsize; +@@ -15,9 +18,14 @@ + static inline void flush_icache_range(unsigned long start, unsigned long stop) + { + unsigned long p, start1, stop1; +- unsigned long dsize = qemu_cache_conf.dcache_bsize; +- unsigned long isize = qemu_cache_conf.icache_bsize; ++ static unsigned long dsize; + ++ if (dsize == 0) { ++ size_t len = sizeof(dsize); ++ if (sysctlbyname("machdep.cacheline_size", &dsize, &len, NULL, 0) != 0) ++ dsize = 32; ++ } ++ + start1 = start & ~(dsize - 1); + stop1 = (stop + dsize - 1) & ~(dsize - 1); + for (p = start1; p < stop1; p += dsize) { +@@ -25,9 +33,7 @@ + } + asm volatile ("sync" : : : "memory"); + +- start &= start & ~(isize - 1); +- stop1 = (stop + isize - 1) & ~(isize - 1); +- for (p = start1; p < stop1; p += isize) { ++ for (p = start1; p < stop1; p += dsize) { + asm volatile ("icbi 0,%0" : : "r"(p) : "memory"); + } + asm volatile ("sync" : : : "memory");