Skip to content
Snippets Groups Projects
Commit f75b3711 authored by Emmanuel Milou's avatar Emmanuel Milou
Browse files

Add one last(?) missing makefile

parent 248b5eed
No related branches found
No related tags found
No related merge requests found
# 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
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 = 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
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.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) $(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)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment