2
0

Makefile 1.4 KB

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