Moved from main subdirectory.
[gedcom-parse.git] / Makefile
index ac01d3922d0932afd3f0313f88ed93d8859dcd86..5a8becaf8d3f5a7f6c3a8c65ceeb88dd13f7c891 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,41 +1,56 @@
 # $Id$
 # $Name$
 
+LIBTOOL=libtool
 YACC=bison
 LEX=flex
 
-CFLAGS=-g -W -Wall -pedantic
+LIBPATH=/usr/local/lib
+DMALLOC_CFLAGS=
+DMALLOC_LOADLIBES=
+CFLAGS=-g -W -Wall -pedantic $(DMALLOC_CFLAGS)
 YFLAGS=--debug --defines
 LFLAGS=-8
+LOADLIBES=$(DMALLOC_LOADLIBES)
+LDFLAGS_GEDCOM=-L.libs
 
-all:   ansel_module gedcom_parse
+all:   ansel_module libgedcom.so gedcom_parse
 
-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 $@
+gedcom_parse:  standalone.o
+       $(CC) $(LDFLAGS) $(LDFLAGS_GEDCOM) -lgedcom $^ $(LOADLIBES) $(LDLIBS) -o $@
+
+libgedcom.so:  lex.gedcom_1byte_.lo lex.gedcom_hilo_.lo lex.gedcom_lohi_.lo \
+               gedcom.tab.lo message.lo multilex.lo encoding.lo interface.lo
+       $(LIBTOOL) $(CC) $(LDFLAGS) $^ $(LOADLIBES) $(LDLIBS) -o libgedcom.la -rpath $(LIBPATH)
+       rm -f libgedcom.so
+       ln -s .libs/libgedcom.so.0.0.0 libgedcom.so
+
+%.lo:  %.c
+       $(LIBTOOL) $(CC) -c $(CPPFLAGS) $(CFLAGS) $^
 
 ansel_module:
        cd ansel && $(MAKE)
 
-lex.gedcom_1byte_.c:   gedcom_1byte.lex gedcom.tab.h gedcom.h multilex.h \
+lex.gedcom_1byte_.c:   gedcom_1byte.lex gedcom.tab.h gedcom_internal.h multilex.h \
                        gedcom_lex_common.c encoding.h
        $(LEX) $(LFLAGS) -Pgedcom_1byte_ gedcom_1byte.lex
 
-lex.gedcom_hilo_.c:    gedcom_hilo.lex gedcom.tab.h gedcom.h multilex.h \
+lex.gedcom_hilo_.c:    gedcom_hilo.lex gedcom.tab.h gedcom_internal.h multilex.h \
                        gedcom_lex_common.c encoding.h
        $(LEX) $(LFLAGS) -Pgedcom_hilo_ gedcom_hilo.lex
 
-lex.gedcom_lohi_.c:    gedcom_lohi.lex gedcom.tab.h gedcom.h multilex.h \
+lex.gedcom_lohi_.c:    gedcom_lohi.lex gedcom.tab.h gedcom_internal.h multilex.h \
                        gedcom_lex_common.c encoding.h
        $(LEX) $(LFLAGS) -Pgedcom_lohi_ gedcom_lohi.lex
 
-gedcom.tab.c gedcom.tab.h:     gedcom.y gedcom.h
+gedcom.tab.c gedcom.tab.h:     gedcom.y gedcom_internal.h
        $(YACC) $(YFLAGS) --name-prefix=gedcom_ gedcom.y
 
+.PHONY:        clean
 clean:
-       rm -f core gedcom_parse test_* *.o lex.gedcom_* \
-        gedcom.tab.* gedcom.output
+       rm -f core gedcom_parse lexer_* *.o *.lo *.la .libs/* lex.gedcom_* \
+        gedcom.tab.* gedcom.output libgedcom.so
+       rm -rf .libs
        cd ansel && $(MAKE) clean
 
 # Lexer test programs
@@ -71,7 +86,12 @@ test_lohi:   lexer_lohi
 
 test:  all
        @export GCONV_PATH=./ansel; \
+       export LD_LIBRARY_PATH=.libs; \
         for file in t/*.ged; do \
          echo "=== testing $$file"; \
-         ./gedcom_parse $$file; \
+         ./gedcom_parse -2 $$file; \
        done
+
+testmem:       DMALLOC_CFLAGS=-DMALLOC
+testmem:       DMALLOC_LOADLIBES=-ldmalloc
+testmem:       clean test