$NetBSD: patch-ab,v 1.5 1998/08/07 10:35:56 agc Exp $

--- Makefile.orig	Tue Jul  2 10:36:06 1996
+++ Makefile	Mon Mar 16 02:32:43 1998
@@ -7,11 +7,13 @@
 SASR	= -DSASR
 ######### Define SASR if >> is a signed arithmetic shift (-1 >> 1 == -1)
 
-MULHACK = -DUSE_FLOAT_MUL
+#MULHACK = -DUSE_FLOAT_MUL      # Don't define it for FreeBSD, cause SIGFPE
+MULHACK =
 ######### Define this if your host multiplies floats faster than integers,
 ######### e.g. on a SPARCstation.
 
-FAST	= -DFAST
+#FAST    = -DFAST
+FAST    =
 ######### Define together with USE_FLOAT_MUL to enable the GSM library's
 ######### approximation option for incorrect, but good-enough results.
 
@@ -43,8 +45,8 @@
 # CC		= /usr/lang/acc
 # CCFLAGS 	= -c -O
 
-CC		= gcc -ansi -pedantic
-CCFLAGS 	= -c -O2 -DNeedFunctionPrototypes=1
+#CC              = gcc -ansi -pedantic
+CCFLAGS         = -c -DNeedFunctionPrototypes=1
 
 LD 		= $(CC)
 
@@ -59,6 +61,7 @@
 ######### Includes needed by $(CC)
 
 # LDINC	= -L/usr/gnu/lib/gcc-2.1/gcc-lib/sparc-sun-sunos4.1.2/2.1
+LDINC = -L$(LIB)
 ######### Library paths needed by $(LD)
 
 # LDLIB	= -lgcc
@@ -71,7 +74,7 @@
 # Leave INSTALL_ROOT empty (or just don't execute "make install") to
 # not install gsm and toast outside of this directory.
 
-INSTALL_ROOT	=
+INSTALL_ROOT    =       $(PREFIX)
 
 # Where do you want to install the gsm library, header file, and manpages?
 #
@@ -80,7 +83,7 @@
 
 GSM_INSTALL_ROOT = $(INSTALL_ROOT)
 GSM_INSTALL_LIB = $(GSM_INSTALL_ROOT)/lib
-GSM_INSTALL_INC = $(GSM_INSTALL_ROOT)/inc
+GSM_INSTALL_INC = $(GSM_INSTALL_ROOT)/include
 GSM_INSTALL_MAN = $(GSM_INSTALL_ROOT)/man/man3
 
 
@@ -96,7 +99,7 @@
 #  Other tools
 
 SHELL		= /bin/sh
-LN		= ln
+LN		= ln -s
 BASENAME 	= basename
 AR		= ar
 ARFLAGS		= cr
@@ -129,17 +132,19 @@
 # DEBUG	= -DNDEBUG
 ######### Remove -DNDEBUG to enable assertions.
 
-CFLAGS	= $(CCFLAGS) $(SASR) $(DEBUG) $(MULHACK) $(FAST) $(LTP_CUT) \
+CFLAGS += $(CCFLAGS) $(SASR) $(DEBUG) $(MULHACK) $(FAST) $(LTP_CUT) \
 	$(WAV49) $(CCINC) -I$(INC)
 ######### It's $(CC) $(CFLAGS)
 
 LFLAGS	= $(LDFLAGS) $(LDINC)
 ######### It's $(LD) $(LFLAGS)
 
+.SUFFIXES: .c .so .o
 
 # Targets
 
 LIBGSM	= $(LIB)/libgsm.a
+LIBGSM_SHARED	= $(LIB)/libgsm.so.1.0.10
 
 TOAST	= $(BIN)/toast
 UNTOAST	= $(BIN)/untoast
@@ -258,6 +263,7 @@
 
 GSM_INSTALL_TARGETS =	\
 		$(GSM_INSTALL_LIB)/libgsm.a		\
+		$(GSM_INSTALL_LIB)/libgsm.so.1.0.10     \
 		$(GSM_INSTALL_INC)/gsm.h		\
 		$(GSM_INSTALL_MAN)/gsm.3		\
 		$(GSM_INSTALL_MAN)/gsm_explode.3	\
@@ -277,9 +283,12 @@
 		$(CC) $(CFLAGS) $?
 		@-mv `$(BASENAME) $@` $@ > /dev/null 2>&1
 
