package/supertux: new package
authorRomain Naour <romain.naour@gmail.com>
Sat, 25 Mar 2017 21:58:59 +0000 (22:58 +0100)
committerThomas Petazzoni <thomas.petazzoni@free-electrons.com>
Sat, 15 Apr 2017 10:12:13 +0000 (12:12 +0200)
Checked that libphysfs.so.1 is used by supertux2 binary.
$ LD_TRACE_LOADED_OBJECTS=1 /usr/bin/supertux2
...
libphysfs.so.1 => /usr/lib64/libphysfs.so.1

Signed-off-by: Romain Naour <romain.naour@gmail.com>
[Thomas:
 - slightly tweak Config.in comment
 - use SPDX license codes]
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
DEVELOPERS
package/Config.in
package/supertux/Config.in [new file with mode: 0644]
package/supertux/supertux.hash [new file with mode: 0644]
package/supertux/supertux.mk [new file with mode: 0644]

index aa1bc56605dfffca40317d09bb2f9c69937f6a6a..123a8f92808c459418c18b01443a4568969df2c2 100644 (file)
@@ -1348,6 +1348,7 @@ F:        package/mcelog/
 F:     package/openpowerlink/
 F:     package/physfs/
 F:     package/stress-ng/
+F:     package/supertux/
 F:     package/terminology/
 F:     package/upower/
 F:     package/xenomai/
index a5e48ace0e2a4a2ee00de13618b4ae24b6fa81ef..4eaa95b1d9a9f2fbfa0adc16ca2d6affa0fb1d2b 100644 (file)
@@ -232,6 +232,7 @@ menu "Games"
        source "package/rubix/Config.in"
        source "package/sl/Config.in"
        source "package/stella/Config.in"
+       source "package/supertux/Config.in"
        source "package/supertuxkart/Config.in"
 endmenu
 
