distribution/packages/emulators/standalone/retroarch/package.mk

166 lines
5.7 KiB
Makefile
Raw Normal View History

2022-02-05 14:23:32 +00:00
# SPDX-License-Identifier: GPL-2.0-or-later
# Copyright (C) 2021-present 351ELEC (https://github.com/351ELEC)
# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS)
2022-02-05 14:23:32 +00:00
PKG_NAME="retroarch"
PKG_VERSION="6c2cc456284fcfa6fa5f94664950926c020d2f7b" # v1.16.0.3
2022-02-05 14:23:32 +00:00
PKG_SITE="https://github.com/libretro/RetroArch"
PKG_URL="${PKG_SITE}.git"
2022-02-05 14:23:32 +00:00
PKG_LICENSE="GPLv3"
2023-10-11 19:58:23 +00:00
PKG_DEPENDS_TARGET="toolchain SDL2 alsa-lib libass openssl freetype zlib retroarch-assets core-info ffmpeg libass joyutils empty nss-mdns openal-soft libogg libvorbisidec libvorbis libvpx libpng libdrm pulseaudio miniupnpc flac"
2022-02-05 14:23:32 +00:00
PKG_LONGDESC="Reference frontend for the libretro API."
GET_HANDLER_SUPPORT="git"
2023-10-11 19:58:23 +00:00
if [ "${PIPEWIRE_SUPPORT}" = "yes" ]; then
PKG_DEPENDS_TARGET+=" pipewire"
fi
PKG_PATCH_DIRS+=" ${DEVICE}"
2022-02-05 14:23:32 +00:00
PKG_CONFIGURE_OPTS_TARGET=" --disable-qt \
--enable-alsa \
--enable-udev \
--disable-opengl1 \
--disable-x11 \
--enable-zlib \
--enable-freetype \
--disable-discord \
--disable-vg \
--disable-sdl \
2024-01-10 15:58:34 +00:00
--enable-sdl2 \
2024-01-10 15:28:18 +00:00
--enable-kms \
--enable-ffmpeg"
2022-07-03 14:45:21 +00:00
case ${PROJECT} in
Rockchip)
PKG_DEPENDS_TARGET+=" librga"
;;
esac
case ${DEVICE} in
RK3566-X55)
PKG_DEPENDS_TARGET+=" libgo2"
PKG_CONFIGURE_OPTS_TARGET+=" --enable-odroidgo2"
;;
*)
PKG_CONFIGURE_OPTS_TARGET+=" --disable-odroidgo2"
;;
esac
case ${ARCH} in
arm)
PKG_CONFIGURE_OPTS_TARGET+=" --enable-neon"
;;
aarch64)
PKG_CONFIGURE_OPTS_TARGET+=" --disable-neon"
;;
esac
if [ "${DISPLAYSERVER}" = "wl" ]; then
PKG_DEPENDS_TARGET+=" wayland ${WINDOWMANAGER}"
PKG_CONFIGURE_OPTS_TARGET+=" --enable-wayland"
2024-01-10 15:28:18 +00:00
else
PKG_CONFIGURE_OPTS_TARGET+=" --disable-wayland"
fi
2022-02-05 14:23:32 +00:00
if [ "${OPENGLES_SUPPORT}" = "yes" ]; then
PKG_DEPENDS_TARGET+=" ${OPENGLES}"
PKG_CONFIGURE_OPTS_TARGET+=" --enable-opengles --enable-opengles3"
case ${DEVICE} in
RK33*|RK3588)
PKG_CONFIGURE_OPTS_TARGET+=" --enable-opengles3_1"
;;
S922X)
PKG_CONFIGURE_OPTS_TARGET+=" --enable-opengles3_1 --enable-opengles3_2"
;;
AMD64)
PKG_CONFIGURE_OPTS_TARGET+=" --disable-opengles --disable-opengles3 --disable-opengles3_1 --disable-opengles3_2"
;;
esac
else
PKG_CONFIGURE_OPTS_TARGET+=" --disable-opengles --disable-opengles3 --disable-opengles3_1 --disable-opengles3_2"
fi
2024-01-10 15:28:18 +00:00
if [[ "${OPENGL_SUPPORT}" = "yes" ]] && [[ ! "${DEVICE}" = "S922X" ]]; then
PKG_DEPENDS_TARGET+=" ${OPENGL} glu libglvnd"
PKG_CONFIGURE_OPTS_TARGET+=" --enable-opengl"
else
PKG_CONFIGURE_OPTS_TARGET+=" --disable-opengl"
fi
2022-08-30 00:38:12 +00:00
if [ "${VULKAN_SUPPORT}" = "yes" ]
then
PKG_DEPENDS_TARGET+=" vulkan-loader vulkan-headers"
PKG_CONFIGURE_OPTS_TARGET+=" --enable-vulkan --enable-vulkan_display"
2024-01-10 15:28:18 +00:00
else
PKG_CONFIGURE_OPTS_TARGET+=" --disable-vulkan"
fi
2022-08-30 00:32:44 +00:00
pre_configure_target() {
CFLAGS+=" -DUDEV_TOUCH_SUPPORT"
CXXFLAGS+=" -DUDEV_TOUCH_SUPPORT"
TARGET_CONFIGURE_OPTS=""
2022-08-30 00:32:44 +00:00
cd ${PKG_BUILD}
2022-02-05 14:23:32 +00:00
}
make_target() {
make HAVE_UPDATE_ASSETS=0 HAVE_LIBRETRODB=1 HAVE_BLUETOOTH=0 HAVE_NETWORKING=1 HAVE_ZARCH=1 HAVE_QT=0 HAVE_LANGEXTRA=1
2022-02-05 14:23:32 +00:00
[ $? -eq 0 ] && echo "(retroarch ok)" || { echo "(retroarch failed)" ; exit 1 ; }
2023-03-01 23:49:56 +00:00
make -C gfx/video_filters compiler=$CC extra_flags="$CFLAGS"
2022-02-05 14:23:32 +00:00
[ $? -eq 0 ] && echo "(video filters ok)" || { echo "(video filters failed)" ; exit 1 ; }
2023-03-01 23:49:56 +00:00
make -C libretro-common/audio/dsp_filters compiler=$CC extra_flags="$CFLAGS"
2022-02-05 14:23:32 +00:00
[ $? -eq 0 ] && echo "(audio filters ok)" || { echo "(audio filters failed)" ; exit 1 ; }
}
makeinstall_target() {
mkdir -p ${INSTALL}/usr/bin
cp ${PKG_BUILD}/retroarch ${INSTALL}/usr/bin
mkdir -p ${INSTALL}/usr/share/retroarch/filters
case ${ARCH} in
aarch64)
2023-04-04 19:19:27 +00:00
if [ -f ${ROOT}/build.${DISTRO}-${DEVICE}.arm/retroarch-*/.install_pkg/usr/bin/retroarch ]; then
cp -vP ${ROOT}/build.${DISTRO}-${DEVICE}.arm/retroarch-*/.install_pkg/usr/bin/retroarch ${INSTALL}/usr/bin/retroarch32
mkdir -p ${INSTALL}/usr/share/retroarch/filters/32bit/
cp -rvP ${ROOT}/build.${DISTRO}-${DEVICE}.arm/retroarch-*/.install_pkg/usr/share/retroarch/filters/64bit/* ${INSTALL}/usr/share/retroarch/filters/32bit/
fi
;;
esac
mkdir -p ${INSTALL}/etc
cp ${PKG_BUILD}/retroarch.cfg ${INSTALL}/etc
2022-02-05 14:23:32 +00:00
mkdir -p ${INSTALL}/usr/share/retroarch/filters/64bit/video
cp ${PKG_BUILD}/gfx/video_filters/*.so ${INSTALL}/usr/share/retroarch/filters/64bit/video
cp ${PKG_BUILD}/gfx/video_filters/*.filt ${INSTALL}/usr/share/retroarch/filters/64bit/video
2022-02-05 14:23:32 +00:00
mkdir -p ${INSTALL}/usr/share/retroarch/filters/64bit/audio
cp ${PKG_BUILD}/libretro-common/audio/dsp_filters/*.so ${INSTALL}/usr/share/retroarch/filters/64bit/audio
cp ${PKG_BUILD}/libretro-common/audio/dsp_filters/*.dsp ${INSTALL}/usr/share/retroarch/filters/64bit/audio
2022-02-05 14:23:32 +00:00
# General configuration
mkdir -p ${INSTALL}/usr/config/retroarch/
if [ -d "${PKG_DIR}/sources/${DEVICE}" ]; then
cp -rf ${PKG_DIR}/sources/${DEVICE}/* ${INSTALL}/usr/config/retroarch/
2022-02-05 14:23:32 +00:00
else
echo "Configure retroarch for ${DEVICE}"
exit 1
2022-02-05 14:23:32 +00:00
fi
# Make sure the shader directories exist for overlayfs.
for dir in common-shaders glsl-shaders slang-shaders
do
mkdir -p ${INSTALL}/usr/share/${dir}
touch ${INSTALL}/usr/share/${dir}/.overlay
done
2022-02-05 14:23:32 +00:00
}
post_install() {
enable_service tmp-cores.mount
enable_service tmp-database.mount
enable_service tmp-assets.mount
enable_service tmp-shaders.mount
enable_service tmp-overlays.mount
2022-02-05 14:23:32 +00:00
}