#
#	Makefile for the RAT project. 
#
# Note: On many systems (eg: HP-UX 9.x and FreeBSD) this REQUIRES GNU make
#

DEFS = -DNDEBUG
#-DDEBUG -DDEBUG_MEM
# -DNDEBUG -DDEBUG -DTEST -DGSM -DDEBUG_MIX -DDEBUG_MEM
# -DDEBUG_RTP -DREPEAT

DEFS += -D$(OSTYPE) -D$(OSTYPE)_$(OSMVER) -D$(USER)
CC     = gcc
CFLAGS = -Wall -Werror $(INCS) $(DEFS) -g -O -fsigned-char
LDFLAGS= 
LDLIBS=  $(LDLIBS) -lm
RANLIB = ranlib

# Not sure these are correct for anything other than a sparc??? [csp]
GSMFLAGS   = -DSASR -DFAST -DUSE_FLOAT_MUL

include Makefile_$(OSTYPE)_$(OSMVER)

BINDIR = bin/$(USER)
SRCDIR = src
OBJDIR = objs/$(USER)/$(OSTYPE)_$(OSVERS)
OBJS   = $(OBJDIR)/codec_encoder.o \
         $(OBJDIR)/codec_decoder.o \
         $(OBJDIR)/codec_lpc.o \
         $(OBJDIR)/codec_adpcm.o \
         $(OBJDIR)/rtcp_db.o \
         $(OBJDIR)/rtcp_pckt.o \
         $(OBJDIR)/qfDES.o \
         $(OBJDIR)/gsm_add.o \
         $(OBJDIR)/gsm_create.o \
         $(OBJDIR)/gsm_encode.o \
         $(OBJDIR)/gsm_preprocess.o \
         $(OBJDIR)/gsm_table.o \
         $(OBJDIR)/gsm_code.o \
         $(OBJDIR)/gsm_decode.o \
         $(OBJDIR)/gsm_long_term.o \
         $(OBJDIR)/gsm_rpe.o \
         $(OBJDIR)/gsm_destroy.o \
         $(OBJDIR)/gsm_lpc.o \
         $(OBJDIR)/gsm_short_term.o \
         $(OBJDIR)/audio.o \
         $(OBJDIR)/audio_mix.o \
         $(OBJDIR)/auddev_sgi.o \
         $(OBJDIR)/auddev_sparc.o \
         $(OBJDIR)/auddev_hpux_raw.o \
         $(OBJDIR)/auddev_linux.o \
         $(OBJDIR)/auddev_freebsd.o \
         $(OBJDIR)/init_net.o \
         $(OBJDIR)/init_session.o \
         $(OBJDIR)/tabmulaw.o \
         $(OBJDIR)/transmit.o \
         $(OBJDIR)/util.o \
         $(OBJDIR)/interfaces.o \
         $(OBJDIR)/statistics.o \
         $(OBJDIR)/receive.o \
         $(OBJDIR)/audits.o \
         $(OBJDIR)/mix.o \
         $(OBJDIR)/parameters.o \
         $(OBJDIR)/rat_tcl.o \
         $(OBJDIR)/tcl_libs.o \
         $(OBJDIR)/service_rtcp.o \
         $(OBJDIR)/lbl_confbus.o \
         $(OBJDIR)/speaker_table.o \
         $(OBJDIR)/repair.o \
         $(OBJDIR)/net.o \
         $(OBJDIR)/ui.o \
         $(OBJDIR)/transcoder.o \
         $(OBJDIR)/agc.o \
         $(OBJDIR)/main.o

CRYPTOBJS=$(OBJDIR)/crypt.o \
          $(OBJDIR)/crypt_random.o \
          $(OBJDIR)/md5c.o

$(BINDIR)/rat-$(OSTYPE)-$(OSVERS): $(OBJS) $(GSMOBJS) $(CRYPTOBJS) $(RATOBJS)
	rm -f $(BINDIR)/rat-$(OSTYPE)-$(OSVERS)
	$(CC) $(RATOBJS) $(OBJS) $(GSMOBJS) $(CRYPTOBJS) $(LDLIBS) $(LDFLAGS) -o $(BINDIR)/rat-$(OSTYPE)-$(OSVERS)

