diff --git a/makefile b/makefile index 3f37bc6..02be748 100644 --- a/makefile +++ b/makefile @@ -1,30 +1,41 @@ -SRC = src/bot/handlers.c src/bot/context.c src/main.c +GRAMMAR = expenses +LEX = src/grammar/$(GRAMMAR).l +YACC = src/grammar/$(GRAMMAR).y +BUILDPATH = ./build LOCPATH = ./bin +SRC = src/bot/handlers.c src/bot/context.c src/main.c src/grammar/types.h $(BUILDPATH)/$(GRAMMAR)/expenses.yy.c $(BUILDPATH)/$(GRAMMAR)/expenses.tab.c INSTALLPATH = /usr/local CFLAGS = `pkg-config --cflags glib-2.0` -LFLAGS = -lstrophe `pkg-config --libs glib-2.0` +LFLAGS = -lstrophe `pkg-config --libs glib-2.0` DEBFLAGS = -g -Wall OFLAGS = -O2 NAME = xmpp-bot -all: +all: grammar mkdir -p $(LOCPATH) gcc $(SRC) -o $(LOCPATH)/$(NAME) $(CFLAGS) $(OFLAGS) $(LFLAGS) $(LFLAGS_STATUS) -nostatus: +nostatus: grammar mkdir -p $(LOCPATH) gcc $(SRC) -o $(LOCPATH)/$(NAME) $(OFLAGS) $(LFLAGS) -debug: +debug: grammar mkdir -p $(LOCPATH)/debug gcc $(SRC) -o $(LOCPATH)/debug/$(NAME)_debug $(CFLAGS) $(LFLAGS) $(DEBFLAGS) $(LFLAGS_STATUS) -prof: +prof: grammar mkdir -p $(LOCPATH)/prof gcc $(SRC) -o $(LOCPATH)/prof/$(NAME)_prof $(CFLAGS) $(LFLAGS) $(LFLAGS_STATUS) -pg -asan: +asan: grammar gcc $(SRC) -o $(LOCPATH)/debug/$(NAME)_debug_asan $(CFLAGS) $(LFLAGS) $(DEBFLAGS) $(LFLAGS_STATUS) -fsanitize=address +grammar: + mkdir -p $(BUILDPATH)/$(GRAMMAR) + flex -o $(BUILDPATH)/$(GRAMMAR)/expenses.yy.c $(LEX) + bison -o $(BUILDPATH)/$(GRAMMAR)/expenses.tab.c -d $(YACC) clean: + rm -rf $(BUILDPATH) + rm -f $(LOCPATH)/debug/$(NAME)_debug rm -f $(LOCPATH)/$(NAME) rm -f $(LOCPATH)/debug/$(NAME)_debug distclean: + rm -rf $(BUILDPATH) rm -r $(LOCPATH) install: cp $(LOCPATH)/$(NAME) $(INSTALLPATH)/bin/$(NAME)