12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- BASEDIR = ../..
- CC = gcc
- LEXER = re2c
- PARSER = $(BASEDIR)/bin/lemon
- LEMON_SRC_DIR = $(BASEDIR)/ext/sqlite/tool
- INCLUDE_DIR = $(BASEDIR)/include
- CODEC_INCLUDE_DIR = $(INCLUDE_DIR)/codec
- CODEC_SRC ::= $(wildcard codec_*.c)
- PARSER_SRC ::= $(CODEC_SRC:codec_%=parser_%)
- CODEC_OBJ ::= $(CODEC_SRC:.c=.o)
- PARSER_OBJ ::= $(CODEC_OBJ:codec_%=parser_%)
- GRAMMAR_OBJ ::= $(CODEC_OBJ:codec_%=grammar_%)
- OBJ = $(GRAMMAR_OBJ) $(PARSER_OBJ) $(CODEC_OBJ)
- DBG_OBJ = $(OBJ:%.o=%_dbg.o)
- INCLUDE ::= -I$(INCLUDE_DIR) -I../../ext/tpl/src -I../../ext/hashmap \
- -I../../ext/log/src
- CFLAGS = -std=gnu11 -Wall -fPIC -MMD $(INCLUDE)
- DBG_CFLAGS = -I../../test -O0 -g3 -DDEBUG
- .DEFAULT_GOAL := codec
- .PHONY: codec
- codec: $(OBJ)
- .PHONY: debug
- debug: $(DBG_OBJ)
- .PHONY: parsers
- parsers: $(PARSER_SRC)
- %_dbg.o: %.c
- $(CC) $(CFLAGS) $(DBG_CFLAGS) -c $^ -o $@
- # Parser C sources.
- parser_%.c: lexer_%.re grammar_%.c ../codec.c
- $(LEXER) $< -o $@ -T --case-ranges
- .PRECIOUS: grammar_%.c $(CODEC_INCLUDE_DIR)/tokens_%.h
- # Parser generators.
- grammar_%.c $(CODEC_INCLUDE_DIR)/tokens_%.h: grammar_%.y
- $(PARSER) $< -p -T$(LEMON_SRC_DIR)/lempar.c -d.
- mv grammar_$*.h $(CODEC_INCLUDE_DIR)/tokens_$*.h
|