# SIMSYNCH, simulate synchronous systems.	-*-makefile-*-
# Copyright (C) 1997 Aubrey Jaffer

# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# 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, USA.

# $Header: /usr/local/cvsroot/synch/Makefile,v 1.49 1999/09/13 23:07:48 radey Exp $

SHELL = /bin/sh
intro:
	@echo
	@echo "Welcome to SIMSYNCH.  Read \"synch.info\" (or \"synch.texi\")"
	@echo "to learn how to use SIMSYNCH."
	@echo
	@echo
	-make synch.info

include srcdir.mk

srcdir.mk: .. Makefile
	echo -e "srcdir = `pwd`/\n" > srcdir.mk

dvidir=../dvi/
dvi:	$(dvidir)synch.dvi
$(dvidir)synch.dvi:	version.txi synch.texi \
	$(dvidir)synch.fn
#	cd $(dvidir);export TEXINPUTS=$(srcdir):;texi2dvi $(srcdir)synch.texi
	-(cd $(dvidir);export TEXINPUTS=$(srcdir):;texindex synch.??)
	cd $(dvidir);export TEXINPUTS=$(srcdir):;tex $(srcdir)synch.texi
$(dvidir)synch.fn:
	cd $(dvidir);export TEXINPUTS=$(srcdir):;tex $(srcdir)synch.texi
xdvi:	$(dvidir)synch.dvi
	xdvi -s 6 $(dvidir)synch.dvi
ps:	synch.ps
synch.ps:	$(dvidir)synch.dvi
	dvips $(dvidir)synch.dvi -o synch.ps

htmldir=../public_html/
#Do: make html htmldir=/net/colorage/public_html/synch/
synch_toc.html:	version.txi synch.texi
	texi2html -split -verbose synch.texi

synch/synch_toc.html:
	cd synch;make synch_toc.html
	cd synch;texi2html -split -verbose synch.texi

html:	$(htmldir)synch_toc.html
$(htmldir)synch_toc.html:	synch synch/synch_toc.html synch_toc.html Makefile
	hitch synch/synch_\*.html synch_\*.html $(htmldir)

#For change-barred HTML.
synch:
	unzip -a $(dest)synch[0-9]*.zip

# TEXI2HTMLPATH = /usr/local/bin/texi2html
# HTMLDIR =$(HOME)/../colorage/public_html/synch/
# HTML:	$(HTMLDIR) $(HTMLDIR)synch_toc.html
# $(HTMLDIR):	$(HTMLDIR)synch_toc.html synch.ps
# 	mv synch.ps $(HTMLDIR)
# 	sync
# #	cd $(HTMLDIR);zip synchhtml synch_*.html synch.ps
# $(HTMLDIR)synch_toc.html:	$(TEXI2HTMLPATH) $(srcdir)synch.texi
# 	cd $(HTMLDIR);texi2html -split -verbose $(srcdir)synch.texi
# cvshtml:	$(HTMLDIR)cvs/synch.html
# $(HTMLDIR)cvs/synch.html:	$(HTMLDIR)cvs synch.ps core
# 	cvs2html -a -k -f -v -c cvsseq.html -o $(HTMLDIR)cvs/
# #	add -a -k for dump of differences.
# $(HTMLDIR)cvs:
# 	mkdir $(HTMLDIR)cvs
# 	chmod g+w $(HTMLDIR)cvs
# core:
# 	mkdir core

prefix = /usr/local
exec_prefix = $(prefix)
#bindir = $(exec_prefix)/bin
#libdir = $(exec_prefix)/lib
infodir = $(exec_prefix)/info

synch1b3.info:	version.txi synch.texi
	makeinfo synch.texi --no-split -o synch.info
	mv synch.info synch1b3.info
synch.info:	synch/synch.info synch1b3.info
	infobar synch/synch.info synch1b3.info synch.info
info:	installinfo
installinfo:	$(infodir)/synch.info
$(infodir)/synch.info:	synch.info
	cp -a synch.info $(infodir)/synch.info
	install-info $(infodir)/synch.info $(infodir)/dir
	-rm $(infodir)/synch.info.gz
infoz:	installinfoz
installinfoz:	$(infodir)/synch.info.gz
$(infodir)/synch.info.gz:	$(infodir)/synch.info
	gzip -f $(infodir)/synch.info

scheme = scm
SYNCH = ../synch/

foo.pds:	foo.scm $(SYNCH)simsynch.scm $(SYNCH)scm2mach.scm $(SYNCH)run.scm Makefile
	$(scheme) -l$(SYNCH)run.scm -e"(translate 'foo)"
foo-plc:		foo.scm $(SYNCH)simsynch.scm $(SYNCH)run.scm foo.plc
	$(scheme) -l$(SYNCH)run.scm -e"(compare-plcs 'foo)"

#### Stuff for maintaining SimSynch below ####

VERSION = 1b3
ver = $(VERSION)
version.txi:	Makefile
	echo @set SIMSYNCHVERSION $(VERSION) > version.txi
	echo @set SIMSYNCHDATE `date +"%B %Y"` >> version.txi

RM_R = rm -rf
docfiles = ANNOUNCE synch.info ChangeLog synch.texi
srcfiles = simsynch.scm logic.scm scm2vrlg.scm scm2mach.scm run.scm \
	models.scm logical.v
