1COMPILER_DIR = ../src/compiler/
2RUNTIME_DIR = ../src/runtime/
3SHARED_DIR = ../src/shared/
4UTILS_DIR = ../src/utils/
5EXEC_GRAVITY_SRC = exec_gravity.c
6EXEC_C_SRC = exec_c.c
7
8SRC = $(wildcard $(COMPILER_DIR)*.c) \
9      $(wildcard $(RUNTIME_DIR)/*.c) \
10      $(wildcard $(SHARED_DIR)/*.c) \
11      $(wildcard $(UTILS_DIR)/*.c)
12
13INCLUDE = -I$(COMPILER_DIR) -I$(RUNTIME_DIR) -I$(SHARED_DIR) -I$(UTILS_DIR)
14CFLAGS = $(INCLUDE) -O2 -std=gnu99 -fgnu89-inline
15OBJ = $(SRC:.c=.o)
16
17ifeq ($(OS),Windows_NT)
18	# Windows
19	LDFLAGS = -lm -lShlwapi
20else
21	UNAME_S := $(shell uname -s)
22	ifeq ($(UNAME_S),Darwin)
23		# MacOS
24		LDFLAGS = -lm
25	else ifeq ($(UNAME_S),NetBSD)
26		# NetBSD
27		LDFLAGS = -lm
28	else ifeq ($(UNAME_S),OpenBSD)
29		# OpenBSD
30		LDFLAGS = -lm
31	else
32		# Linux
33		LDFLAGS = -lm -lrt
34	endif
35endif
36
37all: exec_gravity exec_c
38
39exec_gravity:	$(OBJ) $(EXEC_GRAVITY_SRC)
40	$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
41
42exec_c:	$(OBJ) $(EXEC_C_SRC)
43	$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
44
45.PHONY: all clean exec_gravity exec_c
46
47clean:
48	rm -f $(OBJ) exec_gravity exec_c
49