Makefile 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. COMPILER_DIR = src/compiler/
  2. RUNTIME_DIR = src/runtime/
  3. SHARED_DIR = src/shared/
  4. UTILS_DIR = src/utils/
  5. OPT_DIR = src/optionals/
  6. GRAVITY_SRC = src/cli/gravity.c
  7. EXAMPLE_SRC = examples/example.c
  8. CC ?= gcc
  9. SRC = $(wildcard $(COMPILER_DIR)*.c) \
  10. $(wildcard $(RUNTIME_DIR)*.c) \
  11. $(wildcard $(SHARED_DIR)*.c) \
  12. $(wildcard $(UTILS_DIR)*.c) \
  13. $(wildcard $(OPT_DIR)*.c)
  14. INCLUDE = -I$(COMPILER_DIR) -I$(RUNTIME_DIR) -I$(SHARED_DIR) -I$(UTILS_DIR) -I$(OPT_DIR)
  15. CFLAGS = $(INCLUDE) -std=gnu99 -fgnu89-inline -fPIC -DBUILD_GRAVITY_API -MMD
  16. OBJ = $(SRC:.c=.o)
  17. DEP = $(OBJ:.o=.d)
  18. ifeq ($(OS),Windows_NT)
  19. # Windows
  20. LIBTARGET = gravity.dll
  21. LDFLAGS = -lm -lShlwapi
  22. else
  23. UNAME_S := $(shell uname -s)
  24. ifeq ($(UNAME_S),Darwin)
  25. # MacOS
  26. LIBTARGET = libgravity.dylib
  27. LDFLAGS = -lm
  28. else ifeq ($(UNAME_S),OpenBSD)
  29. # OpenBSD
  30. LIBTARGET = libgravity.so
  31. LDFLAGS = -lm
  32. else ifeq ($(UNAME_S),FreeBSD)
  33. # FreeBSD
  34. LIBTARGET = libgravity.so
  35. LDFLAGS = -lm
  36. else ifeq ($(UNAME_S),NetBSD)
  37. # NetBSD
  38. LIBTARGET = libgravity.so
  39. LDFLAGS = -lm
  40. else ifeq ($(UNAME_S),DragonFly)
  41. # DragonFly
  42. LIBTARGET = libgravity.so
  43. LDFLAGS = -lm
  44. else
  45. # Linux
  46. LIBTARGET = libgravity.so
  47. LDFLAGS = -lm -lrt
  48. endif
  49. endif
  50. ifeq ($(mode),debug)
  51. CFLAGS += -g -O0 -DDEBUG
  52. else
  53. CFLAGS += -O2
  54. endif
  55. all: gravity
  56. gravity: $(OBJ) $(GRAVITY_SRC)
  57. $(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
  58. example: $(OBJ) $(EXAMPLE_SRC)
  59. $(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
  60. lib: gravity
  61. $(CC) -shared -o $(LIBTARGET) $(OBJ) $(LDFLAGS)
  62. clean:
  63. rm -f $(OBJ) $(DEP) gravity example libgravity.so gravity.dll
  64. .PHONY: all clean gravity example
  65. -include $(DEP)