chocolate-doom: new package

Chocolate Doom is a set of conservative source ports for Doom, Heretic,
Hexen and Strife, with a philosophy of preserving the look, feel, and
bugs of the vanilla versions of each.

http://www.chocolate-doom.org

Signed-off-by: Rodrigo Rebello <rprebello@gmail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
This commit is contained in:
Rodrigo Rebello 2015-11-06 17:47:57 -02:00 committed by Thomas Petazzoni
parent 206527394b
commit 73bea8294a
7 changed files with 255 additions and 0 deletions

View file

@ -216,6 +216,7 @@ comment "Themes"
endmenu
menu "Games"
source "package/chocolate-doom/Config.in"
source "package/doom-wad/Config.in"
source "package/gnuchess/Config.in"
source "package/lbreakout2/Config.in"

View file

@ -0,0 +1,49 @@
From d9c517d9a4e168c1f7ed28ad0eb9365d69f5ceb2 Mon Sep 17 00:00:00 2001
From: Rodrigo Rebello <rprebello@gmail.com>
Date: Thu, 22 Oct 2015 11:29:55 -0200
Subject: [PATCH] Fix "`gcc_struct' attribute directive ignored" warnings
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Compilation for target architectures other than i386, x86_64 or PowerPC
(e.g. ARM) caused multiple warnings like the following to appear:
doomdata.h:75:1: warning: gcc_struct attribute directive ignored
} PACKEDATTR mapsidedef_t;
^
This was due to 'gcc_struct' being undefined for these architectures.
Since that attribute was actually introduced by commit 87db726b9a9ae61ca
to address the fact that -mms-bitfields became the default for GCC on
Windows, limit it to that case.
Upstream-status: accepted, not yet released.
https://github.com/chocolate-doom/chocolate-doom/pull/629
Signed-off-by: Rodrigo Rebello <rprebello@gmail.com>
---
src/doomtype.h | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/doomtype.h b/src/doomtype.h
index bf0a40e..77c026c 100644
--- a/src/doomtype.h
+++ b/src/doomtype.h
@@ -52,10 +52,10 @@
#ifdef __GNUC__
-#ifdef __clang__
-#define PACKEDATTR __attribute__((packed))
-#else
+#if defined(_WIN32) && !defined(__clang__)
#define PACKEDATTR __attribute__((packed,gcc_struct))
+#else
+#define PACKEDATTR __attribute__((packed))
#endif
#else
--
2.1.4

View file

