minigame-rust icon indicating copy to clipboard operation
minigame-rust copied to clipboard

Using SDL_TTF

Open trezm opened this issue 5 years ago • 2 comments

Hey all! Amazing work done here, honestly!!! I've been looking for a good starting place to write a rust game in SDL2 for my Android phone and I've found it :)

That being said -- I was able to get a good build script working (see below,) but I can't seem to figure out how to include SDL_TTF in the bundle. Does anyone have a good idea of where I could start?

#!/bin/bash

###
#
# $1 is the ndk location
# $2 is the output for platform dependent toolchains
# $3 is the android sdk

export ANDROID_NDK_HOME=$1
export ANDROID_HOME=$3
echo "Building toolchain..."
$1/build/tools/make_standalone_toolchain.py --arch arm --install-dir $2/android-ndk-arm
$1/build/tools/make_standalone_toolchain.py --arch arm64 --install-dir $2/android-ndk-arm64
$1/build/tools/make_standalone_toolchain.py --arch x86 --install-dir $2/android-ndk-x86
$1/build/tools/make_standalone_toolchain.py --arch x86_64 --install-dir $2/android-ndk-x86_64

echo "Configuring..."
echo "
[target.armv7-linux-androideabi]
linker = \"$2/android-ndk-arm/bin/arm-linux-androideabi-gcc\"

[target.aarch64-linux-android]
linker = \"$2/android-ndk-arm64/bin/aarch64-linux-android-gcc\"

[target.i686-linux-android]
linker = \"$2/android-ndk-x86/bin/i686-linux-android-gcc\"

[target.x86_64-linux-android]
linker = \"$2/android-ndk-x86_64/bin/x86_64-linux-android-gcc\"
" > ./.cargo/config

echo "Building Android SDL..."
cd android/Minigame/sdl
../gradlew assemble
cd ../../..

echo "Building Rust Library..."
CC=$2/android-ndk-arm/bin/arm-linux-androideabi-gcc CXX=$2/android-ndk-arm/bin/arm-linux-androideabi-clang++ AR=$2/android-ndk-arm/bin/arm-linux-androideabi-ar cargo build --no-default-features --target armv7-linux-androideabi --lib
CC=$2/android-ndk-arm64/bin/aarch64-linux-android-gcc CXX=$2/android-ndk-arm64/bin/aarch64-linux-android-clang++ AR=$2/android-ndk-arm64/bin/aarch64-linux-android-ar cargo build --no-default-features --target aarch64-linux-android --lib
CC=$2/android-ndk-x86/bin/i686-linux-android-gcc CXX=$2/android-ndk-x86/bin/i686-linux-android-clang++ AR=$2/android-ndk-x86/bin/i686-linux-android-ar cargo build --no-default-features --target i686-linux-android --lib
CC=$2/android-ndk-x86_64/bin/x86_64-linux-android-gcc CXX=$2/android-ndk-x86_64/bin/x86_64-linux-android-clang++ AR=$2/android-ndk-x86_64/bin/x86_64-linux-android-ar cargo build --no-default-features --target x86_64-linux-android --lib

echo "Copying files..."
cp target/armv7-linux-androideabi/debug/libminigame.so android/Minigame/app/src/main/jniLibs/armeabi/
cp target/armv7-linux-androideabi/debug/libminigame.so android/Minigame/app/src/main/jniLibs/armeabi-v7a/
cp target/i686-linux-android/debug/libminigame.so android/Minigame/app/src/main/jniLibs/x86/
cp target/x86_64-linux-android/debug/libminigame.so android/Minigame/app/src/main/jniLibs/x86_64/

cp target/aarch64-linux-android/debug/libminigame.so android/Minigame/app/src/main/jniLibs/arm64-v8a/
cp $2/android-ndk-arm64/aarch64-linux-android/lib/libc++_shared.so android/Minigame/app/src/main/jniLibs/arm64-v8a/

echo "Building android app..."
cd android/Minigame/app
../gradlew assemble
cd ../../..

trezm avatar Aug 02 '18 18:08 trezm

Nice script you've come up with. I might add something similar to this project, too. I'd still need to add the iOS stuff in there as well, but that's pretty easy.

Before venturing into trying to add SDL2_TTF, are you sure you don't want to use https://github.com/redox-os/rusttype instead? I stopped using SDL2_TTF a long time ago and switched to https://github.com/nothings/stb/blob/master/stb_truetype.h which is also ported to Rust as https://github.com/dylanede/stb_truetype-rs

tanis2000 avatar Aug 03 '18 08:08 tanis2000

I wasn't aware there were other options really! I'm new to game dev specifically, so I'll give those a shot. Great resources, I'll report back how they work out :)

trezm avatar Aug 03 '18 14:08 trezm