#/*****************************************************************************
#*									      *
#*	(C) 1993 by K. Ballueder					      *
#*									      *
#*	Please feel free to contact me:					      *
#*		kballued@charon.physik.uni-osnabrueck.de		      *
#*		kballued@jupiter.rz.uni-osnabrueck.de			      *
#*									      *
#*****************************************************************************/
###
### 	generic makefile for gcc and ooc
###
###	beware: for safety reasons, ooc-generated .c files should always be
###		compile WITHOUT -DNDEBUg to enable the assert() calls
################################################################################


################################################################################
##	modified for program:
################################################################################
PROGNAME	=	objects.a

################################################################################
###
###		options for c-compiler/linker:
################################################################################
include ../Makeopts
Cflags 	= -UNDEBUG -I../include

################################################################################
###		options for ooc preprocessor:
################################################################################
OOC     	= ooc 
OOCFLAGS	= `if [ $* = Object ]; then echo -R; else :; fi`
Oocflags	=

################################################################################
###		the 'real' C-files
################################################################################
C1	= 
H1	= 
O1	=
################################################################################
###		for ooc:
###	they MUST be in the hierarchic order
################################################################################
OBJS	= Object.d Collection.d GObject.d AnimObject.d List.d Mover.d\
	  Queue.d torqueMover.d cheeseMover.d randomMover.d\
	  updownMover.d lrMover.d 
################################################################################
###	End of user configurable section, do not change anything below!
################################################################################
C	= $(C1) $(OBJS:.d=.c)
H	= $(H1) $(OBJS:.d=.h)
O	= $(O1) $(OBJS:.d=.o)
DC	= $(OBJS:.d=.dc)
################################################################################
###		generic:
################################################################################
SRC	= $C $H $R $(DC) $(OBJS)

################################################################################
### 		code generation rules:
################################################################################

all:	$(PROGNAME) 

$(PROGNAME):	$(OBJS:.d=.o) $(OBJS:.d=.h) $(OBJS:.d=.r) $(OBJS:.d=.c)
	ar rcs $@ $(O)

.PHONY:	depend dep clean bak tar taz tgz arc backup distrib all allclean

depend dep: $(C) $(H) $(R)
	touch .depend
#	for i in $(OBJS:.d=); do $(OOC) -M $$i; done >> .depend~
	$(CC) $(CFLAGS) $(Cflags) -M $C >>.depend~

	mv .depend~ .depend

allclean:
	mv ClassInit.r ~ClassInit.r
	for i in [A-Z]*.[crh]; do rm $$i; done
	mv ~ClassInit.r ClassInit.r
	rm -f *.o core.* $(PROGNAME)
clean:	 
	rm -f *.o core.* $(PROGNAME)

bak tar taz tgz arc backup:
	if [ -f $(PROGNAME).tgz ];then mv $(PROGNAME).tgz $(PROGNAME)~.tgz;fi
	tar -cf - $C $H $(PROGNAME) Makefile | gzip -9 >$(PROGNAME).tgz

distrib:
	if [ -f $(PROGNAME).d.tgz ]; then mv $(PROGNAME).d.tgz ~$(PROGNAME).d.tgz;fi
	tar -cf - $(SRC)  $(MISC) | gzip -9 >$(PROGNAME).d.tgz

################################################################################
###	very important:
################################################################################

include .depend


################################################################################
###	code dependencies for ooc
################################################################################

###	remove all implied rules:
.SUFFIXES:
###	and generate our own rules:
%.h:	%.d
	$(OOC) $(OOCFLAGS) $(Oocflags) $* -h >$@ 
%.r:	%.d
	$(OOC) $(OOCFLAGS) $(Oocflags) $* -r >$@
%.c:	%.d %.dc %.h %.r 
	$(OOC) $(OOCFLAGS) $(Oocflags) $* $*.dc >$@
%.o:	%.c
	$(CC) -c $(CFLAGS) $(Cflags) -o $@ $<