@ -0,0 +1,67 @@
From fd12fa91aa8e35dbd3ffa5bfe055baf6bde0cd63 Mon Sep 17 00:00:00 2001
From: Rodrigo Rebello <rprebello@gmail.com>
Date: Thu, 22 Oct 2015 15:28:11 -0200
Subject: [PATCH] configure: fix --with-PACKAGE option checks
Options of the form --with-PACKAGE[=yes] (e.g. --with-libpng), when
passed to configure, were being treated as though --without-PACKAGE had
been given.
Although the intention is to have configure check and use PACKAGE by
default if it's available, thus requiring the user to pass an option
only if PACKAGE must NOT be used, there are times when the opposite
might be desired (i.e. the user wants to indicate PACKAGE MUST be used).
Moreover, allowing --with-PACKAGE and behaving as if --without-PACKAGE
had been specified is in itself quite confusing.
Fix that by testing the result of 'with_PACKAGE' in configure.ac and
acting accordingly instead of blindly assuming a 'no'.
Upstream-status: accepted, not yet released.
https://github.com/chocolate-doom/chocolate-doom/pull/630
Signed-off-by: Rodrigo Rebello <rprebello@gmail.com>
---
configure.ac | 18 ++++++++++++++++--
1 file changed, 16 insertions(+), 2 deletions(-)
diff --git a/configure.ac b/configure.ac
index ee97fe2..7b03485 100644
--- a/configure.ac
+++ b/configure.ac
@@ -80,7 +80,14 @@ AC_SDL_MAIN_WORKAROUND([
[Build without libsamplerate @<:@default=check@:>@]),
[],
[
- AC_CHECK_LIB(samplerate, src_new)
+ [with_libsamplerate=check]
+ ])
+ AS_IF([test "x$with_libsamplerate" != xno], [
+ AC_CHECK_LIB(samplerate, src_new, [], [
+ AS_IF([test "x$with_libsamplerate" != xcheck], [AC_MSG_FAILURE(
+ [--with-libsamplerate was given, but test for libsamplerate failed])
+ ])
+ ])
])
# Check for libpng.
AC_ARG_WITH([libpng],
@@ -88,8 +95,15 @@ AC_SDL_MAIN_WORKAROUND([
[Build without libpng @<:@default=check@:>@]),
[],
[
+ [with_libpng=check]
+ ])
+ AS_IF([test "x$with_libpng" != xno], [
AC_CHECK_LIB(z, zlibVersion)
- AC_CHECK_LIB(png, png_get_io_ptr)
+ AC_CHECK_LIB(png, png_get_io_ptr, [], [
+ AS_IF([test "x$with_libpng" != xcheck], [AC_MSG_FAILURE(
+ [--with-libpng was given, but test for libpng failed])
+ ])
+ ])
])
AC_CHECK_LIB(m, log)
--
2.1.4

View file

@ -0,0 +1,80 @@
From 87c7399305b30045a856d737bbfd8f59b8f52392 Mon Sep 17 00:00:00 2001
From: Rodrigo Rebello <rprebello@gmail.com>
Date: Fri, 6 Nov 2015 12:14:01 -0200
Subject: [PATCH] opl: limit use of ioperm/inb/outb to x86 architecture
The use of I/O ports in the Linux driver to directly control OPL chips
is x86 specific and only really makes sense for x86-based PC's with
compatible hardware.
For some architectures (e.g. ARM), ioperm, inb and outb do exist and are
detected by the configure script (via AC_CHECK_FUNCS(ioperm)), but their
use is inappropriate in these cases and should be avoided.
In some other scenarios, like when using a GNU toolchain + uClibc for
PowerPC, the build even fails with the following error:
opl_linux.c:26:20: fatal error: sys/io.h: No such file or directory
That is so because ioperm() is exported by uClibc and gets detected by
configure, which enables the "Linux" driver via definition of
HAVE_IOPERM, but in practice 'sys/io.h' is missing for ppc (inb/outb is
not implemented, and the call to ioperm() would return EIO anyway).
So, besides testing for HAVE_IOPERM, also test if either __i386__ or
__x86_64__ are defined before enabling this OPL driver.
Upstream-status: accepted, not yet released.
https://github.com/chocolate-doom/chocolate-doom/pull/638
Signed-off-by: Rodrigo Rebello <rprebello@gmail.com>
---
opl/opl.c | 4 ++--
opl/opl_linux.c | 4 ++--
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/opl/opl.c b/opl/opl.c
index 60f027d..0d25689 100644
--- a/opl/opl.c
+++ b/opl/opl.c
@@ -27,7 +27,7 @@
//#define OPL_DEBUG_TRACE
-#ifdef HAVE_IOPERM
+#if (defined(__i386__) || defined(__x86_64__)) && defined(HAVE_IOPERM)
extern opl_driver_t opl_linux_driver;
#endif
#if defined(HAVE_LIBI386) || defined(HAVE_LIBAMD64)
@@ -40,7 +40,7 @@ extern opl_driver_t opl_sdl_driver;
static opl_driver_t *drivers[] =
{
-#ifdef HAVE_IOPERM
+#if (defined(__i386__) || defined(__x86_64__)) && defined(HAVE_IOPERM)
&opl_linux_driver,
#endif
#if defined(HAVE_LIBI386) || defined(HAVE_LIBAMD64)
diff --git a/opl/opl_linux.c b/opl/opl_linux.c
index 5df5d46..19e4c3e 100644
--- a/opl/opl_linux.c
+++ b/opl/opl_linux.c
@@ -17,7 +17,7 @@
#include "config.h"
-#ifdef HAVE_IOPERM
+#if (defined(__i386__) || defined(__x86_64__)) && defined(HAVE_IOPERM)
#include <stdio.h>
#include <string.h>
@@ -99,5 +99,5 @@ opl_driver_t opl_linux_driver =
OPL_Timer_AdjustCallbacks,
};
-#endif /* #ifdef HAVE_IOPERM */
+#endif /* #if (defined(__i386__) || defined(__x86_64__)) && defined(HAVE_IOPERM) */
--
2.1.4

View file

@ -0,0 +1,12 @@
config BR2_PACKAGE_CHOCOLATE_DOOM
bool "chocolate-doom"
depends on BR2_USE_MMU # fork()
select BR2_PACKAGE_SDL
select BR2_PACKAGE_SDL_MIXER
select BR2_PACKAGE_SDL_NET
help
Chocolate Doom is a set of conservative source ports for Doom,
Heretic, Hexen and Strife, with a philosophy of preserving the
look, feel, and bugs of the vanilla versions of each.
http://www.chocolate-doom.org

View file

@ -0,0 +1,2 @@
# Locally computed
sha256 ad11e2871667c6fa0658abf2dcba0cd9b26fbd651ee8df55adfdc18ad8fd674a chocolate-doom-2.2.1.tar.gz

View file

@ -0,0 +1,44 @@
################################################################################
#
# chocolate-doom
#
################################################################################
CHOCOLATE_DOOM_VERSION = 2.2.1
CHOCOLATE_DOOM_SITE = http://www.chocolate-doom.org/downloads/$(CHOCOLATE_DOOM_VERSION)
CHOCOLATE_DOOM_LICENSE = GPLv2+
CHOCOLATE_DOOM_LICENSE_FILES = COPYING
CHOCOLATE_DOOM_DEPENDENCIES = sdl sdl_mixer sdl_net
# We're patching configure.ac, so we need to autoreconf
CHOCOLATE_DOOM_AUTORECONF = YES
# Avoid installing desktop entries, icons, etc.
CHOCOLATE_DOOM_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) install-exec
ifeq ($(BR2_STATIC_LIBS),y)
# SDL_mixer uses symbols from SDL, but ends up after it on the link
# cmdline. Fix it by forcing the SDL libs at the very end.
CHOCOLATE_DOOM_CONF_ENV = LIBS="`$(STAGING_DIR)/usr/bin/sdl-config --static-libs`"
endif
CHOCOLATE_DOOM_CONF_OPTS = \
--disable-sdltest \
--with-sdl-prefix=$(STAGING_DIR)/usr \
--with-sdl-exec-prefix=$(STAGING_DIR)/usr
ifeq ($(BR2_PACKAGE_LIBPNG),y)
CHOCOLATE_DOOM_DEPENDENCIES += libpng
CHOCOLATE_DOOM_CONF_OPTS += --with-libpng
else
CHOCOLATE_DOOM_CONF_OPTS += --without-libpng
endif
ifeq ($(BR2_PACKAGE_LIBSAMPLERATE),y)
CHOCOLATE_DOOM_DEPENDENCIES += libsamplerate
CHOCOLATE_DOOM_CONF_OPTS += --with-libsamplerate
else
CHOCOLATE_DOOM_CONF_OPTS += --without-libsamplerate
endif
$(eval $(autotools-package))