Better interface for setup of encoding.
[gedcom-parse.git] / Makefile
index a0ca68a43b05f52a477724d01a50b41ddb55e4a0..125b82e0b281410b448c600f6205c72dd60d8cd6 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,16 +1,60 @@
 # $Id$
 # $Name$
 
-CFLAGS=-Wall -pedantic
+YACC=bison
+LEX=flex
 
-gedcom_parse:  standalone.o lex.gedcom_.o gedcom.tab.o
-       cc standalone.o lex.gedcom_.o gedcom.tab.o -o gedcom_parse
+CFLAGS=-g -W -Wall -pedantic
+YFLAGS=--debug --defines
+LFLAGS=-8
 
-lex.gedcom_.c: gedcom.lex gedcom.tab.h gedcom.h
-       flex -8 -Pgedcom_ gedcom.lex
+gedcom_parse:  standalone.o lex.gedcom_1byte_.o lex.gedcom_hilo_.o \
+                lex.gedcom_lohi_.o gedcom.tab.o message.o multilex.o \
+               encoding.o
+       $(CC) $(LDFLAGS) $^ $(LOADLIBES) $(LDLIBS) -o $@
+
+libgedcom.so:
+
+lex.gedcom_1byte_.c:   gedcom_1byte.lex gedcom.tab.h gedcom.h multilex.h
+       $(LEX) $(LFLAGS) -Pgedcom_1byte_ gedcom_1byte.lex
+
+lex.gedcom_hilo_.c:    gedcom_hilo.lex gedcom.tab.h gedcom.h multilex.h
+       $(LEX) $(LFLAGS) -Pgedcom_hilo_ gedcom_hilo.lex
+
+lex.gedcom_lohi_.c:    gedcom_lohi.lex gedcom.tab.h gedcom.h multilex.h
+       $(LEX) $(LFLAGS) -Pgedcom_lohi_ gedcom_lohi.lex
 
 gedcom.tab.c gedcom.tab.h:     gedcom.y gedcom.h
-       bison --debug --defines --name-prefix=gedcom_ gedcom.y
+       $(YACC) $(YFLAGS) --name-prefix=gedcom_ gedcom.y
 
 clean:
-       rm -f core gedcom_parse *.o lex.gedcom_.c gedcom.tab.* gedcom.output
+       rm -f core gedcom_parse test_* *.o lex.gedcom_* \
+        gedcom.tab.* gedcom.output
+
+# Lexer test programs
+
+test_1byte:    lex.gedcom_1byte_.test.o message.o encoding.o
+       $(CC) $(LDFLAGS) $^ $(LOADLIBES) $(LDLIBS) -o $@
+
+lex.gedcom_1byte_.test.o:      lex.gedcom_1byte_.c
+       $(CC) -DLEXER_TEST -c $(CPPFLAGS) $(CFLAGS) $^ -o $@
+
+test_hilo:     lex.gedcom_hilo_.test.o message.o encoding.o
+       $(CC) $(LDFLAGS) $^ $(LOADLIBES) $(LDLIBS) -o $@
+
+lex.gedcom_hilo_.test.o:       lex.gedcom_hilo_.c
+       $(CC) -DLEXER_TEST -c $(CPPFLAGS) $(CFLAGS) $^ -o $@
+
+test_lohi:     lex.gedcom_lohi_.test.o message.o encoding.o
+       $(CC) $(LDFLAGS) $^ $(LOADLIBES) $(LDLIBS) -o $@
+
+lex.gedcom_lohi_.test.o:       lex.gedcom_lohi_.c
+       $(CC) -DLEXER_TEST -c $(CPPFLAGS) $(CFLAGS) $^ -o $@
+
+# Test of parser
+
+test:  gedcom_parse
+       @for file in t/*.ged; do \
+         echo "=== testing $$file"; \
+         ./gedcom_parse $$file; \
+       done