
INSTALLDIR = /usr/local/lib

DEFS = -DHAVE_MMAP=1 -DHAVE_UNISTD_H=1 -DHAVE_SYS_UIO_H=1 -DHAVE_WRITEV=1 \
	-DHAVE_SYS_PARAM_H=1 -DHAVE_FCNTL_H=1 -DHAVE_SYS_MMAN_H=1 \
	-DUSE_MALLOC_LOCK=1 -DPARANOIA=9

LIBFLAGS = -shared -Wl,-soname,libdnmalloc.so.1

all: libdnmalloc.so.1.0

libdnmalloc.so.1.0: dnmalloc.o
	gcc -O2 $(LIBFLAGS) -o libdnmalloc.so.1.0 dnmalloc.o && \
	rm -f libdnmalloc.so && ln -s libdnmalloc.so.1.0 libdnmalloc.so && \
	rm -f libdnmalloc.so.1 && ln -s libdnmalloc.so.1.0 libdnmalloc.so.1

dnmalloc.o: dnmalloc.c
	gcc -O2 -fPIC $(DEFS) -rdynamic -c -Wall dnmalloc.c

test: t-test1 t-test2 t-test3
	@./testdrive.sh

t-test1: t-test1.c libdnmalloc.so.1.0
	gcc -O2 -pthread -o t-test1 t-test1.c -L. -ldnmalloc

t-test2: t-test2.c libdnmalloc.so.1.0
	gcc -O2 -pthread -o t-test2 t-test2.c -L. -ldnmalloc

t-test3: t-test3.c libdnmalloc.so.1.0
	gcc -O2 -pthread -o t-test3 t-test3.c -L. -ldnmalloc

install: libdnmalloc.so.1.0
	install -g root -o root -m 644 libdnmalloc.so.1.0 $(INSTALLDIR)/ && \
	( cd $(INSTALLDIR) && ln -s libdnmalloc.so.1.0 libdnmalloc.so ) && \
	( cd $(INSTALLDIR) && ln -s libdnmalloc.so.1 libdnmalloc.so ) && \
	ldconfig

uninstall:
	rm -f $(INSTALLDIR)/libdnmalloc.so.1.0 
	rm -f $(INSTALLDIR)/libdnmalloc.so.1
	rm -f $(INSTALLDIR)/libdnmalloc.so

clean:
	@rm -f *.o *.so *.so.? *.so.?.? t-test1
