# This file, makefile.amiga, is part of CWEB (Version 3.3 [p11]).
# It is distributed WITHOUT ANY WARRANTY, express or implied.
#
# Modified for SAS/C 6.51 under AmigaOS 2.1 on an AMIGA 2000 by
# (scherer@genesis.informatik.rwth-aachen.de), March 1993
# Last updated by Andreas Scherer, December 13, 1994

# Copyright (C) 1987,1990,1993 Silvio Levy and Donald E. Knuth
# Copyright (C) 1993,1994 Andreas Scherer

# Permission is granted to make and distribute verbatim copies of this
# document provided that the copyright notice and this permission notice
# are preserved on all copies.

# Permission is granted to copy and distribute modified versions of this
# document under the conditions for verbatim copying, provided that the
# entire resulting derived work is given a different name and distributed
# under the terms of a permission notice identical to this one.

# 
# Read the README file, then edit this file to reflect local conditions
#

# directory for TeX inputs (cwebmac.tex and (X|d|i)cwebmac.tex go here)
MACROSDIR= cweb:macros/

# directory for CWEB inputs in @i files
CWEBINPUTS= CWeb:,CWeb:include,CWeb:inputs

# extension for manual pages ("l" distinguishes local from system stuff)
MANEXT= l
#MANEXT= 1

# directory for manual pages (cweb.1 goes here)
MANDIR= cweb:

# destination directory for executables; must end in /
DESTDIR= cweb:bin/

# directory for GNU EMACS Lips code (cweb.el goes here)
EMACSDIR= s:

# directory for language catalogs with message texts of the script file
CATDIR= Locale:catalogs/

# directory for the language header file "cweb.h"
CATINCLUDE= bin/catalogs/

# Set DESTPREF to null if you want to call the executables "tangle" and "weave"
# (probably NOT a good idea; we recommend leaving DESTPREF=c)
DESTPREF=c

# Set CCHANGES to comm-foo.ch if you need changes to common.w
CCHANGES=common.ch

# Set TCHANGES to ctang-foo.ch if you need changes to ctangle.w
TCHANGES=ctangle.ch

# Set WCHANGES to cweav-foo.ch if you need changes to cweave.w
WCHANGES=cweave.ch

# Set PCHANGES to prod-foo.ch if you need changes to prod.w
PCHANGES=

# Set MCHANGES to wmerge-foo.ch if you need changes to wmerge.w
MCHANGES=wmerge.ch

# Set EXTENSION to either `c' if you want to treat CWEB as a system
# of ordinary ANSI-C programs, or to `cc', `cxx', `cpp' or similar
# if you want to treat CWEB as a system of C++ programs.  Your
# compiler should be able to distinguish between the two forms
# according to the source file extension.  Even with ANSI-C programs
# it is strongly recommended to use C++ compilers, because of the
# much stricter checking of type conversions and module interfaces.
# For highest portability, all of the extra features of C++ are
# avoided in the CWEB system.
EXTENSION=cc

# These lists of arguments are specific for SC and SLINK.
# Change, add or delete things here to suit your personal conditions.
OBJS = LIB:cres.o
LIBS = LIB:sc.lib
CFLAGS = CPU=ANY INCLUDEDIR=$(CATINCLUDE) DEFINE=_DEV_NULL="NIL:" \
	DEFINE=_STRICT_ANSI DEFINE=CWEBINPUTS="$(CWEBINPUTS)" \
	DEFINE=SEPARATORS=",/:" NOSTACKCHECK NOICONS VERBOSE \
	IGNORE=304+1597 OPTIMIZE
LINKFLAGS = VERBOSE NOICONS STRIPDEBUG LIB $(LIBS) FROM $(OBJS)

# The `f' flag is turned off to save paper
# The `lX' flag includes Xcwebmac.tex
# The `s' flag displays some statistics
WFLAGS=-f +lX +s
TFLAGS=+s

# What C compiler are you using?
CC = SC
LINK = SLink
MAKE = SMake

# RM and CP are used below in case rm and cp are aliased
RM= delete
CP= copy
INSTALL= copy

##########  You shouldn't have to change anything after this point #######

CWEAVE = cweave
CTANGLE = ctangle
WMERGE = wmerge
SOURCES = cweave.w common.w ctangle.w
ALMOSTALL = common.w ctangle.w wmerge.w makefile readme common.h \
	common.$(EXTENSION) ctangle.$(EXTENSION) wmerge.$(EXTENSION) \
	cwebman.tex cwebmana.ch cweb.1 cweb.man cweb.el prod.w \
	$(CCHANGES) $(CHCHANGES) $(TCHANGES) $(WCHANGES) $(PCHANGES) \
	comm-vms.ch ctang-vms.ch cweav-vms.ch \
	comm-man.ch ctang-man.ch cweav-man.ch \
	makefile.amiga makefile.pc makefile.unix \
	$(MACROSDIR)cwebmac.tex $(MACROSDIR)Xcwebmac.tex \
	$(MACROSDIR)dcwebmac.tex $(MACROSDIR)icwebmac.tex \
	$(CATINCLUDE)cweb.h $(CATINCLUDE)dcweb.h $(CATINCLUDE)icweb.h \
	examples
ALL =  $(ALMOSTALL) cweave.w

.SUFFIXES: .dvi .tex .w

.w.tex:
	$(CWEAVE) $(WFLAGS) $* $*

.tex.dvi:	
	virtex &plain "\language=0 \input " $<

.w.dvi:
	$(MAKE) $*.tex
	$(MAKE) $*.dvi

