Makefile 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  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
  16. OBJ = $(SRC:.c=.o)
  17. ifeq ($(OS),Windows_NT)
  18. # Windows
  19. LIBTARGET = gravity.dll
  20. LDFLAGS = -lm -lShlwapi
  21. else
  22. UNAME_S := $(shell uname -s)
  23. ifeq ($(UNAME_S),Darwin)
  24. # MacOS
  25. LIBTARGET = libgravity.dylib
  26. LDFLAGS = -lm
  27. else ifeq ($(UNAME_S),OpenBSD)
  28. # OpenBSD
  29. LIBTARGET = libgravity.so
  30. LDFLAGS = -lm
  31. else ifeq ($(UNAME_S),FreeBSD)
  32. # FreeBSD
  33. LIBTARGET = libgravity.so
  34. LDFLAGS = -lm
  35. else ifeq ($(UNAME_S),NetBSD)
  36. # NetBSD
  37. LIBTARGET = libgravity.so
  38. LDFLAGS = -lm
  39. else ifeq ($(UNAME_S),DragonFly)
  40. # DragonFly
  41. LIBTARGET = libgravity.so
  42. LDFLAGS = -lm
  43. else
  44. # Linux
  45. LIBTARGET = libgravity.so
  46. LDFLAGS = -lm -lrt
  47. endif
  48. endif
  49. ifeq ($(mode),debug)
  50. CFLAGS += -g -O0 -DDEBUG
  51. else
  52. CFLAGS += -O2
  53. endif
  54. all: gravity
  55. gravity: $(OBJ) $(GRAVITY_SRC)
  56. $(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
  57. example: $(OBJ) $(EXAMPLE_SRC)
  58. $(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
  59. lib: gravity
  60. $(CC) -shared -o $(LIBTARGET) $(OBJ) $(LDFLAGS)
  61. clean:
  62. rm -f $(OBJ) gravity example libgravity.so gravity.dll
  63. .PHONY: all clean gravity example