

#    Sfront, a SAOL to C translator    
#    This file: Makefile for Sfront
#    Copyright (C) 1999  Regents of the University of California
#
#    This program is free software; you can redistribute it and/or modify
#    it under the terms of the GNU General Public License (Version 2) as
#    published by the Free Software Foundation.
#
#    This program is distributed in the hope that it will be useful,
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#    GNU General Public License for more details.
#
#    You should have received a copy of the GNU General Public License
#    along with this program; if not, write to the Free Software
#    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
#
#    Maintainer: John Lazzaro, lazzaro@cs.berkeley.edu
#

##
## The current version and release date.
##
##             0.79 11/04/01

##
## BINDIR specifies the directory for the object sfront file.
## The "make install" option uses BINDIR, and the examples
## supplied with sfront assume this directory is in your path.
## It defaults to the sfront/bin directory.

BINDIR = ../bin/

##
## Compiler optimization and debug options. 
##

CC = gcc -ansi -Wall
OPT  = -O2 
DBUG =  -g

##
## Windows/UWIN users should replace this line with
##
## SFRONT = sfront.exe
##

SFRONT = sfront

##
## Machine/OS specific compiling options should be added
## to CFLAGS below.
##

CFLAGS = $(OPT) $(DBUG)

##
## Machine/OS specific linking options should be added to
## LINKLIB below

LINKLIB = -lm

## Changes below this line shouldn't be needed -- if they are,
## add an appropriate definition above this line and refer to
## it below.

OBJS = parser.tab.o lex.o symbols.o globals.o treeupdate.o wtparse.o wtconst.o\
	corevars.o corecode.o special.o postparse.o readscore.o sfmain.o\
	writeorc.o blocktree.o writepre.o writeop.o writemain.o readmidi.o\
	mp4write.o tokens.o ascwrite.o mp4read.o collapse.o coreinline.o\
	audio.o control.o cmainpass.o csrclib.o asyslib.o csyslib.o \
	psyslib.o nsyslib.o parsehelp.o optconst.o optrate.o optrefer.o \
	optmain.o oclone.o stparse.o


install: $(SFRONT)
	cp $(SFRONT) $(BINDIR)

clean:
	-rm *.o $(SFRONT)

cleanall:
	-rm *.o sfront sfront.exe parser.tab.c parser.tab.h

$(SFRONT):  $(OBJS) tree.h parser.tab.h
	$(CC) $(CFLAGS) $(OBJS) $(LINKLIB) -o $(SFRONT)

parser.tab.c:	parsehelp.c parser.y tree.h
	-bison -d parser.y	


##
## This section makes a distribution, in the directory
## $(BTYPE)dist which is at the same directory level as 
## sfront directory this Makefile resides in. To get
## this to work, you'll need to change the VERSION 
## string at the top of the file to be --VERSION--.
## You'll also need to change SFPLACE and some "cp" commands
## to copy the sfman and copyright in this directory.
##
## If you're splitting off a new distribution, I'd suggest
## the following scheme: the original version number, followed
## by your initials, followed by your own version numbers. For
## example, Jane Q. Smith would split off version 0.5 into
## 0.5jqs0.1


## Name to prefix to binary distribution created by "make newdist"
##

BTYPE = lin

## New version number, date, and ID 
##

NEWVERSION = 0.79
NEWDATE = `date '+%m/%d/%y'`
NEWIDSTRING = $(NEWVERSION) $(NEWDATE)


## New version of the sfront manual
##

SFPLACE = /home/cs/lazzaro/public_html/sa/sfnew/

