1 # Original sources and final program. 2 3 SOURCES = \ 4 main.c client.c common.c config.c declaration.c dispatch.c includes.c \ 5 interface.c message.c program.c server.c structure.c summary.c \ 6 7 PROGRAM = idl 8 9 # Generated files from flex and bison. 10 11 SCANNER = lex.yy.c 12 PARSER = y.tab.c 13 HEADER = y.tab.h 14 GENERATED = $(SCANNER) $(PARSER) 15 16 # Version-related files. 17 18 VERSION = version.h 19 20 # Computed values. 21 22 ALL_SOURCES = $(SOURCES) $(GENERATED) 23 OBJECTS = $(patsubst %.c,%.o,$(SOURCES)) 24 25 # Flags and options. 26 27 CFLAGS = -D_GNU_SOURCE 28 #DEBUG = -DYYDEBUG=1 29 30 # Rules. 31 32 .PHONY: version 33 34 all: $(PROGRAM) 35 36 $(VERSION): version 37 echo "#define VERSION_INFORMATION \"$(shell hg identify -i)\"" > $(VERSION) 38 39 version: 40 41 clean: 42 $(RM) $(PROGRAM) $(GENERATED) $(HEADER) $(OBJECTS) 43 44 $(PROGRAM): $(GENERATED) $(OBJECTS) 45 $(CC) $(CFLAGS) -o $@ $(GENERATED) $(OBJECTS) -ll 46 47 $(SCANNER): idl.lex 48 flex $< 49 50 $(PARSER): idl.y 51 bison -d -y -t $< 52 53 main.c: $(VERSION) 54 55 .c.o: 56 $(CC) $(CFLAGS) -o $@ -c $<