+# This is the correct way to build a lib
+
+CC=gcc
+CFLAGS=-Wall -Winline -O2
+
+OBJS=baz.o extra.o
+
+all: libbaz1.a libbaz2.a libbaz1.so.1.0.3b libbaz2.so libbaz3.so.1.0.3b
+
+libbaz2.so: libbaz2.so.1.0
+ ln -sf $^ $@
+libbaz2.so.1.0: libbaz2.so.1.0.3b
+ ln -sf $^ $@
+
+# Oops, forget the soname altogether
+libbaz1.so.1.0.3b: $(OBJS)
+ $(CC) -o $@ -shared $^ -lc
+
+libbaz2.so.1.0.3b: $(OBJS:%.o=%.sho)
+ $(CC) -o $@ -shared -Wl,-soname,libbaz2.so.1.0 $^ -lc
+
+# Non-PIC.
+libbaz3.so.1.0.3b: $(OBJS)
+ $(CC) -o $@ -shared -Wl,-soname,libbaz3.so.1 $^ -lc
+
+#%.o-noreentrant: %.c
+# $(CC) $(CFLAGS) -o $@ -c $<
+
+%.sho: %.c
+ $(CC) $(CFLAGS) -D_REENTRANT -fPIC -o $@ -c $<
+
+%.o: %.c
+ $(CC) $(CFLAGS) -D_REENTRANT -o $@ -c $<
+
+libbaz2.a: $(OBJS)
+ ar cq $@ $(OBJS)
+ ranlib $@
+
+# The pic one in the .a (wrong), no archive table
+libbaz1.a: $(OBJS:%.o=%.sho)
+ ar cqS $@ $^
+
+clean:
+ rm -f *.a *.o *.so* *.sho