From f04eaafc81c7da16ef355459d0be915363f4c849 Mon Sep 17 00:00:00 2001 From: sebastia Date: Wed, 18 Mar 2020 18:57:45 +0000 Subject: [PATCH] Add support for game controllers. To do that, the irrlicht backend had to be switched from X11 to SDL, since the X11 backend joystick support is Linux specific, and there is no way to combine SDL joystick support with Linux graphics backend. Test reports by Raf Czlonka. OK pascal@ (MAINTAINER) --- games/supertuxkart/Makefile | 7 +- .../supertuxkart/patches/patch-CMakeLists_txt | 13 +++ .../patches/patch-lib_irrlicht_CMakeLists_txt | 11 +-- ...ch-lib_irrlicht_include_IrrCompileConfig_h | 26 ++++++ ...irrlicht_source_Irrlicht_CIrrDeviceSDL_cpp | 85 +++++++++++++++++++ 5 files changed, 129 insertions(+), 13 deletions(-) create mode 100644 games/supertuxkart/patches/patch-CMakeLists_txt create mode 100644 games/supertuxkart/patches/patch-lib_irrlicht_include_IrrCompileConfig_h create mode 100644 games/supertuxkart/patches/patch-lib_irrlicht_source_Irrlicht_CIrrDeviceSDL_cpp diff --git a/games/supertuxkart/Makefile b/games/supertuxkart/Makefile index fd63a760df6..09e4466a5ed 100644 --- a/games/supertuxkart/Makefile +++ b/games/supertuxkart/Makefile @@ -1,4 +1,4 @@ -# $OpenBSD: Makefile,v 1.29 2019/07/12 20:46:25 sthen Exp $ +# $OpenBSD: Makefile,v 1.30 2020/03/18 18:57:45 sebastia Exp $ ONLY_FOR_ARCHS = amd64 i386 powerpc @@ -8,7 +8,7 @@ V = 0.9.3 BASENAME = supertuxkart-${V} DISTNAME = ${BASENAME}-src PKGNAME = ${BASENAME} -REVISION = 0 +REVISION = 1 CATEGORIES = games @@ -20,7 +20,7 @@ MAINTAINER = Pascal Stumpf PERMIT_PACKAGE = Yes WANTLIB += ${COMPILER_LIBCXX} GL X11 Xrandr c curl freetype jpeg -WANTLIB += m ogg openal png vorbis vorbisenc vorbisfile z +WANTLIB += m ogg openal png vorbis vorbisenc vorbisfile z SDL MASTER_SITES = ${MASTER_SITE_SOURCEFORGE:=supertuxkart/SuperTuxKart/} EXTRACT_SUFX = .tar.xz @@ -31,6 +31,7 @@ COMPILER = base-clang ports-gcc RUN_DEPENDS = devel/desktop-file-utils LIB_DEPENDS = audio/openal>=0.0.8p7 \ audio/libvorbis \ + devel/sdl \ net/curl \ graphics/png \ graphics/jpeg diff --git a/games/supertuxkart/patches/patch-CMakeLists_txt b/games/supertuxkart/patches/patch-CMakeLists_txt new file mode 100644 index 00000000000..3035bb8caf7 --- /dev/null +++ b/games/supertuxkart/patches/patch-CMakeLists_txt @@ -0,0 +1,13 @@ +$OpenBSD: patch-CMakeLists_txt,v 1.5 2020/03/18 18:57:46 sebastia Exp $ + +Index: CMakeLists.txt +--- CMakeLists.txt.orig ++++ CMakeLists.txt +@@ -416,6 +416,7 @@ target_link_libraries(supertuxkart + ${JPEG_LIBRARIES} + ${TURBOJPEG_LIBRARY} + #${VPX_LIBRARIES} ++ SDL + ) + + if(NOT SERVER_ONLY) diff --git a/games/supertuxkart/patches/patch-lib_irrlicht_CMakeLists_txt b/games/supertuxkart/patches/patch-lib_irrlicht_CMakeLists_txt index 9706b56ff13..ccf136ef542 100644 --- a/games/supertuxkart/patches/patch-lib_irrlicht_CMakeLists_txt +++ b/games/supertuxkart/patches/patch-lib_irrlicht_CMakeLists_txt @@ -1,4 +1,4 @@ -$OpenBSD: patch-lib_irrlicht_CMakeLists_txt,v 1.4 2017/11/27 15:45:19 pascal Exp $ +$OpenBSD: patch-lib_irrlicht_CMakeLists_txt,v 1.5 2020/03/18 18:57:46 sebastia Exp $ Index: lib/irrlicht/CMakeLists.txt --- lib/irrlicht/CMakeLists.txt.orig +++ lib/irrlicht/CMakeLists.txt @@ -13,12 +13,3 @@ Index: lib/irrlicht/CMakeLists.txt if(CMAKE_COMPILER_IS_GNUCC) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fexpensive-optimizations") endif() -@@ -86,7 +86,7 @@ if(USE_GLES2) - add_definitions(-D_IRR_COMPILE_WITH_OGLES2_ -DNO_IRR_COMPILE_WITH_OPENGL_) - endif() - --if(CYGWIN) -+if(NOT LINUX) - add_definitions(-DNO_IRR_COMPILE_WITH_JOYSTICK_EVENTS_) - endif() - diff --git a/games/supertuxkart/patches/patch-lib_irrlicht_include_IrrCompileConfig_h b/games/supertuxkart/patches/patch-lib_irrlicht_include_IrrCompileConfig_h new file mode 100644 index 00000000000..699e1f2d46e --- /dev/null +++ b/games/supertuxkart/patches/patch-lib_irrlicht_include_IrrCompileConfig_h @@ -0,0 +1,26 @@ +$OpenBSD: patch-lib_irrlicht_include_IrrCompileConfig_h,v 1.1 2020/03/18 18:57:46 sebastia Exp $ + +We want Joystick events, so have to use +SDL instead of X11 backend for Irrlicht + +Index: lib/irrlicht/include/IrrCompileConfig.h +--- lib/irrlicht/include/IrrCompileConfig.h.orig ++++ lib/irrlicht/include/IrrCompileConfig.h +@@ -44,7 +44,7 @@ + + + //! Uncomment this line to compile with the SDL device +-//#define _IRR_COMPILE_WITH_SDL_DEVICE_ ++#define _IRR_COMPILE_WITH_SDL_DEVICE_ + #ifdef NO_IRR_COMPILE_WITH_SDL_DEVICE_ + #undef _IRR_COMPILE_WITH_SDL_DEVICE_ + #endif +@@ -111,7 +111,7 @@ + #define _IRR_LINUX_PLATFORM_ + #endif + #define _IRR_POSIX_API_ +-#define _IRR_COMPILE_WITH_X11_DEVICE_ ++//#define _IRR_COMPILE_WITH_X11_DEVICE_ + //#define _IRR_COMPILE_WITH_WAYLAND_DEVICE_ + #endif + diff --git a/games/supertuxkart/patches/patch-lib_irrlicht_source_Irrlicht_CIrrDeviceSDL_cpp b/games/supertuxkart/patches/patch-lib_irrlicht_source_Irrlicht_CIrrDeviceSDL_cpp new file mode 100644 index 00000000000..f9cb6948819 --- /dev/null +++ b/games/supertuxkart/patches/patch-lib_irrlicht_source_Irrlicht_CIrrDeviceSDL_cpp @@ -0,0 +1,85 @@ +$OpenBSD: patch-lib_irrlicht_source_Irrlicht_CIrrDeviceSDL_cpp,v 1.1 2020/03/18 18:57:46 sebastia Exp $ + +Index: lib/irrlicht/source/Irrlicht/CIrrDeviceSDL.cpp +--- lib/irrlicht/source/Irrlicht/CIrrDeviceSDL.cpp.orig ++++ lib/irrlicht/source/Irrlicht/CIrrDeviceSDL.cpp +@@ -884,43 +884,43 @@ void CIrrDeviceSDL::createKeyMap() + KeyMap.push_back(SKeyMap(SDLK_DELETE, IRR_KEY_DELETE)); + KeyMap.push_back(SKeyMap(SDLK_HELP, IRR_KEY_HELP)); + +- KeyMap.push_back(SKeyMap(SDLK_0, IRR_KEY_IRR_KEY_0)); +- KeyMap.push_back(SKeyMap(SDLK_1, IRR_KEY_IRR_KEY_1)); +- KeyMap.push_back(SKeyMap(SDLK_2, IRR_KEY_IRR_KEY_2)); +- KeyMap.push_back(SKeyMap(SDLK_3, IRR_KEY_IRR_KEY_3)); +- KeyMap.push_back(SKeyMap(SDLK_4, IRR_KEY_IRR_KEY_4)); +- KeyMap.push_back(SKeyMap(SDLK_5, IRR_KEY_IRR_KEY_5)); +- KeyMap.push_back(SKeyMap(SDLK_6, IRR_KEY_IRR_KEY_6)); +- KeyMap.push_back(SKeyMap(SDLK_7, IRR_KEY_IRR_KEY_7)); +- KeyMap.push_back(SKeyMap(SDLK_8, IRR_KEY_IRR_KEY_8)); +- KeyMap.push_back(SKeyMap(SDLK_9, IRR_KEY_IRR_KEY_9)); ++ KeyMap.push_back(SKeyMap(SDLK_0, IRR_KEY_0)); ++ KeyMap.push_back(SKeyMap(SDLK_1, IRR_KEY_1)); ++ KeyMap.push_back(SKeyMap(SDLK_2, IRR_KEY_2)); ++ KeyMap.push_back(SKeyMap(SDLK_3, IRR_KEY_3)); ++ KeyMap.push_back(SKeyMap(SDLK_4, IRR_KEY_4)); ++ KeyMap.push_back(SKeyMap(SDLK_5, IRR_KEY_5)); ++ KeyMap.push_back(SKeyMap(SDLK_6, IRR_KEY_6)); ++ KeyMap.push_back(SKeyMap(SDLK_7, IRR_KEY_7)); ++ KeyMap.push_back(SKeyMap(SDLK_8, IRR_KEY_8)); ++ KeyMap.push_back(SKeyMap(SDLK_9, IRR_KEY_9)); + +- KeyMap.push_back(SKeyMap(SDLK_a, IRR_KEY_IRR_KEY_A)); +- KeyMap.push_back(SKeyMap(SDLK_b, IRR_KEY_IRR_KEY_B)); +- KeyMap.push_back(SKeyMap(SDLK_c, IRR_KEY_IRR_KEY_C)); +- KeyMap.push_back(SKeyMap(SDLK_d, IRR_KEY_IRR_KEY_D)); +- KeyMap.push_back(SKeyMap(SDLK_e, IRR_KEY_IRR_KEY_E)); +- KeyMap.push_back(SKeyMap(SDLK_f, IRR_KEY_IRR_KEY_F)); +- KeyMap.push_back(SKeyMap(SDLK_g, IRR_KEY_IRR_KEY_G)); +- KeyMap.push_back(SKeyMap(SDLK_h, IRR_KEY_IRR_KEY_H)); +- KeyMap.push_back(SKeyMap(SDLK_i, IRR_KEY_IRR_KEY_I)); +- KeyMap.push_back(SKeyMap(SDLK_j, IRR_KEY_IRR_KEY_J)); +- KeyMap.push_back(SKeyMap(SDLK_k, IRR_KEY_IRR_KEY_K)); +- KeyMap.push_back(SKeyMap(SDLK_l, IRR_KEY_IRR_KEY_L)); +- KeyMap.push_back(SKeyMap(SDLK_m, IRR_KEY_IRR_KEY_M)); +- KeyMap.push_back(SKeyMap(SDLK_n, IRR_KEY_IRR_KEY_N)); +- KeyMap.push_back(SKeyMap(SDLK_o, IRR_KEY_IRR_KEY_O)); +- KeyMap.push_back(SKeyMap(SDLK_p, IRR_KEY_IRR_KEY_P)); +- KeyMap.push_back(SKeyMap(SDLK_q, IRR_KEY_IRR_KEY_Q)); +- KeyMap.push_back(SKeyMap(SDLK_r, IRR_KEY_IRR_KEY_R)); +- KeyMap.push_back(SKeyMap(SDLK_s, IRR_KEY_IRR_KEY_S)); +- KeyMap.push_back(SKeyMap(SDLK_t, IRR_KEY_IRR_KEY_T)); +- KeyMap.push_back(SKeyMap(SDLK_u, IRR_KEY_IRR_KEY_U)); +- KeyMap.push_back(SKeyMap(SDLK_v, IRR_KEY_IRR_KEY_V)); +- KeyMap.push_back(SKeyMap(SDLK_w, IRR_KEY_IRR_KEY_W)); +- KeyMap.push_back(SKeyMap(SDLK_x, IRR_KEY_IRR_KEY_X)); +- KeyMap.push_back(SKeyMap(SDLK_y, IRR_KEY_IRR_KEY_Y)); +- KeyMap.push_back(SKeyMap(SDLK_z, IRR_KEY_IRR_KEY_Z)); ++ KeyMap.push_back(SKeyMap(SDLK_a, IRR_KEY_A)); ++ KeyMap.push_back(SKeyMap(SDLK_b, IRR_KEY_B)); ++ KeyMap.push_back(SKeyMap(SDLK_c, IRR_KEY_C)); ++ KeyMap.push_back(SKeyMap(SDLK_d, IRR_KEY_D)); ++ KeyMap.push_back(SKeyMap(SDLK_e, IRR_KEY_E)); ++ KeyMap.push_back(SKeyMap(SDLK_f, IRR_KEY_F)); ++ KeyMap.push_back(SKeyMap(SDLK_g, IRR_KEY_G)); ++ KeyMap.push_back(SKeyMap(SDLK_h, IRR_KEY_H)); ++ KeyMap.push_back(SKeyMap(SDLK_i, IRR_KEY_I)); ++ KeyMap.push_back(SKeyMap(SDLK_j, IRR_KEY_J)); ++ KeyMap.push_back(SKeyMap(SDLK_k, IRR_KEY_K)); ++ KeyMap.push_back(SKeyMap(SDLK_l, IRR_KEY_L)); ++ KeyMap.push_back(SKeyMap(SDLK_m, IRR_KEY_M)); ++ KeyMap.push_back(SKeyMap(SDLK_n, IRR_KEY_N)); ++ KeyMap.push_back(SKeyMap(SDLK_o, IRR_KEY_O)); ++ KeyMap.push_back(SKeyMap(SDLK_p, IRR_KEY_P)); ++ KeyMap.push_back(SKeyMap(SDLK_q, IRR_KEY_Q)); ++ KeyMap.push_back(SKeyMap(SDLK_r, IRR_KEY_R)); ++ KeyMap.push_back(SKeyMap(SDLK_s, IRR_KEY_S)); ++ KeyMap.push_back(SKeyMap(SDLK_t, IRR_KEY_T)); ++ KeyMap.push_back(SKeyMap(SDLK_u, IRR_KEY_U)); ++ KeyMap.push_back(SKeyMap(SDLK_v, IRR_KEY_V)); ++ KeyMap.push_back(SKeyMap(SDLK_w, IRR_KEY_W)); ++ KeyMap.push_back(SKeyMap(SDLK_x, IRR_KEY_X)); ++ KeyMap.push_back(SKeyMap(SDLK_y, IRR_KEY_Y)); ++ KeyMap.push_back(SKeyMap(SDLK_z, IRR_KEY_Z)); + + KeyMap.push_back(SKeyMap(SDLK_LSUPER, IRR_KEY_LWIN)); + KeyMap.push_back(SKeyMap(SDLK_RSUPER, IRR_KEY_RWIN));