Makefile 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. CC = gcc
  2. LEXER = re2c
  3. PARSER = lemon
  4. INCLUDE_DIR = ../../include
  5. CODEC_INCLUDE_DIR = $(INCLUDE_DIR)/codec
  6. CODEC_SRC ::= $(wildcard codec_*.c)
  7. PARSER_SRC ::= $(CODEC_SRC:codec_%=parser_%)
  8. CODEC_OBJ ::= $(CODEC_SRC:.c=.o)
  9. PARSER_OBJ ::= $(CODEC_OBJ:codec_%=parser_%)
  10. GRAMMAR_OBJ ::= $(CODEC_OBJ:codec_%=grammar_%)
  11. OBJ = $(GRAMMAR_OBJ) $(PARSER_OBJ) $(CODEC_OBJ)
  12. DBG_OBJ = $(OBJ:%.o=%_dbg.o)
  13. INCLUDE ::= -I$(INCLUDE_DIR) -I../../ext/openldap/libraries/liblmdb \
  14. -I../../ext/xxHash -I../../ext/tpl/src -I../../ext/hashmap \
  15. -I../../ext/log/src
  16. CFLAGS = -Wall -fPIC -MMD -DLOG_USE_COLOR $(INCLUDE)
  17. DBG_CFLAGS = -I../../test -O0 -g3 -DDEBUG
  18. .DEFAULT_GOAL := all
  19. .PHONY: codec
  20. codec: $(OBJ)
  21. .PHONY: debug
  22. debug: $(DBG_OBJ)
  23. .PHONY: parsers
  24. parsers: $(PARSER_SRC)
  25. %_dbg.o: %.c
  26. $(CC) $(CFLAGS) $(DBG_CFLAGS) -c $^ -o $@
  27. # Parser C sources.
  28. parser_%.c: lexer_%.re grammar_%.c ../codec.c
  29. $(LEXER) $< -o $@ -T --case-ranges
  30. .PRECIOUS: grammar_%.c $(CODEC_INCLUDE_DIR)/tokens_%.h
  31. # Parser generators.
  32. grammar_%.c $(CODEC_INCLUDE_DIR)/tokens_%.h: grammar_%.y
  33. $(PARSER) $< -Tlempar.c -d.
  34. mv grammar_$*.h $(CODEC_INCLUDE_DIR)/tokens_$*.h