diff --git a/tur/brux/build.sh b/tur/brux/build.sh new file mode 100644 index 0000000000..d5de4df306 --- /dev/null +++ b/tur/brux/build.sh @@ -0,0 +1,81 @@ +TERMUX_PKG_HOMEPAGE=https://github.com/KelvinShadewing/brux-gdk +TERMUX_PKG_DESCRIPTION="Free runtime and development kit using SDL and Squirrel" +TERMUX_PKG_LICENSE="AGPL-V3" +TERMUX_PKG_MAINTAINER="@termux" +TERMUX_PKG_VERSION=2026.01.07 +TERMUX_PKG_SRCURL=git+https://github.com/KelvinShadewing/brux-gdk.git +TERMUX_PKG_GIT_BRANCH=main +TERMUX_PKG_DEPENDS="sdl2, sdl2-image, sdl2-net, sdl2-mixer, libcurl, libphysfs, sdl2-gfx, libgit2, libc++, squirrel3, simplesquirrel" +#TERMUX_PKG_BUILD_DEPENDS="cmake, make" +TERMUX_PKG_FORCE_CMAKE=true + +termux_step_post_get_source() { + git submodule update --init --recursive +} + +termux_step_pre_configure() { + termux_setup_cmake + termux_setup_ninja + export TERMUX_PKG_EXTRA_CONFIGURE_ARGS+=" -DCMAKE_ANDROID_STANDALONE_TOOLCHAIN=$TERMUX_STANDALONE_TOOLCHAIN" + termux_setup_meson + # Force using system dependencies instead of problematic CMake subprojects + python3 -c " +import sys +content = open('rte/meson.build').read() + +# Replace physfs block +# Note: cat -A showed tabs in the original file +physfs_old = '''if (not physfs.found()) + physfs_proj = cmake.subproject('physfs') + + physfs_lib = physfs_proj.get_variable('physfs') + physfs = declare_dependency(link_with: physfs_lib, include_directories: physfs_proj.include_directories('physfs')) +endif''' +content = content.replace(\"physfs = dependency('physfs', required: false)\", \"physfs = dependency('physfs', required: true)\") +content = content.replace(physfs_old, '') +content = content.replace(physfs_old.replace(' ', '\t'), '') + +# Replace simplesquirrel block +ssq_old = '''if (not simplesquirrel.found()) + opts = cmake.subproject_options() + + opts.add_cmake_defines({'CMAKE_POLICY_VERSION_MINIMUM': '3.5', 'SSQ_USE_SQ_SUBMODULE': true}) + + simplesquirrel_proj = cmake.subproject('simplesquirrel', options: opts) + + simplesquirrel_lib = simplesquirrel_proj.get_variable('simplesquirrel_static') + squirrel_lib = simplesquirrel_proj.get_variable('squirrel_static') + sqstdlib = simplesquirrel_proj.get_variable('sqstdlib_static') + + simplesquirrel = declare_dependency(link_with: [simplesquirrel_lib, squirrel_lib, sqstdlib], include_directories: simplesquirrel_proj.include_directories('simplesquirrel_static')) +endif''' +ssq_new = '''cpp = meson.get_compiler('cpp') +simplesquirrel_lib = cpp.find_library('simplesquirrel', required: true) +squirrel_lib = cpp.find_library('squirrel', required: true) +sqstdlib_lib = cpp.find_library('sqstdlib', required: true) +simplesquirrel = declare_dependency(dependencies: [simplesquirrel_lib, squirrel_lib, sqstdlib_lib])''' + +content = content.replace(\"simplesquirrel = dependency('simplesquirrel', required: false)\", \"simplesquirrel = dependency('simplesquirrel', required: false)\") +content = content.replace(ssq_old, ssq_new) +content = content.replace(ssq_old.replace(' ', '\t'), ssq_new) + +open('rte/meson.build', 'w').write(content) +" +} + +termux_step_configure() { + $TERMUX_MESON setup $TERMUX_PKG_BUILDDIR $TERMUX_PKG_SRCDIR/rte \ + --cross-file $TERMUX_MESON_CROSSFILE \ + --prefix $TERMUX_PREFIX \ + --libdir lib \ + --bindir bin \ + --buildtype release +} + +termux_step_make() { + ninja -C $TERMUX_PKG_BUILDDIR +} + +termux_step_make_install() { + $TERMUX_MESON install -C $TERMUX_PKG_BUILDDIR +} diff --git a/tur/brux/font-bounds-check.patch b/tur/brux/font-bounds-check.patch new file mode 100644 index 0000000000..5b18994c1a --- /dev/null +++ b/tur/brux/font-bounds-check.patch @@ -0,0 +1,28 @@ +--- a/rte/src/brux/text.cpp ++++ b/rte/src/brux/text.cpp +@@ -326,15 +326,21 @@ + else if(text[i] != '~') + i--; + else { +- c = (int)text[i] - start; // Get current character and apply font offset ++ c = (int)(unsigned char)text[i] - (int)start; // Get current character and apply font offset + source->draw(c, dx, dy, 0, SDL_FLIP_NONE, 1, 1, alpha, curcol); +- dx += cw[c] + kern; ++ if (c >= 0 && c < (int)cw.size()) ++ dx += cw[c] + kern; ++ else ++ dx += source->getw() + kern; + } + } + else { +- c = (int)text[i] - start; // Get current character and apply font offset ++ c = (int)(unsigned char)text[i] - (int)start; // Get current character and apply font offset + source->draw(c, dx, dy, 0, SDL_FLIP_NONE, 1, 1, alpha, curcol); +- dx += cw[c] + kern; ++ if (c >= 0 && c < (int)cw.size()) ++ dx += cw[c] + kern; ++ else ++ dx += source->getw() + kern; + } + } + }; diff --git a/tur/simplesquirrel/build.sh b/tur/simplesquirrel/build.sh new file mode 100644 index 0000000000..c3fa9c5fb1 --- /dev/null +++ b/tur/simplesquirrel/build.sh @@ -0,0 +1,20 @@ +TERMUX_PKG_HOMEPAGE=https://github.com/SuperTux/simplesquirrel +TERMUX_PKG_DESCRIPTION="A simple C++ wrapper for the Squirrel programming language" +TERMUX_PKG_LICENSE="MIT" +TERMUX_PKG_MAINTAINER="@termux" +TERMUX_PKG_VERSION=2024.12.31 +TERMUX_PKG_SRCURL=git+https://github.com/SuperTux/simplesquirrel.git +TERMUX_PKG_GIT_BRANCH=master +TERMUX_PKG_DEPENDS="squirrel3" +TERMUX_PKG_AUTO_UPDATE=false + +TERMUX_PKG_EXTRA_CONFIGURE_ARGS="-DSSQ_USE_SQ_SUBMODULE=OFF" + +termux_step_pre_configure() { + export TERMUX_PKG_EXTRA_CONFIGURE_ARGS+=" -DCMAKE_ANDROID_STANDALONE_TOOLCHAIN=$TERMUX_STANDALONE_TOOLCHAIN" + termux_setup_ninja + # Ensure it uses system squirrel + sed -i 's/add_subdirectory("libs\/squirrel")/#add_subdirectory("libs\/squirrel")/' CMakeLists.txt + # Fix SQUIRREL_INCLUDE_DIR when not using submodule + sed -i 's/set(SQUIRREL_INCLUDE_DIR ${PROJECT_SOURCE_DIR}\/libs\/squirrel\/include)/set(SQUIRREL_INCLUDE_DIR ${TERMUX_PREFIX}\/include)/' CMakeLists.txt +} diff --git a/tur/squirrel3/build.sh b/tur/squirrel3/build.sh new file mode 100644 index 0000000000..9ff8fb8fc8 --- /dev/null +++ b/tur/squirrel3/build.sh @@ -0,0 +1,14 @@ +TERMUX_PKG_HOMEPAGE=https://github.com/SuperTux/squirrel +TERMUX_PKG_DESCRIPTION="Lightweight, high-level, embeddable programming language (SuperTux fork)" +TERMUX_PKG_LICENSE="MIT" +TERMUX_PKG_MAINTAINER="@termux" +TERMUX_PKG_VERSION=2024.12.31 +TERMUX_PKG_SRCURL=git+https://github.com/SuperTux/squirrel.git +TERMUX_PKG_GIT_BRANCH=master + +TERMUX_PKG_EXTRA_CONFIGURE_ARGS="-DSQ_DISABLE_INTERPRETER=ON" + +termux_step_pre_configure() { + # Force using the provided CMakeLists.txt and ensure it builds correctly for Termux + sed -i 's/cmake_minimum_required(VERSION [0-9.]*)/cmake_minimum_required(VERSION 3.10)/' CMakeLists.txt +} diff --git a/tur/supertux-advance/build.sh b/tur/supertux-advance/build.sh new file mode 100644 index 0000000000..404893284b --- /dev/null +++ b/tur/supertux-advance/build.sh @@ -0,0 +1,25 @@ +TERMUX_PKG_HOMEPAGE=https://github.com/KelvinShadewing/supertux-advance +TERMUX_PKG_DESCRIPTION="A fan game of SuperTux written in Squirrel" +TERMUX_PKG_LICENSE="AGPL-V3" +TERMUX_PKG_MAINTAINER="@termux" +TERMUX_PKG_VERSION=2026.03.15 +TERMUX_PKG_SRCURL=git+https://github.com/KelvinShadewing/supertux-advance.git +TERMUX_PKG_GIT_BRANCH=main +TERMUX_PKG_DEPENDS="brux" + +TERMUX_PKG_PLATFORM_INDEPENDENT=true +TERMUX_PKG_BUILD_IN_SRC=true + +termux_step_make_install() { + local INSTALL_DIR=$TERMUX_PREFIX/share/supertux-advance + mkdir -p $INSTALL_DIR + cp -a $TERMUX_PKG_SRCDIR/* $INSTALL_DIR/ + + mkdir -p $TERMUX_PREFIX/bin + cat > $TERMUX_PREFIX/bin/supertux-advance <<- EOF + #!$TERMUX_PREFIX/bin/sh + cd $INSTALL_DIR + exec brux game.brx "\$@" + EOF + chmod +x $TERMUX_PREFIX/bin/supertux-advance +}