# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# 	Makefile for HODGE-C: Gerhard & Schuster's hodge-podge machine
# 	$Id: Makefile,v 1.2 1993/03/19 11:28:34 heitkoet Exp heitkoet $
# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
SHELL	= /bin/sh

# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
#	C compiler & tools
# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# define:
#  -DLOCAL_MAINTAINER  if you want to support HODGE-C locally (see version.h)
CC	= cc
CFLAGS	= -O4

#CC	= gcc -W
#CFLAGS	= -g -O

#CC	= acc
#CFLAGS	= -g


MKPS	= dvi2ps	#dvips -ta4 -r -f
MKDEP	= makedepend
MKPRO	= mkpro
MKTAGS	= ctags -t
MKPRETTY= tgrind

COMPRESS= compress -vf #gzip --best --verbose

LATEX	= latex
BIBTEX	= bibtex

#DITROFF	= groff -Tps
DITROFF	= psroff
NROFF	= nroff

# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
#	Logical structure
# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
TOP	= .

HDR	= $(TOP)
HDRS	= $(HDR)/hodge.h	\
	$(HDR)/version.h	\
	$(HDR)/pixmon.h		\
	$(HDR)/proto.h

XHDRS	= $(HDR)/getopt.h	\
	$(HDR)/panic.h

SRC	= $(TOP)
SRCS	= $(SRC)/hodge.c

XSRCS	= $(SRC)/getopt.c	\
	$(SRC)/getopt1.c	\
	$(SRC)/panic.c

OBJ	= $(TOP)
OBJS	= $(OBJ)/hodge.o

XOBJS	= $(OBJ)/getopt.o	\
	$(OBJ)/getopt1.o	\
	$(OBJ)/panic.o

CONFIG	= $(TOP)/config

CONFIGS	= $(CONFIG)/sunos.cf	\
	$(CONFIG)/bsd.cf	\
	$(CONFIG)/sys5.cf	\
	$(CONFIG)/dos.cf	\
	$(CONFIG)/tos.cf

