kumquat-buildroot/package/sdl2/sdl2.mk
Thomas Petazzoni 8ab036d26f package/sdl2: rework KMS/DRM video driver dependencies
The KMS/DRM video driver of SDL2 can currently only be enabled when
mesa3d is the OpenGL provider, as the option has a dependency on
BR2_PACKAGE_MESA3D_GBM. Now that we have a libgbm virtual package and
BR2_PACKAGE_HAS_LIBGBM, we can do better.

However, this has uncovered a number of additional related issues that
are resolved at the same time. Here are some details:

 * the 'depends on BR2_PACKAGE_LIBDRM' is changed to a select, as we
   normally do for library dependencies. Due to this, we inherit a
   BR2_TOOLCHAIN_HAS_THREADS dependency.

 * the 'depends on BR2_PACKAGE_MESA3D_GBM' is changed to 'depends on
   BR2_PACKAGE_HAS_LIBGBM', and the 'mesa3d' dependency is changed to
   'libgbm'.

 * the KMS/DRM video driver in SDL2 needs EGL (hence the additional
   'depends on BR2_PACKAGE_HAS_LIBEGL' and the libegbl dependency is
   added in the .mk file). But in turn, EGL support is only checked
   when either OpenGL or OpenGLES support is enabled in SDL2, which is
   why we add logic to select the appropriate options.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
[yann.morin.1998@free.fr:
  - fix dependency on comment (invert the symbol dependencies)
  - split comment
]
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
2022-08-22 16:38:11 +02:00

185 lines
4.8 KiB
Makefile

