As discussed during the dev day.
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
endmenu
menu "Games"
-source "package/games/gnuchess/Config.in"
-source "package/games/prboom/Config.in"
-source "package/games/doom-wad/Config.in"
-source "package/games/rubix/Config.in"
+source "package/gnuchess/Config.in"
+source "package/prboom/Config.in"
+source "package/doom-wad/Config.in"
+source "package/rubix/Config.in"
endmenu
menu "Graphic libraries and applications (graphic/text)"
--- /dev/null
+config BR2_PACKAGE_DOOM_WAD
+ bool "shareware Doom WAD file"
+ depends on BR2_PACKAGE_PRBOOM
+ help
+ This will install the shareware wad data file for the doom game.
+
+ The wad file will be placed in the /usr/share/games/doom directory.
--- /dev/null
+#############################################################
+#
+# doom-wad
+#
+#############################################################
+
+DOOM_WAD_VERSION = 1.8
+DOOM_WAD_SOURCE = doom-$(DOOM_WAD_VERSION).wad.gz
+DOOM_WAD_SITE = ftp://ftp.idsoftware.com/idstuff/doom/
+
+define DOOM_WAD_EXTRACT_CMDS
+ $(ZCAT) $(DL_DIR)/$($(PKG)_SOURCE) > $(@D)/doom1.wad
+endef
+
+define DOOM_WAD_INSTALL_TARGET_CMDS
+ $(INSTALL) -m 0644 -D $(@D)/doom1.wad \
+ $(TARGET_DIR)/usr/share/games/doom/doom1.wad
+endef
+
+define DOOM_WAD_UNINSTALL_TARGET_CMDS
+ rm -f $(TARGET_DIR)/usr/share/games/doom/doom1.wad
+endef
+
+$(eval $(generic-package))
+++ /dev/null
-config BR2_PACKAGE_DOOM_WAD
- bool "shareware Doom WAD file"
- depends on BR2_PACKAGE_PRBOOM
- help
- This will install the shareware wad data file for the doom game.
-
- The wad file will be placed in the /usr/share/games/doom directory.
+++ /dev/null
-#############################################################
-#
-# doom-wad
-#
-#############################################################
-
-DOOM_WAD_VERSION = 1.8
-DOOM_WAD_SOURCE = doom-$(DOOM_WAD_VERSION).wad.gz
-DOOM_WAD_SITE = ftp://ftp.idsoftware.com/idstuff/doom/
-
-define DOOM_WAD_EXTRACT_CMDS
- $(ZCAT) $(DL_DIR)/$($(PKG)_SOURCE) > $(@D)/doom1.wad
-endef
-
-define DOOM_WAD_INSTALL_TARGET_CMDS
- $(INSTALL) -m 0644 -D $(@D)/doom1.wad \
- $(TARGET_DIR)/usr/share/games/doom/doom1.wad
-endef
-
-define DOOM_WAD_UNINSTALL_TARGET_CMDS
- rm -f $(TARGET_DIR)/usr/share/games/doom/doom1.wad
-endef
-
-$(eval $(generic-package))
+++ /dev/null
-include package/games/*/*.mk
+++ /dev/null
-config BR2_PACKAGE_GNUCHESS
- bool "gnuchess"
- depends on BR2_TOOLCHAIN_HAS_THREADS
- help
- GNU Chess lets most modern computers play a full game of chess.
-
- http://ftp.gnu.org/pub/gnu/chess
-
-comment "gnuchess requires a toolchain with thread support"
- depends on !BR2_TOOLCHAIN_HAS_THREADS
+++ /dev/null
-This patch fixes a conflict between the C library getline() function
-and gnuchess getline() function.
-
-Patch borrowed from the gnuchess Debian package.
-
-Index: gnuchess-5.07/src/input.c
-===================================================================
---- gnuchess-5.07.orig/src/input.c 2009-09-29 16:01:38.000000000 +0200
-+++ gnuchess-5.07/src/input.c 2009-09-29 16:02:57.000000000 +0200
-@@ -127,7 +127,7 @@
- (RealGameCnt+1)/2 + 1 );
- }
- pthread_mutex_lock(&input_mutex);
-- getline(prompt);
-+ get_line(prompt);
- input_status = INPUT_AVAILABLE;
- pthread_cond_signal(&input_cond);
- pthread_mutex_unlock(&input_mutex);
-@@ -173,13 +173,13 @@
- {
- #ifdef HAVE_LIBREADLINE
- if (isatty(STDIN_FILENO)) {
-- getline = getline_readline;
-+ get_line = getline_readline;
- using_history();
- } else {
-- getline = getline_standard;
-+ get_line = getline_standard;
- }
- #else
-- getline = getline_standard;
-+ get_line = getline_standard;
- #endif
- /* Start input thread */
- pthread_create(&input_thread, NULL, input_func, NULL);
-Index: gnuchess-5.07/src/common.h
-===================================================================
---- gnuchess-5.07.orig/src/common.h 2009-09-29 16:06:17.000000000 +0200
-+++ gnuchess-5.07/src/common.h 2009-09-29 16:06:40.000000000 +0200
-@@ -745,7 +745,7 @@
- * Input routine, initialized to one of the specific
- * input routines. The given argument is the prompt.
- */
--void (*getline) (char *);
-+void (*get_line) (char *);
-
- #define MAXSTR 128
- extern char inputstr[MAXSTR];
+++ /dev/null
---- a/src/input.c 2003-07-01 13:06:43.000000000 -0400
-+++ a/src/input.c 2008-02-13 12:24:43.000000000 -0500
-@@ -92,7 +92,7 @@ void getline_standard(char *p)
- fgets(inputstr, MAXSTR, stdin);
- }
-
--static pthread_t input_thread;
-+pthread_t input_thread;
-
- /* Mutex and condition variable for thread communication */
-
+++ /dev/null
-#############################################################
-#
-# gnuchess
-#
-#############################################################
-GNUCHESS_VERSION = 5.07
-GNUCHESS_SOURCE = gnuchess-$(GNUCHESS_VERSION).tar.gz
-GNUCHESS_SITE = $(BR2_GNU_MIRROR)/chess
-
-GNUCHESS_DEPENDENCIES = $(if $(BR2_PACKAGE_READLINE),readline)
-
-$(eval $(autotools-package))
-
+++ /dev/null
-config BR2_PACKAGE_PRBOOM
- bool "PrBoom"
- select BR2_PACKAGE_SDL
- select BR2_PACKAGE_SDL_MIXER
- select BR2_PACKAGE_SDL_NET
- help
- PrBoom is a Doom client which allows you to play the good old game on
- newer hardware. It even supports higher resolution and better
- rendring, while still keeping the old style alive.
-
- http://prboom.sourceforge.net/
+++ /dev/null
-[PATCH] fix build with libpng 1.4.x
-
-In 1.4.x the png_*_NULL defines are gone. Replace them with a normal
-NULL instead.
-
-Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
----
- src/SDL/i_sshot.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-Index: prboom-2.5.0/src/SDL/i_sshot.c
-===================================================================
---- prboom-2.5.0.orig/src/SDL/i_sshot.c
-+++ prboom-2.5.0/src/SDL/i_sshot.c
-@@ -231,7 +231,7 @@ int I_ScreenShot (const char *fname)
- if (fp)
- {
- png_struct *png_ptr = png_create_write_struct(
-- PNG_LIBPNG_VER_STRING, png_error_ptr_NULL, error_fn, warning_fn);
-+ PNG_LIBPNG_VER_STRING, NULL, error_fn, warning_fn);
-
- if (png_ptr)
- {
-@@ -279,7 +279,7 @@ int I_ScreenShot (const char *fname)
- break;
- }
- }
-- png_destroy_write_struct(&png_ptr, png_infopp_NULL);
-+ png_destroy_write_struct(&png_ptr, NULL);
- }
- fclose(fp);
- }
+++ /dev/null
-#############################################################
-#
-# PrBoom
-#
-#############################################################
-PRBOOM_VERSION = 2.5.0
-PRBOOM_SITE = http://downloads.sourceforge.net/project/prboom/prboom%20stable/$(PRBOOM_VERSION)
-PRBOOM_CONF_ENV = ac_cv_type_uid_t=yes
-PRBOOM_DEPENDENCIES = sdl sdl_net sdl_mixer
-
-ifeq ($(BR2_PACKAGE_LIBPNG),y)
-PRBOOM_DEPENDENCIES += libpng
-endif
-
-PRBOOM_CONF_OPT = \
- --oldincludedir=$(STAGING_DIR)/usr/include \
- --with-sdl-prefix=$(STAGING_DIR)/usr \
- --with-sdl-exec-prefix=$(STAGING_DIR)/usr \
- --disable-cpu-opt \
- --disable-sdltest \
- --disable-gl
-
-# endianness detection isn't used when cross compiling
-define PRBOOM_BIG_ENDIAN_FIXUP
- $(SED) 's,.*#undef WORDS_BIGENDIAN.*,#define WORDS_BIGENDIAN 1,g' \
- $(PRBOOM_DIR)/config.h
-endef
-
-ifeq ($(BR2_ENDIAN),"BIG")
-PRBOOM_POST_CONFIGURE_HOOKS += PRBOOM_BIG_ENDIAN_FIXUP
-endif
-
-define PRBOOM_INSTALL_TARGET_CMDS
- $(INSTALL) -D $(@D)/src/prboom $(TARGET_DIR)/usr/games/prboom
- $(INSTALL) -D $(@D)/src/prboom-game-server $(TARGET_DIR)/usr/games/prboom-game-server
- $(INSTALL) -D $(@D)/data/prboom.wad $(TARGET_DIR)/usr/share/games/doom/prboom.wad
-endef
-
-define PRBOOM_UINSTALL_TARGET_CMDS
- rm -rf $(TARGET_DIR)/usr/share/games/doom/prboom.wad \
- $(TARGET_DIR)/usr/games/prboom-game-server \
- $(TARGET_DIR)/usr/games/prboom
-endef
-
-$(eval $(autotools-package))
+++ /dev/null
-config BR2_PACKAGE_RUBIX
- bool "rubix"
- depends on BR2_PACKAGE_XORG7
- help
- A 3D rubiks cube game for X
-
- http://mirror.egtvedt.no/avr32linux.org/twiki/pub/Main/Rubix
+++ /dev/null
-Use strstr() instead of index(), since index() is a legacy function
-and it may not be available in uClibc, depending on the configuration.
-
-Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
-
-Index: rubix-1.0.5/cube.c
-===================================================================
---- rubix-1.0.5.orig/cube.c 2010-02-14 14:19:05.000000000 +0100
-+++ rubix-1.0.5/cube.c 2010-02-14 14:19:14.000000000 +0100
-@@ -257,7 +257,7 @@
- if (i==-1) goto finish;
- if (buffer[0]=='%') goto new_section;
- buffer[0]=toupper(buffer[0]);
-- ptr = index(buffer, '=');
-+ ptr = strstr(buffer, '=');
- if (ptr) {
- ++ptr;
- while (isspace(*ptr)) ++ptr;
+++ /dev/null
-diff -Nrup rubix-1.0.5/fillpoly.c rubix-1.0.5-avr32/fillpoly.c
---- rubix-1.0.5/fillpoly.c 2003-10-12 15:41:43.000000000 -0400
-+++ rubix-1.0.5-avr32/fillpoly.c 2008-02-29 12:39:51.000000000 -0500
-@@ -435,7 +435,7 @@ void fill_lines(device *d, int thecol)
- );
- #endif
- }
-- } else if (d->depth==16) { /* here 16bpp */
-+ } else if ((d->depth==16) | (d->depth==15)) { /* here 16bpp */
- register int i;
- #ifndef PC_ARCHI
- register int j;
-diff -Nrup rubix-1.0.5/line.c rubix-1.0.5-avr32/line.c
---- rubix-1.0.5/line.c 2003-10-12 14:15:19.000000000 -0400
-+++ rubix-1.0.5-avr32/line.c 2008-02-29 12:39:51.000000000 -0500
-@@ -1317,7 +1317,7 @@ void drawline(device *d, line *l)
- #endif
- if (d->depth==8)
- drawline8(d, l);
-- else if (d->depth==16)
-+ else if ((d->depth==16) | (d->depth==15))
- drawline16(d, l);
- else if (d->depth==24)
- drawline24(d, l);
-diff -Nrup rubix-1.0.5/Makefile rubix-1.0.5-avr32/Makefile
---- rubix-1.0.5/Makefile 2003-12-04 14:27:58.000000000 -0500
-+++ rubix-1.0.5-avr32/Makefile 2008-02-29 12:58:30.000000000 -0500
-@@ -11,21 +11,17 @@
- # Customize to fit your needs (especially if it does not work for now).
-
- LANGUAGE=ENGLISH
--GAMESDIR=/usr/games
-
- #architecture=-DPC_ARCHI
-
- # For Solaris
- #EXTRALIBS=-lsocket
-
--CC=gcc
- CFLAGS=-Wall -O3 -fomit-frame-pointer -ffast-math \
- -DGAMESDIR="\"$(GAMESDIR)\"" \
- -D$(LANGUAGE) $(architecture)
-
- #CFLAGS=-Wall -g -ffast-math -Iplayer $(architecture)
--XINC=-I/usr/X11R6/include
--XLIB=-L/usr/X11R6/lib -lX11
-
- #the following should not be changed.
-
-@@ -37,7 +33,7 @@ rubix : $(OBJ)
-
- install :
- mkdir -p $(GAMESDIR)
-- install -c -s rubix $(GAMESDIR)
-+ install -c rubix $(GAMESDIR)
-
- clean :
- rm -f *.o *~ core *.bak *.dat gmon.out
-diff -Nrup rubix-1.0.5/screen.c rubix-1.0.5-avr32/screen.c
---- rubix-1.0.5/screen.c 2004-04-26 04:26:05.000000000 -0400
-+++ rubix-1.0.5-avr32/screen.c 2008-02-29 12:39:51.000000000 -0500
-@@ -80,11 +80,17 @@ void error_statement(SCREEN *s)
-
- int reset_data_buffers(SCREEN *s)
- {
-+ int temp;
-
- if (s->im)
- XDestroyImage(s->im);
-+ if (s->depth == 15) {
-+ temp=16;
-+ } else {
-+ temp=s->depth;
-+ }
-
-- s->buffer=(char *)malloc(((SCREEN_X+7)/8)*SCREEN_Y*s->depth);
-+ s->buffer=(char *)malloc(((SCREEN_X+7)/8)*SCREEN_Y*temp);
-
- if (!s->buffer) {
- error_statement(s);
-@@ -106,7 +112,7 @@ int reset_data_buffers(SCREEN *s)
- */
- /* Sed - december 2003 - no it has to be 8 */
- s->im=XCreateImage(s->d, DefaultVisual(s->d, DefaultScreen(s->d)),
-- s->depth==32?24:s->depth, ZPixmap,
-+ s->depth, ZPixmap,
- 0, s->buffer, SCREEN_X, SCREEN_Y, 8, 0);
-
- if (!s->im) {
-@@ -139,8 +145,8 @@ int init_screen(SCREEN *s)
-
- s->depth=DefaultDepth(s->d, DefaultScreen(s->d));
-
-- if (s->depth!=8 && s->depth!=16 && s->depth!=24) {
-- fprintf(stderr, "screen depth not supported (only 8, 16 and 24bpp (which means 32bpp too) handled\n");
-+ if (s->depth!=8 && s->depth!=15 && s->depth!=16 && s->depth!=24) {
-+ fprintf(stderr, "screen depth not supported (only 8, 15, 16 and 24bpp (which means 32bpp too) handled\n");
- XCloseDisplay(s->d);
- s->d=(Display *)0;
- return -1;
-@@ -182,10 +188,10 @@ int init_screen(SCREEN *s)
-
- /* let's create and map our window */
- s->w=XCreateWindow(s->d, DefaultRootWindow(s->d), 0, 0,
-- SCREEN_X, SCREEN_Y, 3, s->depth==32?24:s->depth,
-+ SCREEN_X, SCREEN_Y, 3, s->depth,
- CopyFromParent, CopyFromParent, 0, NULL);
- s->h=XCreateWindow(s->d, DefaultRootWindow(s->d), 0, 0,
-- HELP_X, HELP_Y, 3, s->depth==32?24:s->depth,
-+ HELP_X, HELP_Y, 3, s->depth,
- CopyFromParent, CopyFromParent, 0, NULL);
-
- xch.res_name = "rubix";
-@@ -946,13 +952,18 @@ void close_screen(SCREEN *s)
- void clear_screen(SCREEN *s)
- {
- /* fill s->im with pixel[10], avoid XPutPixel which is rather slow... */
-- int i, w, dw;
-+ int i, w, dw, temp;
-+ if (s->depth == 15) {
-+ temp = 16;
-+ } else {
-+ temp = s->depth;
-+ }
- w = (SCREEN_X+7)/8;
-- dw = s->depth/8;
-+ dw = temp/8;
- XPutPixel(s->im, 0, 0, pixel[10]);
- for (i=1; i<8*w; i++)
- memcpy(s->buffer + i*dw, s->buffer, dw);
-- w = w * s->depth;
-+ w = w * temp;
- for (i=1; i<SCREEN_Y; i++)
- memcpy(s->buffer + i*w, s->buffer, w);
- }
+++ /dev/null
-#############################################################
-#
-# rubix
-#
-#############################################################
-RUBIX_VERSION = 1.0.5
-RUBIX_SOURCE = rubix-$(RUBIX_VERSION).tar.bz2
-RUBIX_SITE = http://mirror.egtvedt.no/avr32linux.org/twiki/pub/Main/Rubix
-RUBIX_INSTALL_TARGET_OPT = GAMESDIR=$(TARGET_DIR)/usr/games install
-
-RUBIX_MAKE_OPT = CC="$(TARGET_CC)" XINC="-I$(STAGING_DIR)/usr/include/X11" XLIB="-L$(STAGING_DIR)/usr/lib -lX11"
-
-RUBIX_DEPENDENCIES = xserver_xorg-server
-
-$(eval $(autotools-package))
-
--- /dev/null
+config BR2_PACKAGE_GNUCHESS
+ bool "gnuchess"
+ depends on BR2_TOOLCHAIN_HAS_THREADS
+ help
+ GNU Chess lets most modern computers play a full game of chess.
+
+ http://ftp.gnu.org/pub/gnu/chess
+
+comment "gnuchess requires a toolchain with thread support"
+ depends on !BR2_TOOLCHAIN_HAS_THREADS
--- /dev/null
+This patch fixes a conflict between the C library getline() function
+and gnuchess getline() function.
+
+Patch borrowed from the gnuchess Debian package.
+
+Index: gnuchess-5.07/src/input.c
+===================================================================
+--- gnuchess-5.07.orig/src/input.c 2009-09-29 16:01:38.000000000 +0200
++++ gnuchess-5.07/src/input.c 2009-09-29 16:02:57.000000000 +0200
+@@ -127,7 +127,7 @@
+ (RealGameCnt+1)/2 + 1 );
+ }
+ pthread_mutex_lock(&input_mutex);
+- getline(prompt);
++ get_line(prompt);
+ input_status = INPUT_AVAILABLE;
+ pthread_cond_signal(&input_cond);
+ pthread_mutex_unlock(&input_mutex);
+@@ -173,13 +173,13 @@
+ {
+ #ifdef HAVE_LIBREADLINE
+ if (isatty(STDIN_FILENO)) {
+- getline = getline_readline;
++ get_line = getline_readline;
+ using_history();
+ } else {
+- getline = getline_standard;
++ get_line = getline_standard;
+ }
+ #else
+- getline = getline_standard;
++ get_line = getline_standard;
+ #endif
+ /* Start input thread */
+ pthread_create(&input_thread, NULL, input_func, NULL);
+Index: gnuchess-5.07/src/common.h
+===================================================================
+--- gnuchess-5.07.orig/src/common.h 2009-09-29 16:06:17.000000000 +0200
++++ gnuchess-5.07/src/common.h 2009-09-29 16:06:40.000000000 +0200
+@@ -745,7 +745,7 @@
+ * Input routine, initialized to one of the specific
+ * input routines. The given argument is the prompt.
+ */
+-void (*getline) (char *);
++void (*get_line) (char *);
+
+ #define MAXSTR 128
+ extern char inputstr[MAXSTR];
--- /dev/null
+--- a/src/input.c 2003-07-01 13:06:43.000000000 -0400
++++ a/src/input.c 2008-02-13 12:24:43.000000000 -0500
+@@ -92,7 +92,7 @@ void getline_standard(char *p)
+ fgets(inputstr, MAXSTR, stdin);
+ }
+
+-static pthread_t input_thread;
++pthread_t input_thread;
+
+ /* Mutex and condition variable for thread communication */
+
--- /dev/null
+#############################################################
+#
+# gnuchess
+#
+#############################################################
+GNUCHESS_VERSION = 5.07
+GNUCHESS_SOURCE = gnuchess-$(GNUCHESS_VERSION).tar.gz
+GNUCHESS_SITE = $(BR2_GNU_MIRROR)/chess
+
+GNUCHESS_DEPENDENCIES = $(if $(BR2_PACKAGE_READLINE),readline)
+
+$(eval $(autotools-package))
+
--- /dev/null
+config BR2_PACKAGE_PRBOOM
+ bool "PrBoom"
+ select BR2_PACKAGE_SDL
+ select BR2_PACKAGE_SDL_MIXER
+ select BR2_PACKAGE_SDL_NET
+ help
+ PrBoom is a Doom client which allows you to play the good old game on
+ newer hardware. It even supports higher resolution and better
+ rendring, while still keeping the old style alive.
+
+ http://prboom.sourceforge.net/
--- /dev/null
+[PATCH] fix build with libpng 1.4.x
+
+In 1.4.x the png_*_NULL defines are gone. Replace them with a normal
+NULL instead.
+
+Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
+---
+ src/SDL/i_sshot.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+Index: prboom-2.5.0/src/SDL/i_sshot.c
+===================================================================
+--- prboom-2.5.0.orig/src/SDL/i_sshot.c
++++ prboom-2.5.0/src/SDL/i_sshot.c
+@@ -231,7 +231,7 @@ int I_ScreenShot (const char *fname)
+ if (fp)
+ {
+ png_struct *png_ptr = png_create_write_struct(
+- PNG_LIBPNG_VER_STRING, png_error_ptr_NULL, error_fn, warning_fn);
++ PNG_LIBPNG_VER_STRING, NULL, error_fn, warning_fn);
+
+ if (png_ptr)
+ {
+@@ -279,7 +279,7 @@ int I_ScreenShot (const char *fname)
+ break;
+ }
+ }
+- png_destroy_write_struct(&png_ptr, png_infopp_NULL);
++ png_destroy_write_struct(&png_ptr, NULL);
+ }
+ fclose(fp);
+ }
--- /dev/null
+#############################################################
+#
+# PrBoom
+#
+#############################################################
+PRBOOM_VERSION = 2.5.0
+PRBOOM_SITE = http://downloads.sourceforge.net/project/prboom/prboom%20stable/$(PRBOOM_VERSION)
+PRBOOM_CONF_ENV = ac_cv_type_uid_t=yes
+PRBOOM_DEPENDENCIES = sdl sdl_net sdl_mixer
+
+ifeq ($(BR2_PACKAGE_LIBPNG),y)
+PRBOOM_DEPENDENCIES += libpng
+endif
+
+PRBOOM_CONF_OPT = \
+ --oldincludedir=$(STAGING_DIR)/usr/include \
+ --with-sdl-prefix=$(STAGING_DIR)/usr \
+ --with-sdl-exec-prefix=$(STAGING_DIR)/usr \
+ --disable-cpu-opt \
+ --disable-sdltest \
+ --disable-gl
+
+# endianness detection isn't used when cross compiling
+define PRBOOM_BIG_ENDIAN_FIXUP
+ $(SED) 's,.*#undef WORDS_BIGENDIAN.*,#define WORDS_BIGENDIAN 1,g' \
+ $(PRBOOM_DIR)/config.h
+endef
+
+ifeq ($(BR2_ENDIAN),"BIG")
+PRBOOM_POST_CONFIGURE_HOOKS += PRBOOM_BIG_ENDIAN_FIXUP
+endif
+
+define PRBOOM_INSTALL_TARGET_CMDS
+ $(INSTALL) -D $(@D)/src/prboom $(TARGET_DIR)/usr/games/prboom
+ $(INSTALL) -D $(@D)/src/prboom-game-server $(TARGET_DIR)/usr/games/prboom-game-server
+ $(INSTALL) -D $(@D)/data/prboom.wad $(TARGET_DIR)/usr/share/games/doom/prboom.wad
+endef
+
+define PRBOOM_UINSTALL_TARGET_CMDS
+ rm -rf $(TARGET_DIR)/usr/share/games/doom/prboom.wad \
+ $(TARGET_DIR)/usr/games/prboom-game-server \
+ $(TARGET_DIR)/usr/games/prboom
+endef
+
+$(eval $(autotools-package))
--- /dev/null
+config BR2_PACKAGE_RUBIX
+ bool "rubix"
+ depends on BR2_PACKAGE_XORG7
+ help
+ A 3D rubiks cube game for X
+
+ http://mirror.egtvedt.no/avr32linux.org/twiki/pub/Main/Rubix
--- /dev/null
+Use strstr() instead of index(), since index() is a legacy function
+and it may not be available in uClibc, depending on the configuration.
+
+Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+
+Index: rubix-1.0.5/cube.c
+===================================================================
+--- rubix-1.0.5.orig/cube.c 2010-02-14 14:19:05.000000000 +0100
++++ rubix-1.0.5/cube.c 2010-02-14 14:19:14.000000000 +0100
+@@ -257,7 +257,7 @@
+ if (i==-1) goto finish;
+ if (buffer[0]=='%') goto new_section;
+ buffer[0]=toupper(buffer[0]);
+- ptr = index(buffer, '=');
++ ptr = strstr(buffer, '=');
+ if (ptr) {
+ ++ptr;
+ while (isspace(*ptr)) ++ptr;
--- /dev/null
+diff -Nrup rubix-1.0.5/fillpoly.c rubix-1.0.5-avr32/fillpoly.c
+--- rubix-1.0.5/fillpoly.c 2003-10-12 15:41:43.000000000 -0400
++++ rubix-1.0.5-avr32/fillpoly.c 2008-02-29 12:39:51.000000000 -0500
+@@ -435,7 +435,7 @@ void fill_lines(device *d, int thecol)
+ );
+ #endif
+ }
+- } else if (d->depth==16) { /* here 16bpp */
++ } else if ((d->depth==16) | (d->depth==15)) { /* here 16bpp */
+ register int i;
+ #ifndef PC_ARCHI
+ register int j;
+diff -Nrup rubix-1.0.5/line.c rubix-1.0.5-avr32/line.c
+--- rubix-1.0.5/line.c 2003-10-12 14:15:19.000000000 -0400
++++ rubix-1.0.5-avr32/line.c 2008-02-29 12:39:51.000000000 -0500
+@@ -1317,7 +1317,7 @@ void drawline(device *d, line *l)
+ #endif
+ if (d->depth==8)
+ drawline8(d, l);
+- else if (d->depth==16)
++ else if ((d->depth==16) | (d->depth==15))
+ drawline16(d, l);
+ else if (d->depth==24)
+ drawline24(d, l);
+diff -Nrup rubix-1.0.5/Makefile rubix-1.0.5-avr32/Makefile
+--- rubix-1.0.5/Makefile 2003-12-04 14:27:58.000000000 -0500
++++ rubix-1.0.5-avr32/Makefile 2008-02-29 12:58:30.000000000 -0500
+@@ -11,21 +11,17 @@
+ # Customize to fit your needs (especially if it does not work for now).
+
+ LANGUAGE=ENGLISH
+-GAMESDIR=/usr/games
+
+ #architecture=-DPC_ARCHI
+
+ # For Solaris
+ #EXTRALIBS=-lsocket
+
+-CC=gcc
+ CFLAGS=-Wall -O3 -fomit-frame-pointer -ffast-math \
+ -DGAMESDIR="\"$(GAMESDIR)\"" \
+ -D$(LANGUAGE) $(architecture)
+
+ #CFLAGS=-Wall -g -ffast-math -Iplayer $(architecture)
+-XINC=-I/usr/X11R6/include
+-XLIB=-L/usr/X11R6/lib -lX11
+
+ #the following should not be changed.
+
+@@ -37,7 +33,7 @@ rubix : $(OBJ)
+
+ install :
+ mkdir -p $(GAMESDIR)
+- install -c -s rubix $(GAMESDIR)
++ install -c rubix $(GAMESDIR)
+
+ clean :
+ rm -f *.o *~ core *.bak *.dat gmon.out
+diff -Nrup rubix-1.0.5/screen.c rubix-1.0.5-avr32/screen.c
+--- rubix-1.0.5/screen.c 2004-04-26 04:26:05.000000000 -0400
++++ rubix-1.0.5-avr32/screen.c 2008-02-29 12:39:51.000000000 -0500
+@@ -80,11 +80,17 @@ void error_statement(SCREEN *s)
+
+ int reset_data_buffers(SCREEN *s)
+ {
++ int temp;
+
+ if (s->im)
+ XDestroyImage(s->im);
++ if (s->depth == 15) {
++ temp=16;
++ } else {
++ temp=s->depth;
++ }
+
+- s->buffer=(char *)malloc(((SCREEN_X+7)/8)*SCREEN_Y*s->depth);
++ s->buffer=(char *)malloc(((SCREEN_X+7)/8)*SCREEN_Y*temp);
+
+ if (!s->buffer) {
+ error_statement(s);
+@@ -106,7 +112,7 @@ int reset_data_buffers(SCREEN *s)
+ */
+ /* Sed - december 2003 - no it has to be 8 */
+ s->im=XCreateImage(s->d, DefaultVisual(s->d, DefaultScreen(s->d)),
+- s->depth==32?24:s->depth, ZPixmap,
++ s->depth, ZPixmap,
+ 0, s->buffer, SCREEN_X, SCREEN_Y, 8, 0);
+
+ if (!s->im) {
+@@ -139,8 +145,8 @@ int init_screen(SCREEN *s)
+
+ s->depth=DefaultDepth(s->d, DefaultScreen(s->d));
+
+- if (s->depth!=8 && s->depth!=16 && s->depth!=24) {
+- fprintf(stderr, "screen depth not supported (only 8, 16 and 24bpp (which means 32bpp too) handled\n");
++ if (s->depth!=8 && s->depth!=15 && s->depth!=16 && s->depth!=24) {
++ fprintf(stderr, "screen depth not supported (only 8, 15, 16 and 24bpp (which means 32bpp too) handled\n");
+ XCloseDisplay(s->d);
+ s->d=(Display *)0;
+ return -1;
+@@ -182,10 +188,10 @@ int init_screen(SCREEN *s)
+
+ /* let's create and map our window */
+ s->w=XCreateWindow(s->d, DefaultRootWindow(s->d), 0, 0,
+- SCREEN_X, SCREEN_Y, 3, s->depth==32?24:s->depth,
++ SCREEN_X, SCREEN_Y, 3, s->depth,
+ CopyFromParent, CopyFromParent, 0, NULL);
+ s->h=XCreateWindow(s->d, DefaultRootWindow(s->d), 0, 0,
+- HELP_X, HELP_Y, 3, s->depth==32?24:s->depth,
++ HELP_X, HELP_Y, 3, s->depth,
+ CopyFromParent, CopyFromParent, 0, NULL);
+
+ xch.res_name = "rubix";
+@@ -946,13 +952,18 @@ void close_screen(SCREEN *s)
+ void clear_screen(SCREEN *s)
+ {
+ /* fill s->im with pixel[10], avoid XPutPixel which is rather slow... */
+- int i, w, dw;
++ int i, w, dw, temp;
++ if (s->depth == 15) {
++ temp = 16;
++ } else {
++ temp = s->depth;
++ }
+ w = (SCREEN_X+7)/8;
+- dw = s->depth/8;
++ dw = temp/8;
+ XPutPixel(s->im, 0, 0, pixel[10]);
+ for (i=1; i<8*w; i++)
+ memcpy(s->buffer + i*dw, s->buffer, dw);
+- w = w * s->depth;
++ w = w * temp;
+ for (i=1; i<SCREEN_Y; i++)
+ memcpy(s->buffer + i*w, s->buffer, w);
+ }
--- /dev/null
+#############################################################
+#
+# rubix
+#
+#############################################################
+RUBIX_VERSION = 1.0.5
+RUBIX_SOURCE = rubix-$(RUBIX_VERSION).tar.bz2
+RUBIX_SITE = http://mirror.egtvedt.no/avr32linux.org/twiki/pub/Main/Rubix
+RUBIX_INSTALL_TARGET_OPT = GAMESDIR=$(TARGET_DIR)/usr/games install
+
+RUBIX_MAKE_OPT = CC="$(TARGET_CC)" XINC="-I$(STAGING_DIR)/usr/include/X11" XLIB="-L$(STAGING_DIR)/usr/lib -lX11"
+
+RUBIX_DEPENDENCIES = xserver_xorg-server
+
+$(eval $(autotools-package))
+