.$(EXTENSION).o:
	$(CC) $(CFLAGS) $*.$(EXTENSION)

.w.o:
	$(MAKE) $*.$(EXTENSION)
	$(MAKE) $*.o

# When you say `smake' without any arguments, `smake' will jump to this item
default: ctangle cweave

# The complete set of files contains the two programs `ctangle' and
# `cweave' plus the program `wmerge', the manuals `cwebman' and `cwebmana'
# and the source documentations.
all: progs docs

# The objects of desire
progs: ctangle cweave wmerge

cautiously: ctangle
	$(CP) common.$(EXTENSION) SAVEcommon.$(EXTENSION)
	$(CTANGLE) $(TFLAGS) common $(CCHANGES) common.$(EXTENSION)
	diff common.$(EXTENSION) SAVEcommon.$(EXTENSION)
	$(RM) SAVEcommon.$(EXTENSION)
	$(CP) ctangle.$(EXTENSION) SAVEctangle.$(EXTENSION)
	$(CTANGLE) $(TFLAGS) ctangle $(TCHANGES) ctangle.$(EXTENSION)
	diff ctangle.$(EXTENSION) SAVEctangle.$(EXTENSION)
	$(RM) SAVEctangle.$(EXTENSION)

SAVEctangle.$(EXTENSION):
	$(CP) ctangle.$(EXTENSION) SAVEctangle.$(EXTENSION)

SAVEcommon.$(EXTENSION):
	$(CP) common.$(EXTENSION) SAVEcommon.$(EXTENSION)

common.$(EXTENSION): common.w $(CCHANGES)
	$(CTANGLE) $(TFLAGS) common $(CCHANGES) common.$(EXTENSION)

common.o: common.$(EXTENSION) $(CATINCLUDE)cweb.h

ctangle: ctangle.o common.o
	$(LINK) $(LINKFLAGS) common.o ctangle.o TO ctangle

ctangle.$(EXTENSION): ctangle.w $(TCHANGES)
	$(CTANGLE) $(TFLAGS) ctangle $(TCHANGES) ctangle.$(EXTENSION)

ctangle.o: ctangle.$(EXTENSION) $(CATINCLUDE)cweb.h common.h

cweave: cweave.o common.o
	$(LINK) $(LINKFLAGS) common.o cweave.o TO cweave

cweave.$(EXTENSION): cweave.w $(WCHANGES)
	$(CTANGLE) $(TFLAGS) cweave $(WCHANGES) cweave.$(EXTENSION)

cweave.o: cweave.$(EXTENSION) $(CATINCLUDE)cweb.h common.h
	$(CC) $(CFLAGS) code=FAR cweave.$(EXTENSION)

wmerge: wmerge.o
	$(LINK) $(LINKFLAGS) wmerge.o TO wmerge

wmerge.o: wmerge.$(EXTENSION)
	$(CC) $(CFLAGS) wmerge.$(EXTENSION)

wmerge.$(EXTENSION): wmerge.w $(MCHANGES)
	$(CTANGLE) $(TFLAGS) wmerge $(MCHANGES) wmerge.$(EXTENSION)

# Take a good lecture for bedtime reading
docs: cwebman.dvi cwebmana.dvi common.dvi ctangle.dvi cweave.dvi wmerge.dvi

cwebman.dvi: cwebman.tex
cwebmana.dvi: cwebmana.tex
common.dvi: common.tex
ctangle.dvi: ctangle.tex
cweave.dvi: cweave.tex
wmerge.dvi: wmerge.tex

usermanual: cwebmana.dvi

fullmanual: usermanual $(SOURCES) comm-man.ch ctang-man.ch cweav-man.ch
	$(MAKE) cweave
	$(CWEAVE) common.w comm-man.ch
	$(MAKE) common.dvi
	$(CWEAVE) ctangle.w ctang-man.ch
	$(MAKE) ctangle.dvi
	$(CWEAVE) cweave.w cweav-man.ch
	$(MAKE) cweave.dvi

cwebmana.tex: cwebman.tex cwebmana.ch
	$(WMERGE) cwebman.tex cwebmana.ch cwebmana.tex

# for making the documentation we will have to include the change files
ctangle.tex: ctangle.w common.h $(TCHANGES)
	$(CWEAVE) $(WFLAGS) ctangle $(TCHANGES)

cweave.tex: cweave.w common.h $(WCHANGES)
	$(CWEAVE) $(WFLAGS) cweave $(WCHANGES)

common.tex: common.w $(CCHANGES)
	$(CWEAVE) $(WFLAGS) common $(CCHANGES)

wmerge.tex: wmerge.w $(MCHANGES)
	$(CWEAVE) $(WFLAGS) wmerge $(MCHANGES)

# be sure to leave ctangle.$(EXTENSION) and common.$(EXTENSION)
# and common.h for bootstrapping
clean:
	$(RM) \#?.(o|lnk|bak|log|dvi|toc|idx|scn) \
	common.tex cweave.tex cweave.$(EXTENSION) ctangle.tex \
	cweave ctangle cwebmana.tex wmerge.tex wmerge

# Install the new program versions where they can be found
install: bin/ctangle bin/cweave bin/wmerge
	$(INSTALL) cweave $(DESTDIR)$(DESTPREF)weave
	$(INSTALL) ctangle $(DESTDIR)$(DESTPREF)tangle
	$(INSTALL) wmerge $(DESTDIR)wmerge

# Make a shipable archive
cweb.lha: $(ALL)
	lha a x cweb.lha $(ALL)

cweb.tar.gz: $(ALL)
	tar cvf cweb.tar $(ALL)
	gzip cweb.tar
