--- Makefile.orig	2011-11-03 11:49:56.862331506 +0100
+++ Makefile	2011-11-03 11:53:52.750659225 +0100
@@ -140,6 +140,7 @@ LFLAGS	= $(LDFLAGS) $(LDINC)
 # Targets
 
 LIBGSM	= $(LIB)/libgsm.a
+LIBGSM_SO = $(LIB)/libgsm.so
 
 TOAST	= $(BIN)/toast
 UNTOAST	= $(BIN)/untoast
@@ -257,6 +258,7 @@ STUFF = 	ChangeLog			\
 # Install targets
 
 GSM_INSTALL_TARGETS =	\
+		$(GSM_INSTALL_LIB)/libgsm.so		\
 		$(GSM_INSTALL_LIB)/libgsm.a		\
 		$(GSM_INSTALL_INC)/gsm.h		\
 		$(GSM_INSTALL_MAN)/gsm.3		\
@@ -274,12 +276,12 @@ TOAST_INSTALL_TARGETS =	\
 # Default rules
 
 .c.o:
-		$(CC) $(CFLAGS) $?
+		$(CC) -fPIC -DPIC $(CFLAGS) $?
 		@-mv `$(BASENAME) $@` $@ > /dev/null 2>&1
 
 # Target rules
 
-all:		$(LIBGSM) $(TOAST) $(TCAT) $(UNTOAST)
+all:		$(LIBGSM) $(LIBGSM_SO) $(TOAST) $(TCAT) $(UNTOAST)
 		@-echo $(ROOT): Done.
 
 tst:		$(TST)/lin2cod $(TST)/cod2lin $(TOAST) $(TST)/test-result
@@ -304,6 +306,9 @@ $(LIBGSM):	$(LIB) $(GSM_OBJECTS)
 		$(AR) $(ARFLAGS) $(LIBGSM) $(GSM_OBJECTS)
 		$(RANLIB) $(LIBGSM)
 
+$(LIBGSM_SO):	$(LIB) $(GSM_OBJECTS)
+		-rm $(RMFLAGS) $(LIBGSM_SO)
+		$(LD) -shared $(LFLAGS) -o $(LIBGSM_SO) $(GSM_OBJECTS)
 
 # Toast, Untoast and Tcat -- the compress-like frontends to gsm.
 
@@ -398,6 +403,9 @@ $(GSM_INSTALL_LIB)/libgsm.a:	$(LIBGSM)
 		cp $? $@
 		chmod 444 $@
 
+$(GSM_INSTALL_LIB)/libgsm.so:	$(LIBGSM_SO)
+		-rm $@
+		install -m755 $? $@
 
 # Distribution