--- Makefile.orig	Sat Sep  4 18:09:06 1999
+++ Makefile	Sun Mar  5 17:35:00 2000
@@ -11,7 +11,15 @@
       decompress.o \
       bzlib.o
 
-all: libbz2.a bzip2 bzip2recover test
+.SUFFIXES: .c .o .so
+
+VERSION=9.5
+
+.if defined(NO_SHARED_LIBS) && ${NO_SHARED_LIBS:U} == YES
+all: libbz2.a bzip2 bzip2recover
+.else
+all: libbz2.a libbz2.so.${VERSION} bzip2 bzip2recover
+.endif
 
 bzip2: libbz2.a bzip2.o
 	$(CC) $(CFLAGS) -o bzip2 bzip2.o -L. -lbz2
@@ -28,47 +36,48 @@
 		ranlib libbz2.a ; \
 	fi
 
+libbz2.so.${VERSION}: $(OBJS:S/o$/so/g)
+	rm -f libbz2.so.${VERSION}
+	ld -Bshareable -Bforcearchive -o libbz2.so.${VERSION} $(OBJS:S/o$/so/g)
+
 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
+	./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
 
 PREFIX=/usr
 
 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 $(PREFIX)/bin ) ; then mkdir -p $(PREFIX)/bin ; fi
+	if ( test ! -d $(PREFIX)/lib ) ; then mkdir -p $(PREFIX)/lib ; fi
+	if ( test ! -d $(PREFIX)/man ) ; then mkdir -p $(PREFIX)/man ; fi
+	if ( test ! -d $(PREFIX)/man/man1 ) ; then mkdir -p $(PREFIX)/man/man1 ; fi
+	if ( test ! -d $(PREFIX)/include ) ; then mkdir -p $(PREFIX)/include ; fi
+	$(BSD_INSTALL_PROGRAM) bzip2 $(PREFIX)/bin
+	@cd $(PREFIX)/bin; ln -fs bzip2 bunzip2; \
+			ln -fs bzip2 bzcat
+	$(BSD_INSTALL_PROGRAM) bzip2recover $(PREFIX)/bin
+	$(BSD_INSTALL_MAN) bzip2.1 $(PREFIX)/man/man1
+	$(BSD_INSTALL_MAN) bzip2.1 $(PREFIX)/man/man1/bunzip2.1
+	$(BSD_INSTALL_MAN) bzip2.1 $(PREFIX)/man/man1/bzcat.1
+	$(BSD_INSTALL_MAN) bzip2.1 $(PREFIX)/man/man1/bzip2recover.1
+	$(BSD_INSTALL_DATA) bzlib.h $(PREFIX)/include
+	$(BSD_INSTALL_DATA) libbz2.a $(PREFIX)/lib
+	@if [ -f libbz2.so.${VERSION} ]; then \
+	 $(BSD_INSTALL_DATA) libbz2.so.${VERSION} $(PREFIX)/lib ;\
+	fi
 
 clean: 
-	rm -f *.o libbz2.a bzip2 bzip2recover \
+	rm -f *.o *.so libbz2.a libbz2.so.${VERSION} bzip2 bzip2recover \
 	sample1.rb2 sample2.rb2 sample3.rb2 \
 	sample1.tst sample2.tst sample3.tst
 
@@ -90,6 +99,12 @@
 	$(CC) $(CFLAGS) -c bzip2.c
 bzip2recover.o: bzip2recover.c
 	$(CC) $(CFLAGS) -c bzip2recover.c
+
+.c.o:
+	$(CC) $(CFLAGS) -c $*.c -o $*.o
+
+.c.so:
+	$(CC) $(CFLAGS) -fpic -DPIC -c $*.c -o $*.so
 
 tarfile:
 	tar cvf interim.tar blocksort.c huffman.c crctable.c \
