Description: Create dynamic library
Author: Michael Tautschnig 
Last-Update: 2012-12-02 11:32:09 +0000

--- a/makefile.in
+++ b/makefile.in
@@ -8,6 +8,7 @@ clean:
 	rm -f *.exe *.s *.o *.a *.so *.plist
 	rm -f makefile config.h
 	rm -f gmon.out *~ 
+	rm -f *.so.1.0.0 picomus
 
 analyze:
 	clang --analyze $(CFLAGS) *.c *.h
@@ -52,8 +53,17 @@ libpicosat.a: picosat.o version.o
 	ar rc $@ picosat.o version.o
 	ranlib $@
 
-SONAME=-Xlinker -soname -Xlinker libpicosat.so
-libpicosat.so: picosat.o version.o
-	$(CC) $(CFLAGS) -shared -o $@ picosat.o version.o $(SONAME)
+%.pic.o: %.o
+	mv $< $*.nopic.o
+	$(MAKE) CFLAGS="$(CFLAGS) -fPIC" $<
+	mv $< $@
+	mv $*.nopic.o $<
+
+SONAME=-Xlinker -soname -Xlinker libpicosat.so.1
+libpicosat.so: picosat.pic.o version.pic.o
+	$(CC) $(CFLAGS) -shared -o libpicosat.so.1.0.0 $^ -lc $(SONAME)
+
+libpicosat-trace.so: picosat.pic.o version.pic.o
+	$(CC) $(CFLAGS) -shared -o libpicosat-trace.so.1.0.0 $^ -lc -Wl,-soname,libpicosat-trace.so.1
 
 .PHONY: all clean
