##############################################################################
#
# Makefile for the mixview soundfile editing/processing program.
#
# If running Sun OS 3.5 or higher, see the note below for LXT make.
#
# If compiling under X11 Release 3, add -DR3 to the DEFINES macro
#
##############################################################################
#
VERSION=3.0
PATCH=30
#
# Set DESTDIR to the directory you wish to contain the binary file.
DESTDIR=.
#
# Use this for Sun workstations
ARCH=`/bin/arch`
# And this for others (set to your machine type)
#ARCH=NeXT
#
# Set LXTSRCLIB to the directory into which you have put the lxt source code
LXTSRCLIB=/usr/src/X11/utils/mixview/lxt
# Set LXTINCLIB to the directory into which you have installed lxt.h
LXTINCLIB=/usr/src/X11/utils/mixview/lxt
# Set LXTLIBLIB to the directory into which you have installed liblxt_*.a
LXTLIBLIB=/usr/src/X11/utils/mixview/lxt
#
# Set this depending on your system and compiler
# Sun compiler
# FLAGS=-O -ffpa
#
# Gnu compiler, for debugging
# FLAGS=-g -O -W
#
# Gnu compiler, optimized
# FLAGS=-O -fstrength-reduce -finline-functions
#
# If you are running NeXT O.S. 1.0*, use the following:
# FLAGS=-O -bsd
#
CC=cc
FLAGS=-O
#
# Set this to -lm for any system other than NeXT
#SYSLIBS=-lsys_s
SYSLIBS=-lm
#
# Set LXTMAKEOPTS to nothing if running Sun OS > 3.5
# LXTMAKEOPTS=-f Makefile_3.2
# LXTMAKEOPTS=
#
# Set FORTFLAGS and FORTDEFINES to nothing if you do not have a fortran compiler
#FORTFLAGS=
# FORTFLAGS=-lF77 -lI77
#FORTFLAGS=-lf2c
#FORTDEFINES=
#FORTDEFINES=-DHAS_F77
#
# SNDFLAGS should only be set on SPARCStations with the SOUND package
# and the few Sun 3's with MTU DACs.  It does not need to be set for NeXTs
#SNDFLAGS=
SNDFLAGS=-DSPARC_AUDIO
# SNDFLAGS=-DMTU_DACS
#
# SNDLIBS and SNDINCLUDES should only be set on SPARCStations with the SOUND package
#SNDLIBS=
SNDLIBS=-L/usr/demo/SOUND -laudio
#SNDINCLUDES=
SNDINCLUDES=-I/usr/demo/SOUND
# COMMENTFLAGS determines whether BSD header format includes a comment
# (It is only set to nothing on IRCAM machines)
COMMENTFLAGS=-DHAS_SFCOMMENT
##############################################################################
#
DEFINES = $(COMMENTFLAGS) $(SNDFLAGS) $(FORTDEFINES)
INCLUDES = -I/usr/usc/X11/include -I/usr/openwin/include -I$(LXTINCLIB) $(SNDINCLUDES)
LIBS = $(X11LIBS) $(SNDLIBS) $(SYSLIBS)
CFLAGS = $(FLAGS) $(DEFINES) $(INCLUDES)
#
###############################################################################
SOURCES = analysis.c cmd.c curves.c databuff.c datawin.c default.c dialog.c \
display.c events.c fft.c filts.c graphpoints.c gravy.c io.c keybd.c lpctools.c \
main.c mell.c menus.c mesg.c mixfuns.c panels.c phrase.c play.c ptrackfuns.c \
range.c scale.c screen.c setell.c sfcodes.c soundfile.c trans.c text.c \
windows.c

OBJECTS = analysis.o cmd.o curves.o databuff.o datawin.o default.o dialog.o \
display.o events.o fft.o filts.o graphpoints.o gravy.o io.o keybd.o lpctools.o \
main.o mell.o menus.o mesg.o mixfuns.o panels.o phrase.o play.o ptrackfuns.o \
range.o scale.o screen.o setell.o sfcodes.o soundfile.o trans.o text.o \
windows.o

