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