diff options
| author | 0x221E | 2026-06-14 14:00:58 +0200 |
|---|---|---|
| committer | 0x221E | 2026-06-14 14:00:58 +0200 |
| commit | 56796c08d6388ad0eb0539d166cd12964cfeb7e9 (patch) | |
| tree | 0a478620c3f07a72719fd22c12cbed5aa077234e /build.sh | |
initial commit
Diffstat (limited to 'build.sh')
| -rwxr-xr-x | build.sh | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/build.sh b/build.sh new file mode 100755 index 0000000..5996c05 --- /dev/null +++ b/build.sh @@ -0,0 +1,50 @@ +#!/bin/bash + +PLATFORM=elf + +SRC_DIRECTORIES=( + "./arch/" + "./lex/" + "./parser/" + "./lib/" + "./platform/${PLATFORM}/" +) + +TARGET_NAME="metalc" + +BUILD_DIR="./build/" + +CFLAGS=(-I./include/ -g -O1) # -fsanitize=address) +LDFLAGS=() + +function build { + mkdir -p "$BUILD_DIR" + + set -e + + local files=() + + echo "[BUILD] Building metalc..." + for i in ${SRC_DIRECTORIES[@]}; do + local arr=$(find "$i" -name "*.c") + for j in ${arr[@]}; do + files+=("$j") + done + done + + gcc "${files[@]}" "${CFLAGS[@]}" -o "$TARGET_NAME" + echo "Built ${TARGET_NAME}." +} + +function clean { + if [[ -e "$TARGET_NAME" && -f "$TARGET_NAME" ]]; then + rm -rf "$TARGET_NAME" + echo "[CLEAN] deleted ${TARGET_NAME}" + fi +} + +case "$1" in + "build") build ;; + "clean") clean ;; + *) "invalid command" ;; +esac |
