#/*****************************************************************************
#*									      *
#*	(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	=	bdash

################################################################################
###
###		options for c-compiler/linker:
################################################################################
include Makeopts
Cflags 	= -Iinclude -Iooc_src

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

################################################################################
###		the 'real' C-files
################################################################################
C1	= bdash.c io.c react.c controll.c communic.c movers.c\
	  game.c scores.c zfopen.c vconfig.c
H1	= $(C1:.c=.h)
################################################################################
###		for ooc:
###	they MUST be in the hierarchic order
################################################################################
OBJS	=

################################################################################
###	subdirectories:							     ###	
################################################################################
SUBDIRS	= ooc_src sound graphic

################################################################################
###	End of user configurable section, do not change anything below!
################################################################################
C	= $(C1) $(OBJS:.d=.c)
H	= $(H1) $(OBJS:.d=.h)
O	= $(C1:.c=.o) $(OBJS:.d=.o)
A	= graphic/graphic.a sound/sound.a ooc_src/objects.a
DC	= $(OBJS:.d=.dc)
################################################################################
###		generic:
################################################################################
SRC	= $C $H $R $(DC) $(OBJS) $(SUBDIRS)

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

error:	
	@echo "You must specify a target for make, valid targets are:"
	@echo "		depend		: should be the first you make"
	@echo "		all, bdash	: make everything"
	@echo "		install		: install bdash (must be done as root)"
	@echo "		uninstall	: remove bdash"
	@echo "		clean		: prepare for recompiling, remove all *.o *.a"
	@echo "		allclean	: like clean, but remakes Object c-files"
	@echo "				  do not use, if you do not have 'ooc'!"
	@echo "		distrib		: make archive with complete bdash distribution"
	

all:	$(PROGNAME) 

$(PROGNAME):	subdirs $(O) $(A)
	cc $(LFLAGS) $(Lflags) -o $@ $(O) $(A) $(LIBS)

.PHONY:	depend dep clean bak tar taz tgz arc backup distrib all allclean/
	subdirs install uninstall

depend dep: 
	echo >>.depend
	for i in $(SUBDIRS); do (cd $$i; make $@; cd ..;); done
	for i in $(OBJS:.d=); do $(OOC) -M $$i; done >> .depend~
	$(CC) $(CFLAGS) $(Cflags) -M $C >>.depend~

	mv .depend~ .depend
	
subdirs:
	@for i in $(SUBDIRS); do (echo processing subdir: $$i;cd $$i;make;cd ..;); done

allclean: clean
	@for i in $(SUBDIRS); do (cd $$i;make $@;cd ..;); done
	
clean:	 
	rm -f *.o core.* $(PROGNAME)
	@for i in $(SUBDIRS); do (cd $$i;make $@;cd ..;); done
	
install: bdash
	install $(INSTOPTS) -d -m 755 $(DATAPATH)
	install $(INSTOPTS) -m 644 data/bdash.snd data/*.raw* data/*.au* data/*.dta*\
				 	data/*.cmp* data/*.lvl* $(DATAPATH)
	install $(INSTOPTS) -d -m 755 $(INSTPATH)
	install $(INSTOPTS) -s -m 755 bdash $(INSTPATH)
	strip $(INSTPATH)/bdash
	chmod +s $(INSTPATH)/bdash
	install $(INSTOPTS) -d -m 755 $(HSCPATH)
	install $(INSTOPTS) -m 644 $(HSCFILE) $(HSCPATH)
	install $(INSTOPTS) -d -m 755 $(MANPATH)
	install $(INSTOPTS) -m 644 bdash.6 $(MANPATH)
	if [ -d /usr/local/bin ] ;\
	 then ln -fs $(INSTPATH)/bdash /usr/local/bin/bdash;fi
uninstall:
	rm -rf $(DATAPATH)
	rm -f $(HSCPATH)$(HSCFILE)
	rm -f $(INSTPATH)/bdash
	rm -f /usr/local/bin/bdash
	rm -f $(MANPATH)/bdash.6


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 - $(C) $(SUBDIRS) $(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 $@ $< 