diff --git a/package/supertux/Config.in b/package/supertux/Config.in
new file mode 100644 (file)
index 0000000..d4fd80b
--- /dev/null
@@ -0,0 +1,38 @@
+config BR2_PACKAGE_SUPERTUX
+       bool "supertux"
+       depends on BR2_INSTALL_LIBSTDCPP
+       depends on BR2_PACKAGE_HAS_LIBGL # libglew
+       depends on BR2_PACKAGE_OPENAL_ARCH_SUPPORTS
+       depends on BR2_PACKAGE_XORG7 # libglew, SDL2 OpenGL (GLX)
+       depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11 gcc attributes noreturn
+       depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # openal
+       depends on BR2_USE_MMU # SDL2 OpenGL (GLX)
+       depends on !BR2_STATIC_LIBS # SDL2
+       depends on BR2_USE_WCHAR # Boost
+       select BR2_PACKAGE_BOOST
+       select BR2_PACKAGE_BOOST_DATE_TIME
+       select BR2_PACKAGE_BOOST_FILESYSTEM
+       select BR2_PACKAGE_BOOST_SYSTEM
+       select BR2_PACKAGE_LIBGLEW
+       select BR2_PACKAGE_LIBGLU # GL/glu.h
+       select BR2_PACKAGE_LIBOGG
+       select BR2_PACKAGE_LIBVORBIS
+       select BR2_PACKAGE_OPENAL
+       select BR2_PACKAGE_PHYSFS
+       select BR2_PACKAGE_SDL2
+       select BR2_PACKAGE_SDL2_IMAGE
+       select BR2_PACKAGE_SDL2_OPENGL
+       help
+         SuperTux is a free classic 2D jump'n run sidescroller game in
+         a style similar to the original Super Mario games covered
+         under the GNU GPL.
+
+         http://supertux.github.io/
+
+comment "supertux needs OpenGL and a toolchain w/ C++, gcc >= 4.8, NPTL, dynamic library, wchar"
+       depends on BR2_PACKAGE_OPENAL_ARCH_SUPPORTS
+       depends on BR2_PACKAGE_XORG7
+       depends on BR2_USE_MMU
+       depends on !BR2_INSTALL_LIBSTDCPP || !BR2_PACKAGE_HAS_LIBGL || \
+               !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 || !BR2_TOOLCHAIN_HAS_THREADS_NPTL || \
+               BR2_STATIC_LIBS || !BR2_USE_WCHAR
diff --git a/package/supertux/supertux.hash b/package/supertux/supertux.hash
new file mode 100644 (file)
index 0000000..c56f608
--- /dev/null
@@ -0,0 +1,2 @@
+# Locally calculated
+sha256 c9dc3b42991ce5c5d0d0cb94e44c4ec2373ad09029940f0e92331e7e9ada0ac5 SuperTux-v0.5.1-Source.tar.gz
diff --git a/package/supertux/supertux.mk b/package/supertux/supertux.mk
new file mode 100644 (file)
index 0000000..4fb0611
--- /dev/null
@@ -0,0 +1,49 @@
+################################################################################
+#
+# supertux
+#
+################################################################################
+
+SUPERTUX_VERSION = 0.5.1
+SUPERTUX_SITE = https://github.com/SuperTux/supertux/releases/download/v$(SUPERTUX_VERSION)
+SUPERTUX_SOURCE = SuperTux-v$(SUPERTUX_VERSION)-Source.tar.gz
+
+# Supertux itself is GPLv3+, but it bundles a few libraries with different
+# licenses (sexp-cpp, squirrel, tinygettext) which are linked statically.
+SUPERTUX_LICENSE = GPL-3.0+ (code), CC-BY-SA-2.0, CC-BY-SA-3.0, GPL-2.0+ (images music sounds)
+SUPERTUX_LICENSE_FILES = LICENSE.txt data/AUTHORS
+
+# Use bundled squirrel, tinygettext sexp-cpp packages which are hardcoded in
+# the CMake build system.
+SUPERTUX_DEPENDENCIES = host-pkgconf boost libcurl libgl libglew libglu \
+       libogg libvorbis openal physfs sdl2 sdl2_image
+
+# ENABLE_BOOST_STATIC_LIBS=OFF: use boost shared libraries since supertux
+# depends on !BR2_STATIC_LIBS and boost provide only shared libraries with
+# BR2_SHARED_LIBS.
+# ENABLE_OPENGL=ON: Can be disabled but will make SuperTux unplayable slow.
+# GLBINDING_ENABLED=OFF: use GLEW (default) instead of glbinding.
+# Install the game directly in /usr/bin and game data in /usr/share/supertux2.
+# Force using physfs.so from staging since the check on PHYSFS_getPrefDir symbol
+# in physfs.h (CHECK_SYMBOL_EXISTS) doesn't work.
+SUPERTUX_CONF_OPTS += \
+       -DENABLE_BOOST_STATIC_LIBS=OFF \
+       -DBUILD_DOCUMENTATION=OFF \
+       -DENABLE_OPENGL=ON \
+       -DGLBINDING_ENABLED=OFF \
+       -DINSTALL_SUBDIR_BIN="bin" \
+       -DINSTALL_SUBDIR_SHARE="share/supertux2" \
+       -DUSE_SYSTEM_PHYSFS=ON
+
+# Avoid incompatible posix_memalign declaration on x86 and x86_64 with
+# musl.
+# https://gcc.gnu.org/ml/gcc-patches/2015-05/msg01425.html
+ifeq ($(BR2_TOOLCHAIN_USES_MUSL):$(BR2_i386)$(BR2_x86_64),y:y)
+define SUPERTUX_REMOVE_PEDANTIC
+       $(SED) 's% -pedantic%%' $(@D)/CMakeLists.txt
+       $(SED) 's%CHECK_CXX_FLAG(pedantic)%%' $(@D)/external/tinygettext/CMakeLists.txt
+endef
+SUPERTUX_POST_PATCH_HOOKS += SUPERTUX_REMOVE_PEDANTIC
+endif
+
+$(eval $(cmake-package))