#!/usr/bin/bash

mkdir build
cd build

if [ "$1" = "release" ]; then
    profile_flags="-DDEBUG_BUILD=0 -O2"
else
    profile_flags="-DDEBUG_BUILD=1"
fi

if [ ! -f "lbaselib.o" ]; then
    clang -g -I../src/external/lua/src -I../src/external/glad \
        ../src/external/lua/src/lbaselib.c \
        ../src/external/lua/src/lctype.c \
        ../src/external/lua/src/ldo.c \
        ../src/external/lua/src/lgc.c \
        ../src/external/lua/src/liolib.c \
        ../src/external/lua/src/lmem.c \
        ../src/external/lua/src/lopcodes.c \
        ../src/external/lua/src/lstate.c \
        ../src/external/lua/src/ltable.c \
        ../src/external/lua/src/lundump.c \
        ../src/external/lua/src/lzio.c \
        ../src/external/lua/src/lapi.c \
        ../src/external/lua/src/lcode.c \
        ../src/external/lua/src/ldblib.c \
        ../src/external/lua/src/ldump.c \
        ../src/external/lua/src/llex.c \
        ../src/external/lua/src/loadlib.c \
        ../src/external/lua/src/loslib.c \
        ../src/external/lua/src/lstring.c \
        ../src/external/lua/src/ltablib.c \
        ../src/external/lua/src/lutf8lib.c \
        ../src/external/lua/src/lauxlib.c \
        ../src/external/lua/src/lcorolib.c \
        ../src/external/lua/src/ldebug.c \
        ../src/external/lua/src/lfunc.c \
        ../src/external/lua/src/linit.c \
        ../src/external/lua/src/lmathlib.c \
        ../src/external/lua/src/lobject.c \
        ../src/external/lua/src/lparser.c \
        ../src/external/lua/src/lstrlib.c \
        ../src/external/lua/src/ltm.c \
        ../src/external/lua/src/lvm.c \
        ../src/external/glad/glad.c \
        -c
fi

if [ ! -f "metaprogram.exe" ]; then
    clang ../src/metaprogram/metaprogram.cpp ../src/basic/unix.cpp -o metaprogram.exe \
        -nostdlib++ -fno-exceptions -fdiagnostics-absolute-paths -g \
        -Wno-writable-strings \
        -I../src
fi
./metaprogram.exe

clang ../src/text_editor/text_editor.cpp ../src/basic/unix.cpp -o te_linux.exe \
    -nostdlib++ -fno-exceptions -fdiagnostics-absolute-paths -g \
    $profile_flags \
    -Wno-writable-strings \
    -I../src/external/SDL/include \
    -I../src/external/lua/src \
    -I../src/external/glad \
    -I../src/ \
    -lm \
    ../src/external/SDL/build/libSDL3.a \
    lbaselib.o lctype.o ldo.o lgc.o liolib.o lmem.o \
    lopcodes.o lstate.o ltable.o lundump.o lzio.o lapi.o lcode.o ldblib.o ldump.o \
    llex.o loadlib.o loslib.o lstring.o ltablib.o lutf8lib.o lauxlib.o lcorolib.o ldebug.o \
    lfunc.o  linit.o  lmathlib.o  lobject.o  lparser.o  lstrlib.o  ltm.o  lvm.o \
    glad.o \


if [ "$1" = "release" ]; then
    cp te_linux.exe ../data/te
    echo written ../data/te
else
    cp te_linux.exe ../data/te_debug
    echo written ../data/te_debug
fi