DOC	= $(TOP)/docs
DOCS	= $(DOC)/*

MAN	= $(TOP)
MANS	= $(MAN)/*.1 $(MAN)/*.man

DEMO	= $(TOP)
DEMOS	= $(DEMO)/typ1 $(DEMO)/typ1.gnu \
	$(DEMO)/typ2 $(DEMO)/typ2.gnu \
	$(DEMO)/typ3 $(DEMO)/typ3.gnu \
	$(DEMO)/typ4 $(DEMO)/typ4.gnu

MAP	= $(TOP)/cmaps
MAPS	= $(MAP)/*.map

IDL	= $(TOP)/idl
IDLS	= $(IDL)/*

MAGIC	= $(TOP)/magick
MAGICS	= $(MAGIC)/*

KHOROS	= $(TOP)/khoros
KHOROSS	= $(KHOROS)/*

CONTRIB	= $(TOP)/contrib
CONTRIBS= $(CONTRIB)/infekt2.c $(CONTRIB)/pixmon.1 $(CONTRIB)/pixmon.man

MISC	= $(TOP)/Makefile $(TOP)/README $(TOP)/COPYRIGHT $(TOP)/LICENSE \
	$(TOP)/INSTALL $(TOP)/configure

PRG	= hodge
LIBS	= #-lm

JUNK	= *~ $(OBJ)/*.o core errs warns a.out *.bak *.ps *.plt *.log *.man *.ppm *.dmp *.shar.* *.tar.*

# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
#	General rules
# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
.c.o:
	$(CC) $(CFLAGS) -I$(SRC) -o $(TOP)/$@  -c $(TOP)/$<

$(PRG):	$(OBJS) $(XOBJS)
	$(CC) $(CFLAGS) -o $@ $(OBJS) $(XOBJS) $(LIBS)

# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
#	Special/extra rules
# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
XFLAGS	= -DSTRERROR_MISSING ##-DEDDIE
$(OBJ)/panic.o: $(HDR)/panic.h $(SRC)/panic.c
	$(CC) $(CFLAGS) $(XFLAGS) -I$(HDR) -o $(TOP)/$@  -c $(SRC)/panic.c

# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
#	Prototypes
# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
pro:
	$(RM) $(HDR)/proto.h
	$(MKPRO) $(SRCS) > $(HDR)/proto.h

# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
#	Pretty printing
# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
pretty:
	$(MKPRETTY) $(HDRS) $(SRCS)

# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
#	Animations
# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
figs:	$(PRG)
	(cd film; make)

# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
#	Documenatation
# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
man:
	$(NROFF)   -man $(MAN)/$(PRG).1 >$(PRG).man
psman:
	$(DITROFF) -man $(MAN)/$(PRG).1 >$(PRG)-man.ps

# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
#	Editor tags
# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
tags:
	$(RM) tags
	$(MKTAGS) $(HDRS) $(SRCS) $(XHDRS) $(XSRCS)

index:
	$(RM) index
	$(MKTAGS) -x $(SRCS) $(XSRCS) | sort -f >index

# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
#	Version control
# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
RCS	= $(TOP)/RCS
RCSS	= $(RCS)/*,v $(SRC)/RCS/*,v $(CONFIG)/RCS/*,v
RCSALL	= Makefile configure hodge.1 $(HDRS) $(SRCS) $(XHDRS) $(XSRCS) $(CONFIGS)
rcs:
	$(RM) $(RCSS)
	rcs -i -U -t-"Initial Version" -q $(RCSALL)

up:
	ci -u -w"joke" -t-"Update" -q $(RCSALL)

# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
#	Distribution
# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
VERS	= 0.98j
DIST	= hodge-c-$(VERS)
dist:	man
	mkdir $(DIST)
	cp $(HDRS) $(XHDRS) $(SRCS) $(XSRCS) $(DEMOS) $(MANS) $(MISC) $(DIST)
	mkdir $(DIST)/config
	cp $(CONFIGS) $(DIST)/config
	mkdir $(DIST)/cmaps
	cp $(MAPS) $(DIST)/cmaps
	mkdir $(DIST)/contrib
	cp $(CONTRIBS) $(DIST)/contrib
	mkdir $(DIST)/idl
	cp $(IDLS) $(DIST)/idl
	mkdir $(DIST)/magick
	cp $(MAGICS) $(DIST)/magick
	mkdir $(DIST)/khoros
	cp $(KHOROSS) $(DIST)/khoros
	tar cvf $(DIST).tar $(DIST)
	$(COMPRESS) $(DIST).tar
	rm -rf $(DIST)

uue:	dist
	uuencode $(DIST).tar.Z $(DIST).tar.Z > $(DIST).tar.Z.uue
	rm -f $(DIST).tar.Z

shar:	dist
	shar -c -n "hodge-c-$(VERS)" -a -M \
		-s joke@ls11.informatik.uni-dortmund.de \
		-f -L50 -d "*** MAGPIE ***" -o "$(DIST).shar" \
		$(DIST).tar.Z
	rm -f $(DIST).tar.Z

# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
#	Cleanup
# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
clean:
	$(RM) $(JUNK)

clobber: clean
	$(RM) $(PRG) $(SRC)/config.h tags index

# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
#	Dependencies
# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
depend:
	$(MKDEP) $(CFLAGS) $(SRCS) $(XSRCS)

# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# DO NOT DELETE THIS LINE -- make depend depends on it.

hodge.o: hodge.h config.h /usr/include/stdio.h /usr/include/ctype.h
hodge.o: /usr/include/math.h /usr/include/floatingpoint.h
hodge.o: /usr/include/sys/ieeefp.h /usr/include/memory.h
hodge.o: /usr/include/string.h /usr/include/sys/stdtypes.h panic.h pixmon.h
hodge.o: proto.h getopt.h version.h
getopt.o: /usr/include/stdio.h getopt.h
getopt1.o: getopt.h
panic.o: /usr/include/stdio.h /usr/include/errno.h /usr/include/sys/errno.h
panic.o: /usr/include/time.h /usr/include/sys/stdtypes.h panic.h
panic.o: /usr/include/varargs.h
