Files
Terrarum-sans-bitmap/OTFbuild/build_otf.sh
2026-02-23 11:18:09 +09:00

81 lines
2.8 KiB
Bash
Executable File

#!/bin/bash
set -e
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
PROJECT_DIR="$(cd "$SCRIPT_DIR/.." && pwd)"
ASSETS_DIR="$PROJECT_DIR/src/assets"
OUTPUT_DIR="$SCRIPT_DIR"
BITSNPICAS_JAR="$SCRIPT_DIR/bitsnpicas_runtime/BitsNPicas.jar"
# Output paths
KBITX_OUTPUT="$OUTPUT_DIR/TerrarumSansBitmap.kbitx"
TTF_OUTPUT="$OUTPUT_DIR/TerrarumSansBitmap.ttf"
echo "=== Terrarum Sans Bitmap OTF Build Pipeline ==="
echo "Project: $PROJECT_DIR"
echo "Assets: $ASSETS_DIR"
echo ""
# Step 1: Compile the builder
echo "--- Step 1: Compiling OTFbuild module ---"
COMPILE_CLASSPATH="$BITSNPICAS_JAR"
SRC_DIR="$SCRIPT_DIR/src"
OUT_DIR="$SCRIPT_DIR/out"
mkdir -p "$OUT_DIR"
# Find all Kotlin source files
SRC_FILES=$(find "$SRC_DIR" -name "*.kt" | tr '\n' ' ')
# Try to find Kotlin compiler
if command -v kotlinc &> /dev/null; then
KOTLINC="kotlinc"
KOTLIN_STDLIB=""
else
# Try IntelliJ's bundled Kotlin
IDEA_CACHE="$HOME/.cache/JetBrains"
KOTLIN_DIST=$(find "$IDEA_CACHE" -path "*/kotlin-dist-for-ide/*/lib/kotlin-compiler.jar" 2>/dev/null | sort -V | tail -1)
if [ -n "$KOTLIN_DIST" ]; then
KOTLIN_LIB="$(dirname "$KOTLIN_DIST")"
KOTLINC_CP="$KOTLIN_LIB/kotlin-compiler.jar:$KOTLIN_LIB/kotlin-stdlib.jar:$KOTLIN_LIB/trove4j.jar:$KOTLIN_LIB/kotlin-reflect.jar:$KOTLIN_LIB/kotlin-script-runtime.jar:$KOTLIN_LIB/kotlin-daemon.jar:$KOTLIN_LIB/annotations-13.0.jar"
KOTLIN_STDLIB="$KOTLIN_LIB/kotlin-stdlib.jar:$KOTLIN_LIB/kotlin-stdlib-jdk7.jar:$KOTLIN_LIB/kotlin-stdlib-jdk8.jar"
echo "Using IntelliJ's Kotlin from: $KOTLIN_LIB"
else
echo "ERROR: kotlinc not found. Please install Kotlin compiler or build via IntelliJ IDEA."
echo ""
echo "Alternative: Build the OTFbuild module in IntelliJ IDEA, then run:"
echo " java -cp \"$OUT_DIR:$COMPILE_CLASSPATH\" net.torvald.otfbuild.MainKt \"$ASSETS_DIR\" \"$KBITX_OUTPUT\""
exit 1
fi
fi
if [ -n "$KOTLIN_STDLIB" ]; then
# Use IntelliJ's bundled Kotlin via java
java -cp "$KOTLINC_CP" org.jetbrains.kotlin.cli.jvm.K2JVMCompiler \
-cp "$COMPILE_CLASSPATH:$KOTLIN_STDLIB" -d "$OUT_DIR" $SRC_FILES
else
kotlinc -cp "$COMPILE_CLASSPATH" -d "$OUT_DIR" $SRC_FILES
KOTLIN_STDLIB=""
fi
# Step 2: Run the builder to generate KBITX
echo ""
echo "--- Step 2: Generating KBITX ---"
RUNTIME_CP="$OUT_DIR:$COMPILE_CLASSPATH"
if [ -n "$KOTLIN_STDLIB" ]; then
RUNTIME_CP="$RUNTIME_CP:$KOTLIN_STDLIB"
fi
java -cp "$RUNTIME_CP" net.torvald.otfbuild.MainKt "$ASSETS_DIR" "$KBITX_OUTPUT"
# Step 3: Convert KBITX to TTF via BitsNPicas
echo ""
echo "--- Step 3: Converting KBITX to TTF ---"
java -jar "$BITSNPICAS_JAR" convertbitmap \
-f ttf -o "$TTF_OUTPUT" \
"$KBITX_OUTPUT"
echo ""
echo "=== Build complete ==="
echo " KBITX: $KBITX_OUTPUT"
echo " TTF: $TTF_OUTPUT"