--- Makefile.orig	Fri Jun 23 16:34:47 2000
+++ Makefile	Mon Oct 16 14:49:33 2000
@@ -4,6 +4,9 @@
 BIGFILES=-D_FILE_OFFSET_BITS=64
 CFLAGS=-Wall -Winline -O2 -fomit-frame-pointer -fno-strength-reduce $(BIGFILES)
 
+PICFLAG= -fpic
+SHLIB=	libbz2.so.10.1
+
 OBJS= blocksort.o  \
       huffman.o    \
       crctable.o   \
@@ -11,10 +14,17 @@
       compress.o   \
       decompress.o \
       bzlib.o
+SHOBJS=	$(OBJS:.o=.so)
 
-all: libbz2.a bzip2 bzip2recover test
+.SUFFIXES: .o .so
 
+.if defined(NO_SHARED_LIBS) && ${NO_SHARED_LIBS:L} == "yes"
+all: libbz2.a bzip2 bzip2recover
 bzip2: libbz2.a bzip2.o
+.else
+all: libbz2.a $(SHLIB) bzip2 bzip2recover
+bzip2: libbz2.a $(SHLIB) bzip2.o
+.endif
 	$(CC) $(CFLAGS) -o bzip2 bzip2.o -L. -lbz2
 
 bzip2recover: bzip2recover.o
@@ -29,49 +39,50 @@
 		ranlib libbz2.a ; \
 	fi
 
-test: bzip2
-	@cat words1
-	./bzip2 -1  < sample1.ref > sample1.rb2
-	./bzip2 -2  < sample2.ref > sample2.rb2
-	./bzip2 -3  < sample3.ref > sample3.rb2
-	./bzip2 -d  < sample1.bz2 > sample1.tst
-	./bzip2 -d  < sample2.bz2 > sample2.tst
-	./bzip2 -ds < sample3.bz2 > sample3.tst
-	cmp sample1.bz2 sample1.rb2 
-	cmp sample2.bz2 sample2.rb2
-	cmp sample3.bz2 sample3.rb2
-	cmp sample1.tst sample1.ref
-	cmp sample2.tst sample2.ref
-	cmp sample3.tst sample3.ref
-	@cat words3
+$(SHLIB): $(SHOBJS)
+	$(CC) -shared $(PICFLAG) -o $(SHLIB) $(SHOBJS)
 
-PREFIX=/usr
+test: bzip2
+	./bzip2 -1  < sample1.ref > sample1.rb2 || exit 1
+	./bzip2 -2  < sample2.ref > sample2.rb2 || exit 1
+	./bzip2 -3  < sample3.ref > sample3.rb2 || exit 1
+	./bzip2 -d  < sample1.bz2 > sample1.tst || exit 1
+	./bzip2 -d  < sample2.bz2 > sample2.tst || exit 1
+	./bzip2 -ds < sample3.bz2 > sample3.tst || exit 1
+	cmp sample1.bz2 sample1.rb2 || exit 1
+	cmp sample2.bz2 sample2.rb2 || exit 1
+	cmp sample3.bz2 sample3.rb2 || exit 1
+	cmp sample1.tst sample1.ref || exit 1
+	cmp sample2.tst sample2.ref || exit 1
+	cmp sample3.tst sample3.ref || exit 1
 
 install: bzip2 bzip2recover
-	if ( test ! -d $(PREFIX)/bin ) ; then mkdir $(PREFIX)/bin ; fi
-	if ( test ! -d $(PREFIX)/lib ) ; then mkdir $(PREFIX)/lib ; fi
-	if ( test ! -d $(PREFIX)/man ) ; then mkdir $(PREFIX)/man ; fi
-	if ( test ! -d $(PREFIX)/man/man1 ) ; then mkdir $(PREFIX)/man/man1 ; fi
-	if ( test ! -d $(PREFIX)/include ) ; then mkdir $(PREFIX)/include ; fi
-	cp -f bzip2 $(PREFIX)/bin/bzip2
-	cp -f bzip2 $(PREFIX)/bin/bunzip2
-	cp -f bzip2 $(PREFIX)/bin/bzcat
-	cp -f bzip2recover $(PREFIX)/bin/bzip2recover
-	chmod a+x $(PREFIX)/bin/bzip2
-	chmod a+x $(PREFIX)/bin/bunzip2
-	chmod a+x $(PREFIX)/bin/bzcat
-	chmod a+x $(PREFIX)/bin/bzip2recover
-	cp -f bzip2.1 $(PREFIX)/man/man1
-	chmod a+r $(PREFIX)/man/man1/bzip2.1
-	cp -f bzlib.h $(PREFIX)/include
-	chmod a+r $(PREFIX)/include/bzlib.h
-	cp -f libbz2.a $(PREFIX)/lib
-	chmod a+r $(PREFIX)/lib/libbz2.a
+	if ( test ! -d $(DESTDIR)$(PREFIX)/bin ) ; then $(BSD_INSTALL_PROGRAM_DIR) $(DESTDIR)$(PREFIX)/bin ; fi
+	if ( test ! -d $(DESTDIR)$(PREFIX)/lib ) ; then $(BSD_INSTALL_DATA_DIR) $(DESTDIR)$(PREFIX)/lib ; fi
+	if ( test ! -d $(DESTDIR)$(PREFIX)/man ) ; then $(BSD_INSTALL_MAN_DIR) $(DESTDIR)$(PREFIX)/man ; fi
+	if ( test ! -d $(DESTDIR)$(PREFIX)/man/man1 ) ; then $(BSD_INSTALL_MAN_DIR) $(DESTDIR)$(PREFIX)/man/man1 ; fi
+	if ( test ! -d $(DESTDIR)$(PREFIX)/include ) ; then $(BSD_INSTALL_DATA_DIR) $(DESTDIR)$(PREFIX)/include ; fi
+	$(BSD_INSTALL_PROGRAM) bzip2 $(DESTDIR)$(PREFIX)/bin
+	@cd $(DESTDIR)$(PREFIX)/bin; ln -fs bzip2 bunzip2; \
+			ln -fs bzip2 bzcat
+	$(BSD_INSTALL_PROGRAM) bzip2recover $(DESTDIR)$(PREFIX)/bin
+	$(BSD_INSTALL_MAN) bzip2.1 $(DESTDIR)$(PREFIX)/man/man1
+	$(BSD_INSTALL_MAN) bzip2.1 $(DESTDIR)$(PREFIX)/man/man1/bunzip2.1
+	$(BSD_INSTALL_MAN) bzip2.1 $(DESTDIR)$(PREFIX)/man/man1/bzcat.1
+	$(BSD_INSTALL_MAN) bzip2.1 $(DESTDIR)$(PREFIX)/man/man1/bzip2recover.1
+	$(BSD_INSTALL_DATA) bzlib.h $(DESTDIR)$(PREFIX)/include
+	$(BSD_INSTALL_DATA) libbz2.a $(DESTDIR)$(PREFIX)/lib
+	@if [ -f $(SHLIB) ]; then \
+	   $(BSD_INSTALL_DATA) $(SHLIB) $(DESTDIR)$(PREFIX)/lib; \
+	fi
 
 clean: 
-	rm -f *.o libbz2.a bzip2 bzip2recover \
+	rm -f *.o *.so libbz2.a $(SHLIB) bzip2 bzip2recover \
 	sample1.rb2 sample2.rb2 sample3.rb2 \
 	sample1.tst sample2.tst sample3.tst
+
+.c.so:
+	$(CC) $(CFLAGS) $(PICFLAG) -DPIC -c $? -o $@
 
 blocksort.o: blocksort.c
 	@cat words0