LXT = $(LXTLIBLIB)/liblxt_$(ARCH).a
LXTLIBS = -L$(LXTLIBLIB) -llxt_$(ARCH)
LXSOURCES = $(LXTSRCLIB)/*.c
LXOBJS = $(LXTSRCLIB)/*.o
LINTLIBS = -lX11 
LXTLINTLIB = -llxt

X11LIBS=-L/usr/openwin/lib -lX11

mixview: $(OBJECTS) $(LXT)
	$(CC) $(CFLAGS) -o mixview $(OBJECTS) $(LXTLIBS) $(FORTFLAGS) $(LIBS) 

# *** NOTE:  Remove -bsd if you are not using a Gnu C compiler

$(LXT):
	cd $(LXTSRCLIB); $(MAKE) "CC=$(CC)" "ARCH=$(ARCH)" "FLOAT=$(CFLAGS)" $(LXTMAKEOPTS)
	
# Uncomment this if you have an F77 compiler -- use fortran version of setell
#setell.o: setell.f
#	f77 -O -c setell.f

# Use these next lines if you have FORTRAN libs from f2c that *work*
#setell.o:
#	rm -f setell.c
#	ln -s setell.f2c.c setell.c
#	$(CC) $(CFLAGS) -c setell.c

# Use these next lines if you have no FORTRAN capability at all
setell.o:
	rm -f setell.c
	ln -s setell.fake.c setell.c
	$(CC) $(CFLAGS) -c setell.c

testmixview: $(OBJECTS) $(LXT)
	$(CC) $(CFLAGS) -o testmixview $(OBJECTS) -L$(LXTSRCLIB) $(LXTLIBS) $(FORTFLAGS) $(LIBS)

cppout:
	$(MAKE) "CFLAGS=-E" testmixview | sed '/^[ \t]*$$/d' 
	

install:
	cp mixview $(DESTDIR)

clean:
	cd $(LXTSRCLIB); rm -f *.o
	rm -f *.o mixview

lint: 
	lint -uvx $(SOURCES) $(DEFINES) $(LXTLINTLIB)

longlint: 
	lint -nuvxz $(SOURCES) $(DEFINES) $(LINTLIBS) $(LXTLINTLIB)

superlint: 
	lint -huvx $(SOURCES) $(DEFINES) 

mongolint: 
	lint -nuvxz $(SOURCES) $(LXSOURCES) $(DEFINES) $(LINTLIBS) $(LXTLINTLIB)

patch:
	-/bin/diff -c orig . > patch.tmp
	-sed '/^Only/d' patch.tmp | sed '/^Binary/d' > patch.$(PATCH)
	rm patch.tmp
	
tags: $(SOURCES) *.h
	ctags $(SOURCES) *.h
tar:
	tar cvf mixview.tar Makefile* mixview.man B* RE* CH* *.c *.h *.f *.bitmap
	
dist: tar
	cat mixview.tar | compress >mixview-v$(VERSION).tar.Z
	uuencode mixview-v$(VERSION).tar.Z mixview-v$(VERSION).tar.Z >mixview.tar.Z.uue
	split -1500 mixview.tar.Z.uue uumail_
	rm mixview.tar.Z.uue mixview.tar

# all dependencies
analysis.o : analysis.c main.h sfheader.h decl.h dialog.h panels.h mesg.h \
  screen.h graphpoints.h scale.h databuff.h datawin.h lp.h fft.h 
cmd.o : cmd.c main.h sfheader.h decl.h dialog.h panels.h mesg.h cmd.h \
  menus.h nobug.h 
curves.o : curves.c main.h sfheader.h decl.h windows.h dialog.h panels.h \
  menus.h nobug.h 
databuff.o : databuff.c main.h sfheader.h decl.h dialog.h panels.h mesg.h \
  databuff.h screen.h graphpoints.h scale.h lp.h nobug.h 
datawin.o : datawin.c main.h sfheader.h decl.h dialog.h panels.h screen.h \
  graphpoints.h scale.h databuff.h datawin.h nobug.h 
default.o : default.c main.h sfheader.h decl.h windows.h 
dialog.o : dialog.c main.h sfheader.h decl.h dialog.h panels.h windows.h \
  soundfile.h nobug.h alert.bitmap query.bitmap 
display.o : display.c main.h sfheader.h decl.h debug.h 
events.o : events.c main.h sfheader.h decl.h cmd.h 
fft.o : fft.c main.h sfheader.h decl.h mesg.h fft.h 
filts.o : filts.c main.h sfheader.h decl.h dialog.h panels.h nobug.h 
graphpoints.o : graphpoints.c main.h sfheader.h decl.h graphpoints.h 
gravy.o : gravy.c main.h sfheader.h decl.h dialog.h panels.h nobug.h 
io.o : io.c main.h sfheader.h decl.h debug.h dialog.h panels.h mesg.h 
keybd.o : keybd.c main.h sfheader.h decl.h cmd.h 
lpctools.o : lpctools.c main.h sfheader.h decl.h dialog.h panels.h mesg.h \
  lpsf.h lp.h 
main.o : main.c main.h sfheader.h decl.h dialog.h panels.h windows.h \
  debug.h 
mell.o : mell.c main.h sfheader.h decl.h dialog.h panels.h nobug.h 
menus.o : menus.c main.h sfheader.h decl.h dialog.h panels.h mesg.h menus.h \
  cmd.h patchlevel.h lp.h fft.h nobug.h 
mesg.o : mesg.c main.h sfheader.h decl.h dialog.h panels.h mesg.h nobug.h 
mixfuns.o : mixfuns.c main.h sfheader.h decl.h nobug.h 
panels.o : panels.c main.h sfheader.h decl.h windows.h panels.h nobug.h 
phrase.o : phrase.c main.h sfheader.h decl.h dialog.h panels.h nobug.h 
play.o : play.c main.h sfheader.h decl.h dialog.h panels.h mesg.h debug.h 
ptrackfuns.o : ptrackfuns.c main.h sfheader.h decl.h lpsf.h 
range.o : range.c main.h sfheader.h decl.h range.h 
scale.o : scale.c main.h sfheader.h decl.h dialog.h panels.h screen.h \
  graphpoints.h scale.h nobug.h 
screen.o : screen.c main.h sfheader.h decl.h dialog.h panels.h screen.h \
  graphpoints.h scale.h databuff.h datawin.h nobug.h 
setell.o : setell.c 
setell.f2c.o : setell.f2c.c /usr/include/f2c.h 
setell.fake.o : setell.fake.c 
sfcodes.o : sfcodes.c main.h sfheader.h decl.h soundfile.h 
soundfile.o : soundfile.c main.h sfheader.h decl.h dialog.h panels.h \
  soundfile.h debug.h 
text.o : text.c main.h sfheader.h decl.h text.h dialog.h panels.h nobug.h 
trans.o : trans.c main.h sfheader.h decl.h dialog.h panels.h nobug.h 
windows.o : windows.c main.h sfheader.h decl.h windows.h 
