.PHONY: all clean format push
CC=gcc
CFLAGS=-Wall -g
LEX=flex
YACC=bison
YFLAGS=-d
DEPFLAGS=-MT $@ -MMD -MP -MF $*.Td
POSTCOMPILE = @mv -f $*.Td $*.d && touch $@
all: usbasic
usbasic: lex.yy.o usbasic.tab.o types.o parse.o vec.o lines.o main.o
$(CC) $(CFLAGS) -o $@ $^ -lgc -lfl -lreadline -lhistory
# Dependencies due to usbasic.tab.h
parse.o: parse.c parse.h usbasic.tab.h
$(CC) $(CFLAGS) $(DEPFLAGS) -c $< -o $@
$(POSTCOMPILE)
lines.o: lines.c lines.h vec.h usbasic.tab.h
$(CC) $(CFLAGS) $(DEPFLAGS) -c $< -o $@
$(POSTCOMPILE)
main.o: main.c usbasic.tab.h
$(CC) $(CFLAGS) $(DEPFLAGS) -c $< -o $@
$(POSTCOMPILE)
# General compilation rule for C files
%.o: %.c %.d
$(CC) $(CFLAGS) $(DEPFLAGS) -c $< -o $@
$(POSTCOMPILE)
# Lexer and parser rules ensuring order
lex.yy.o: lex.yy.c usbasic.tab.h
$(CC) $(CFLAGS) -c $< -o $@
lex.yy.c: usbasic.l | usbasic.tab.h
$(LEX) $<
usbasic.tab.o: usbasic.tab.c usbasic.tab.h
$(CC) $(CFLAGS) -c $< -o $@
usbasic.tab.c usbasic.tab.h: usbasic.y
$(YACC) $(YFLAGS) $<
clean:
rm -f usbasic lex.yy.c usbasic.tab.c usbasic.tab.h *.o *.d *.Td
format:
clang-format -i main.c parse.h parse.c lines.h lines.c types.h types.c vec.h vec.c
push:
git push
ssh dreamhost ./git-arr-0.30/git-arr --config ./git-arr-0.30/tailrecursion.conf generate --output ./tailrecursion.com/git-arr
DEPFILES := $(wildcard *.d)
-include $(DEPFILES)
%.d: ;
%.Td: ;