$OpenBSD: patch-Makefile,v 1.12 2016/03/10 21:58:51 naddy Exp $
--- Makefile.orig	Sat Sep 11 00:46:02 2010
+++ Makefile	Thu Mar 10 20:07:52 2016
@@ -23,10 +23,9 @@ LDFLAGS=
 BIGFILES=-D_FILE_OFFSET_BITS=64
 CFLAGS=-Wall -Winline -O2 -g $(BIGFILES)
 
-# Where you want it installed when you do 'make install'
-PREFIX=/usr/local
+PICFLAG= -fpic
+SHLIB= libbz2.so.${LIBbz2_VERSION}
 
-
 OBJS= blocksort.o  \
       huffman.o    \
       crctable.o   \
@@ -34,10 +33,12 @@ OBJS= blocksort.o  \
       compress.o   \
       decompress.o \
       bzlib.o
+SHOBJS=	$(OBJS:.o=.so)
 
-all: libbz2.a bzip2 bzip2recover test
+.SUFFIXES: .o .so
 
-bzip2: libbz2.a bzip2.o
+all: libbz2.a $(SHLIB) bzip2 bzip2recover
+bzip2: libbz2.a $(SHLIB) bzip2.o
 	$(CC) $(CFLAGS) $(LDFLAGS) -o bzip2 bzip2.o -L. -lbz2
 
 bzip2recover: bzip2recover.o
@@ -52,66 +53,61 @@ libbz2.a: $(OBJS)
 		$(RANLIB) libbz2.a ; \
 	fi
 
+$(SHLIB): $(SHOBJS)
+	rm -f $(SHLIB)
+	$(CC) -shared $(PICFLAG) -o $(SHLIB) $(SHOBJS)
+
 check: test
 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
 
 install: bzip2 bzip2recover
-	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
-	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
-	cp -f bzgrep $(PREFIX)/bin/bzgrep
-	ln -s -f $(PREFIX)/bin/bzgrep $(PREFIX)/bin/bzegrep
-	ln -s -f $(PREFIX)/bin/bzgrep $(PREFIX)/bin/bzfgrep
-	chmod a+x $(PREFIX)/bin/bzgrep
-	cp -f bzmore $(PREFIX)/bin/bzmore
-	ln -s -f $(PREFIX)/bin/bzmore $(PREFIX)/bin/bzless
-	chmod a+x $(PREFIX)/bin/bzmore
-	cp -f bzdiff $(PREFIX)/bin/bzdiff
-	ln -s -f $(PREFIX)/bin/bzdiff $(PREFIX)/bin/bzcmp
-	chmod a+x $(PREFIX)/bin/bzdiff
-	cp -f bzgrep.1 bzmore.1 bzdiff.1 $(PREFIX)/man/man1
-	chmod a+r $(PREFIX)/man/man1/bzgrep.1
-	chmod a+r $(PREFIX)/man/man1/bzmore.1
-	chmod a+r $(PREFIX)/man/man1/bzdiff.1
-	echo ".so man1/bzgrep.1" > $(PREFIX)/man/man1/bzegrep.1
-	echo ".so man1/bzgrep.1" > $(PREFIX)/man/man1/bzfgrep.1
-	echo ".so man1/bzmore.1" > $(PREFIX)/man/man1/bzless.1
-	echo ".so man1/bzdiff.1" > $(PREFIX)/man/man1/bzcmp.1
+	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_DATA) libbz2.a $(DESTDIR)$(PREFIX)/lib
+	@if [ -f $(SHLIB) ]; then \
+	   $(BSD_INSTALL_DATA) $(SHLIB) $(DESTDIR)$(PREFIX)/lib; \
+	fi
+	$(BSD_INSTALL_DATA) bzlib.h $(DESTDIR)$(PREFIX)/include
+	$(BSD_INSTALL_PROGRAM) bzip2 bzip2recover $(DESTDIR)$(PREFIX)/bin
+	$(BSD_INSTALL_SCRIPT) bzgrep bzmore bzdiff $(DESTDIR)$(PREFIX)/bin
+	@cd $(DESTDIR)$(PREFIX)/bin; ln -fs bzip2 bunzip2; \
+			ln -fs bzip2 bzcat
+	@cd $(DESTDIR)$(PREFIX)/bin; ln -fs bzgrep bzegrep; \
+			ln -fs bzgrep bzfgrep
+	@cd $(DESTDIR)$(PREFIX)/bin; ln -fs bzmore bzless
+	@cd $(DESTDIR)$(PREFIX)/bin; ln -fs bzdiff bzcmp
+	$(BSD_INSTALL_MAN) bzip2.1 bzgrep.1 bzmore.1 bzdiff.1 \
+			$(DESTDIR)$(PREFIX)/man/man1
+	@cd $(DESTDIR)$(PREFIX)/man/man1; ln -fs bzip2.1 bunzip2.1; \
+			ln -fs bzip2.1 bzcat.1; \
+			ln -fs bzip2.1 bzip2recover.1
+	@cd $(DESTDIR)$(PREFIX)/man/man1; ln -fs bzgrep.1 bzegrep.1; \
+			ln -fs bzgrep.1 bzfgrep.1
+	@cd $(DESTDIR)$(PREFIX)/man/man1; ln -fs bzmore.1 bzless.1
+	@cd $(DESTDIR)$(PREFIX)/man/man1; ln -fs bzdiff.1 bzcmp.1
 
 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
