495 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Makefile
		
	
	
	
			
		
		
	
	
			495 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Makefile
		
	
	
	
# 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 -ansi -pedantic
 | 
						|
CCFLAGS 	= -c -O2 -DNeedFunctionPrototypes=1 -Wall -Wno-comment
 | 
						|
 | 
						|
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_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
 | 
						|
BASENAME 	= basename
 | 
						|
AR		= ar
 | 
						|
ARFLAGS		= cr
 | 
						|
RMFLAGS		=
 | 
						|
FIND		= find
 | 
						|
COMPRESS 	= gzip
 | 
						|
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
 | 
						|
 | 
						|
TOAST	= $(BIN)/toast
 | 
						|
UNTOAST	= $(BIN)/untoast
 | 
						|
TCAT	= $(BIN)/tcat
 | 
						|
 | 
						|
# 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_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		\
 | 
						|
		$(TOAST_INSTALL_BIN)/tcat		\
 | 
						|
		$(TOAST_INSTALL_BIN)/untoast		\
 | 
						|
		$(TOAST_INSTALL_MAN)/toast.1
 | 
						|
 | 
						|
 | 
						|
# Default rules
 | 
						|
 | 
						|
.c.o:
 | 
						|
		$(CC) $(CFLAGS) $?
 | 
						|
		@-mv `$(BASENAME) $@` $@ > /dev/null 2>&1
 | 
						|
 | 
						|
# Target rules
 | 
						|
 | 
						|
all:		$(LIBGSM) $(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)
 | 
						|
 | 
						|
 | 
						|
# Toast, Untoast and Tcat -- the compress-like frontends to gsm.
 | 
						|
 | 
						|
$(TOAST):	$(BIN) $(TOAST_OBJECTS) $(LIBGSM)
 | 
						|
		$(LD) $(LFLAGS) -o $(TOAST) $(TOAST_OBJECTS) $(LIBGSM) $(LDLIB)
 | 
						|
 | 
						|
$(UNTOAST):	$(BIN) $(TOAST)
 | 
						|
		-rm $(RMFLAGS) $(UNTOAST)
 | 
						|
		$(LN) $(TOAST) $(UNTOAST)
 | 
						|
 | 
						|
$(TCAT):	$(BIN) $(TOAST)
 | 
						|
		-rm $(RMFLAGS) $(TCAT)
 | 
						|
		$(LN) $(TOAST) $(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 $(GSM_INSTALL_TARGETS) ;	\
 | 
						|
		fi
 | 
						|
 | 
						|
toastinstall:
 | 
						|
		-if [ x"$(TOAST_INSTALL_ROOT)" != x ]; then	\
 | 
						|
			make $(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:	$(TOAST)
 | 
						|
		-rm $@
 | 
						|
		cp $(TOAST) $@
 | 
						|
		chmod 755 $@
 | 
						|
 | 
						|
$(TOAST_INSTALL_BIN)/untoast:	$(TOAST_INSTALL_BIN)/toast
 | 
						|
		-rm $@
 | 
						|
		ln $? $@
 | 
						|
 | 
						|
$(TOAST_INSTALL_BIN)/tcat:	$(TOAST_INSTALL_BIN)/toast
 | 
						|
		-rm $@
 | 
						|
		ln $? $@
 | 
						|
 | 
						|
$(TOAST_INSTALL_MAN)/toast.1:	$(MAN)/toast.1
 | 
						|
		-rm $@
 | 
						|
		cp $? $@
 | 
						|
		chmod 444 $@
 | 
						|
 | 
						|
$(GSM_INSTALL_MAN)/gsm.3:	$(MAN)/gsm.3
 | 
						|
		-rm $@
 | 
						|
		cp $? $@
 | 
						|
		chmod 444 $@
 | 
						|
 | 
						|
$(GSM_INSTALL_MAN)/gsm_option.3:	$(MAN)/gsm_option.3
 | 
						|
		-rm $@
 | 
						|
		cp $? $@
 | 
						|
		chmod 444 $@
 | 
						|
 | 
						|
$(GSM_INSTALL_MAN)/gsm_explode.3:	$(MAN)/gsm_explode.3
 | 
						|
		-rm $@
 | 
						|
		cp $? $@
 | 
						|
		chmod 444 $@
 | 
						|
 | 
						|
$(GSM_INSTALL_MAN)/gsm_print.3:	$(MAN)/gsm_print.3
 | 
						|
		-rm $@
 | 
						|
		cp $? $@
 | 
						|
		chmod 444 $@
 | 
						|
 | 
						|
$(GSM_INSTALL_INC)/gsm.h:	$(INC)/gsm.h
 | 
						|
		-rm $@
 | 
						|
		cp $? $@
 | 
						|
		chmod 444 $@
 | 
						|
 | 
						|
$(GSM_INSTALL_LIB)/libgsm.a:	$(LIBGSM)
 | 
						|
		-rm $@
 | 
						|
		cp $? $@
 | 
						|
		chmod 444 $@
 | 
						|
 | 
						|
 | 
						|
# Distribution
 | 
						|
 | 
						|
dist:		gsm-1.0.tar.gz
 | 
						|
		@echo dist: Done.
 | 
						|
 | 
						|
gsm-1.0.tar.gz:	$(STUFF) $(SOURCES) $(HEADERS) $(MANUALS)
 | 
						|
		(	cd $(ROOT)/..;				\
 | 
						|
			tar cvf - `cat $(ROOT)/gsm-1.0/MANIFEST	\
 | 
						|
				| sed '/^#/d'`			\
 | 
						|
		) | $(COMPRESS) $(COMPRESSFLAGS) > $(ROOT)/gsm-1.0.tar.gz
 | 
						|
 | 
						|
# 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) $(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)
 |