+.c.so:
+		${CC} -fpic -DPIC ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET}
+
 # Target rules
 
-all:		$(LIBGSM) $(TOAST) $(TCAT) $(UNTOAST)
+all:		$(LIBGSM) $(LIBGSM_SHARED) $(TOAST) $(TCAT) $(UNTOAST)
 		@-echo $(ROOT): Done.
 
 tst:		$(TST)/lin2cod $(TST)/cod2lin $(TOAST) $(TST)/test-result
@@ -304,11 +313,15 @@
 		$(AR) $(ARFLAGS) $(LIBGSM) $(GSM_OBJECTS)
 		$(RANLIB) $(LIBGSM)
 
+$(LIBGSM_SHARED):	$(LIB) $(GSM_OBJECTS:S/o$/so/g)
+		-rm $(RMFLAGS) $(LIBGSM_SHARED)
+		ld -Bshareable -o $(LIBGSM_SHARED) $(GSM_OBJECTS:S/o$/so/g)
+
 
 # Toast, Untoast and Tcat -- the compress-like frontends to gsm.
 
 $(TOAST):	$(BIN) $(TOAST_OBJECTS) $(LIBGSM)
-		$(LD) $(LFLAGS) -o $(TOAST) $(TOAST_OBJECTS) $(LIBGSM) $(LDLIB)
+		$(LD) $(LFLAGS) -o $(TOAST) $(TOAST_OBJECTS) -lgsm $(LDLIB)
 
 $(UNTOAST):	$(BIN) $(TOAST)
 		-rm $(RMFLAGS) $(UNTOAST)
@@ -332,12 +345,14 @@
 
 gsminstall:
 		-if [ x"$(GSM_INSTALL_ROOT)" != x ] ; then	\
-			make $(GSM_INSTALL_TARGETS) ;	\
+			make INSTALL_ROOT=$(INSTALL_ROOT)	\
+			    $(GSM_INSTALL_TARGETS);		\
 		fi
 
 toastinstall:
 		-if [ x"$(TOAST_INSTALL_ROOT)" != x ]; then	\
-			make $(TOAST_INSTALL_TARGETS);	\
+			make INSTALL_ROOT=$(INSTALL_ROOT)	\
+			    $(TOAST_INSTALL_TARGETS);		\
 		fi
 
 gsmuninstall:
@@ -357,11 +372,11 @@
 
 $(TOAST_INSTALL_BIN)/untoast:	$(TOAST_INSTALL_BIN)/toast
 		-rm $@
-		ln $? $@
+		cd $(TOAST_INSTALL_BIN) && $(LN) toast $@
 
 $(TOAST_INSTALL_BIN)/tcat:	$(TOAST_INSTALL_BIN)/toast
 		-rm $@
-		ln $? $@
+		cd $(TOAST_INSTALL_BIN) && $(LN) toast $@
 
 $(TOAST_INSTALL_MAN)/toast.1:	$(MAN)/toast.1
 		-rm $@
@@ -397,6 +412,12 @@
 		-rm $@
 		cp $? $@
 		chmod 444 $@
+		ranlib $@
+
+$(GSM_INSTALL_LIB)/libgsm.so.1.0.10:    $(LIBGSM_SHARED)
+		-rm $@
+		cp $? $@
+		chmod 444 $@
 
 
 # Distribution
@@ -416,7 +437,7 @@
 		@-echo uninstall: Done.
 
 semi-clean:
-		-rm $(RMFLAGS)  */*.o			\
+		-rm $(RMFLAGS)  */*.o */*.so		\
 			$(TST)/lin2cod $(TST)/lin2txt	\
 			$(TST)/cod2lin $(TST)/cod2txt	\
 			$(TST)/gsm2cod 			\
@@ -425,7 +446,8 @@
 			-print | xargs rm $(RMFLAGS)
 
 clean:	semi-clean
-		-rm $(RMFLAGS) $(LIBGSM) $(ADDTST)/add		\
+		-rm $(RMFLAGS) $(LIBGSM) $(LIBGSM_SHARED) \
+			$(ADDTST)/add			\
 			$(TOAST) $(TCAT) $(UNTOAST)	\
 			$(ROOT)/gsm-1.0.tar.Z