0
0
Fork 0
haikuports/games-emulation/mame/mame-0.226.recipe

225 lines
6.5 KiB
Bash

SUMMARY="A multi-purpose emulation framework"
DESCRIPTION="MAME\'s purpose is to preserve decades of software history. As \
electronic technology continues to rush forward, MAME prevents this important \
\"vintage\" software from being lost and forgotten. This is achieved by \
documenting the hardware and how it functions. The source code to MAME \
serves as this documentation. The fact that the software is usable serves \
primarily to validate the accuracy of the documentation (how else can you \
prove that you have recreated the hardware faithfully?). Over time, MAME \
(originally stood for Multiple Arcade Machine Emulator) absorbed the \
sister-project MESS (Multi Emulator Super System), so MAME now documents a \
wide variety of (mostly vintage) computers, video game consoles and \
calculators, in addition to the arcade video games that were its initial focus."
HOMEPAGE="https://www.mamedev.org/"
COPYRIGHT="1997-2020 MAMEDev and contributors"
LICENSE="GNU GPL v2"
REVISION="1"
SOURCE_URI="https://github.com/mamedev/mame/archive/mame${portVersion/./}.tar.gz"
CHECKSUM_SHA256="7c4c9ec232ba988e65fd29665c9b8e40b5ac3aa9f561eeb107cebbf08ba94baf"
SOURCE_FILENAME="mame-$portVersion.tar.gz"
SOURCE_DIR="mame-mame${portVersion/./}"
PATCHES="mame-$portVersion.patchset"
ADDITIONAL_FILES="
mame.sh
mame.rdef.in
"
ARCHITECTURES="all !x86_gcc2"
SECONDARY_ARCHITECTURES="x86"
bits=64
optimize=3
makejobs=$jobArgs
commandBinDir=$binDir
commandSuffix=$secondaryArchSuffix
if [ "$targetArchitecture" = x86_gcc2 ]; then
bits=
commandBinDir=$prefix/bin
commandSuffix=
makejobs=1
optimize=1
fi
PROVIDES="
mame$secondaryArchSuffix = $portVersion
cmd:castool$commandSuffix
cmd:chdman$commandSuffix
cmd:floptool$commandSuffix
cmd:imgtool$commandSuffix
cmd:jedutil$commandSuffix
cmd:ldresample$commandSuffix
cmd:ldverify$commandSuffix
cmd:mame.sh
cmd:mame$commandSuffix
cmd:nltool$commandSuffix
cmd:nlwav$commandSuffix
cmd:pngcmp$commandSuffix
cmd:regrep$commandSuffix
cmd:romcmp$commandSuffix
cmd:split$commandSuffix
cmd:src2html$commandSuffix
cmd:srcclean$commandSuffix
cmd:testkeys$commandSuffix
cmd:unidasm$commandSuffix
"
REQUIRES="
haiku$secondaryArchSuffix
lib:libexpat$secondaryArchSuffix
lib:libflac$secondaryArchSuffix
lib:libfontconfig$secondaryArchSuffix
lib:libfreetype$secondaryArchSuffix
lib:libGL$secondaryArchSuffix
lib:libjpeg$secondaryArchSuffix
lib:liblua$secondaryArchSuffix >= 5.3
lib:libpugixml$secondaryArchSuffix
lib:libSDL2_2.0$secondaryArchSuffix
lib:libSDL2_ttf$secondaryArchSuffix
lib:libsqlite3$secondaryArchSuffix
lib:libutf8proc$secondaryArchSuffix
lib:libz$secondaryArchSuffix
"
BUILD_REQUIRES="
haiku${secondaryArchSuffix}_devel
devel:glm
devel:libexpat$secondaryArchSuffix
devel:libflac$secondaryArchSuffix
devel:libfontconfig$secondaryArchSuffix
devel:libfreetype$secondaryArchSuffix
devel:libGL$secondaryArchSuffix
devel:libjpeg$secondaryArchSuffix
devel:liblua$secondaryArchSuffix >= 5.3
devel:libogg$secondaryArchSuffix
devel:libpugixml$secondaryArchSuffix
devel:librapidjson$secondaryArchSuffix
devel:libSDL2_2.0$secondaryArchSuffix
devel:libSDL2_ttf$secondaryArchSuffix
devel:libsqlite3$secondaryArchSuffix
devel:libutf8proc$secondaryArchSuffix >= 2
devel:libz$secondaryArchSuffix
"
BUILD_PREREQUIRES="
cmd:gcc$secondaryArchSuffix
cmd:ld$secondaryArchSuffix
cmd:libtoolize
cmd:make
cmd:pkg_config$secondaryArchSuffix
cmd:python2
cmd:sed
cmd:strip$secondaryArchSuffix
"
defineDebugInfoPackage mame$secondaryArchSuffix \
$commandBinDir/castool \
$commandBinDir/chdman \
$commandBinDir/floptool \
$commandBinDir/imgtool \
$commandBinDir/jedutil \
$commandBinDir/ldresample \
$commandBinDir/ldverify \
$commandBinDir/mame \
$commandBinDir/nltool \
$commandBinDir/nlwav \
$commandBinDir/pngcmp \
$commandBinDir/regrep \
$commandBinDir/romcmp \
$commandBinDir/split
BUILD()
{
# make clean
# This is wrong on so many levels
SYS_LDFLAGS="-lbsd -lnetwork " # trailing space required!
for _i in flac libutf8proc lua RapidJSON sqlite3; do
SYS_CFLAGS+="`pkg-config $_i --cflags` "
SYS_LDFLAGS+="`pkg-config $_i --libs` "
done
ARCHOPTS="$SYS_CFLAGS $SYS_LDFLAGS" \
make \
REGENIE=1 \
TOOLS=1 \
PRECOMPILE=0 \
NOWERROR=1 \
OPTIMIZE=$optimize \
USE_SYSTEM_LIB_EXPAT=1 \
USE_SYSTEM_LIB_ZLIB=1 \
USE_SYSTEM_LIB_JPEG=1 \
USE_SYSTEM_LIB_FLAC=1 \
USE_SYSTEM_LIB_LUA=1 \
USE_SYSTEM_LIB_SQLITE3=1 \
USE_SYSTEM_LIB_UTF8PROC=1 \
USE_SYSTEM_LIB_GLM=1 \
USE_SYSTEM_LIB_RAPIDJSON=1 \
USE_SYSTEM_LIB_PUGIXML=1 \
-j $makejobs
}
INSTALL()
{
# Based on https://projects.archlinux.de/svntogit/community.git/tree/trunk/PKGBUILD?h=packages/mame
# Arch cleanup
# 32 bit main binary called as "mame" which would collide with our symlink
if [ "$targetArchitecture" = x86_64 ]; then
mv mame$bits mame
fi
# Install the binaries
mkdir -p "$commandBinDir"
for _i in castool chdman floptool imgtool jedutil ldresample ldverify \
mame nltool nlwav pngcmp regrep romcmp split; do
install -m755 $_i -t "$commandBinDir"
strip "$commandBinDir"/$_i
done
# Create the startscript
cp $portDir/additional-files/mame.sh "$commandBinDir"/MAME
chmod +x "$commandBinDir"/MAME
# Add extra attributes to the binaries...
local APP_SIGNATURE="application/x-vnd.mame"
local MAJOR="`echo "$portVersion" | cut -d. -f1`"
local MIDDLE="`echo "$portVersion" | cut -d. -f2`"
local MINOR="0"
sed \
-e "s|@APP_SIGNATURE@|$APP_SIGNATURE|" \
-e "s|@MAJOR@|$MAJOR|" \
-e "s|@MIDDLE@|$MIDDLE|" \
-e "s|@MINOR@|$MINOR|" \
-e "s|@SUMMARY@|Multiple Arcade Machine Emulator|" \
-e "s|@DESCRIPTION@|$SUMMARY|" \
$portDir/additional-files/mame.rdef.in > mame.rdef
addResourcesToBinaries mame.rdef "$commandBinDir/mame"
# ...and to our startscript, but we can't use addResourcesToBinaries here
rc mame.rdef
resattr -o "$commandBinDir"/MAME mame.rsrc
# Creating icon in Haiku's leaf-menu
addAppDeskbarSymlink "$commandBinDir"/MAME
# Install the extra bits
install -Dm644 src/osd/modules/opengl/shader/glsl*.*h -t "$libDir/"/mame/shader/
cp -ar {artwork,bgfx,plugins,language,ctrlr,keymaps,hash} "$libDir"/mame/
# FS#28203 fix from AUR
sed -i 's|KEYCODE_2_PAD|KEYCODE_2PAD|' "$libDir"/mame/ctrlr/*.cfg
sed -i 's|KEYCODE_4_PAD|KEYCODE_4PAD|' "$libDir"/mame/ctrlr/*.cfg
sed -i 's|KEYCODE_6_PAD|KEYCODE_6PAD|' "$libDir"/mame/ctrlr/*.cfg
sed -i 's|KEYCODE_8_PAD|KEYCODE_8PAD|' "$libDir"/mame/ctrlr/*.cfg
# Install man-pages
install -dm0755 "$manDir"/man{1,6}
install -m644 docs/man/*.1* "$manDir"/man1
install -m644 docs/man/*.6* "$manDir"/man6
}
TEST()
{
make tests
}