Makefile 959 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. CFLAGS += -std=c99 -Wall -O2 -D_REENTRANT
  2. LIBS := -lm -luv
  3. # Check OS
  4. TARGET_OS := $(shell uname -s | tr 'A-Z' 'a-z' 2>/dev/null || echo unknown)
  5. ifeq ($(TARGET_OS), linux)
  6. CFLAGS += -D_POSIX_C_SOUCE=200212L -D_BSD_SOURCE -D_DEFAULT_SOURCE
  7. LIBS += -ldl
  8. LDFLAGS += -Wl,-E
  9. endif
  10. SRC := main.c session.c logger.c mt19937-64.c dict.c zmalloc.c redisassert.c \
  11. siphash.c
  12. BIN := sv
  13. VER ?= $(shell git describe --tags --always --dirty)
  14. # OBJ Dir
  15. ODIR := obj
  16. OBJ := $(patsubst %.c,$(ODIR)/%.o,$(SRC))
  17. THIRD := third
  18. ## Dependencies
  19. # llhttp
  20. DEPS += $(THIRD)/llhttp/libllhttp.a
  21. CFLAGS += -I$(THIRD)/llhttp
  22. LDFLAGS += -L$(THIRD)/llhttp
  23. LIBS += -l:libllhttp.a
  24. all: $(BIN)
  25. clean:
  26. $(RM) -rf $(BIN)
  27. $(RM) -rf $(OBJ)
  28. $(BIN): $(OBJ)
  29. @echo LINK $(BIN)
  30. $(CC) $(LDFLAGS) -o $@ $^ $(LIBS)
  31. $(OBJ): $(ODIR)
  32. $(ODIR):
  33. mkdir -p $@
  34. $(ODIR)/%.o: %.c
  35. @echo CC $<
  36. $(CC) $(CFLAGS) -c $< -o $@
  37. .PHONY: all clean
  38. .SUFFIXES:
  39. .SUFFIXES: .c .o
  40. vpath %c src
  41. vpath %h src