Makefile 1.0 KB

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