$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