Moved gedcom.h to include subdirectory.
[gedcom-parse.git] / Makefile
1 # $Id$
2 # $Name$
3
4 LIBTOOL=libtool
5 YACC=bison
6 LEX=flex
7
8 LIBPATH=/usr/local/lib
9 DMALLOC_CFLAGS=
10 DMALLOC_LOADLIBES=
11 CFLAGS=-g -W -Wall -pedantic $(DMALLOC_CFLAGS)
12 CPPFLAGS=-I ./include
13 YFLAGS=--debug --defines
14 LFLAGS=-8
15 LOADLIBES=$(DMALLOC_LOADLIBES)
16 LDFLAGS_GEDCOM=-L.libs
17
18 all:    ansel_module libgedcom.so gedcom_parse
19
20 gedcom_parse:   standalone.o
21         $(CC) $(LDFLAGS) $(LDFLAGS_GEDCOM) -lgedcom $^ $(LOADLIBES) $(LDLIBS) -o $@
22
23 libgedcom.so:   lex.gedcom_1byte_.lo lex.gedcom_hilo_.lo lex.gedcom_lohi_.lo \
24                 gedcom.tab.lo message.lo multilex.lo encoding.lo interface.lo
25         $(LIBTOOL) $(CC) $(LDFLAGS) $^ $(LOADLIBES) $(LDLIBS) -o libgedcom.la -rpath $(LIBPATH)
26         rm -f libgedcom.so
27         ln -s .libs/libgedcom.so.0.0.0 libgedcom.so
28
29 %.lo:   %.c
30         $(LIBTOOL) $(CC) -c $(CPPFLAGS) $(CFLAGS) $^
31
32 ansel_module:
33         cd ansel && $(MAKE)
34
35 lex.gedcom_1byte_.c:    gedcom_1byte.lex gedcom.tab.h gedcom_internal.h multilex.h \
36                         gedcom_lex_common.c encoding.h
37         $(LEX) $(LFLAGS) -Pgedcom_1byte_ gedcom_1byte.lex
38
39 lex.gedcom_hilo_.c:     gedcom_hilo.lex gedcom.tab.h gedcom_internal.h multilex.h \
40                         gedcom_lex_common.c encoding.h
41         $(LEX) $(LFLAGS) -Pgedcom_hilo_ gedcom_hilo.lex
42
43 lex.gedcom_lohi_.c:     gedcom_lohi.lex gedcom.tab.h gedcom_internal.h multilex.h \
44                         gedcom_lex_common.c encoding.h
45         $(LEX) $(LFLAGS) -Pgedcom_lohi_ gedcom_lohi.lex
46
47 gedcom.tab.c gedcom.tab.h:      gedcom.y gedcom_internal.h
48         $(YACC) $(YFLAGS) --name-prefix=gedcom_ gedcom.y
49
50 .PHONY: clean
51 clean:
52         rm -f core gedcom_parse lexer_* *.o *.lo *.la .libs/* lex.gedcom_* \
53         gedcom.tab.* gedcom.output libgedcom.so
54         rm -rf .libs
55         cd ansel && $(MAKE) clean
56
57 # Lexer test programs
58
59 lexer_1byte:    lex.gedcom_1byte_.test.o message.o encoding.o
60         $(CC) $(LDFLAGS) $^ $(LOADLIBES) $(LDLIBS) -o $@
61
62 lex.gedcom_1byte_.test.o:       lex.gedcom_1byte_.c
63         $(CC) -DLEXER_TEST -c $(CPPFLAGS) $(CFLAGS) $^ -o $@
64
65 test_1byte:     lexer_1byte
66         cat t/allged.ged | ./lexer_1byte
67
68 lexer_hilo:     lex.gedcom_hilo_.test.o message.o encoding.o
69         $(CC) $(LDFLAGS) $^ $(LOADLIBES) $(LDLIBS) -o $@
70
71 lex.gedcom_hilo_.test.o:        lex.gedcom_hilo_.c
72         $(CC) -DLEXER_TEST -c $(CPPFLAGS) $(CFLAGS) $^ -o $@
73
74 test_hilo:      lexer_hilo
75         cat t/uhlcl.ged | ./lexer_hilo
76
77 lexer_lohi:     lex.gedcom_lohi_.test.o message.o encoding.o
78         $(CC) $(LDFLAGS) $^ $(LOADLIBES) $(LDLIBS) -o $@
79
80 lex.gedcom_lohi_.test.o:        lex.gedcom_lohi_.c
81         $(CC) -DLEXER_TEST -c $(CPPFLAGS) $(CFLAGS) $^ -o $@
82
83 test_lohi:      lexer_lohi
84         cat t/ulhcl.ged | ./lexer_lohi
85
86 # Test of parser
87
88 test:   all
89         @export GCONV_PATH=./ansel; \
90         export LD_LIBRARY_PATH=.libs; \
91         for file in t/*.ged; do \
92           echo "=== testing $$file"; \
93           ./gedcom_parse -2 $$file; \
94         done
95
96 testmem:        DMALLOC_CFLAGS=-DMALLOC
97 testmem:        DMALLOC_LOADLIBES=-ldmalloc
98 testmem:        clean test