#  tm C support library makefile

# (base) Name of ar and lint library for this library
default:all

LIBID = tmc
ARLIB = $(LIBID)
LINTLIB = $(LIBID)

LDFLAGS =

LINTLIBS = $(LINTLIBLOC)

LINTFLAGS = -I$(IDIR) $(DBUG) -D$(SYS)
CFLAGS = $(SYSCFLAGS) -I$(IDIR) $(DBUG) -D$(SYS)

# Obsolete files. Will be removed on all remote machines
OLDFILES = 

# Version number of this libary
VERSION = 3

LINKER        = cc

INSTHFILES    = tmc.h

TESTSRCS = testprog.c
TESTFILES = testin goodout gooderr $(TESTSRCS)

JUNK  = testprog testerr testout tmp core mon.out gmon.out $(ARLIBNAME) \
	$(LINTLIBNAME) lib$(LIBID)_p.a lib$(LIBID)_g.a lint libtmc.lint \
	tags lintlib.out profilelib debuglib makelog

SRCS	= badtag.c \
		cmpdbl.c \
		errmsg.c \
		fatal.c \
		fneedc.c \
		fprdbl.c \
		fprint.c \
		fpruns.c \
		fprstr.c \
		fsccbrac.c \
		fsccons.c \
		fscdbl.c \
		fscbool.c \
		fscint.c \
		fscuns.c \
		fscobrac.c \
		fscspace.c \
		fscstr.c \
		newstr.c \
		prdbl.c \
		print.c \
		pruns.c \
		propt.c \
		prstr.c \
		testprog.c

HDRS = config.h \
		tmc.h

OBJS	= badtag.o \
		cmpdbl.o \
		errmsg.o \
		fatal.o \
		fneedc.o \
		fprdbl.o \
		fprint.o \
		fpruns.o \
		fprstr.o \
		fsccbrac.o \
		fsccons.o \
		fscdbl.o \
		fscbool.o \
		fscint.o \
		fscuns.o \
		fscobrac.o \
		fscspace.o \
		fscstr.o \
		newstr.o \
		prdbl.o \
		print.o \
		pruns.o \
		propt.o \
		prstr.o \
		testprog.o

LIBSRCS	      = fscdbl.c \
		fscint.c \
		fscuns.c \
		fscstr.c \
		fscbool.c \
		fscspace.c \
		fscobrac.c \
		fsccbrac.c \
		fneedc.c \
		fsccons.c \
		prdbl.c \
		cmpdbl.c \
		print.c \
		pruns.c \
		propt.c \
		prstr.c \
		fprdbl.c \
		fprint.c \
		fpruns.c \
		fprstr.c \
		newstr.c \
		errmsg.c \
		fatal.c \
		badtag.c

LIBOBJS	      = fscdbl.o \
		fscint.o \
		fscuns.o \
		fscstr.o \
		fscbool.o \
		fscspace.o \
		fscobrac.o \
		fsccbrac.o \
		fneedc.o \
		fsccons.o \
		prdbl.o \
		cmpdbl.o \
		print.o \
		pruns.o \
		propt.o \
		prstr.o \
		fprdbl.o \
		fprint.o \
		fpruns.o \
		fprstr.o \
		newstr.o \
		errmsg.o \
		fatal.o \
		badtag.o

TESTOBJS      = testprog.o

DOC	= README CHANGES testprog.prj libtmc.prj makefile.tc makefile.unx

PROGS   =

MAKEFILE = Makefile

DISTFILES = $(LIBSRCS) $(HDRS) $(DOC) $(MAKEFILE) $(TESTFILES)

LINTLIBSRCS = $(LIBSRCS)
AROBJS = $(LIBOBJS)

#++ make module lintlib start, do NOT touch this line. ++
### lintlib ###
# LINTLIBSRCS	- list of source files for this lint lib
# LINTFLAGS	- additional lint flags
# LINTLIB	- base name of lint library to create
LINTLIBNAME = llib-l$(LINTLIB).ln
$(LINTLIBNAME): $(LINTLIBSRCS)
	lint -o $(LINTLIB) $(SYSLINTFLAGS) $(LINTFLAGS) $(LINTLIBSRCS)
#++ make module lintlib end, do NOT touch this line. ++

#++ make module arlib start, do NOT touch this line. ++
### arlib ###
# AROBJS	- list of source files for ar
# ADDITIONALarFLAGS	- additional ar flags
# ARLIB		- base name of ar library to create
ARFLAGS   = rv
ARLIBNAME = lib$(ARLIB).a
$(ARLIBNAME): $(AROBJS)
	ar $(ARFLAGS) $(ARLIBNAME) $(ADDITIONALarFLAGS) $(AROBJS)
#ranlib $(ARLIBNAME)
#++ make module arlib end, do NOT touch this line. ++

#++ 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."

profilelib: $(LIBSRCS)
	rm -f $(LIBOBJS)
	make 'ARLIB=$(LIBID)_p' 'SYSCFLAGS=$(SYSCPROFFLAGS)' lib$(LIBID)_p.a
	rm -f $(LIBOBJS)
	touch $@

debuglib: $(LIBSRCS)
	rm -f $(LIBOBJS)
	make 'ARLIB=$(LIBID)_g' 'SYSCFLAGS=$(SYSCDBUGFLAGS)' lib$(LIBID)_g.a
	rm -f $(LIBOBJS)
	touch $@

all: lib$(LIBID).a 

# Add rules for the programs themselves here.

testprog: $(TESTOBJS) $(ARLIBNAME)
	$(LINKER) $(LDFLAGS) $(TESTOBJS) libtmc.a $(LIBS) -o testprog

test: testprog testin
	-sh -c './testprog < testin > testout 2> testerr'
	diff testout goodout
	diff testerr gooderr

install:  $(ARLIBNAME)
	make 'MODULE=$(ARLIBNAME)' arlibinstall
	make 'MODULE=$(INSTHFILES)' includeinstall

tags: $(LIBSRCS) $(TESTSRCS)
	ctags $(LIBSRCS) $(TESTSRCS)

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

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

setup:
	modmake local ../make.local $(MAKEFILE)
	modmake arlib ../make.arlib $(MAKEFILE)
	modmake lintlib ../make.lintlib $(MAKEFILE)
	rm -f $(OLDFILES)

lint: $(TESTSRCS)
	lint $(SYSLINTFLAGS) $(LINTFLAGS) $(TESTSRCS) $(LINTLIBS) > lintout

# Non-standard make rules

depend:
	mkmf -f $(MAKEFILE)

###
badtag.o : tmc.h
errmsg.o : tmc.h
fatal.o : tmc.h
fneedc.o : tmc.h config.h
fprdbl.o : tmc.h config.h
fprint.o : tmc.h
fprstr.o : tmc.h
fsccbrac.o : tmc.h config.h
fsccons.o : tmc.h config.h
fscdbl.o : tmc.h
fscint.o : tmc.h
fscobrac.o : tmc.h config.h
fscspace.o : tmc.h config.h
fscstr.o : tmc.h config.h
newstr.o : tmc.h config.h
prdbl.o : tmc.h config.h
print.o : tmc.h
propt.o : tmc.h
prstr.o : tmc.h
testprog.o : tmc.h
