mirror of
https://gitlab.redox-os.org/redox-os/redox.git
synced 2026-06-24 13:54:19 +08:00
Merge pull request #85 from NilSet/prboom
Add recipe for PrBoom. It almost runs doom!
This commit is contained in:
commit
988a0b6de2
45
recipes/prboom/01_redox.patch
Normal file
45
recipes/prboom/01_redox.patch
Normal file
@ -0,0 +1,45 @@
|
||||
diff -rupN prboom-2.5.0/autotools/config.sub prboom-2.5.0-redox/autotools/config.sub
|
||||
--- prboom-2.5.0/autotools/config.sub 2006-08-10 08:17:12.000000000 -0700
|
||||
+++ prboom-2.5.0-redox/autotools/config.sub 2017-10-14 22:17:14.000000000 -0700
|
||||
@@ -1214,7 +1214,7 @@ case $os in
|
||||
| -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
|
||||
| -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
|
||||
| -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
|
||||
- | -skyos* | -haiku* | -rdos* | -toppers*)
|
||||
+ | -skyos* | -haiku* | -rdos* | -toppers* | -redox*)
|
||||
# Remember, each alternative MUST END IN *, to match a version number.
|
||||
;;
|
||||
-qnx*)
|
||||
diff -rupN prboom-2.5.0/configure.ac prboom-2.5.0-redox/configure.ac
|
||||
--- prboom-2.5.0/configure.ac 2008-11-09 11:12:37.000000000 -0800
|
||||
+++ prboom-2.5.0-redox/configure.ac 2017-10-14 23:27:16.000000000 -0700
|
||||
@@ -85,8 +85,6 @@ if test "$cross_compiling" != "yes"; the
|
||||
fi
|
||||
|
||||
dnl --- Header files, typedefs, structures
|
||||
-AC_TYPE_UID_T
|
||||
-AC_TYPE_SIZE_T
|
||||
AC_DECL_SYS_SIGLIST
|
||||
AC_HEADER_SYS_WAIT
|
||||
AC_CHECK_HEADERS(unistd.h asm/byteorder.h sched.h)
|
||||
diff -rupN prboom-2.5.0/src/d_deh.c prboom-2.5.0-redox/src/d_deh.c
|
||||
--- prboom-2.5.0/src/d_deh.c 2008-10-11 05:10:38.000000000 -0700
|
||||
+++ prboom-2.5.0-redox/src/d_deh.c 2017-10-14 23:29:00.000000000 -0700
|
||||
@@ -54,17 +54,6 @@
|
||||
#define TRUE 1
|
||||
#define FALSE 0
|
||||
|
||||
-#ifndef HAVE_STRLWR
|
||||
-#include <ctype.h>
|
||||
-
|
||||
-static char* strlwr(char* str)
|
||||
-{
|
||||
- char* p;
|
||||
- for (p=str; *p; p++) *p = tolower(*p);
|
||||
- return str;
|
||||
-}
|
||||
-#endif
|
||||
-
|
||||
// killough 10/98: new functions, to allow processing DEH files in-memory
|
||||
// (e.g. from wads)
|
||||
|
||||
36
recipes/prboom/recipe.sh
Normal file
36
recipes/prboom/recipe.sh
Normal file
@ -0,0 +1,36 @@
|
||||
VERSION=2.5.0
|
||||
TAR=https://downloads.sourceforge.net/project/prboom/prboom%20stable/$VERSION/prboom-$VERSION.tar.gz
|
||||
BUILD_DEPENDS=(sdl)
|
||||
|
||||
function recipe_version {
|
||||
echo "$VERSION"
|
||||
skip=1
|
||||
}
|
||||
|
||||
function recipe_update {
|
||||
echo "skipping update"
|
||||
skip=1
|
||||
}
|
||||
|
||||
function recipe_build {
|
||||
autoreconf -if
|
||||
./configure --prefix=/ --host=${HOST} --disable-sdltest --disable-gl --without-net --with-sdl-prefix="$PWD/../sysroot"
|
||||
make
|
||||
skip=1
|
||||
}
|
||||
|
||||
function recipe_test {
|
||||
echo "skipping test"
|
||||
skip=1
|
||||
}
|
||||
|
||||
function recipe_clean {
|
||||
make clean
|
||||
skip=1
|
||||
}
|
||||
|
||||
function recipe_stage {
|
||||
dest="$(realpath $1)"
|
||||
make DESTDIR="$dest" install
|
||||
skip=1
|
||||
}
|
||||
735
recipes/sdl/01_orbital.patch
Normal file
735
recipes/sdl/01_orbital.patch
Normal file
@ -0,0 +1,735 @@
|
||||
diff -rupN sdl/build-scripts/config.sub sdl-redox/build-scripts/config.sub
|
||||
--- sdl/build-scripts/config.sub 2012-01-18 22:30:05.000000000 -0800
|
||||
+++ sdl-redox/build-scripts/config.sub 2016-07-27 18:17:26.683907466 -0700
|
||||
@@ -1276,7 +1276,7 @@ case $os in
|
||||
-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
|
||||
| -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
|
||||
| -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
|
||||
- | -kopensolaris* \
|
||||
+ | -kopensolaris* | -redox* \
|
||||
| -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
|
||||
| -aos* | -aros* \
|
||||
| -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
|
||||
diff -rupN sdl/configure.in sdl-redox/configure.in
|
||||
--- sdl/configure.in 2012-01-18 22:30:05.000000000 -0800
|
||||
+++ sdl-redox/configure.in 2016-07-27 18:17:26.683907466 -0700
|
||||
@@ -1646,6 +1646,19 @@ AC_HELP_STRING([--enable-video-dummy], [
|
||||
fi
|
||||
}
|
||||
|
||||
+dnl Set up the Orbital video driver.
|
||||
+CheckOrbitalVideo()
|
||||
+{
|
||||
+ AC_ARG_ENABLE(video-orbital,
|
||||
+AC_HELP_STRING([--enable-video-orbital], [use orbital video driver [[default=yes]]]),
|
||||
+ , enable_video_orbital=yes)
|
||||
+ if test x$enable_video_orbital = xyes; then
|
||||
+ AC_DEFINE(SDL_VIDEO_DRIVER_ORBITAL)
|
||||
+ SOURCES="$SOURCES $srcdir/src/video/orbital/*.c"
|
||||
+ have_video=yes
|
||||
+ fi
|
||||
+}
|
||||
+
|
||||
dnl Check to see if OpenGL support is desired
|
||||
AC_ARG_ENABLE(video-opengl,
|
||||
AC_HELP_STRING([--enable-video-opengl], [include OpenGL context creation [[default=yes]]]),
|
||||
@@ -2325,10 +2338,11 @@ case "$host" in
|
||||
have_timers=yes
|
||||
fi
|
||||
;;
|
||||
- *-*-linux*|*-*-uclinux*|*-*-gnu*|*-*-k*bsd*-gnu|*-*-bsdi*|*-*-freebsd*|*-*-dragonfly*|*-*-netbsd*|*-*-openbsd*|*-*-sysv5*|*-*-solaris*|*-*-hpux*|*-*-irix*|*-*-aix*|*-*-osf*)
|
||||
+ *-*-linux*|*-*-uclinux*|*-*-redox*|*-*-gnu*|*-*-k*bsd*-gnu|*-*-bsdi*|*-*-freebsd*|*-*-dragonfly*|*-*-netbsd*|*-*-openbsd*|*-*-sysv5*|*-*-solaris*|*-*-hpux*|*-*-irix*|*-*-aix*|*-*-osf*)
|
||||
case "$host" in
|
||||
*-*-linux*) ARCH=linux ;;
|
||||
*-*-uclinux*) ARCH=linux ;;
|
||||
+ *-*-redox*) ARCH=redox ;;
|
||||
*-*-kfreebsd*-gnu) ARCH=kfreebsd-gnu ;;
|
||||
*-*-knetbsd*-gnu) ARCH=knetbsd-gnu ;;
|
||||
*-*-kopenbsd*-gnu) ARCH=kopenbsd-gnu ;;
|
||||
@@ -2347,6 +2361,7 @@ case "$host" in
|
||||
esac
|
||||
CheckVisibilityHidden
|
||||
CheckDummyVideo
|
||||
+ CheckOrbitalVideo
|
||||
CheckDiskAudio
|
||||
CheckDummyAudio
|
||||
CheckDLOPEN
|
||||
diff -rupN sdl/include/SDL_config.h.in sdl-redox/include/SDL_config.h.in
|
||||
--- sdl/include/SDL_config.h.in 2012-01-18 22:30:05.000000000 -0800
|
||||
+++ sdl-redox/include/SDL_config.h.in 2016-07-27 18:17:26.683907466 -0700
|
||||
@@ -268,6 +268,7 @@
|
||||
#undef SDL_VIDEO_DRIVER_GGI
|
||||
#undef SDL_VIDEO_DRIVER_IPOD
|
||||
#undef SDL_VIDEO_DRIVER_NANOX
|
||||
+#undef SDL_VIDEO_DRIVER_ORBITAL
|
||||
#undef SDL_VIDEO_DRIVER_OS2FS
|
||||
#undef SDL_VIDEO_DRIVER_PHOTON
|
||||
#undef SDL_VIDEO_DRIVER_PICOGUI
|
||||
diff -rupN sdl/src/video/orbital/SDL_orbitalevents.c sdl-redox/src/video/orbital/SDL_orbitalevents.c
|
||||
--- sdl/src/video/orbital/SDL_orbitalevents.c 1969-12-31 16:00:00.000000000 -0800
|
||||
+++ sdl-redox/src/video/orbital/SDL_orbitalevents.c 2016-07-27 18:17:26.683907466 -0700
|
||||
@@ -0,0 +1,159 @@
|
||||
+/*
|
||||
+ SDL - Simple DirectMedia Layer
|
||||
+ Copyright (C) 1997-2012 Sam Lantinga
|
||||
+
|
||||
+ This library is free software; you can redistribute it and/or
|
||||
+ modify it under the terms of the GNU Lesser General Public
|
||||
+ License as published by the Free Software Foundation; either
|
||||
+ version 2.1 of the License, or (at your option) any later version.
|
||||
+
|
||||
+ This library is distributed in the hope that it will be useful,
|
||||
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
+ Lesser General Public License for more details.
|
||||
+
|
||||
+ You should have received a copy of the GNU Lesser General Public
|
||||
+ License along with this library; if not, write to the Free Software
|
||||
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
+
|
||||
+ Sam Lantinga
|
||||
+ slouken@libsdl.org
|
||||
+*/
|
||||
+#include "SDL_config.h"
|
||||
+
|
||||
+#include "SDL.h"
|
||||
+#include "../../events/SDL_sysevents.h"
|
||||
+#include "../../events/SDL_events_c.h"
|
||||
+
|
||||
+#include "SDL_orbitalvideo.h"
|
||||
+#include "SDL_orbitalevents_c.h"
|
||||
+#include "SDL_orbitalscancode.h"
|
||||
+
|
||||
+#include <unistd.h>
|
||||
+
|
||||
+static SDLKey keymap[128];
|
||||
+
|
||||
+#define EVENT_NONE 0
|
||||
+#define EVENT_MOUSE 1
|
||||
+#define EVENT_KEY 2
|
||||
+#define EVENT_QUIT 3
|
||||
+
|
||||
+struct Event {
|
||||
+ int64_t code;
|
||||
+ int64_t a;
|
||||
+ int64_t b;
|
||||
+ int64_t c;
|
||||
+} __attribute__((packed));
|
||||
+
|
||||
+void ORBITAL_PumpEvents(_THIS)
|
||||
+{
|
||||
+ struct Event event;
|
||||
+ while(read(this->hidden->fd, &event, sizeof(event)) > 0){
|
||||
+ if ( event.code == EVENT_KEY ) {
|
||||
+ SDL_keysym keysym;
|
||||
+ keysym.unicode = event.a;
|
||||
+ keysym.scancode = event.b;
|
||||
+ keysym.sym = keymap[event.b];
|
||||
+ keysym.mod = KMOD_NONE;
|
||||
+ if ( event.c > 0 ) {
|
||||
+ SDL_PrivateKeyboard(SDL_PRESSED, &keysym);
|
||||
+ } else {
|
||||
+ SDL_PrivateKeyboard(SDL_RELEASED, &keysym);
|
||||
+ }
|
||||
+ } else if( event.code == EVENT_MOUSE ) {
|
||||
+ SDL_PrivateMouseMotion(event.c, 0, event.a, event.b);
|
||||
+ //SDL_PrivateMouseButton(Uint8 state, Uint8 button, Sint16 x, Sint16 y);
|
||||
+ } else if ( event.code == EVENT_QUIT ) {
|
||||
+ SDL_PrivateQuit();
|
||||
+ }
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+void ORBITAL_InitOSKeymap(_THIS)
|
||||
+{
|
||||
+ int i;
|
||||
+ for ( i = 0; i < SDL_arraysize(keymap); ++i )
|
||||
+ keymap[i] = SDLK_UNKNOWN;
|
||||
+
|
||||
+ keymap[SCANCODE_ESCAPE] = SDLK_ESCAPE;
|
||||
+ keymap[SCANCODE_1] = SDLK_1;
|
||||
+ keymap[SCANCODE_2] = SDLK_2;
|
||||
+ keymap[SCANCODE_3] = SDLK_3;
|
||||
+ keymap[SCANCODE_4] = SDLK_4;
|
||||
+ keymap[SCANCODE_5] = SDLK_5;
|
||||
+ keymap[SCANCODE_6] = SDLK_6;
|
||||
+ keymap[SCANCODE_7] = SDLK_7;
|
||||
+ keymap[SCANCODE_8] = SDLK_8;
|
||||
+ keymap[SCANCODE_9] = SDLK_9;
|
||||
+ keymap[SCANCODE_0] = SDLK_0;
|
||||
+ keymap[SCANCODE_MINUS] = SDLK_MINUS;
|
||||
+ keymap[SCANCODE_EQUAL] = SDLK_EQUALS;
|
||||
+ keymap[SCANCODE_BACKSPACE] = SDLK_BACKSPACE;
|
||||
+ keymap[SCANCODE_TAB] = SDLK_TAB;
|
||||
+ keymap[SCANCODE_Q] = SDLK_q;
|
||||
+ keymap[SCANCODE_W] = SDLK_w;
|
||||
+ keymap[SCANCODE_E] = SDLK_e;
|
||||
+ keymap[SCANCODE_R] = SDLK_r;
|
||||
+ keymap[SCANCODE_T] = SDLK_t;
|
||||
+ keymap[SCANCODE_Y] = SDLK_y;
|
||||
+ keymap[SCANCODE_U] = SDLK_u;
|
||||
+ keymap[SCANCODE_I] = SDLK_i;
|
||||
+ keymap[SCANCODE_O] = SDLK_o;
|
||||
+ keymap[SCANCODE_P] = SDLK_p;
|
||||
+ keymap[SCANCODE_BRACKET_LEFT] = SDLK_LEFTBRACKET;
|
||||
+ keymap[SCANCODE_BRACKET_RIGHT] = SDLK_RIGHTBRACKET;
|
||||
+ keymap[SCANCODE_ENTER] = SDLK_RETURN;
|
||||
+ keymap[SCANCODE_LEFTCONTROL] = SDLK_LCTRL;
|
||||
+ keymap[SCANCODE_A] = SDLK_a;
|
||||
+ keymap[SCANCODE_S] = SDLK_s;
|
||||
+ keymap[SCANCODE_D] = SDLK_d;
|
||||
+ keymap[SCANCODE_F] = SDLK_f;
|
||||
+ keymap[SCANCODE_G] = SDLK_g;
|
||||
+ keymap[SCANCODE_H] = SDLK_h;
|
||||
+ keymap[SCANCODE_J] = SDLK_j;
|
||||
+ keymap[SCANCODE_K] = SDLK_k;
|
||||
+ keymap[SCANCODE_L] = SDLK_l;
|
||||
+ keymap[SCANCODE_SEMICOLON] = SDLK_SEMICOLON;
|
||||
+ keymap[SCANCODE_APOSTROPHE] = SDLK_QUOTE;
|
||||
+ keymap[SCANCODE_TICK] = SDLK_BACKQUOTE;
|
||||
+ keymap[SCANCODE_LEFTSHIFT] = SDLK_LSHIFT;
|
||||
+ keymap[SCANCODE_RIGHTSHIFT] = SDLK_RSHIFT;
|
||||
+ keymap[SCANCODE_BACKSLASH] = SDLK_BACKSLASH;
|
||||
+ keymap[SCANCODE_Z] = SDLK_z;
|
||||
+ keymap[SCANCODE_X] = SDLK_x;
|
||||
+ keymap[SCANCODE_C] = SDLK_c;
|
||||
+ keymap[SCANCODE_V] = SDLK_v;
|
||||
+ keymap[SCANCODE_B] = SDLK_b;
|
||||
+ keymap[SCANCODE_N] = SDLK_n;
|
||||
+ keymap[SCANCODE_M] = SDLK_m;
|
||||
+ keymap[SCANCODE_COMMA] = SDLK_COMMA;
|
||||
+ keymap[SCANCODE_PERIOD] = SDLK_PERIOD;
|
||||
+ keymap[SCANCODE_SLASH] = SDLK_SLASH;
|
||||
+ keymap[SCANCODE_LEFTALT] = SDLK_LALT;
|
||||
+ keymap[SCANCODE_SPACE] = SDLK_SPACE;
|
||||
+ keymap[SCANCODE_CAPSLOCK] = SDLK_CAPSLOCK;
|
||||
+ keymap[SCANCODE_F1] = SDLK_F1;
|
||||
+ keymap[SCANCODE_F2] = SDLK_F2;
|
||||
+ keymap[SCANCODE_F3] = SDLK_F3;
|
||||
+ keymap[SCANCODE_F4] = SDLK_F4;
|
||||
+ keymap[SCANCODE_F5] = SDLK_F5;
|
||||
+ keymap[SCANCODE_F6] = SDLK_F6;
|
||||
+ keymap[SCANCODE_F7] = SDLK_F7;
|
||||
+ keymap[SCANCODE_F8] = SDLK_F8;
|
||||
+ keymap[SCANCODE_F9] = SDLK_F9;
|
||||
+ keymap[SCANCODE_F10] = SDLK_F10;
|
||||
+ keymap[SCANCODE_F11] = SDLK_F11;
|
||||
+ keymap[SCANCODE_F12] = SDLK_F12;
|
||||
+ keymap[SCANCODE_HOME] = SDLK_HOME;
|
||||
+ keymap[SCANCODE_CURSORBLOCKUP] = SDLK_UP;
|
||||
+ keymap[SCANCODE_PAGEUP] = SDLK_PAGEUP;
|
||||
+ keymap[SCANCODE_CURSORBLOCKLEFT] = SDLK_LEFT;
|
||||
+ keymap[SCANCODE_CURSORBLOCKRIGHT] = SDLK_RIGHT;
|
||||
+ keymap[SCANCODE_END] = SDLK_END;
|
||||
+ keymap[SCANCODE_CURSORBLOCKDOWN] = SDLK_DOWN;
|
||||
+ keymap[SCANCODE_PAGEDOWN] = SDLK_PAGEDOWN;
|
||||
+ keymap[SCANCODE_INSERT] = SDLK_INSERT;
|
||||
+ keymap[SCANCODE_DELETE] = SDLK_DELETE;
|
||||
+}
|
||||
+
|
||||
+/* end of SDL_orbitalevents.c ... */
|
||||
diff -rupN sdl/src/video/orbital/SDL_orbitalevents_c.h sdl-redox/src/video/orbital/SDL_orbitalevents_c.h
|
||||
--- sdl/src/video/orbital/SDL_orbitalevents_c.h 1969-12-31 16:00:00.000000000 -0800
|
||||
+++ sdl-redox/src/video/orbital/SDL_orbitalevents_c.h 2016-07-27 18:17:26.683907466 -0700
|
||||
@@ -0,0 +1,32 @@
|
||||
+/*
|
||||
+ SDL - Simple DirectMedia Layer
|
||||
+ Copyright (C) 1997-2012 Sam Lantinga
|
||||
+
|
||||
+ This library is free software; you can redistribute it and/or
|
||||
+ modify it under the terms of the GNU Lesser General Public
|
||||
+ License as published by the Free Software Foundation; either
|
||||
+ version 2.1 of the License, or (at your option) any later version.
|
||||
+
|
||||
+ This library is distributed in the hope that it will be useful,
|
||||
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
+ Lesser General Public License for more details.
|
||||
+
|
||||
+ You should have received a copy of the GNU Lesser General Public
|
||||
+ License along with this library; if not, write to the Free Software
|
||||
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
+
|
||||
+ Sam Lantinga
|
||||
+ slouken@libsdl.org
|
||||
+*/
|
||||
+#include "SDL_config.h"
|
||||
+
|
||||
+#include "SDL_orbitalvideo.h"
|
||||
+
|
||||
+/* Variables and functions exported by SDL_sysevents.c to other parts
|
||||
+ of the native video subsystem (SDL_sysvideo.c)
|
||||
+*/
|
||||
+extern void ORBITAL_InitOSKeymap(_THIS);
|
||||
+extern void ORBITAL_PumpEvents(_THIS);
|
||||
+
|
||||
+/* end of SDL_orbitalevents_c.h ... */
|
||||
diff -rupN sdl/src/video/orbital/SDL_orbitalmouse.c sdl-redox/src/video/orbital/SDL_orbitalmouse.c
|
||||
--- sdl/src/video/orbital/SDL_orbitalmouse.c 1969-12-31 16:00:00.000000000 -0800
|
||||
+++ sdl-redox/src/video/orbital/SDL_orbitalmouse.c 2016-07-27 18:17:26.683907466 -0700
|
||||
@@ -0,0 +1,33 @@
|
||||
+/*
|
||||
+ SDL - Simple DirectMedia Layer
|
||||
+ Copyright (C) 1997-2012 Sam Lantinga
|
||||
+
|
||||
+ This library is free software; you can redistribute it and/or
|
||||
+ modify it under the terms of the GNU Lesser General Public
|
||||
+ License as published by the Free Software Foundation; either
|
||||
+ version 2.1 of the License, or (at your option) any later version.
|
||||
+
|
||||
+ This library is distributed in the hope that it will be useful,
|
||||
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
+ Lesser General Public License for more details.
|
||||
+
|
||||
+ You should have received a copy of the GNU Lesser General Public
|
||||
+ License along with this library; if not, write to the Free Software
|
||||
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
+
|
||||
+ Sam Lantinga
|
||||
+ slouken@libsdl.org
|
||||
+*/
|
||||
+#include "SDL_config.h"
|
||||
+
|
||||
+#include "SDL_mouse.h"
|
||||
+#include "../../events/SDL_events_c.h"
|
||||
+
|
||||
+#include "SDL_orbitalmouse_c.h"
|
||||
+
|
||||
+
|
||||
+/* The implementation dependent data for the window manager cursor */
|
||||
+struct WMcursor {
|
||||
+ int unused;
|
||||
+};
|
||||
diff -rupN sdl/src/video/orbital/SDL_orbitalmouse_c.h sdl-redox/src/video/orbital/SDL_orbitalmouse_c.h
|
||||
--- sdl/src/video/orbital/SDL_orbitalmouse_c.h 1969-12-31 16:00:00.000000000 -0800
|
||||
+++ sdl-redox/src/video/orbital/SDL_orbitalmouse_c.h 2016-07-27 18:17:26.683907466 -0700
|
||||
@@ -0,0 +1,26 @@
|
||||
+/*
|
||||
+ SDL - Simple DirectMedia Layer
|
||||
+ Copyright (C) 1997-2012 Sam Lantinga
|
||||
+
|
||||
+ This library is free software; you can redistribute it and/or
|
||||
+ modify it under the terms of the GNU Lesser General Public
|
||||
+ License as published by the Free Software Foundation; either
|
||||
+ version 2.1 of the License, or (at your option) any later version.
|
||||
+
|
||||
+ This library is distributed in the hope that it will be useful,
|
||||
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
+ Lesser General Public License for more details.
|
||||
+
|
||||
+ You should have received a copy of the GNU Lesser General Public
|
||||
+ License along with this library; if not, write to the Free Software
|
||||
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
+
|
||||
+ Sam Lantinga
|
||||
+ slouken@libsdl.org
|
||||
+*/
|
||||
+#include "SDL_config.h"
|
||||
+
|
||||
+#include "SDL_orbitalvideo.h"
|
||||
+
|
||||
+/* Functions to be exported */
|
||||
diff -rupN sdl/src/video/orbital/SDL_orbitalscancode.h sdl-redox/src/video/orbital/SDL_orbitalscancode.h
|
||||
--- sdl/src/video/orbital/SDL_orbitalscancode.h 1969-12-31 16:00:00.000000000 -0800
|
||||
+++ sdl-redox/src/video/orbital/SDL_orbitalscancode.h 2016-07-27 18:17:26.687240818 -0700
|
||||
@@ -0,0 +1,80 @@
|
||||
+#define SCANCODE_A 0x1E
|
||||
+#define SCANCODE_B 0x30
|
||||
+#define SCANCODE_C 0x2E
|
||||
+#define SCANCODE_D 0x20
|
||||
+#define SCANCODE_E 0x12
|
||||
+#define SCANCODE_F 0x21
|
||||
+#define SCANCODE_G 0x22
|
||||
+#define SCANCODE_H 0x23
|
||||
+#define SCANCODE_I 0x17
|
||||
+#define SCANCODE_J 0x24
|
||||
+#define SCANCODE_K 0x25
|
||||
+#define SCANCODE_L 0x26
|
||||
+#define SCANCODE_M 0x32
|
||||
+#define SCANCODE_N 0x31
|
||||
+#define SCANCODE_O 0x18
|
||||
+#define SCANCODE_P 0x19
|
||||
+#define SCANCODE_Q 0x10
|
||||
+#define SCANCODE_R 0x13
|
||||
+#define SCANCODE_S 0x1F
|
||||
+#define SCANCODE_T 0x14
|
||||
+#define SCANCODE_U 0x16
|
||||
+#define SCANCODE_V 0x2F
|
||||
+#define SCANCODE_W 0x11
|
||||
+#define SCANCODE_X 0x2D
|
||||
+#define SCANCODE_Y 0x15
|
||||
+#define SCANCODE_Z 0x2C
|
||||
+#define SCANCODE_0 0x0B
|
||||
+#define SCANCODE_1 0x2
|
||||
+#define SCANCODE_2 0x3
|
||||
+#define SCANCODE_3 0x4
|
||||
+#define SCANCODE_4 0x5
|
||||
+#define SCANCODE_5 0x6
|
||||
+#define SCANCODE_6 0x7
|
||||
+#define SCANCODE_7 0x8
|
||||
+#define SCANCODE_8 0x9
|
||||
+#define SCANCODE_9 0x0A
|
||||
+#define SCANCODE_TICK 0x29
|
||||
+#define SCANCODE_MINUS 0x0C
|
||||
+#define SCANCODE_EQUAL 0x0D
|
||||
+#define SCANCODE_BACKSLASH 0x2B
|
||||
+#define SCANCODE_BACKSPACE 0x0E
|
||||
+#define SCANCODE_SPACE 0x39
|
||||
+#define SCANCODE_TAB 0x0F
|
||||
+#define SCANCODE_CAPSLOCK 0x3A
|
||||
+#define SCANCODE_LEFTSHIFT 0x2A
|
||||
+#define SCANCODE_LEFTCONTROL 0x1D
|
||||
+#define SCANCODE_LEFTALT 0x38
|
||||
+#define SCANCODE_RIGHTSHIFT 0x36
|
||||
+#define SCANCODE_ENTER 0x1C
|
||||
+#define SCANCODE_ESCAPE 0x1
|
||||
+#define SCANCODE_F1 0x3B
|
||||
+#define SCANCODE_F2 0x3C
|
||||
+#define SCANCODE_F3 0x3D
|
||||
+#define SCANCODE_F4 0x3E
|
||||
+#define SCANCODE_F5 0x3F
|
||||
+#define SCANCODE_F6 0x40
|
||||
+#define SCANCODE_F7 0x41
|
||||
+#define SCANCODE_F8 0x42
|
||||
+#define SCANCODE_F9 0x43
|
||||
+#define SCANCODE_F10 0x44
|
||||
+#define SCANCODE_F11 0x57
|
||||
+#define SCANCODE_F12 0x58
|
||||
+#define SCANCODE_SCROLL 0x46
|
||||
+#define SCANCODE_BRACKET_LEFT 0x1A
|
||||
+#define SCANCODE_BRACKET_RIGHT 0x1B
|
||||
+#define SCANCODE_INSERT 0x52
|
||||
+#define SCANCODE_HOME 0x47
|
||||
+#define SCANCODE_PAGEUP 0x49
|
||||
+#define SCANCODE_DELETE 0x53
|
||||
+#define SCANCODE_END 0x4F
|
||||
+#define SCANCODE_PAGEDOWN 0x51
|
||||
+#define SCANCODE_CURSORBLOCKUP 0x48
|
||||
+#define SCANCODE_CURSORBLOCKLEFT 0x4B
|
||||
+#define SCANCODE_CURSORBLOCKDOWN 0x50
|
||||
+#define SCANCODE_CURSORBLOCKRIGHT 0x4D
|
||||
+#define SCANCODE_SEMICOLON 0x27
|
||||
+#define SCANCODE_APOSTROPHE 0x28
|
||||
+#define SCANCODE_COMMA 0x33
|
||||
+#define SCANCODE_PERIOD 0x34
|
||||
+#define SCANCODE_SLASH 0x35
|
||||
diff -rupN sdl/src/video/orbital/SDL_orbitalvideo.c sdl-redox/src/video/orbital/SDL_orbitalvideo.c
|
||||
--- sdl/src/video/orbital/SDL_orbitalvideo.c 1969-12-31 16:00:00.000000000 -0800
|
||||
+++ sdl-redox/src/video/orbital/SDL_orbitalvideo.c 2016-07-27 18:17:26.687240818 -0700
|
||||
@@ -0,0 +1,243 @@
|
||||
+/*
|
||||
+ SDL - Simple DirectMedia Layer
|
||||
+ Copyright (C) 1997-2012 Sam Lantinga
|
||||
+
|
||||
+ This library is free software; you can redistribute it and/or
|
||||
+ modify it under the terms of the GNU Lesser General Public
|
||||
+ License as published by the Free Software Foundation; either
|
||||
+ version 2.1 of the License, or (at your option) any later version.
|
||||
+
|
||||
+ This library is distributed in the hope that it will be useful,
|
||||
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
+ Lesser General Public License for more details.
|
||||
+
|
||||
+ You should have received a copy of the GNU Lesser General Public
|
||||
+ License along with this library; if not, write to the Free Software
|
||||
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
+
|
||||
+ Sam Lantinga
|
||||
+ slouken@libsdl.org
|
||||
+*/
|
||||
+#include "SDL_config.h"
|
||||
+
|
||||
+/* Orbital SDL video driver implementation
|
||||
+ *
|
||||
+ * Initial work by Ryan C. Gordon (icculus@icculus.org). A good portion
|
||||
+ * of this was cut-and-pasted from Stephane Peter's work in the AAlib
|
||||
+ * SDL video driver. Renamed to "DUMMY" by Sam Lantinga.
|
||||
+ * Repurposed to ORBITAL by Jeremy Soller.
|
||||
+ */
|
||||
+
|
||||
+#include "SDL_video.h"
|
||||
+#include "SDL_mouse.h"
|
||||
+#include "../SDL_sysvideo.h"
|
||||
+#include "../SDL_pixels_c.h"
|
||||
+#include "../../events/SDL_events_c.h"
|
||||
+
|
||||
+#include "SDL_orbitalvideo.h"
|
||||
+#include "SDL_orbitalevents_c.h"
|
||||
+#include "SDL_orbitalmouse_c.h"
|
||||
+
|
||||
+#include <sys/types.h>
|
||||
+#include <sys/stat.h>
|
||||
+#include <sys/fcntl.h>
|
||||
+
|
||||
+#define ORBITALVID_DRIVER_NAME "orbital"
|
||||
+
|
||||
+/* Initialization/Query functions */
|
||||
+static int ORBITAL_VideoInit(_THIS, SDL_PixelFormat *vformat);
|
||||
+static SDL_Rect **ORBITAL_ListModes(_THIS, SDL_PixelFormat *format, Uint32 flags);
|
||||
+static SDL_Surface *ORBITAL_SetVideoMode(_THIS, SDL_Surface *current, int width, int height, int bpp, Uint32 flags);
|
||||
+static int ORBITAL_SetColors(_THIS, int firstcolor, int ncolors, SDL_Color *colors);
|
||||
+static void ORBITAL_VideoQuit(_THIS);
|
||||
+
|
||||
+/* Hardware surface functions */
|
||||
+static int ORBITAL_AllocHWSurface(_THIS, SDL_Surface *surface);
|
||||
+static int ORBITAL_LockHWSurface(_THIS, SDL_Surface *surface);
|
||||
+static void ORBITAL_UnlockHWSurface(_THIS, SDL_Surface *surface);
|
||||
+static void ORBITAL_FreeHWSurface(_THIS, SDL_Surface *surface);
|
||||
+
|
||||
+/* etc. */
|
||||
+static void ORBITAL_UpdateRects(_THIS, int numrects, SDL_Rect *rects);
|
||||
+
|
||||
+/* ORBITAL driver bootstrap functions */
|
||||
+
|
||||
+static int ORBITAL_Available(void)
|
||||
+{
|
||||
+ return(1);
|
||||
+}
|
||||
+
|
||||
+static void ORBITAL_DeleteDevice(SDL_VideoDevice *device)
|
||||
+{
|
||||
+ SDL_free(device->hidden);
|
||||
+ SDL_free(device);
|
||||
+}
|
||||
+
|
||||
+static SDL_VideoDevice *ORBITAL_CreateDevice(int devindex)
|
||||
+{
|
||||
+ SDL_VideoDevice *device;
|
||||
+
|
||||
+ /* Initialize all variables that we clean on shutdown */
|
||||
+ device = (SDL_VideoDevice *)SDL_malloc(sizeof(SDL_VideoDevice));
|
||||
+ if ( device ) {
|
||||
+ SDL_memset(device, 0, (sizeof *device));
|
||||
+ device->hidden = (struct SDL_PrivateVideoData *)
|
||||
+ SDL_malloc((sizeof *device->hidden));
|
||||
+ }
|
||||
+ if ( (device == NULL) || (device->hidden == NULL) ) {
|
||||
+ SDL_OutOfMemory();
|
||||
+ if ( device ) {
|
||||
+ SDL_free(device);
|
||||
+ }
|
||||
+ return(0);
|
||||
+ }
|
||||
+ SDL_memset(device->hidden, 0, (sizeof *device->hidden));
|
||||
+
|
||||
+ /* Set the function pointers */
|
||||
+ device->VideoInit = ORBITAL_VideoInit;
|
||||
+ device->ListModes = ORBITAL_ListModes;
|
||||
+ device->SetVideoMode = ORBITAL_SetVideoMode;
|
||||
+ device->CreateYUVOverlay = NULL;
|
||||
+ device->SetColors = ORBITAL_SetColors;
|
||||
+ device->UpdateRects = ORBITAL_UpdateRects;
|
||||
+ device->VideoQuit = ORBITAL_VideoQuit;
|
||||
+ device->AllocHWSurface = ORBITAL_AllocHWSurface;
|
||||
+ device->CheckHWBlit = NULL;
|
||||
+ device->FillHWRect = NULL;
|
||||
+ device->SetHWColorKey = NULL;
|
||||
+ device->SetHWAlpha = NULL;
|
||||
+ device->LockHWSurface = ORBITAL_LockHWSurface;
|
||||
+ device->UnlockHWSurface = ORBITAL_UnlockHWSurface;
|
||||
+ device->FlipHWSurface = NULL;
|
||||
+ device->FreeHWSurface = ORBITAL_FreeHWSurface;
|
||||
+ device->SetCaption = NULL;
|
||||
+ device->SetIcon = NULL;
|
||||
+ device->IconifyWindow = NULL;
|
||||
+ device->GrabInput = NULL;
|
||||
+ device->GetWMInfo = NULL;
|
||||
+ device->InitOSKeymap = ORBITAL_InitOSKeymap;
|
||||
+ device->PumpEvents = ORBITAL_PumpEvents;
|
||||
+
|
||||
+ device->free = ORBITAL_DeleteDevice;
|
||||
+
|
||||
+ return device;
|
||||
+}
|
||||
+
|
||||
+VideoBootStrap ORBITAL_bootstrap = {
|
||||
+ ORBITALVID_DRIVER_NAME, "SDL orbital video driver",
|
||||
+ ORBITAL_Available, ORBITAL_CreateDevice
|
||||
+};
|
||||
+
|
||||
+
|
||||
+int ORBITAL_VideoInit(_THIS, SDL_PixelFormat *vformat)
|
||||
+{
|
||||
+ fprintf(stderr, "WARNING: You are using the SDL orbital video driver!\n");
|
||||
+
|
||||
+ /* Determine the screen depth (use default 32-bit depth) */
|
||||
+ /* we change this during the SDL_SetVideoMode implementation... */
|
||||
+ vformat->BitsPerPixel = 32;
|
||||
+ vformat->BytesPerPixel = 4;
|
||||
+
|
||||
+ /* We're done! */
|
||||
+ return(0);
|
||||
+}
|
||||
+
|
||||
+SDL_Rect **ORBITAL_ListModes(_THIS, SDL_PixelFormat *format, Uint32 flags)
|
||||
+{
|
||||
+ return (SDL_Rect **) -1;
|
||||
+}
|
||||
+
|
||||
+SDL_Surface *ORBITAL_SetVideoMode(_THIS, SDL_Surface *current,
|
||||
+ int width, int height, int bpp, Uint32 flags)
|
||||
+{
|
||||
+ if ( this->hidden->fd ) {
|
||||
+ close( this->hidden->fd );
|
||||
+ }
|
||||
+
|
||||
+ if ( this->hidden->buffer ) {
|
||||
+ SDL_free( this->hidden->buffer );
|
||||
+ }
|
||||
+
|
||||
+ char path[4096];
|
||||
+ snprintf(path, 4096, "orbital:/-1/-1/%d/%d/SDL", width, height);
|
||||
+ this->hidden->fd = open(path, O_RDONLY);
|
||||
+ printf("%s at %d\n", path, this->hidden->fd);
|
||||
+
|
||||
+ this->hidden->buffer = SDL_malloc(width * height * (bpp / 8));
|
||||
+ if ( ! this->hidden->buffer ) {
|
||||
+ SDL_SetError("Couldn't allocate buffer for requested mode");
|
||||
+ return(NULL);
|
||||
+ }
|
||||
+
|
||||
+ printf("Setting mode %dx%d@%d\n", width, height, bpp);
|
||||
+
|
||||
+ SDL_memset(this->hidden->buffer, 0, width * height * (bpp / 8));
|
||||
+
|
||||
+ /* Allocate the new pixel format for the screen */
|
||||
+ if ( ! SDL_ReallocFormat(current, bpp, 0, 0, 0, 0) ) {
|
||||
+ SDL_free(this->hidden->buffer);
|
||||
+ this->hidden->buffer = NULL;
|
||||
+ SDL_SetError("Couldn't allocate new pixel format for requested mode");
|
||||
+ return(NULL);
|
||||
+ }
|
||||
+
|
||||
+ /* Set up the new mode framebuffer */
|
||||
+ current->flags = flags & SDL_FULLSCREEN;
|
||||
+ this->hidden->w = current->w = width;
|
||||
+ this->hidden->h = current->h = height;
|
||||
+ current->pitch = current->w * (bpp / 8);
|
||||
+ current->pixels = this->hidden->buffer;
|
||||
+
|
||||
+ /* We're done */
|
||||
+ return(current);
|
||||
+}
|
||||
+
|
||||
+/* We don't actually allow hardware surfaces other than the main one */
|
||||
+static int ORBITAL_AllocHWSurface(_THIS, SDL_Surface *surface)
|
||||
+{
|
||||
+ return(-1);
|
||||
+}
|
||||
+static void ORBITAL_FreeHWSurface(_THIS, SDL_Surface *surface)
|
||||
+{
|
||||
+ return;
|
||||
+}
|
||||
+
|
||||
+/* We need to wait for vertical retrace on page flipped displays */
|
||||
+static int ORBITAL_LockHWSurface(_THIS, SDL_Surface *surface)
|
||||
+{
|
||||
+ return(0);
|
||||
+}
|
||||
+
|
||||
+static void ORBITAL_UnlockHWSurface(_THIS, SDL_Surface *surface)
|
||||
+{
|
||||
+ return;
|
||||
+}
|
||||
+
|
||||
+static void ORBITAL_UpdateRects(_THIS, int numrects, SDL_Rect *rects)
|
||||
+{
|
||||
+ write(this->hidden->fd, this->hidden->buffer, this->hidden->w * this->hidden->h * 4);
|
||||
+}
|
||||
+
|
||||
+int ORBITAL_SetColors(_THIS, int firstcolor, int ncolors, SDL_Color *colors)
|
||||
+{
|
||||
+ /* do nothing of note. */
|
||||
+ return(1);
|
||||
+}
|
||||
+
|
||||
+/* Note: If we are terminated, this could be called in the middle of
|
||||
+ another SDL video routine -- notably UpdateRects.
|
||||
+*/
|
||||
+void ORBITAL_VideoQuit(_THIS)
|
||||
+{
|
||||
+ if ( this->hidden->fd ) {
|
||||
+ close( this->hidden->fd );
|
||||
+ this->hidden->fd = 0;
|
||||
+ }
|
||||
+
|
||||
+ if (this->screen->pixels != NULL)
|
||||
+ {
|
||||
+ SDL_free(this->screen->pixels);
|
||||
+ this->screen->pixels = NULL;
|
||||
+ }
|
||||
+}
|
||||
diff -rupN sdl/src/video/orbital/SDL_orbitalvideo.h sdl-redox/src/video/orbital/SDL_orbitalvideo.h
|
||||
--- sdl/src/video/orbital/SDL_orbitalvideo.h 1969-12-31 16:00:00.000000000 -0800
|
||||
+++ sdl-redox/src/video/orbital/SDL_orbitalvideo.h 2016-07-27 18:17:26.687240818 -0700
|
||||
@@ -0,0 +1,41 @@
|
||||
+/*
|
||||
+ SDL - Simple DirectMedia Layer
|
||||
+ Copyright (C) 1997-2012 Sam Lantinga
|
||||
+
|
||||
+ This library is free software; you can redistribute it and/or
|
||||
+ modify it under the terms of the GNU Lesser General Public
|
||||
+ License as published by the Free Software Foundation; either
|
||||
+ version 2.1 of the License, or (at your option) any later version.
|
||||
+
|
||||
+ This library is distributed in the hope that it will be useful,
|
||||
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
+ Lesser General Public License for more details.
|
||||
+
|
||||
+ You should have received a copy of the GNU Lesser General Public
|
||||
+ License along with this library; if not, write to the Free Software
|
||||
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
+
|
||||
+ Sam Lantinga
|
||||
+ slouken@libsdl.org
|
||||
+*/
|
||||
+#include "SDL_config.h"
|
||||
+
|
||||
+#ifndef _SDL_orbitalvideo_h
|
||||
+#define _SDL_orbitalvideo_h
|
||||
+
|
||||
+#include "../SDL_sysvideo.h"
|
||||
+
|
||||
+/* Hidden "this" pointer for the video functions */
|
||||
+#define _THIS SDL_VideoDevice *this
|
||||
+
|
||||
+
|
||||
+/* Private display data */
|
||||
+
|
||||
+struct SDL_PrivateVideoData {
|
||||
+ int w, h;
|
||||
+ int fd;
|
||||
+ void *buffer;
|
||||
+};
|
||||
+
|
||||
+#endif /* _SDL_orbitalvideo_h */
|
||||
diff -rupN sdl/src/video/SDL_sysvideo.h sdl-redox/src/video/SDL_sysvideo.h
|
||||
--- sdl/src/video/SDL_sysvideo.h 2012-01-18 22:30:06.000000000 -0800
|
||||
+++ sdl-redox/src/video/SDL_sysvideo.h 2016-07-27 18:17:26.683907466 -0700
|
||||
@@ -410,6 +410,9 @@ extern VideoBootStrap AALIB_bootstrap;
|
||||
#if SDL_VIDEO_DRIVER_CACA
|
||||
extern VideoBootStrap CACA_bootstrap;
|
||||
#endif
|
||||
+#if SDL_VIDEO_DRIVER_ORBITAL
|
||||
+extern VideoBootStrap ORBITAL_bootstrap;
|
||||
+#endif
|
||||
#if SDL_VIDEO_DRIVER_DUMMY
|
||||
extern VideoBootStrap DUMMY_bootstrap;
|
||||
#endif
|
||||
diff -rupN sdl/src/video/SDL_video.c sdl-redox/src/video/SDL_video.c
|
||||
--- sdl/src/video/SDL_video.c 2012-01-18 22:30:06.000000000 -0800
|
||||
+++ sdl-redox/src/video/SDL_video.c 2016-07-27 18:17:26.683907466 -0700
|
||||
@@ -126,6 +126,9 @@ static VideoBootStrap *bootstrap[] = {
|
||||
#if SDL_VIDEO_DRIVER_CACA
|
||||
&CACA_bootstrap,
|
||||
#endif
|
||||
+#if SDL_VIDEO_DRIVER_ORBITAL
|
||||
+ &ORBITAL_bootstrap,
|
||||
+#endif
|
||||
#if SDL_VIDEO_DRIVER_DUMMY
|
||||
&DUMMY_bootstrap,
|
||||
#endif
|
||||
35
recipes/sdl/recipe.sh
Normal file
35
recipes/sdl/recipe.sh
Normal file
@ -0,0 +1,35 @@
|
||||
VERSION=1.2.15
|
||||
TAR=https://www.libsdl.org/release/SDL-$VERSION.tar.gz
|
||||
|
||||
function recipe_version {
|
||||
echo "$VERSION"
|
||||
skip=1
|
||||
}
|
||||
|
||||
function recipe_update {
|
||||
echo "skipping update"
|
||||
skip=1
|
||||
}
|
||||
|
||||
function recipe_build {
|
||||
./autogen.sh
|
||||
./configure --prefix=/ --host=${HOST} --disable-shared --disable-pulseaudio --disable-video-x11 --disable-cdrom --disable-loadso --disable-threads --disable-timers --enable-audio --enable-dummyaudio --enable-video-orbital
|
||||
make
|
||||
skip=1
|
||||
}
|
||||
|
||||
function recipe_test {
|
||||
echo "skipping test"
|
||||
skip=1
|
||||
}
|
||||
|
||||
function recipe_clean {
|
||||
make clean
|
||||
skip=1
|
||||
}
|
||||
|
||||
function recipe_stage {
|
||||
dest="$(realpath $1)"
|
||||
make DESTDIR="$dest" install
|
||||
skip=1
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user