$(OBJDIR)/%.o: $(SRCDIR)/%.c
	$(CC) $(CFLAGS) $(GSMFLAGS) $(CRYPTFLAGS) -c $(SRCDIR)/$*.c -o $(OBJDIR)/$*.o

$(OBJDIR)/init_session.o: 	$(SRCDIR)/version.h
$(OBJDIR)/rtcp.o:      		$(SRCDIR)/version.h
$(OBJDIR)/ui.o:       		$(SRCDIR)/version.h
$(OBJDIR)/ui.o:	      		$(SRCDIR)/xbm/ucl.xbm
$(OBJDIR)/ui.o:	      		$(SRCDIR)/xbm/mic.xbm
$(OBJDIR)/ui.o:	      		$(SRCDIR)/xbm/mic_mute.xbm
$(OBJDIR)/ui.o:	      		$(SRCDIR)/xbm/speaker.xbm
$(OBJDIR)/ui.o:	      		$(SRCDIR)/xbm/speaker_mute.xbm
$(OBJDIR)/ui.o:	      		$(SRCDIR)/xbm/head.xbm
$(OBJDIR)/ui.o:	      		$(SRCDIR)/xbm/head_mute.xbm
$(OBJDIR)/ui.o:	      		$(SRCDIR)/xbm/line_out.xbm
$(OBJDIR)/ui.o:	      		$(SRCDIR)/xbm/line_out_mute.xbm
$(OBJDIR)/ui.o:	      		$(SRCDIR)/xbm/line_in.xbm
$(OBJDIR)/ui.o:	      		$(SRCDIR)/xbm/line_in_mute.xbm
$(OBJDIR)/ui.o:	      		$(SRCDIR)/xbm/rat_med.xbm
$(OBJDIR)/ui.o:	      		$(SRCDIR)/xbm/rat_small.xbm

$(OBJDIR)/tcl2c: $(SRCDIR)/tcl2c.c
	$(CC) -o $(OBJDIR)/tcl2c $(SRCDIR)/tcl2c.c

$(OBJDIR)/rat_tcl.c: $(SRCDIR)/rat.tcl $(OBJDIR)/tcl2c
	cat $(SRCDIR)/rat.tcl | $(OBJDIR)/tcl2c init_ui_script > $(OBJDIR)/rat_tcl.c

$(OBJDIR)/rat_tcl.o: $(OBJDIR)/rat_tcl.c
	$(CC) $(CFLAGS) -c $(OBJDIR)/rat_tcl.c -o $(OBJDIR)/rat_tcl.o

$(OBJDIR)/tcl_libs.c: $(OBJDIR)/tcl2c
	cat tcl/*.tcl tk/*.tcl | $(OBJDIR)/tcl2c TCL_LIBS > $(OBJDIR)/tcl_libs.c

$(OBJDIR)/tcl_libs.o: $(OBJDIR)/tcl_libs.c
	$(CC) $(CFLAGS) -c $(OBJDIR)/tcl_libs.c -o $(OBJDIR)/tcl_libs.o

tclc: $(OBJDIR)/tcl_libs.c $(OBJDIR)/rat_tcl.c

clean:
	-rm -f $(OBJDIR)/*.o
	-rm -f $(OBJDIR)/tcl2c
	-rm -f $(OBJDIR)/rat_tcl.c $(OBJDIR)/tcl_libs.c

tags:
	(cd src; etags *.[ch])

tar:
	-rm -rf objs/* 
	-rm -rf bin/* 
	-rm -rf dist/*
	-rm -rf win95/rat.exe
	(cd ..; gtar zcvf rat-`date +%Y%m%d`.tgz rat)

depend:
	makedepend $(DEFS) $(INCS) -f Makefile_$(OSTYPE)_$(OSMVER) $(SRCDIR)/*.[ch]


