diff options
Diffstat (limited to 'emulators/mame/Makefile')
-rw-r--r-- | emulators/mame/Makefile | 191 |
1 files changed, 105 insertions, 86 deletions
diff --git a/emulators/mame/Makefile b/emulators/mame/Makefile index 8252e5a0efba..79486591c88a 100644 --- a/emulators/mame/Makefile +++ b/emulators/mame/Makefile @@ -1,6 +1,5 @@ PORTNAME= mame -DISTVERSION= 0.259 -PORTREVISION= 1 +DISTVERSION= 0.261 CATEGORIES= emulators games MAINTAINER= agh@riseup.net @@ -22,6 +21,8 @@ ONLY_FOR_ARCHS= aarch64 amd64 armv7 i386 powerpc powerpc64 powerpc64le ONLY_FOR_ARCHS_REASON= not yet ported to any architecture other than armv7, arm64, x86, and powerpc* BUILD_DEPENDS= ${PYTHON_PKGNAMEPREFIX}sphinxcontrib-svg2pdfconverter>0:textproc/py-sphinxcontrib-svg2pdfconverter@${PY_FLAVOR} \ + asio>0:net/asio \ + genie:devel/genie \ glm>0:math/glm \ rapidjson>0:devel/rapidjson LIB_DEPENDS= libexpat.so:textproc/expat2 \ @@ -30,12 +31,11 @@ LIB_DEPENDS= libexpat.so:textproc/expat2 \ libfreetype.so:print/freetype2 \ libportmidi.so:audio/portmidi \ libpugixml.so:textproc/pugixml \ - libutf8proc.so:textproc/utf8proc \ - libuv.so:devel/libuv + libutf8proc.so:textproc/utf8proc RUN_DEPENDS= liberation-fonts-ttf>=0:x11-fonts/liberation-fonts-ttf -USES= compiler:c++17-lang gl gmake jpeg localbase lua:54 pkgconfig \ - python:3.9,build sdl shebangfix sqlite:3 xorg +USES= compiler:c++17-lang gl gmake jpeg llvm:min=16 localbase \ + pkgconfig python:3.9,build sdl shebangfix sqlite:3 xorg USE_GITHUB= yes GH_ACCOUNT= mamedev @@ -45,16 +45,20 @@ USE_SDL= sdl2 ttf2 USE_XORG= x11 xext xi xinerama xrender MAKEFILE= makefile -MAKE_ARGS= TARGETOS=freebsd \ - VERBOSE=1 -MAKE_ENV= LDOPTS="${LDFLAGS}" \ - NO_USE_PORTAUDIO=1 \ +MAKE_ARGS= SILENT= \ + verbose=yes +MAKE_ENV= NO_USE_PORTAUDIO=1 \ NO_USE_PULSEAUDIO=1 \ NOWERROR=1 \ - OPT_FLAGS="${CXXFLAGS}" \ + OVERRIDE_AR="llvm-ar${LLVM_VERSION}" \ + OVERRIDE_CC="clang${LLVM_VERSION}" \ + OVERRIDE_CXX="clang++${LLVM_VERSION}" \ + OVERRIDE_LD="lld${LLVM_VERSION}" \ PRECOMPILE=0 \ PYTHON_EXECUTABLE="${PYTHON_CMD}" \ + TARGETOS=freebsd \ USE_PCAP=1 \ + USE_SYSTEM_LIB_ASIO=1 \ USE_SYSTEM_LIB_EXPAT=1 \ USE_SYSTEM_LIB_FLAC=1 \ USE_SYSTEM_LIB_GLM=1 \ @@ -64,69 +68,92 @@ MAKE_ENV= LDOPTS="${LDFLAGS}" \ USE_SYSTEM_LIB_RAPIDJSON=1 \ USE_SYSTEM_LIB_SQLITE3=1 \ USE_SYSTEM_LIB_UTF8PROC=1 \ - USE_SYSTEM_LIB_UV=1 \ USE_SYSTEM_LIB_ZLIB=1 \ USE_TAPTUN=1 CFLAGS_aarch64= -march=armv8-a+crc+crypto +EXTRACT_AFTER_ARGS= ${_DIST_EXCLUDES:S,^,--exclude ,} + SUB_FILES= mame.ini pkg-message plugin.ini ui.ini PORTDOCS= html/* -OPTIONS_DEFINE= DEBUG DOCS NLS QTDEBUGGER TOOLS -OPTIONS_SUB= yes - -DEBUG_DESC= Build with debug profiling and symbols -DOCS_DESC= Install extensive online MAME documentation -NLS_DESC= Install language translations for use in the GUI -QTDEBUGGER_DESC= Build with Qt interactive low-level machine debugger -TOOLS_DESC= Install tools for machine archiving and development - -DEBUG_MAKE_ENV= DEBUG=1 \ - OPTIMIZE=0 \ - PROFILER=1 \ - SYMBOLS=1 -DEBUG_MAKE_ENV_OFF= OPTIMIZE=2 \ - STRIP_SYMBOLS=1 +OPTIONS_DEFINE= DOCS NLS OPENMP QTDEBUGGER SSE2 TOOLS +OPTIONS_RADIO= BUILDTYPE +OPTIONS_RADIO_BUILDTYPE= DEBUG SIZE_OPTIMIZED_CFLAGS \ + SPEED_OPTIMIZED_CFLAGS +.if !exists(/usr/include/omp.h) +OPTIONS_EXCLUDE= OPENMP +.endif +OPTIONS_SUB= yes + +BUILDTYPE_DESC= Application production type +DEBUG_DESC= Produce profiling data, and symbols for debugging +DOCS_DESC= Install extensive online MAME documentation +NLS_DESC= Install language translations for use in the GUI +QTDEBUGGER_DESC= Build with Qt interactive low-level machine debugger +SIZE_OPTIMIZED_CFLAGS_DESC= Optimize for smaller binaries (-Os) +SPEED_OPTIMIZED_CFLAGS_DESC= Optimize for faster binaries (-O3) +SSE2_DESC= Build with Streaming SIMD Extensions 2 +TOOLS_DESC= Additional tools for archiving, development, and multimedia + +DEBUG_MAKE_ENV= DEBUG=1 \ + OPTIMIZE=g \ + STRIP_SYMBOLS=0 +DEBUG_MAKE_ENV_OFF= STRIP_SYMBOLS=1 # Attempt to avoid address space exhaustion during linking, specifically # on armv7, and possibly other architectures: -DEBUG_LDFLAGS_OFF= -s -NLS_USES= gettext-runtime -QTDEBUGGER_USES= qt:5 -QTDEBUGGER_USE= QT=core,gui,widgets,buildtools:build,qmake:build -QTDEBUGGER_MAKE_ENV= USE_QTDEBUG=1 -QTDEBUGGER_MAKE_ENV_OFF= USE_QTDEBUG=0 -TOOLS_MAKE_ENV= TOOLS=1 -TOOLS_MAKE_ENV_OFF= TOOLS=0 - -_GENIE= ${WRKSRC}/3rdparty/genie +DEBUG_LDFLAGS_OFF= -s +NLS_USES= gettext-runtime +OPENMP_MAKE_ENV= OPENMP=1 +OPENMP_MAKE_ENV_OFF= OPENMP=0 +QTDEBUGGER_USES= qt:6 +QTDEBUGGER_USE= QT=base,tools:build +QTDEBUGGER_MAKE_ENV= QT_HOME="${PREFIX}" \ + USE_QTDEBUG=1 +QTDEBUGGER_MAKE_ENV_OFF= USE_QTDEBUG=0 +SIZE_OPTIMIZED_CFLAGS_MAKE_ENV= OPTIMIZE=s +SIZE_OPTIMIZED_CFLAGS_CXXFLAGS= -Os +SPEED_OPTIMIZED_CFLAGS_MAKE_ENV= OPTIMIZE=3 +SPEED_OPTIMIZED_CFLAGS_CXXFLAGS= -O3 +SSE2_MAKE_ENV= SSE2=1 +SSE2_MAKE_ENV_OFF= SSE2=0 +TOOLS_MAKE_ENV= TOOLS=1 +TOOLS_MAKE_ENV_OFF= TOOLS=0 + +# man page for command line utility that is not built at all: +_DIST_EXCLUDES= docs/man/ldplayer.1 +# Libraries, and shaders for proprietary platforms: +_DIST_EXCLUDES+= "bgfx/shaders/dx*" \ + 3rdparty/bgfx/examples/runtime/shaders/dx11 \ + 3rdparty/bgfx/examples/runtime/shaders/metal \ + 3rdparty/dxsdk bgfx/shaders/metal +# Headers that mask system abstractions required to build MAME: +_DIST_EXCLUDES+= 3rdparty/bx/include/compat/freebsd/dirent.h \ + 3rdparty/bx/include/compat/freebsd/signal.h +# Make use of Ports instead of bundled libraries: +_DIST_EXCLUDES+= 3rdparty/expat 3rdparty/glm 3rdparty/libflac \ + 3rdparty/libjpeg 3rdparty/portmidi 3rdparty/pugixml \ + 3rdparty/rapidjson 3rdparty/sqlite3 \ + 3rdparty/utf8proc 3rdparty/zlib +# Bundled libraries not used at all: +_DIST_EXCLUDES+= 3rdparty/genie 3rdparty/portaudio 3rdparty/tap-windows6 +# pre-built GENie binaries for other platforms: +_DIST_EXCLUDES+= 3rdparty/bx/tools/bin .include <bsd.port.options.mk> -.if ${PORT_OPTIONS:MDEBUG} -WITH_DEBUG= yes +.if ${ARCH:Maarch64} || ${ARCH:Mamd64} || ${ARCH:Mpowerpc64*} +MAKE_ENV+= PTR64=1 .endif -.if ${OPSYS} == FreeBSD && ${OSVERSION} > 1400000 -.if ${ARCH:Mpowerpc*} -USES+= llvm:min=16,build -.else -USES+= llvm:15,build -.endif -MAKE_ENV+= OVERRIDE_AR="llvm-ar${LLVM_VERSION}" \ - OVERRIDE_CC="clang${LLVM_VERSION}" \ - OVERRIDE_CXX="clang++${LLVM_VERSION}" \ - OVERRIDE_LD="lld${LLVM_VERSION}" +# Compiling with -pg (PROFILE) causes the linker to run out of memory on i386, +# build with less profiling data: +.if ${ARCH:Mi386} +DEBUG_MAKE_ENV+= PROFILER=1 .else -MAKE_ENV+= OVERRIDE_AR="${AR}" \ - OVERRIDE_CC="${CC}" \ - OVERRIDE_CXX="${CXX}" \ - OVERRIDE_LD="${LD}" -.endif - -.if ${ARCH:Maarch64} || ${ARCH:Mamd64} || ${ARCH:Mpowerpc64*} -MAKE_ARGS+= PTR64=1 +DEBUG_MAKE_ENV+= PROFILE=1 .endif post-extract: @@ -134,27 +161,30 @@ post-extract: ${WRKSRC}/src/lib/util/localpng.h post-patch: -# Prefer some system headers over bundled. - ${RM} ${WRKSRC}/3rdparty/bx/include/compat/freebsd/dirent.h - ${RM} ${WRKSRC}/3rdparty/bx/include/compat/freebsd/signal.h -# Accommodate GENie conception of BSD. - ${MV} ${_GENIE}/build/gmake.freebsd \ - ${_GENIE}/build/gmake.bsd # Patch build to use bundled PNG. ${GREP} -rl '"png.h"' ${WRKSRC}/src | \ ${XARGS} ${REINPLACE_CMD} -e 's|"png.h"|"localpng.h"|' ${REINPLACE_CMD} -e 's|"util/png.h"|"util/localpng.h"|' \ ${WRKSRC}/src/frontend/mame/ui/icorender.cpp +# Patch build to use GENie from Ports: + ${REINPLACE_CMD} -e 's|%%GENIE_PREFIX%%|${PREFIX}/bin/|' \ + ${WRKSRC}/makefile \ + ${WRKSRC}/3rdparty/bx/makefile do-build-DOCS-on: (cd ${WRKSRC}/docs && \ ${SETENV} ${MAKE_ENV} ${MAKE_CMD} ${MAKE_ARGS} html SPHINXBUILD=sphinx-build-${PYTHON_VER}) - ${RM} ${WRKSRC}/docs/build/html/.buildinfo post-build: (cd ${WRKSRC}/docs && \ ${SETENV} ${MAKE_ENV} ${MAKE_CMD} ${MAKE_ARGS} man SPHINXBUILD=sphinx-build-${PYTHON_VER}) - ${FIND} ${WRKSRC}/language -type f -name "*.po" -delete + +post-build-TOOLS-on: +.for EXTRA_TOOL in nl virtual + (cd ${WRKSRC} && \ + ${SETENV} ${MAKE_ENV} ${MAKE_CMD} ${MAKE_ARGS} SUBTARGET=${EXTRA_TOOL} \ + TOOLS=0) +.endfor do-install: .for DATA in artwork bgfx ctrlr ini hash plugins samples @@ -171,38 +201,27 @@ do-install: ${INSTALL_DATA} ${WRKSRC}/keymaps/km_${KEYMAP}_LINUX.map \ ${STAGEDIR}${DATADIR}/keymaps/km_${KEYMAP}.map .endfor - ${INSTALL_MAN} ${WRKSRC}/docs/build/man/MAME.1 \ + ${INSTALL_MAN} ${WRKSRC}/docs/build/man/${PORTNAME:tu}.1 \ ${STAGEDIR}${PREFIX}/share/man/man1 - ${INSTALL_MAN} ${WRKSRC}/docs/man/mame.6 \ + ${INSTALL_MAN} ${WRKSRC}/docs/man/${PORTNAME}.6 \ ${STAGEDIR}${PREFIX}/share/man/man6 - -do-install-DEBUG-on: - ${INSTALL_PROGRAM} ${WRKSRC}/mamed \ - ${STAGEDIR}${PREFIX}/bin/mame - -do-install-DEBUG-off: - ${INSTALL_PROGRAM} ${WRKSRC}/mame \ - ${STAGEDIR}${PREFIX}/bin/ + ${INSTALL_PROGRAM} ${WRKSRC}/${PORTNAME} \ + ${STAGEDIR}${PREFIX}/bin/${PORTNAME} do-install-DOCS-on: ${MKDIR} ${STAGEDIR}${DOCSDIR} (cd ${WRKSRC}/docs/build && \ - ${COPYTREE_SHARE} html ${STAGEDIR}${DOCSDIR}) + ${COPYTREE_SHARE} html ${STAGEDIR}${DOCSDIR} "! -name .buildinfo -not -regex ^./_sources.*") do-install-NLS-on: (cd ${WRKSRC} && \ - ${COPYTREE_SHARE} language ${STAGEDIR}${DATADIR}) + ${COPYTREE_SHARE} language ${STAGEDIR}${DATADIR} "! -name *.po") do-install-TOOLS-on: -.for PROGRAM in castool chdman floptool imgtool jedutil ldresample ldverify \ - nltool nlwav pngcmp regrep romcmp split srcclean testkeys unidasm - ${INSTALL_PROGRAM} ${WRKSRC}/${PROGRAM} \ - ${STAGEDIR}${PREFIX}/bin -.endfor -.for MANUAL in castool chdman floptool imgtool jedutil ldplayer ldresample \ - ldverify romcmp - ${INSTALL_MAN} ${WRKSRC}/docs/man/${MANUAL}.1 \ + ${FIND} ${WRKSRC} -depth 1 -type f -and ! -type d -and ! -name ${PORTNAME} \ + -perm -o=+x -exec ${INSTALL_PROGRAM} {} ${STAGEDIR}${PREFIX}/bin/ \ + \; + ${INSTALL_MAN} ${WRKSRC}/docs/man/*.1 \ ${STAGEDIR}${PREFIX}/share/man/man1 -.endfor .include <bsd.port.mk> |