summaryrefslogtreecommitdiff
path: root/build.sh
blob: 8dca9fc8634b8d1a6f10fae7ecf729159848ec19 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#!/bin/bash

PLATFORM=elf

SRC_DIRECTORIES=(
	"./arch/"
	"./lex/"
	"./parser/"
	"./passes/"
	"./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