# tm C support make file

VERSION = 4

# debugging flags
DBUG		= -DSTAT
LINTDBUG	= $(DBUG) $(SYSCDBUGFLAGS)

LDFLAGS	      = $(SYSCDBUGFLAGS) $(DBUG)

# C compilation flags
CFLAGS = $(SYSCDBUGFLAGS) -I$(IDIR) $(DBUG) -D$(SYS)

LINTFLAGS = $(SYSLINTFLAGS) -I$(IDIR) $(LINTDBUG) -D$(SYS)

# Some names of programs
TM  = tm
LINKER = cc

TMCLIB = $(LDIR)/libtmc.a
TMCLINTLIB = $(LDIR)/llib-ltmc.ln

LIBS = $(TMCLIB) $(CLIBLOC)

LINTLIBS = $(TMCLINTLIB)

MAKEFILE = Makefile

DOC	= readme changes

DEMOFILES =

JUNK = tmp core makelog lltest altest testerr testout alutest llutest

TESTFILES = \
    test.ds \
    aluokerr aluokout \
    alutesti alutest.c aluspec.t alucode.ct alucode.ht \
    lluokerr lluokout \
    llutesti llutest.c lluspec.t llucode.ct llucode.ht

DISTFILES = $(TMMODULES) $(TESTFILES) $(DOC) $(MAKEFILE)

TMMODULES     = cal.ct cal.ht alneed.t calu.ct calu.ht aluneed.t \
                cll.ct cll.ht llneed.t cllu.ct cllu.ht lluneed.t

LLUTMSRCS     = llucode.c 

LLUTMHDRS     = llucode.h

ALUTMHDRS      = alucode.h

ALUTMSRCS      = alucode.c


LLUTESTSRCS   = llutest.c llucode.c
LLUTESTHDRS   = llucode.h
LLUTESTOBJS   = llutest.o llucode.o

ALUTESTSRCS   = alutest.c alucode.c
ALUTESTHDRS   = alucode.h
ALUTESTOBJS   = alutest.o alucode.o

OBJS = alucode.o alutest.o llucode.o llutest.o

# These sources are generated from tm templates.
TMOUT = alucode.c alucode.h llucode.c llucode.h

#++ make module local start, do NOT touch this line. ++
# Installation dependent make variables for ericv on HERMES 

# full path of the ESPRIT environment
ESPRITDIR = /home1/forfun

#  BDIR     : bin directory
BDIR = $(ESPRITDIR)/binA

#  IDIR     : include directory
IDIR = $(ESPRITDIR)/include

#  LDIR     : library directory
LDIR = $(ESPRITDIR)/libA


NFULLDS = $(ESPRITDIR)/ds/nfullgl.ds
NKERNDS = $(ESPRITDIR)/ds/nkerngl.ds

#  HOSTNAME : name of installation machine.
HOSTNAME=hermes

# SYS     : name of operating system or machine type
#     BSD	For generic BSD systems
#     AVIION	For generic DG_UX systems
#     HPUX	For all HP-UX systems
#     SUN	For all SUN systems
#     APOLLO	For all Apollo systems
SYS = AVIION

# CLIBLOC : required C libraries
CLIBLOC =

LINTLIBLOC =

PASLIBLOC =

# CBADADR : address that will cause a core-dump if read or written.
CBADADR = 0

SYSLINTFLAGS = -hpac
SYSCFLAGS = 
SYSCPROFFLAGS =
SYSCDBUGFLAGS =
SYSPFLAGS =
OFLAG= -O
# Collection of host dependent make rules.

### libinstall ###
# MODULE	- module to install
libinstall:
	cp $(MODULE) $(LDIR)/$(MODULE)

### includeinstall ###
# MODULE	- module to install
includeinstall:
	cp $(MODULE) $(IDIR)/$(MODULE)

### maninstall ###
# MAN		- manual page to install
maninstall:
	cp $(MAN) /usr/man/manl

### bininstall ###
# MODULE	- module to install
bininstall:
	cp $(MODULE) $(BDIR)/$(MODULE)
	strip $(BDIR)/$(MODULE)

### arlibinstall ###
# MODULE	- module to install
arlibinstall:
	cp $(MODULE) $(LDIR)/$(MODULE)

LINK.c=$(CC) 
#++ make module local end, do NOT touch this line. ++

help :
	@echo " Possible make targets:"
	@echo "all		Create local running programs."
	@echo "clean		Free disk space."
	@echo "distfiles	List distribution files."
	@echo "install		Install relevant files."
	@echo "setup		Adapt sources to local situation."
	@echo "test		Run tests."

#
all: llutest alutest

# Add rules for the programs themselves here.

test : llutestrun alutestrun

alinstall : alneed.t cal.ct cal.ht
	cat alneed.t cal.ct > $(LDIR)/cal.ct
	cat alneed.t cal.ht > $(LDIR)/cal.ht

alutest:     $(ALUTESTOBJS)
	$(LINKER) $(LDFLAGS) $(ALUTESTOBJS) $(LIBS) -o alutest

alutestrun: alutest alutesti
	-sh -c './alutest < alutesti > testout 2> testerr'
	diff testout aluokout
	diff testerr aluokerr

alulint: $(ALUTESTSRCS) $(ALUTESTHDRS)
	lint $(LINTFLAGS) $(ALUTESTSRCS) $(LINTLIBS) > alulint

aluinstall : aluneed.t calu.ct calu.ht
	cat aluneed.t calu.ct > $(LDIR)/calu.ct
	cat aluneed.t calu.ht > $(LDIR)/calu.ht

llinstall : llneed.t cll.ct cll.ht
	cat llneed.t cll.ct > $(LDIR)/cll.ct
	cat llneed.t cll.ht > $(LDIR)/cll.ht

llutest:     $(LLUTESTOBJS)
	$(LINKER) $(LDFLAGS) $(LLUTESTOBJS) $(LIBS) -o llutest

llutestrun: llutest llutesti
	-sh -c './llutest < llutesti > testout 2> testerr'
	diff testout lluokout
	diff testerr lluokerr

llulint: $(LLUTESTSRCS) $(LLUTESTHDRS)
	lint $(LINTFLAGS) $(LLUTESTSRCS) $(LINTLIBS) > llulint

lluinstall : lluneed.t cllu.ct cllu.ht
	cat lluneed.t cllu.ct > $(LDIR)/cllu.ct
	cat lluneed.t cllu.ht > $(LDIR)/cllu.ht

install: llinstall alinstall lluinstall aluinstall

lint : alulint llulint

clean:
	rm -f $(JUNK) $(OBJS) $(TMOUT)

distfiles:
	@echo $(DISTFILES) | tr ' ' '\012'

setup:
	modmake local ../make.local $(MAKEFILE)

# Non-standard make rules

depend: $(LLUTMSRCS) $(LLUTMHDRS) $(ALUTMHDRS) $(ALUTMSRCS)
	mkmf -I$(IDIR) -f $(MAKEFILE)

alucode.c : alucode.ct calu.ct aluspec.t test.ds aluneed.t
	$(TM) test.ds alucode.ct > alucode.c

alucode.h : alucode.ht calu.ht aluspec.t test.ds aluneed.t
	$(TM) test.ds alucode.ht > alucode.h

llucode.c : llucode.ct cllu.ct lluspec.t test.ds lluneed.t
	$(TM) test.ds llucode.ct > llucode.c

llucode.h : llucode.ht cllu.ht lluspec.t test.ds lluneed.t
	$(TM) test.ds llucode.ht > llucode.h

###
alucode.o: alucode.h
alutest.o: alucode.h
llucode.o: llucode.h
llutest.o: llucode.h