pubfiles = Makefile COPYING $(docfiles) $(srcfiles)
tagfiles = Makefile synch.texi version.txi $(srcfiles)

makedev = make -f $(HOME)/makefile.dev
CHPAT=$(HOME)/bin/chpat
dest = $(HOME)/dist/
pubdir = $(HOME)/pub/
temp/synch:	$(pubfiles)
	-rm -rf temp
	mkdir temp
	mkdir temp/synch
	ln  $(pubfiles) temp/synch

release:	dist
	cp ANNOUNCE $(htmldir)SIMSYNCH_ANNOUNCE
	rsync -v $(htmldir)SIMSYNCH.html $(htmldir)SIMSYNCH_ANNOUNCE martigny.ai.mit.edu:public_html/
	rsync -v $(dest)README $(dest)synch$(VERSION).zip martigny.ai.mit.edu:dist/
#	upload $(dest)README $(dest)synch$(VERSION).zip ftp.gnu.org:gnu/jacal/
#	$(MAKE) indiana
indiana:
	upload $(dest)synch$(VERSION).zip ftp@ftp.cs.indiana.edu:/pub/scheme-repository/incoming
	echo -e \
	'I have uploaded synch$(VERSION).zip to ftp.cs.indiana.edu:/pub/scheme-repository/incoming\n' \
	'for placement into ftp.cs.indiana.edu:/pub/scheme-repository/code/lib/' \
	 | mail -s 'SYNCH upload' -b jaffer scheme-repository-request@cs.indiana.edu

postnews:
	echo -e "Newsgroups: sci.electronics.cad,comp.lang.scheme\n" \
	| cat - ANNOUNCE | inews -h -O -S \
	-f "announce@docupress.com (Aubrey Jaffer & Radey Shouman)" \
	 -t "Synch$(VERSION) Released" -d world

upzip:	$(HOME)/pub/synch.zip
	rsync -v $(HOME)/pub/synch.zip martigny.ai.mit.edu:pub/

dist:	$(dest)synch$(VERSION).zip
$(dest)synch$(VERSION).zip:	temp/synch
	$(makedev) DEST=$(dest) PROD=synch ver=$(VERSION) zip
	cvs tag -F synch$(VERSION)
shar:	synch.shar
synch.shar:	temp/synch
	$(makedev) PROD=synch shar
dclshar:	synch.com
com:	synch.com
synch.com:	temp/synch
	$(makedev) PROD=synch com
zip:	synch.zip
synch.zip:	temp/synch
	cd temp; zip -r ../synch.zip synch
doszip:	/c/scm/dist/synch$(VERSION).zip
/c/scm/dist/synch$(VERSION).zip:	temp/synch
	$(makedev) DEST=/c/scm/dist/ PROD=synch ver=$(VERSION) zip
	zip -d /c/scm/dist/synch$(VERSION).zip synch/synch.info
	cp /c/scm/dist/synch$(VERSION).zip /c/scm/synch.zip
/c/scm/synch.zip:	synch.zip
	cp synch.zip /c/scm/
	cp synch.zip /c/scm/dist/
pubzip:	temp/synch
	$(makedev) DEST=$(HOME)/pub/ PROD=synch zip

diffs:	pubdiffs
pubdiffs:	temp/synch
	$(makedev) DEST=$(HOME)/pub/ PROD=synch pubdiffs
distdiffs:	temp/synch
	$(makedev) DEST=$(dest) PROD=synch ver=$(ver) distdiffs

new:
	echo `date` \ Aubrey Jaffer \ \<`whoami`@`hostname`\>> change
	echo>> change
	echo '	* Makefile (VERSION): Bumped from $(VERSION) to $(ver).'>>change
	echo>> change
	cat ChangeLog >> change
	mv -f change ChangeLog
	$(CHPAT) synch$(VERSION) synch$(ver) \
		$(htmldir)README.html ../dist/README
	$(CHPAT) $(VERSION) $(ver) Makefile $(htmldir)SIMSYNCH.html
	cvs commit -m '(VERSION): Bumped from $(VERSION) to $(ver).'
	cvs tag -F synch$(ver)

#zip:	synch.zip
#synch.zip:	temp/synch
#	cd temp; zip -r ../synch.zip synch
#pubzip:	temp/synch
#	cd temp; zip -r $(pubdir)synch.zip synch
diska:	synch.zip
	mcd a:
	-mdel synch.zip
	mcopy -nm synch.zip a:/
diskb:	synch.zip
	mcd b:
	-mdel synch.zip
	mcopy -nm synch.zip b:/

#pubdiffs:	temp/synch
#	mv temp/synch temp/nsynch
#	cd temp;unzip $(pubdir)synch.zip
#	-rm -f synch.diffs
#	-diff -c temp/synch temp/nsynch > synch.diffs
#	-rm -rf temp
#	ls -l synch.diffs

TAGS:	tags
tags:	$(tagfiles)
	etags $(tagfiles)

clean:	distclean
distclean:
	-rm -f *~ \#* *.orig *.rej a.out core TAGS lints tmp*
#	-rm -f *.pds
	-rm -rf temp
	-rm *.o *.so
	$(MAKE) TAGS
