NAME := ag
CFLAGS := -ansi -pedantic -D_GNU_SOURCE
OBJS := scanner.o parser.o symtable.o
-TARGETS := parser.y scanner.lex
all: $(NAME)
parser.h: parser.c
-oxout.y oxout.l: $(TARGETS)
- @echo " OX $(TARGETS)"
- @ox parser.y scanner.lex
+oxout.y oxout.l: parser.y scanner.lex
+ @echo " OX $^"
+ @ox $^
.PHONY: clean
clean:
@echo " LINK $<"
@gcc $(CFLAGS) -o $@ $? -lfl
-$(SCANNER).o: $(SCANNER).c $(PARSER).h
+%.o: %.c parser.h
@echo " CC $<"
- @gcc $(CFLAGS) -c $<
-
-$(SCANNER).c: $(SCANNER).lex
- @echo " FLEX $<"
- @flex -o$@ $<
-
-$(PARSER).o: $(PARSER).c
- @echo " CC $<"
- @gcc $(CFLAGS) -c $<
+ @gcc -c $(CFLAGS) $< #-Wall
$(PARSER).c: $(PARSER).y
@echo " YACC $<"
$(PARSER).h: $(PARSER).c
+$(SCANNER).c: $(SCANNER).lex
+ @echo " FLEX $<"
+ @flex -o$@ $<
+
.PHONY: clean
clean:
.PHONY: clean
clean:
- rm -f $(NAME).o $(NAME) $(NAME).c
+ rm -f $(NAME){,.o,.c}
1test: 2test