# Copyright 2024 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 inherit cmake-multilib flag-o-matic DESCRIPTION="Simple Direct Media Layer" HOMEPAGE="https://www.libsdl.org/" SRC_URI="https://github.com/libsdl-org/SDL/archive/refs/tags/preview-${PV}.tar.gz -> ${P}.tar.gz" S="${WORKDIR}/SDL-preview-${PV}" LICENSE="ZLIB" SLOT="0" KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~x86" IUSE="X alsa +sound cpu_flags_x86_avx cpu_flags_x86_avx2 cpu_flags_x86_avx512f cpu_flags_x86_mmx cpu_flags_x86_sse cpu_flags_x86_sse2 \ cpu_flags_x86_sse3 cpu_flags_x86_sse4_1 cpu_flags_x86_sse4_2 camera custom-cflags dbus debug doc gles1 gles2 +haptic ibus \ jack +joystick kms opengl pipewire pulseaudio sndio static-libs \ test udev +video vulkan wayland xscreensaver" RESTRICT="!test? ( test )" REQUIRED_USE=" alsa? ( sound ) haptic? ( joystick ) ibus? ( dbus ) jack? ( sound ) gles1? ( video ) gles2? ( video ) opengl? ( video ) pipewire? ( sound ) pulseaudio? ( sound ) sndio? ( sound ) vulkan? ( video ) wayland? ( gles2 ) xscreensaver? ( X ) " COMMON_DEPEND=" X? ( >=x11-libs/libX11-1.6.2[${MULTILIB_USEDEP}] >=x11-libs/libXcursor-1.1.14[${MULTILIB_USEDEP}] >=x11-libs/libXext-1.3.2[${MULTILIB_USEDEP}] >=x11-libs/libXfixes-6.0.0[${MULTILIB_USEDEP}] >=x11-libs/libXi-1.7.2[${MULTILIB_USEDEP}] >=x11-libs/libXrandr-1.4.2[${MULTILIB_USEDEP}] xscreensaver? ( >=x11-libs/libXScrnSaver-1.2.2-r1[${MULTILIB_USEDEP}] ) ) alsa? ( >=media-libs/alsa-lib-1.0.27.2[${MULTILIB_USEDEP}] ) dbus? ( >=sys-apps/dbus-1.6.18-r1[${MULTILIB_USEDEP}] ) ibus? ( app-i18n/ibus ) jack? ( virtual/jack[${MULTILIB_USEDEP}] ) kms? ( >=x11-libs/libdrm-2.4.82[${MULTILIB_USEDEP}] >=media-libs/mesa-9.0.0[${MULTILIB_USEDEP}] ) opengl? ( >=virtual/opengl-7.0-r1[${MULTILIB_USEDEP}] >=virtual/glu-9.0-r1[${MULTILIB_USEDEP}] ) pipewire? ( media-video/pipewire:=[${MULTILIB_USEDEP}] ) pulseaudio? ( media-libs/libpulse[${MULTILIB_USEDEP}] ) sndio? ( media-sound/sndio:=[${MULTILIB_USEDEP}] ) udev? ( >=virtual/libudev-208:=[${MULTILIB_USEDEP}] ) virtual/libiconv[${MULTILIB_USEDEP}] wayland? ( >=dev-libs/wayland-1.20[${MULTILIB_USEDEP}] gui-libs/libdecor[${MULTILIB_USEDEP}] >=media-libs/mesa-9.1.6[${MULTILIB_USEDEP},wayland] >=x11-libs/libxkbcommon-0.2.0[${MULTILIB_USEDEP}] ) " RDEPEND=" ${COMMON_DEPEND} opengl? ( media-libs/mesa[${MULTILIB_USEDEP},opengl(+)] ) vulkan? ( media-libs/mesa[${MULTILIB_USEDEP},vulkan(+)] vulkan? ( media-libs/vulkan-loader[${MULTILIB_USEDEP}] ) ) " DEPEND=" ${COMMON_DEPEND} gles1? ( media-libs/libglvnd ) gles2? ( media-libs/libglvnd ) ibus? ( dev-libs/glib:2 ) test? ( x11-libs/libX11[${MULTILIB_USEDEP}] ) vulkan? ( dev-util/vulkan-headers ) X? ( x11-base/xorg-proto ) " BDEPEND=" virtual/pkgconfig doc? ( app-text/doxygen media-gfx/graphviz ) wayland? ( >=dev-util/wayland-scanner-1.20 ) " src_prepare() { cmake_src_prepare # Unbundle some headers. rm -r src/video/khronos || die ln -s "${ESYSROOT}/usr/include" src/video/khronos || die } src_configure() { use custom-cflags || strip-flags local mycmakeargs=( -DSDL_ALSA=$(usex alsa) -DSDL_ALSA_SHARED=OFF -DSDL_ASAN=$(usex debug) -DSDL_ASSEMBLY=ON -DSDL_ASSERTIONS=$(usex debug enabled disabled) -DSDL_AUDIO=$(usex sound) -DSDL_AVX=$(usex cpu_flags_x86_avx) -DSDL_AVX2=$(usex cpu_flags_x86_avx2) -DSDL_AVX512F=$(usex cpu_flags_x86_avx512f) -DSDL_CAMERA=$(usex camera) -DSDL_CCACHE=OFF -DSDL_DBUS=$(usex dbus) -DSDL_DIALOG=ON -DSDL_DISABLE_INSTALL=OFF -DSDL_DISABLE_INSTALL_CPACK=OFF -DSDL_DISABLE_INSTALL_DOCS=$(usex doc OFF ON) -DSDL_DISKAUDIO=$(usex sound) -DSDL_DUMMYAUDIO=$(use sound) -DSDL_DUMMYCAMERA=$(use camera) -DSDL_DUMMYVIDEO=$(use video) -DSDL_EXAMPLES=$(usex doc) -DSDL_EXAMPLES_LINK_SHARED=OFF -DSDL_GCC_ATOMICS=ON -DSDL_GPU=$(usex video) -DSDL_HAPTIC=$(usex haptic) -DSDL_IBUS=$(usex ibus) -DSDL_JACK=$(usex jack) -DSDL_JACK_SHARED=OFF -DSDL_JOYSTICK=$(usex joystick) -DSDL_HIDAPI=ON -DSDL_KMSDRM=$(usex kms) -DSDL_KMSDRM_SHARED=OFF -DSDL_LIBC=ON -DSDL_LIBICONV=ON -DSDL_SYSTEM_ICONV=ON -DSDL_LIBUDEV=$(usex udev) -DSDL_MMX=$(usex cpu_flags_x86_mmx) -DSDL_OPENGL=$(usex opengl) -DSDL_OPENGLES=$(usex gles1 || usex gles2 && echo ON || echo OFF) -DSDL_PIPEWIRE=$(usex pipewire) -DSDL_PIPEWIRE_SHARED=OFF -DSDL_PULSEAUDIO=$(usex pulseaudio) -DSDL_PULSEAUDIO_SHARED=OFF -DSDL_RENDER=$(use video) -DSDL_RENDER_GPU=$(use video) -DSDL_RENDER_VULKAN=$(usex vulkan) -DSDL_RPATH=OFF -DSDL_RPI=OFF -DSDL_SNDIO=$(usex sndio) -DSDL_SNDIO_SHARED=OFF -DSDL_SSE=$(usex cpu_flags_x86_sse) -DSDL_SSE2=$(usex cpu_flags_x86_sse2) -DSDL_SSE3=$(usex cpu_flags_x86_sse3) -DSDL_SSE4_1=$(usex cpu_flags_x86_sse4_1) -DSDL_SSE4_2=$(usex cpu_flags_x86_sse4_2) -DSDL_STATIC=$(usex static-libs) -DSDL_TESTS=$(usex test) -DSDL_TESTS_LINK_SHARED=OFF -DSDL_TEST_LIBRARY=$(usex test) -DSDL_VIDEO=$(usex video) -DSDL_VIRTUAL_JOYSTICK=$(usex joystick) -DSDL_VULKAN=$(usex vulkan) -DSDL_WAYLAND=$(usex wayland) -DSDL_WAYLAND_LIBDECOR=$(usex wayland) -DSDL_WAYLAND_LIBDECOR_SHARED=OFF -DSDL_WAYLAND_SHARED=OFF -DSDL_WERROR=$(usex debug) -DSDL_X11=$(usex X) -DSDL_X11_SHARED=OFF -DSDL_X11_XSCRNSAVER=$(usex xscreensaver) ) cmake-multilib_src_configure } src_compile() { cmake-multilib_src_compile if use doc; then cd docs || die doxygen || die fi } src_test() { unset SDL_GAMECONTROLLERCONFIG SDL_GAMECONTROLLER_USE_BUTTON_LABELS cmake-multilib_src_test } multilib_src_install_all() { rm -r "${ED}"/usr/share/licenses/ || die dodoc {BUGS,README-SDL,WhatsNew}.txt CREDITS.md README.md docs/README*.md use doc && dodoc -r docs/output/html/ }