--- gsm-1.0-pl13/Makefile.mingw64	1970-01-01 01:00:00.000000000 +0100
+++ patched/Makefile.mingw64	2013-06-14 18:09:26.811006596 +0200
@@ -0,0 +1,516 @@
+# Copyright 1992-1996 by Jutta Degener and Carsten Bormann, Technische
+# Universitaet Berlin.  See the accompanying file "COPYRIGHT" for
+# details.  THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE.
+
+# Machine- or installation dependent flags you should configure to port
+
+SASR	= -DSASR
+######### Define SASR if >> is a signed arithmetic shift (-1 >> 1 == -1)
+
+# MULHACK = -DUSE_FLOAT_MUL
+######### Define this if your host multiplies floats faster than integers,
+######### e.g. on a SPARCstation.
+
+# FAST	= -DFAST
+######### Define together with USE_FLOAT_MUL to enable the GSM library's
+######### approximation option for incorrect, but good-enough results.
+
+# LTP_CUT	= -DLTP_CUT
+LTP_CUT	=
+######### Define to enable the GSM library's long-term correlation 
+######### approximation option---faster, but worse; works for
+######### both integer and floating point multiplications.
+######### This flag is still in the experimental stage.
+
+WAV49	= -DWAV49
+# WAV49	=
+######### Define to enable the GSM library's option to pack GSM frames 
+######### in the style used by the WAV #49 format.  If you want to write
+######### a tool that produces .WAV files which contain GSM-encoded data,
+######### define this, and read about the GSM_OPT_WAV49 option in the
+######### manual page on gsm_option(3).
+
+# Choose a compiler.  The code works both with ANSI and K&R-C.
+# Use -DNeedFunctionPrototypes to compile with, -UNeedFunctionPrototypes to
+# compile without, function prototypes in the header files.
+#
+# You can use the -DSTUPID_COMPILER to circumvent some compilers'
+# static limits regarding the number of subexpressions in a statement.
+
+# CC		= cc
+# CCFLAGS 	= -c -DSTUPID_COMPILER
+
+# CC		= /usr/lang/acc
+# CCFLAGS 	= -c -O
+
+CC?		= gcc
+CCFLAGS 	= -ansi -pedantic -c -O2 -DNeedFunctionPrototypes=1
+
+LD 		= $(CC)
+
+# LD		= gcc
+# LDFLAGS 	=
+
+
+# If your compiler needs additional flags/libraries, regardless of
+# the source compiled, configure them here.
+
+# CCINC	= -I/usr/gnu/lib/gcc-2.1/gcc-lib/sparc-sun-sunos4.1.2/2.1/include
+######### Includes needed by $(CC)
+
+# LDINC	= -L/usr/gnu/lib/gcc-2.1/gcc-lib/sparc-sun-sunos4.1.2/2.1
+######### Library paths needed by $(LD)
+
+# LDLIB	= -lgcc
+######### Additional libraries needed by $(LD)
+
+
+# Where do you want to install libraries, binaries, a header file
+# and the manual pages?
+#
+# Leave INSTALL_ROOT empty (or just don't execute "make install") to
+# not install gsm and toast outside of this directory.
+
+INSTALL_ROOT	=
+
+# Where do you want to install the gsm library, header file, and manpages?
+#
+# Leave GSM_INSTALL_ROOT empty to not install the GSM library outside of
+# this directory.
+
+GSM_INSTALL_ROOT = $(INSTALL_ROOT)
+GSM_INSTALL_BIN = $(GSM_INSTALL_ROOT)/bin
+GSM_INSTALL_LIB = $(GSM_INSTALL_ROOT)/lib
+GSM_INSTALL_INC = $(GSM_INSTALL_ROOT)/inc
+GSM_INSTALL_MAN = $(GSM_INSTALL_ROOT)/man/man3
+
+
+# Where do you want to install the toast binaries and their manpage?
+#
+# Leave TOAST_INSTALL_ROOT empty to not install the toast binaries outside
+# of this directory.
+
+TOAST_INSTALL_ROOT	  = $(INSTALL_ROOT)
+TOAST_INSTALL_BIN = $(TOAST_INSTALL_ROOT)/bin
+TOAST_INSTALL_MAN = $(TOAST_INSTALL_ROOT)/man/man1
+
+#  Other tools
+
+SHELL		= /bin/sh
+LN		= ln -s -f
+BASENAME 	= basename
+AR?		= ar
+ARFLAGS		= cr
+RMFLAGS		= -f
+FIND		= find
+COMPRESS 	= compress
+COMPRESSFLAGS 	= 
+# RANLIB 	= true
+RANLIB?	 	= ranlib
+
+#
+#    You shouldn't have to configure below this line if you're porting.
+# 
+
+
+# Local Directories
+
+ROOT	= .
+ADDTST	= $(ROOT)/add-test
+TST	= $(ROOT)/tst
+MAN	= $(ROOT)/man
+BIN	= $(ROOT)/bin
+SRC	= $(ROOT)/src
+LIB	= $(ROOT)/lib
+TLS	= $(ROOT)/tls
+INC	= $(ROOT)/inc
+
+# Flags
+
+# DEBUG	= -DNDEBUG
+######### Remove -DNDEBUG to enable assertions.
+
+CFLAGS	= $(CCFLAGS) $(SASR) $(DEBUG) $(MULHACK) $(FAST) $(LTP_CUT) \
+	$(WAV49) $(CCINC) -I$(INC)
+######### It's $(CC) $(CFLAGS)
+
+LFLAGS	= $(LDFLAGS) $(LDINC)
+######### It's $(LD) $(LFLAGS)
+
+
+# Targets
+
+LIBGSM	= $(LIB)/libgsm.a
+LIBGSMIMPLIB = $(LIB)/libgsm.dll.a
+LIBGSMDLL = $(BIN)/libgsm.dll
+
+TOAST	= $(BIN)/toast.exe
+UNTOAST	= $(BIN)/untoast.exe
+TCAT	= $(BIN)/tcat.exe
+
+# Headers
+
+GSM_HEADERS =	$(INC)/gsm.h
+
+HEADERS	=	$(INC)/proto.h		\
+		$(INC)/unproto.h	\
+		$(INC)/config.h		\
+		$(INC)/private.h	\
+		$(INC)/gsm.h		\
+		$(INC)/toast.h		\
+		$(TLS)/taste.h
+
+# Sources
+
+GSM_SOURCES =	$(SRC)/add.c		\
+		$(SRC)/code.c		\
+		$(SRC)/debug.c		\
+		$(SRC)/decode.c		\
+		$(SRC)/long_term.c	\
+		$(SRC)/lpc.c		\
+		$(SRC)/preprocess.c	\
+		$(SRC)/rpe.c		\
+		$(SRC)/gsm_destroy.c	\
+		$(SRC)/gsm_decode.c	\
+		$(SRC)/gsm_encode.c	\
+		$(SRC)/gsm_explode.c	\
+		$(SRC)/gsm_implode.c	\
+		$(SRC)/gsm_create.c	\
+		$(SRC)/gsm_print.c	\
+		$(SRC)/gsm_option.c	\
+		$(SRC)/short_term.c	\
+		$(SRC)/table.c
+
+TOAST_SOURCES = $(SRC)/toast.c 		\
+		$(SRC)/toast_lin.c	\
+		$(SRC)/toast_ulaw.c	\
+		$(SRC)/toast_alaw.c	\
+		$(SRC)/toast_audio.c
+
+SOURCES	=	$(GSM_SOURCES)		\
+		$(TOAST_SOURCES)	\
+		$(ADDTST)/add_test.c	\
+		$(TLS)/sour.c		\
+		$(TLS)/ginger.c		\
+		$(TLS)/sour1.dta	\
+		$(TLS)/sour2.dta	\
+		$(TLS)/bitter.c		\
+		$(TLS)/bitter.dta	\
+		$(TLS)/taste.c		\
+		$(TLS)/sweet.c		\
+		$(TST)/cod2lin.c	\
+		$(TST)/cod2txt.c	\
+		$(TST)/gsm2cod.c	\
+		$(TST)/lin2cod.c	\
+		$(TST)/lin2txt.c
+
+# Object files
+
+GSM_OBJECTS =	$(SRC)/add.o		\
+		$(SRC)/code.o		\
+		$(SRC)/debug.o		\
+		$(SRC)/decode.o		\
+		$(SRC)/long_term.o	\
+		$(SRC)/lpc.o		\
+		$(SRC)/preprocess.o	\
+		$(SRC)/rpe.o		\
+		$(SRC)/gsm_destroy.o	\
+		$(SRC)/gsm_decode.o	\
+		$(SRC)/gsm_encode.o	\
+		$(SRC)/gsm_explode.o	\
+		$(SRC)/gsm_implode.o	\
+		$(SRC)/gsm_create.o	\
+		$(SRC)/gsm_print.o	\
+		$(SRC)/gsm_option.o	\
+		$(SRC)/short_term.o	\
+		$(SRC)/table.o
+
+TOAST_OBJECTS =	$(SRC)/toast.o 		\
+		$(SRC)/toast_lin.o	\
+		$(SRC)/toast_ulaw.o	\
+		$(SRC)/toast_alaw.o	\
+		$(SRC)/toast_audio.o
+
+OBJECTS =	 $(GSM_OBJECTS) $(TOAST_OBJECTS)
+
+# Manuals
+
+GSM_MANUALS =	$(MAN)/gsm.3		\
+		$(MAN)/gsm_explode.3	\
+		$(MAN)/gsm_option.3	\
+		$(MAN)/gsm_print.3
+
+TOAST_MANUALS =	$(MAN)/toast.1
+
+MANUALS	= 	$(GSM_MANUALS) $(TOAST_MANUALS) $(MAN)/bitter.1
+
+# Other stuff in the distribution
+
+STUFF = 	ChangeLog			\
+		INSTALL			\
+		MACHINES		\
+		MANIFEST		\
+		Makefile		\
+		README			\
+		$(ADDTST)/add_test.dta	\
+		$(TLS)/bitter.dta	\
+		$(TST)/run
+
+
+# Install targets
+
+GSM_INSTALL_TARGETS =	\
+		$(GSM_INSTALL_LIB)/libgsm.a		\
+		$(GSM_INSTALL_LIB)/libgsm.dll.a \
+		$(GSM_INSTALL_BIN)/libgsm.dll \
+		$(GSM_INSTALL_INC)/gsm.h		\
+		$(GSM_INSTALL_MAN)/gsm.3		\
+		$(GSM_INSTALL_MAN)/gsm_explode.3	\
+		$(GSM_INSTALL_MAN)/gsm_option.3		\
+		$(GSM_INSTALL_MAN)/gsm_print.3
+
+TOAST_INSTALL_TARGETS =	\
+		$(TOAST_INSTALL_BIN)/toast.exe		\
+		$(TOAST_INSTALL_BIN)/tcat.exe		\
+		$(TOAST_INSTALL_BIN)/untoast.exe		\
+		$(TOAST_INSTALL_MAN)/toast.1
+
+
+# Default rules
+
+.c.o:
+		$(CC) $(CFLAGS) $?
+		@-mv `$(BASENAME) $@` $@ > /dev/null 2>&1
+
+# Target rules
+
+all:		$(LIBGSM) $(LIBGSMDLL) $(TOAST) $(TCAT) $(UNTOAST)
+		@-echo $(ROOT): Done.
+
+tst:		$(TST)/lin2cod $(TST)/cod2lin $(TOAST) $(TST)/test-result
+		@-echo tst: Done.
+
+addtst:		$(ADDTST)/add $(ADDTST)/add_test.dta
+		$(ADDTST)/add < $(ADDTST)/add_test.dta > /dev/null
+		@-echo addtst: Done.
+
+misc:		$(TLS)/sweet $(TLS)/bitter $(TLS)/sour $(TLS)/ginger 	\
+			$(TST)/lin2txt $(TST)/cod2txt $(TST)/gsm2cod
+		@-echo misc: Done.
+
+install:	toastinstall gsminstall
+		@-echo install: Done.
+
+
+# The basic API: libgsm
+
+$(LIBGSM):	$(LIB) $(GSM_OBJECTS)
+		-rm $(RMFLAGS) $(LIBGSM)
+		$(AR) $(ARFLAGS) $(LIBGSM) $(GSM_OBJECTS)
+		$(RANLIB) $(LIBGSM)
+
+$(LIBGSMDLL):	$(LIB) $(GSM_OBJECTS)
+	$(LD) -shared -Wl,-soname,libgsm.dll.1 -Wl,-out-implib,$(LIBGSMIMPLIB) -o $@.1.0.13 $(GSM_OBJECTS)
+	$(LN) libgsm.dll.1.0.13 $(LIBGSMDLL).1
+	$(LN) libgsm.dll.1.0.13 $(LIBGSMDLL)
+
+
+# Toast, Untoast and Tcat -- the compress-like frontends to gsm.
+
+$(TOAST):	$(BIN) $(TOAST_OBJECTS) $(LIBGSM) $(LIBGSMDLL)
+		$(LD) $(LFLAGS) -o $(TOAST) $(TOAST_OBJECTS) $(LIBGSM) $(LDLIB)
+
+$(UNTOAST):	$(BIN) $(TOAST)
+		-rm $(RMFLAGS) $(UNTOAST)
+		$(LN) toast.exe $(UNTOAST)
+
+$(TCAT):	$(BIN) $(TOAST)
+		-rm $(RMFLAGS) $(TCAT)
+		$(LN) toast.exe $(TCAT)
+
+
+# The local bin and lib directories
+
+$(BIN):
+		if [ ! -d $(BIN) ] ; then mkdir $(BIN) ; fi
+
+$(LIB):
+		if [ ! -d $(LIB) ] ; then mkdir $(LIB) ; fi
+
+
+# Installation
+
+gsminstall:
+		-if [ x"$(GSM_INSTALL_ROOT)" != x ] ; then	\
+			make -f Makefile.mingw64 $(GSM_INSTALL_TARGETS) ;	\
+		fi
+
+toastinstall:
+		-if [ x"$(TOAST_INSTALL_ROOT)" != x ]; then	\
+			make -f Makefile.mingw64 $(TOAST_INSTALL_TARGETS);	\
+		fi
+
+gsmuninstall:
+		-if [ x"$(GSM_INSTALL_ROOT)" != x ] ; then	\
+			rm $(RMFLAGS) $(GSM_INSTALL_TARGETS) ;	\
+		fi
+
+toastuninstall:
+		-if [ x"$(TOAST_INSTALL_ROOT)" != x ] ; then 	\
+			rm $(RMFLAGS) $(TOAST_INSTALL_TARGETS);	\
+		fi
+
+$(TOAST_INSTALL_BIN)/toast.exe:	$(TOAST)
+		-rm $(RMFLAGS) $@
+		cp $(TOAST) $@
+		chmod 755 $@
+
+$(TOAST_INSTALL_BIN)/untoast.exe:	$(TOAST_INSTALL_BIN)/toast.exe
+		-rm $(RMFLAGS) $@
+		ln $(TOAST) $@
+
+$(TOAST_INSTALL_BIN)/tcat.exe:	$(TOAST_INSTALL_BIN)/toast.exe
+		-rm $(RMFLAGS) $@
+		ln $(TOAST) $@
+
+$(TOAST_INSTALL_MAN)/toast.1:	$(MAN)/toast.1
+		-rm $(RMFLAGS) $@
+		cp $? $@
+		chmod 444 $@
+
+$(GSM_INSTALL_MAN)/gsm.3:	$(MAN)/gsm.3
+		-rm $(RMFLAGS) $@
+		cp $? $@
+		chmod 444 $@
+
+$(GSM_INSTALL_MAN)/gsm_option.3:	$(MAN)/gsm_option.3
+		-rm $(RMFLAGS) $@
+		cp $? $@
+		chmod 444 $@
+
+$(GSM_INSTALL_MAN)/gsm_explode.3:	$(MAN)/gsm_explode.3
+		-rm $(RMFLAGS) $@
+		cp $? $@
+		chmod 444 $@
+
+$(GSM_INSTALL_MAN)/gsm_print.3:	$(MAN)/gsm_print.3
+		-rm $(RMFLAGS) $@
+		cp $? $@
+		chmod 444 $@
+
+$(GSM_INSTALL_INC)/gsm.h:	$(INC)/gsm.h
+		-rm $(RMFLAGS) $@
+		cp $? $@
+		chmod 444 $@
+
+$(GSM_INSTALL_LIB)/libgsm.a:	$(LIBGSM)
+		-rm $(RMFLAGS) $@
+		cp $? $@
+		chmod 444 $@
+
+$(GSM_INSTALL_BIN)/libgsm.dll:	$(LIBGSMDLL)
+		-rm $(RMFLAGS) $@ $@.1 $@.1.0.13
+		cp $?.1.0.13 $@.1.0.13
+		chmod 755 $@.1.0.13
+		$(LN) libgsm.dll.1.0.13 $@
+		$(LN) libgsm.dll.1.0.13 $@.1
+
+$(GSM_INSTALL_LIB)/libgsm.dll.a:	$(LIBGSMIMPLIB)
+		-rm $(RMFLAGS) $@
+		cp $? $@
+		chmod 755 $@
+
+
+# Distribution
+
+dist:		gsm-1.0.tar.Z
+		@echo dist: Done.
+
+gsm-1.0.tar.Z:	$(STUFF) $(SOURCES) $(HEADERS) $(MANUALS)
+		(	cd $(ROOT)/..;				\
+			tar cvf - `cat $(ROOT)/gsm-1.0/MANIFEST	\
+				| sed '/^#/d'`			\
+		) | $(COMPRESS) $(COMPRESSFLAGS) > $(ROOT)/gsm-1.0.tar.Z
+
+# Clean
+
+uninstall:	toastuninstall gsmuninstall
+		@-echo uninstall: Done.
+
+semi-clean:
+		-rm $(RMFLAGS)  */*.o			\
+			$(TST)/lin2cod $(TST)/lin2txt	\
+			$(TST)/cod2lin $(TST)/cod2txt	\
+			$(TST)/gsm2cod 			\
+			$(TST)/*.*.*
+		-$(FIND) . \( -name core -o -name foo \) \
+			-print | xargs rm $(RMFLAGS)
+
+clean:	semi-clean
+		-rm $(RMFLAGS) $(LIBGSM) $(LIBGSMDLL)* $(LIBGSMIMPLIB) $(ADDTST)/add		\
+			$(TOAST) $(TCAT) $(UNTOAST)	\
+			$(ROOT)/gsm-1.0.tar.Z
+
+
+# Two tools that helped me generate gsm_encode.c and gsm_decode.c,
+# but aren't generally needed to port this.
+
+$(TLS)/sweet:	$(TLS)/sweet.o $(TLS)/taste.o
+		$(LD) $(LFLAGS) -o $(TLS)/sweet \
+			$(TLS)/sweet.o $(TLS)/taste.o $(LDLIB)
+
+$(TLS)/bitter:	$(TLS)/bitter.o $(TLS)/taste.o
+		$(LD) $(LFLAGS) -o $(TLS)/bitter \
+			$(TLS)/bitter.o $(TLS)/taste.o $(LDLIB)
+
+# A version of the same family that Jeff Chilton used to implement
+# the WAV #49 GSM format.
+
+$(TLS)/ginger:	$(TLS)/ginger.o $(TLS)/taste.o
+		$(LD) $(LFLAGS) -o $(TLS)/ginger \
+			$(TLS)/ginger.o $(TLS)/taste.o $(LDLIB)
+
+$(TLS)/sour:	$(TLS)/sour.o $(TLS)/taste.o
+		$(LD) $(LFLAGS) -o $(TLS)/sour \
+			$(TLS)/sour.o $(TLS)/taste.o $(LDLIB)
+
+# Run $(ADDTST)/add < $(ADDTST)/add_test.dta to make sure the
+# basic arithmetic functions work as intended.
+
+$(ADDTST)/add:	$(ADDTST)/add_test.o
+		$(LD) $(LFLAGS) -o $(ADDTST)/add $(ADDTST)/add_test.o $(LDLIB)
+
+
+# Various conversion programs between linear, text, .gsm and the code
+# format used by the tests we ran (.cod).  We paid for the test data,
+# so I guess we can't just provide them with this package.  Still,
+# if you happen to have them lying around, here's the code.
+# 
+# You can use gsm2cod | cod2txt independently to look at what's
+# coded inside the compressed frames, although this shouldn't be
+# hard to roll on your own using the gsm_print() function from
+# the API.
+
+
+$(TST)/test-result:	$(TST)/lin2cod $(TST)/cod2lin $(TOAST) $(TST)/run
+			( cd $(TST); ./run ) 
+
+$(TST)/lin2txt:		$(TST)/lin2txt.o $(LIBGSM)
+			$(LD) $(LFLAGS) -o $(TST)/lin2txt \
+				$(TST)/lin2txt.o $(LIBGSM) $(LDLIB)
+
+$(TST)/lin2cod:		$(TST)/lin2cod.o $(LIBGSM)
+			$(LD) $(LFLAGS) -o $(TST)/lin2cod \
+				$(TST)/lin2cod.o $(LIBGSM) $(LDLIB)
+
+$(TST)/gsm2cod:		$(TST)/gsm2cod.o $(LIBGSM)
+			$(LD) $(LFLAGS) -o $(TST)/gsm2cod \
+				$(TST)/gsm2cod.o $(LIBGSM) $(LDLIB)
+
+$(TST)/cod2txt:		$(TST)/cod2txt.o $(LIBGSM)
+			$(LD) $(LFLAGS) -o $(TST)/cod2txt \
+				$(TST)/cod2txt.o $(LIBGSM) $(LDLIB)
+
+$(TST)/cod2lin:		$(TST)/cod2lin.o $(LIBGSM)
+			$(LD) $(LFLAGS) -o $(TST)/cod2lin \
+				$(TST)/cod2lin.o $(LIBGSM) $(LDLIB)
