46 lines
2.2 KiB
Bash
Executable File
46 lines
2.2 KiB
Bash
Executable File
#!/bin/sh
|
|
# Compilación de DESARROLLO sin CMake: construye la biblioteca y las pruebas
|
|
# con gcc directamente. Sirve para verificar el núcleo en máquinas sin CMake.
|
|
# La compilación oficial del proyecto es CMake (ver docs/BUILD.md).
|
|
# tools/dev-build.sh -> compila y ejecuta todas las pruebas
|
|
# SAN=1 tools/dev-build.sh -> con AddressSanitizer + UBSan
|
|
# OUT=/ruta tools/dev-build.sh -> carpeta de compilación (por defecto /tmp/tgb-dev)
|
|
set -eu
|
|
ROOT=$(cd "$(dirname "$0")/.." && pwd)
|
|
OUT=${OUT:-/tmp/tgb-dev}
|
|
CC=${CC:-gcc}
|
|
FLAGS="-std=c11 -g -O1 -Wall -Wextra -Wshadow -Wpedantic -Werror -D_GNU_SOURCE -I$ROOT/include"
|
|
[ "${SAN:-0}" = "1" ] && FLAGS="$FLAGS -fsanitize=address,undefined -fno-omit-frame-pointer -fno-sanitize-recover=all"
|
|
mkdir -p "$OUT/obj" "$OUT/tests"
|
|
echo "== Biblioteca (libtahgibu.a) =="
|
|
OBJS=""
|
|
for f in $(ls "$ROOT"/src/core/*.c "$ROOT"/src/document/*.c "$ROOT"/src/history/*.c "$ROOT"/src/editor/*.c \
|
|
"$ROOT"/src/editor/tools/*.c "$ROOT"/src/animation/*.c "$ROOT"/src/rendering/*.c "$ROOT"/src/io/*.c \
|
|
"$ROOT"/src/recovery/*.c "$ROOT"/src/extensions/*.c "$ROOT"/src/platform/linux/*.c 2>/dev/null); do
|
|
o="$OUT/obj/$(echo "${f#$ROOT/src/}" | tr '/' '_').o"
|
|
$CC $FLAGS -c "$f" -o "$o"
|
|
OBJS="$OBJS $o"
|
|
done
|
|
rm -f "$OUT/libtahgibu.a"; ar rcs "$OUT/libtahgibu.a" $OBJS
|
|
echo "== Extensiones de prueba =="
|
|
for f in "$ROOT"/tests/plugins/*.c; do
|
|
[ -e "$f" ] || continue
|
|
n=$(basename "$f" .c)
|
|
$CC $FLAGS -fPIC -shared "$f" -o "$OUT/tests/$n.so"
|
|
done
|
|
echo "== Pruebas =="
|
|
FAIL=0
|
|
for t in "$ROOT"/tests/test_*.c; do
|
|
n=$(basename "$t" .c)
|
|
$CC $FLAGS -DTGB_TEST_PLUGIN_DIR="\"$OUT/tests\"" "$t" "$OUT/libtahgibu.a" -o "$OUT/tests/$n" -lz -lm -ldl -lpthread
|
|
echo "--- $n"
|
|
if ! "$OUT/tests/$n"; then FAIL=1; fi
|
|
done
|
|
echo "--- ui_smoke (interfaz con raylib FALSO: no prueba raylib real)"
|
|
if $CC $FLAGS -I"$ROOT/tools/dev/raylib_stub" -I"$ROOT/src" -I"$ROOT/tests" \
|
|
"$ROOT"/tests/ui_smoke/ui_smoke.c "$ROOT"/tests/ui_smoke/mock_raylib.c "$ROOT"/src/ui/*.c \
|
|
"$OUT/libtahgibu.a" -o "$OUT/tests/ui_smoke" -lz -lm -ldl -lpthread; then
|
|
"$OUT/tests/ui_smoke" || FAIL=1
|
|
else FAIL=1; fi
|
|
[ $FAIL = 0 ] && echo "TODAS LAS PRUEBAS PASARON" || { echo "HAY PRUEBAS FALLIDAS"; exit 1; }
|