newdist: 
	rm -rf ../../$(BTYPE)dist
	mkdir ../../$(BTYPE)dist
	mkdir ../../$(BTYPE)dist/sfront
	mkdir ../../$(BTYPE)dist/bin
	mkdir ../../$(BTYPE)dist/sfront/bin
	mkdir ../../$(BTYPE)dist/sfront/lib
	mkdir ../../$(BTYPE)dist/sfront/lib/Slib
	mkdir ../../$(BTYPE)dist/sfront/lib/reson
	mkdir ../../$(BTYPE)dist/sfront/src
	mkdir ../../$(BTYPE)dist/sfront/src/win
	mkdir ../../$(BTYPE)dist/sfront/src/lib
	mkdir ../../$(BTYPE)dist/sfront/src/lib/csrc
	mkdir ../../$(BTYPE)dist/sfront/src/lib/asys
	mkdir ../../$(BTYPE)dist/sfront/src/lib/csys
	mkdir ../../$(BTYPE)dist/sfront/src/lib/nsys
	mkdir ../../$(BTYPE)dist/sfront/src/lib/psys
	mkdir ../../$(BTYPE)dist/sfront/examples
	mkdir ../../$(BTYPE)dist/sfront/examples/rtime
	mkdir ../../$(BTYPE)dist/sfront/copyright
	mkdir ../../$(BTYPE)dist/sfront/sfman
	mkdir ../../$(BTYPE)dist/sfront/sfman/devel
	mkdir ../../$(BTYPE)dist/sfront/sfman/devel/adriver
	mkdir ../../$(BTYPE)dist/sfront/sfman/devel/intro
	mkdir ../../$(BTYPE)dist/sfront/sfman/devel/cdriver
	mkdir ../../$(BTYPE)dist/sfront/sfman/devel/cdriver/intro
	mkdir ../../$(BTYPE)dist/sfront/sfman/devel/cdriver/code
	mkdir ../../$(BTYPE)dist/sfront/sfman/devel/cdriver/data
	mkdir ../../$(BTYPE)dist/sfront/sfman/user
	mkdir ../../$(BTYPE)dist/sfront/sfman/user/cmdline
	mkdir ../../$(BTYPE)dist/sfront/sfman/user/cmdline/alsaseq
	mkdir ../../$(BTYPE)dist/sfront/sfman/user/install
	mkdir ../../$(BTYPE)dist/sfront/sfman/user/network
	mkdir ../../$(BTYPE)dist/sfront/sfman/user/ref
	mkdir ../../$(BTYPE)dist/sfront/sfman/user/rtime
	mkdir ../../$(BTYPE)dist/sfront/sfman/user/use

	cp ../lib/Slib/gmidi.hs  ../../$(BTYPE)dist/sfront/lib/Slib/
	cp ../lib/Slib/ssm.hs  ../../$(BTYPE)dist/sfront/lib/Slib/
	cp ../lib/Slib/std.hs  ../../$(BTYPE)dist/sfront/lib/Slib/
	cp ../lib/Slib/trig.hs  ../../$(BTYPE)dist/sfront/lib/Slib/

	cp ../lib/reson/README  ../../$(BTYPE)dist/sfront/lib/reson/
	cp ../lib/reson/abar.hs  ../../$(BTYPE)dist/sfront/lib/reson/
	cp ../lib/reson/macros.hs  ../../$(BTYPE)dist/sfront/lib/reson/
	cp ../lib/reson/marimba.hs  ../../$(BTYPE)dist/sfront/lib/reson/
	cp ../lib/reson/sreson.hs  ../../$(BTYPE)dist/sfront/lib/reson/
	cp ../lib/reson/string.hs  ../../$(BTYPE)dist/sfront/lib/reson/

	cp ../README.HTML ../../$(BTYPE)dist/sfront/README.HTML
	cp ../README.HTML ../../$(BTYPE)dist/sfront/index.html
	cp COPYING ../../$(BTYPE)dist/sfront/COPYING
	cp lex.c ../../$(BTYPE)dist/sfront/src/
	cp symbols.c ../../$(BTYPE)dist/sfront/src/
	cp globals.c ../../$(BTYPE)dist/sfront/src/
	cp treeupdate.c ../../$(BTYPE)dist/sfront/src/
	cp wtparse.c ../../$(BTYPE)dist/sfront/src/
	cp wtconst.c ../../$(BTYPE)dist/sfront/src/
	cp stparse.c ../../$(BTYPE)dist/sfront/src/
	cp corevars.c ../../$(BTYPE)dist/sfront/src/
	cp corecode.c ../../$(BTYPE)dist/sfront/src/
	cp special.c ../../$(BTYPE)dist/sfront/src/
	cp postparse.c ../../$(BTYPE)dist/sfront/src/
	cp readscore.c ../../$(BTYPE)dist/sfront/src/
	cp sfmain.c ../../$(BTYPE)dist/sfront/src/
	cp writeorc.c ../../$(BTYPE)dist/sfront/src/
	cp blocktree.c ../../$(BTYPE)dist/sfront/src/
	cp oclone.c ../../$(BTYPE)dist/sfront/src/
	cp writepre.c ../../$(BTYPE)dist/sfront/src/
	cp writeop.c ../../$(BTYPE)dist/sfront/src/
	cp writemain.c ../../$(BTYPE)dist/sfront/src/
	cp readmidi.c ../../$(BTYPE)dist/sfront/src/
	cp mp4write.c ../../$(BTYPE)dist/sfront/src/
	cp tokens.c ../../$(BTYPE)dist/sfront/src/
	cp ascwrite.c ../../$(BTYPE)dist/sfront/src/
	cp mp4read.c ../../$(BTYPE)dist/sfront/src/
	cp collapse.c ../../$(BTYPE)dist/sfront/src/
	cp optconst.c ../../$(BTYPE)dist/sfront/src/
	cp optrate.c ../../$(BTYPE)dist/sfront/src/
	cp optrefer.c ../../$(BTYPE)dist/sfront/src/
	cp optmain.c ../../$(BTYPE)dist/sfront/src/
	cp coreinline.c ../../$(BTYPE)dist/sfront/src/
	cp audio.c ../../$(BTYPE)dist/sfront/src/
	cp control.c ../../$(BTYPE)dist/sfront/src/
	cp cmainpass.c ../../$(BTYPE)dist/sfront/src/
	if [ "$(BTYPE)" != "win" ]; then (cd lib; make ; make clean); fi
	cp csrclib.c ../../$(BTYPE)dist/sfront/src/
	cp csyslib.c ../../$(BTYPE)dist/sfront/src/
	cp asyslib.c ../../$(BTYPE)dist/sfront/src/
	cp psyslib.c ../../$(BTYPE)dist/sfront/src/
	cp nsyslib.c ../../$(BTYPE)dist/sfront/src/
	cp csrclib.h ../../$(BTYPE)dist/sfront/src/
	cp csyslib.h ../../$(BTYPE)dist/sfront/src/
	cp asyslib.h ../../$(BTYPE)dist/sfront/src/
	cp psyslib.h ../../$(BTYPE)dist/sfront/src/
	cp nsyslib.h ../../$(BTYPE)dist/sfront/src/
	touch parser.tab.c
	cp parser.y ../../$(BTYPE)dist/sfront/src/
	cp parsehelp.c ../../$(BTYPE)dist/sfront/src/
	sed -e "s;0.79 11/04/01;$(NEWIDSTRING);" Makefile > tmpmakefile
	mv tmpmakefile ../../$(BTYPE)dist/sfront/src/Makefile
	sed -e "s;0.79 11/04/01;$(NEWIDSTRING);" tree.h > tmptree.h
	cp tmptree.h ../../$(BTYPE)dist/sfront/src/tree.h
	cp parser.tab.c ../../$(BTYPE)dist/sfront/src/
	cp parser.tab.h ../../$(BTYPE)dist/sfront/src/
	cp COPYING README.HTML ../../$(BTYPE)dist/sfront/src/
	cp COPYING README.HTML ../../$(BTYPE)dist/sfront/bin/
	cp win/sfront.dsp ../../$(BTYPE)dist/sfront/src/win/
	cp win/sfront.dsw ../../$(BTYPE)dist/sfront/src/win/
	cp lib/Makefile ../../$(BTYPE)dist/sfront/src/lib/
	cp lib/libmaker.c ../../$(BTYPE)dist/sfront/src/lib/
	cp lib/libmaker.h ../../$(BTYPE)dist/sfront/src/lib/
	cp lib/README.HTML ../../$(BTYPE)dist/sfront/src/lib/
	cp lib/csrc/callback.c ../../$(BTYPE)dist/sfront/src/lib/csrc/
	cp lib/csrc/preamble.c ../../$(BTYPE)dist/sfront/src/lib/csrc/
	cp lib/csrc/psync.c ../../$(BTYPE)dist/sfront/src/lib/csrc/
	cp lib/csrc/robust.c ../../$(BTYPE)dist/sfront/src/lib/csrc/
	cp lib/csrc/runspt.c ../../$(BTYPE)dist/sfront/src/lib/csrc/
	cp lib/csrc/runtime.c ../../$(BTYPE)dist/sfront/src/lib/csrc/
	cp lib/csrc/runtimef.c ../../$(BTYPE)dist/sfront/src/lib/csrc/
	cp lib/csrc/tgen.c ../../$(BTYPE)dist/sfront/src/lib/csrc/
	cp lib/csrc/tsync.c ../../$(BTYPE)dist/sfront/src/lib/csrc/
	cp lib/nsys/net_crypto.c ../../$(BTYPE)dist/sfront/src/lib/nsys/
	cp lib/nsys/net_globals.c ../../$(BTYPE)dist/sfront/src/lib/nsys/
	cp lib/nsys/net_include.c ../../$(BTYPE)dist/sfront/src/lib/nsys/
	cp lib/nsys/net_jrecv.c ../../$(BTYPE)dist/sfront/src/lib/nsys/
	cp lib/nsys/net_jsend.c ../../$(BTYPE)dist/sfront/src/lib/nsys/
	cp lib/nsys/net_rtcplib.c ../../$(BTYPE)dist/sfront/src/lib/nsys/
	cp lib/nsys/net_rtplib.c ../../$(BTYPE)dist/sfront/src/lib/nsys/
	cp lib/nsys/net_sfront.c ../../$(BTYPE)dist/sfront/src/lib/nsys/
	cp lib/nsys/net_siplib.c ../../$(BTYPE)dist/sfront/src/lib/nsys/
	cp lib/psys/pa_porthdr.c ../../$(BTYPE)dist/sfront/src/lib/psys/
	cp lib/psys/pa_hosthdr.c ../../$(BTYPE)dist/sfront/src/lib/psys/
	cp lib/psys/pa_tracehdr.c ../../$(BTYPE)dist/sfront/src/lib/psys/
	cp lib/psys/pa_lib.c ../../$(BTYPE)dist/sfront/src/lib/psys/
	cp lib/psys/pa_unix_oss.c ../../$(BTYPE)dist/sfront/src/lib/psys/
	cp lib/psys/pa_win_wmme.c ../../$(BTYPE)dist/sfront/src/lib/psys/
	cp lib/psys/pa_mac.c ../../$(BTYPE)dist/sfront/src/lib/psys/
	cp lib/psys/pa_dshdr.c ../../$(BTYPE)dist/sfront/src/lib/psys/
	cp lib/psys/pa_dswrap.c ../../$(BTYPE)dist/sfront/src/lib/psys/
	cp lib/psys/pa_dsound.c  ../../$(BTYPE)dist/sfront/src/lib/psys/ 
	cp lib/asys/std.c    ../../$(BTYPE)dist/sfront/src/lib/asys/
	cp lib/asys/null.c    ../../$(BTYPE)dist/sfront/src/lib/asys/
	cp lib/asys/raw.c    ../../$(BTYPE)dist/sfront/src/lib/asys/
	cp lib/asys/wav.c    ../../$(BTYPE)dist/sfront/src/lib/asys/
	cp lib/asys/aif.c    ../../$(BTYPE)dist/sfront/src/lib/asys/
	cp lib/asys/vcdat.c    ../../$(BTYPE)dist/sfront/src/lib/asys/
	cp lib/asys/hpux.c   ../../$(BTYPE)dist/sfront/src/lib/asys/
	cp lib/asys/irix.c   ../../$(BTYPE)dist/sfront/src/lib/asys/
	cp lib/asys/linux.c   ../../$(BTYPE)dist/sfront/src/lib/asys/
	cp lib/asys/freebsd.c   ../../$(BTYPE)dist/sfront/src/lib/asys/
	cp lib/asys/dsound.c   ../../$(BTYPE)dist/sfront/src/lib/asys/
	cp lib/asys/portaudio.c   ../../$(BTYPE)dist/sfront/src/lib/asys/
	cp lib/csys/gliss.c    ../../$(BTYPE)dist/sfront/src/lib/csys/
	cp lib/csys/ascii.c    ../../$(BTYPE)dist/sfront/src/lib/csys/
	cp lib/csys/win32.c    ../../$(BTYPE)dist/sfront/src/lib/csys/
	cp lib/csys/linmidi.c    ../../$(BTYPE)dist/sfront/src/lib/csys/
	cp lib/csys/freebsdmidi.c  ../../$(BTYPE)dist/sfront/src/lib/csys/
	cp lib/csys/alsamidi.c    ../../$(BTYPE)dist/sfront/src/lib/csys/
	cp lib/csys/alsaseq.c    ../../$(BTYPE)dist/sfront/src/lib/csys/
	cp lib/csys/fstr.c    ../../$(BTYPE)dist/sfront/src/lib/csys/
	(cd ../examples; make clean;)
	(cd ../examples/linux; make clean;)
	cp -r ../examples/bach ../../$(BTYPE)dist/sfront/examples/
	cp -r ../examples/beat ../../$(BTYPE)dist/sfront/examples/
	cp -r ../examples/claps ../../$(BTYPE)dist/sfront/examples/
	cp -r ../examples/elpelele ../../$(BTYPE)dist/sfront/examples/
	cp -r ../examples/torvalds ../../$(BTYPE)dist/sfront/examples/
	cp -r ../examples/in ../../$(BTYPE)dist/sfront/examples/
	cp -r ../examples/min ../../$(BTYPE)dist/sfront/examples/
	cp -r ../examples/gliss ../../$(BTYPE)dist/sfront/examples/
	cp -r ../examples/pc ../../$(BTYPE)dist/sfront/examples/
	cp -r ../examples/perc ../../$(BTYPE)dist/sfront/examples/
	cp -r ../examples/scr1 ../../$(BTYPE)dist/sfront/examples/
	cp -r ../examples/speedt ../../$(BTYPE)dist/sfront/examples/
	cp -r ../examples/vowels ../../$(BTYPE)dist/sfront/examples/
	cp -r ../examples/Make.dist ../../$(BTYPE)dist/sfront/examples/Makefile
	cp -r ../examples/README.HTML ../../$(BTYPE)dist/sfront/examples/
	cp -r ../examples/RTIME/aatest ../../$(BTYPE)dist/sfront/examples/rtime/
	cp -r ../examples/RTIME/ascii ../../$(BTYPE)dist/sfront/examples/rtime/
	cp -r ../examples/RTIME/linmidi ../../$(BTYPE)dist/sfront/examples/rtime/
	cp -r ../examples/RTIME/linbuzz ../../$(BTYPE)dist/sfront/examples/rtime/
	cp -r ../examples/RTIME/linvoc ../../$(BTYPE)dist/sfront/examples/rtime/
	cp -r ../examples/RTIME/linain ../../$(BTYPE)dist/sfront/examples/rtime/
	cp -r ../examples/RTIME/mirror ../../$(BTYPE)dist/sfront/examples/rtime/
	cp -r ../examples/RTIME/nmp_audio ../../$(BTYPE)dist/sfront/examples/rtime/
	cp -r ../examples/RTIME/nmp_null ../../$(BTYPE)dist/sfront/examples/rtime/
	cp -r ../examples/RTIME/nmp_stream ../../$(BTYPE)dist/sfront/examples/rtime/
	cp  /home/cs/lazzaro/public_html/sa/copyright/index.html \
	../../$(BTYPE)dist/sfront/copyright/
	cp  /home/cs/lazzaro/public_html/sa/copyright/GFDL \
	../../$(BTYPE)dist/sfront/copyright/
	cp  $(SFPLACE)index.html \
	../../$(BTYPE)dist/sfront/sfman/
	cp  $(SFPLACE)user/cmdline/index.html \
            ../../$(BTYPE)dist/sfront/sfman/user/cmdline/
	cp  $(SFPLACE)user/cmdline/alsaseq/index.html \
            ../../$(BTYPE)dist/sfront/sfman/user/cmdline/alsaseq/
	cp  $(SFPLACE)user/install/index.html \
            ../../$(BTYPE)dist/sfront/sfman/user/install/
	cp  $(SFPLACE)user/network/index.html \
            ../../$(BTYPE)dist/sfront/sfman/user/network/
	cp  $(SFPLACE)user/ref/index.html \
            ../../$(BTYPE)dist/sfront/sfman/user/ref/
	cp  $(SFPLACE)user/rtime/index.html \
            ../../$(BTYPE)dist/sfront/sfman/user/rtime/
	cp  $(SFPLACE)user/use/index.html \
            ../../$(BTYPE)dist/sfront/sfman/user/use/
	cp  $(SFPLACE)devel/intro/index.html \
            ../../$(BTYPE)dist/sfront/sfman/devel/intro/
	cp  $(SFPLACE)devel/adriver/index.html \
            ../../$(BTYPE)dist/sfront/sfman/devel/adriver/
	cp  $(SFPLACE)devel/cdriver/intro/index.html \
            ../../$(BTYPE)dist/sfront/sfman/devel/cdriver/intro/
	cp  $(SFPLACE)devel/cdriver/code/index.html \
            ../../$(BTYPE)dist/sfront/sfman/devel/cdriver/code/
	cp  $(SFPLACE)devel/cdriver/data/index.html \
            ../../$(BTYPE)dist/sfront/sfman/devel/cdriver/data/
	(cd ../../$(BTYPE)dist/ ; tar -cvf sfront$(NEWVERSION).tar sfront; gzip sfront$(NEWVERSION).tar)
	(cd ../../$(BTYPE)dist/ ; zip -r sfront$(NEWVERSION).zip sfront)
	mv tree.h safetree.h
	mv tmptree.h tree.h
	(make clean; make; cp $(SFRONT) ../../$(BTYPE)dist/bin/)
	mv safetree.h tree.h
	(cd ../../$(BTYPE)dist; cp bin/$(SFRONT) sfront/bin/)
	if [ "$(BTYPE)" != "win" ]; then (cd ../../$(BTYPE)dist/ ; tar -cvf sfront$(NEWVERSION)$(BTYPE).tar sfront; gzip sfront$(NEWVERSION)$(BTYPE).tar); else (cd ../../$(BTYPE)dist/ ; zip -r sfront$(NEWVERSION)$(BTYPE).zip sfront); fi
	(rm ../../$(BTYPE)dist/sfront/bin/$(SFRONT))
	(cd ../../$(BTYPE)dist/sfront ; rm -rf examples/bach)
	(cd ../../$(BTYPE)dist/sfront ; rm -rf examples/elpelele)
	(cd ../../$(BTYPE)dist/sfront ; rm -rf examples/gliss)
	(cd ../../$(BTYPE)dist/sfront ; rm -rf examples/perc)
	(cd ../../$(BTYPE)dist/sfront ; rm -rf examples/scr1)
	(cd ../../$(BTYPE)dist/sfront ; rm -rf examples/speedt)
	(cd ../../$(BTYPE)dist/sfront ; rm -rf examples/torvalds)
	cp  ../examples/Make.lite ../../$(BTYPE)dist/sfront/examples/Makefile
	(cd ../../$(BTYPE)dist/ ; tar -cvf sfront$(NEWVERSION)lite.tar sfront; gzip sfront$(NEWVERSION)lite.tar)
	(cd ../../$(BTYPE)dist/ ; zip -r sfront$(NEWVERSION)lite.zip sfront)
	(cd ../../$(BTYPE)dist; cp bin/$(SFRONT) sfront/bin/)
	(cd ../../$(BTYPE)dist; rm -rf sfront/src)
	if [ "$(BTYPE)" != "win" ]; then (cd ../../$(BTYPE)dist/ ; tar -cvf sfront$(NEWVERSION)$(BTYPE)lite.tar sfront; gzip sfront$(NEWVERSION)$(BTYPE)lite.tar); else (cd ../../$(BTYPE)dist/ ; zip -r sfront$(NEWVERSION)$(BTYPE)lite.zip sfront); fi
	(cd ../../$(BTYPE)dist/ ; rm -rf bin sfront)





