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