################################################################################
#
# sdl2
#
################################################################################
SDL2_VERSION = 2.0.22
SDL2_SOURCE = SDL2-$(SDL2_VERSION).tar.gz
SDL2_SITE = http://www.libsdl.org/release
SDL2_LICENSE = Zlib
SDL2_LICENSE_FILES = LICENSE.txt
SDL2_CPE_ID_VENDOR = libsdl
SDL2_CPE_ID_PRODUCT = simple_directmedia_layer
SDL2_INSTALL_STAGING = YES
SDL2_CONFIG_SCRIPTS = sdl2-config
SDL2_CONF_OPTS += \
--disable-rpath \
--disable-arts \
--disable-esd \
--disable-dbus \
--disable-pulseaudio \
--disable-video-vivante \
--disable-video-cocoa \
--disable-video-metal \
--disable-video-wayland \
--disable-video-dummy \
--disable-video-offscreen \
--disable-video-vulkan \
--disable-ime \
--disable-ibus \
--disable-fcitx \
--disable-joystick-mfi \
--disable-directx \
--disable-xinput \
--disable-wasapi \
--disable-hidapi-joystick \
--disable-hidapi-libusb \
--disable-joystick-virtual \
--disable-render-d3d
# We are using autotools build system for sdl2, so the sdl2-config.cmake
# include path are not resolved like for sdl2-config script.
# Change the absolute /usr path to resolve relatively to the sdl2-config.cmake location.
# https://bugzilla.libsdl.org/show_bug.cgi?id=4597
define SDL2_FIX_SDL2_CONFIG_CMAKE
$(SED) '2iget_filename_component(PACKAGE_PREFIX_DIR "$${CMAKE_CURRENT_LIST_DIR}/../../../" ABSOLUTE)\n' \
$(STAGING_DIR)/usr/lib/cmake/SDL2/sdl2-config.cmake
$(SED) 's%"/usr"%$${PACKAGE_PREFIX_DIR}%' \
$(STAGING_DIR)/usr/lib/cmake/SDL2/sdl2-config.cmake
endef
SDL2_POST_INSTALL_STAGING_HOOKS += SDL2_FIX_SDL2_CONFIG_CMAKE
# We must enable static build to get compilation successful.
SDL2_CONF_OPTS += --enable-static
ifeq ($(BR2_PACKAGE_HAS_UDEV),y)
SDL2_DEPENDENCIES += udev
SDL2_CONF_OPTS += --enable-libudev
else
SDL2_CONF_OPTS += --disable-libudev
endif
ifeq ($(BR2_X86_CPU_HAS_SSE),y)
SDL2_CONF_OPTS += --enable-sse
else
SDL2_CONF_OPTS += --disable-sse
endif
ifeq ($(BR2_X86_CPU_HAS_3DNOW),y)
SDL2_CONF_OPTS += --enable-3dnow
else
SDL2_CONF_OPTS += --disable-3dnow
endif
ifeq ($(BR2_PACKAGE_SDL2_DIRECTFB),y)
SDL2_DEPENDENCIES += directfb
SDL2_CONF_OPTS += --enable-video-directfb
SDL2_CONF_ENV = ac_cv_path_DIRECTFBCONFIG=$(STAGING_DIR)/usr/bin/directfb-config
else
SDL2_CONF_OPTS += --disable-video-directfb
endif
ifeq ($(BR2_PACKAGE_SDL2_OPENGLES)$(BR2_PACKAGE_RPI_USERLAND),yy)
SDL2_DEPENDENCIES += rpi-userland
SDL2_CONF_OPTS += --enable-video-rpi
else
SDL2_CONF_OPTS += --disable-video-rpi
endif
# x-includes and x-libraries must be set for cross-compiling
# By default x_includes and x_libraries contains unsafe paths.
# (/usr/X11R6/include and /usr/X11R6/lib)
ifeq ($(BR2_PACKAGE_SDL2_X11),y)
SDL2_DEPENDENCIES += xlib_libX11 xlib_libXext
# X11/extensions/shape.h is provided by libXext.
SDL2_CONF_OPTS += --enable-video-x11 \
--with-x=$(STAGING_DIR) \
--x-includes=$(STAGING_DIR)/usr/include \
--x-libraries=$(STAGING_DIR)/usr/lib \
--enable-video-x11-xshape
ifeq ($(BR2_PACKAGE_XLIB_LIBXCURSOR),y)
SDL2_DEPENDENCIES += xlib_libXcursor
SDL2_CONF_OPTS += --enable-video-x11-xcursor
else
SDL2_CONF_OPTS += --disable-video-x11-xcursor
endif
ifeq ($(BR2_PACKAGE_XLIB_LIBXINERAMA),y)
SDL2_DEPENDENCIES += xlib_libXinerama
SDL2_CONF_OPTS += --enable-video-x11-xinerama
else
SDL2_CONF_OPTS += --disable-video-x11-xinerama
endif
ifeq ($(BR2_PACKAGE_XLIB_LIBXI),y)
SDL2_DEPENDENCIES += xlib_libXi
SDL2_CONF_OPTS += --enable-video-x11-xinput
else
SDL2_CONF_OPTS += --disable-video-x11-xinput
endif
ifeq ($(BR2_PACKAGE_XLIB_LIBXRANDR),y)
SDL2_DEPENDENCIES += xlib_libXrandr
SDL2_CONF_OPTS += --enable-video-x11-xrandr
else
SDL2_CONF_OPTS += --disable-video-x11-xrandr
endif
ifeq ($(BR2_PACKAGE_XLIB_LIBXSCRNSAVER),y)
SDL2_DEPENDENCIES += xlib_libXScrnSaver
SDL2_CONF_OPTS += --enable-video-x11-scrnsaver
else
SDL2_CONF_OPTS += --disable-video-x11-scrnsaver
endif
ifeq ($(BR2_PACKAGE_XLIB_LIBXXF86VM),y)
SDL2_DEPENDENCIES += xlib_libXxf86vm
SDL2_CONF_OPTS += --enable-video-x11-vm
else
SDL2_CONF_OPTS += --disable-video-x11-vm
endif
else
SDL2_CONF_OPTS += --disable-video-x11 --without-x
endif
ifeq ($(BR2_PACKAGE_SDL2_OPENGL),y)
SDL2_CONF_OPTS += --enable-video-opengl
SDL2_DEPENDENCIES += libgl
else
SDL2_CONF_OPTS += --disable-video-opengl
endif
ifeq ($(BR2_PACKAGE_SDL2_OPENGLES),y)
SDL2_CONF_OPTS += \
--enable-video-opengles \
--enable-video-opengles1 \
--enable-video-opengles2
SDL2_DEPENDENCIES += libgles
else
SDL2_CONF_OPTS += \
--disable-video-opengles \
--disable-video-opengles1 \
--disable-video-opengles2
endif
ifeq ($(BR2_PACKAGE_ALSA_LIB),y)
SDL2_DEPENDENCIES += alsa-lib
SDL2_CONF_OPTS += --enable-alsa
else
SDL2_CONF_OPTS += --disable-alsa
endif
ifeq ($(BR2_PACKAGE_SDL2_KMSDRM),y)
SDL2_DEPENDENCIES += libdrm libgbm libegl
SDL2_CONF_OPTS += --enable-video-kmsdrm
else
SDL2_CONF_OPTS += --disable-video-kmsdrm
endif
$(eval $(autotools-package))