
#   Make file for Speak Freely for Unix

#   Uncomment the appropriate LFLAGS statement below according
#   to your machine type.

#   Linker flags

# Silicon Graphics
#CC = cc -float -signed
#LFLAGS = -laudio -lcurses -lm

# SunOS 4.1.x
CC = cc -fsingle
LFLAGS = -lcurses -ltermcap -lm

# Solaris 2.x courtesy of Hans Werner Strube (strube@physik3.gwdg.de)
#CC = cc -fsingle # for Sun Compiler
#CCFLAGS = -DSolaris
#LFLAGS = -lcurses -lsocket -lnsl -lm

# FreeBSD 2.1 courtesy of Andrey A. Chernov (ache@astral.msk.su)
#CCFLAGS = -DM_LITTLE_ENDIAN
#LFLAGS = -static -lcurses -ltermcap -lcompat -lm

# Linux 1.x, courtesy of KeyJ Phade (phade@contrib.de)
#CC = gcc -O3 # for GNU's gcc compiler
#CCFLAGS = -DLINUX -DM_LITTLE_ENDIAN
#LFLAGS = -lcurses -lm

# Hewlett-Packard courtesy of Marc Kilian (mkilian@ping.ch)
#	   PRELIMINARY--NOT FULLY TESTED
#CC = cc
#CCFLAGS = -DHEWLETT_PACKARD
#LFLAGS = -lAlib -lcurses -ltermcap -lm

# If your audio hardware is half duplex, uncomment the next line
#DUPLEX = -DHALF_DUPLEX

# If your getdomainname() does not return the DNS domainname, define:
#DOMAIN=-DMYDOMAIN=\"somedomain.net\"

#   Everything will probably work OK without any changes below
#   this line.

#   Default Internet socket port used by sfmike and sfspeaker.	If you
#   change this, you will not be able to exchange sound with users
#   who've built Speak Freely with different values.  This default can
#   be overridden by the "-Pport" option on sfspeaker and the ":port"
#   hostname suffix in sfmike.

INTERNET_PORT = 2074
#INTERNET_PORT = 3456		    # Default for NeVoT

REL = "-DRelno=\"Release 5.6b, January 1996\""

CARGS = -DInternet_Port=$(INTERNET_PORT)

#DEBUG = -g -DHEXDUMP
DEBUG = -O

#   Compiler flags

CFLAGS = $(DEBUG) -Iadpcm -Ilpc -Igsm/inc -Imd5 -Iidea $(CARGS) $(REL) $(DUPLEX) $(CCFLAGS) $(DOMAIN)

all:	sfspeaker sfmike sflwld sflwl sfecho

SPKROBJS = speaker.o rtpin.o rtpout.o soundbyte.o ulaw.o usleep.o hp_audio.o

sfspeaker: $(SPKROBJS) adpcmlib.o lpclib.o gsmlib.o deslib.o md5lib.o idealib.o
	$(CC) $(SPKROBJS) adpcm/adpcm-u.o des/des.o md5/md5.o idea/idea.o gsm/lib/libgsm.a lpc/lpc.o $(LFLAGS) -o sfspeaker

MIKEOBJS = mike.o rtpout.o soundbyte.o ulaw.o usleep.o hp_audio.o

sfmike: $(MIKEOBJS) adpcmlib.o lpclib.o gsmlib.o deslib.o md5lib.o idealib.o
	$(CC) $(MIKEOBJS) adpcm/adpcm-u.o des/des.o md5/md5.o idea/idea.o -lm gsm/lib/libgsm.a lpc/lpc.o $(LFLAGS) -o sfmike

LWLDOBJS = lwld.o xdsub.o

sflwld: $(LWLDOBJS)
	$(CC) $(LWLDOBJS) $(LFLAGS) -o sflwld

LWLOBJS = lwl.o

sflwl:	$(LWLOBJS)
	$(CC) $(LWLOBJS) $(LFLAGS) -o sflwl

ECHOOBJS = echo.o rtpout.o

sfecho: $(ECHOOBJS) md5lib.o
	$(CC) $(ECHOOBJS) md5/md5.o $(LFLAGS) -o sfecho

adpcmlib.o:
	( echo "Building ADPCM library."; cd adpcm ; make CC="$(CC)" )
	echo "ADPCM" >adpcmlib.o

lpclib.o:
	( echo "Building LPC library."; cd lpc ; make CC="$(CC) $(CCFLAGS)" )
	echo "LPC" >lpclib.o

gsmlib.o:
	( echo "Building GSM library."; cd gsm ; make CC="$(CC)" )
	echo "GSM" >gsmlib.o

deslib.o:
	( echo "Building DES library."; cd des ; make CC="$(CC) $(CCFLAGS)" )
	echo "DES" >deslib.o

md5lib.o:
	( echo "Building MD5 library."; cd md5 ; make CC="$(CC)" )
	echo "MD5" >md5lib.o

idealib.o:
	( echo "Building IDEA library."; cd idea ; make CC="$(CC)" )
	echo "IDEA" >idealib.o

speaker.o: speaker.c speakfree.h

mike.o: mike.c speakfree.h

testgsm:    testgsm.o gsmlib.o
	$(CC) testgsm.o -lm gsm/lib/libgsm.a $(LFLAGS) -o testgsm

manpage:
	nroff -man sfmike.1 | $(PAGER)
	nroff -man sfspeaker.1 | $(PAGER)
	nroff -man sflwl.1 | $(PAGER)
	nroff -man sflwld.1 | $(PAGER)
	nroff -man sfecho.1 | $(PAGER)

mantext:
	nroff -man sfmike.1 | col -b >/tmp/sfmike.man
	nroff -man sfspeaker.1 | col -b >/tmp/sfspeaker.man
	nroff -man sflwl.1 | col -b >/tmp/sflwl.man
	nroff -man sflwld.1 | col -b >/tmp/sflwld.man
	nroff -man sfecho.1 | col -b >/tmp/sfecho.man

printman:
	ptroff -man sfmike.1
	ptroff -man sfspeaker.1
	ptroff -man sflwl.1
	ptroff -man sflwld.1
	ptroff -man sfecho.1

clean:
	rm -f core *.out *.o *.bak sfspeaker sfmike sflwld sflwl sfecho *.shar
	( cd adpcm; make clean )
	( cd lpc; make clean )
	( cd gsm; make clean )
	( cd des; make clean )
	( cd md5; make clean )
	( cd idea; make clean )
