Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
81 changes: 81 additions & 0 deletions tur/brux/build.sh
Original file line number Diff line number Diff line change
@@ -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
}
28 changes: 28 additions & 0 deletions tur/brux/font-bounds-check.patch
Original file line number Diff line number Diff line change
@@ -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;
}
}
};
20 changes: 20 additions & 0 deletions tur/simplesquirrel/build.sh
Original file line number Diff line number Diff line change
@@ -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
}
14 changes: 14 additions & 0 deletions tur/squirrel3/build.sh
Original file line number Diff line number Diff line change
@@ -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
}
25 changes: 25 additions & 0 deletions tur/supertux-advance/build.sh
Original file line number Diff line number Diff line change
@@ -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
}
Loading