###################################
# To compile, type 'make' as root #
###################################

# any changes to be made are in 'config' file.

##############################################################################
#***************  You don't need to edit anything after this *****************
##############################################################################
VERSION=1.4

include config

FEATURES=

ifeq ($(JOYSTICK),YES)
FEATURES := $(FEATURES) -DJOYSTICK
endif

ifeq ($(COMPILE_BITMAPS),YES)
FEATURES := $(FEATURES) -DCOMPILE_BITMAPS
endif

ifeq ($(BACKDROPS),YES)
FEATURES := $(FEATURES) -DBACKDROPS
endif

CC	 = g++
INC      = -I/usr/local/include
DEBUG    = -g
OPTS	 = -Wall -pipe
OPTIMIZE = -fomit-frame-pointer -O2 -ffast-math -funroll-loops

ifeq ($(CPU_IS_386),NO)
OPTS := -m486 $(OPTS)
endif


DEFINES  = $(FEATURES) -DBINDIR=\"$(BINDIR)/\" -DSCOREDIR=\"$(VARDIR)/\" -DVERSION=\"$(VERSION)\"

# regular use
CFLAGS	 = $(DEFINES) $(INC) $(OPTIMIZE) $(OPTS)

# for debugging/profiling
#CFLAGS	 = $(DEFINES) $(INC) $(DEBUG) $(OPTS)

#LFLAGS   = -static

INSTALLSCRIPT = installbin

CFFILE  = sast.cf
PROG    = sasteroids
PROG_O  = sasteroids.o HiScore.o Bitmap.o SBitmap.o str.o \
	  Timer.o Ui.o ObjTools.o Obj.o FastMath.o Explosion.o \
	  Sprite.o Joystick.o Keyboard.o fonts.o \
	  RawImageLoader.o cfclass.o

#LIBS     = -lvgagl -lvga -lm -lgmon
LIBS     = -lvgagl -lvga -lm

# name of tar.gz file for source/bin distributions
PACKAGE  = $(PROG)$(VERSION)

all:	$(PROG)
	@echo
	@echo Type \"make install\" to install sasteroids in
	@echo $(BINDIR)
	@echo

install: makeinstallscript $(PROG) $(CFFILE)
	@./$(INSTALLSCRIPT)

$(PROG): $(PROG_O)
	$(CC) $(LFLAGS) $(PROG_O) -o $(PROG) $(LIBS)
	@echo 
	@echo \"$(PROG)\" has successfully compiled.
	@echo 
	@echo Features: $(FEATURES)
	@echo Version : $(VERSION)

cleanbin: clean
	rm -f $(PROG)

clean:
	rm -f *.o *~

depend:
	makedepend -- $(INC) -- *.c

.c.o:
	$(CC) $(CFLAGS) -c -o $*.o $<

.c.s:
	$(CC) $(CFLAGS) -S -o $*.s $<


# this creates the source .tar.gz distribution.
distrib:
	rm -rf $(PACKAGE)-src.tar.gz
	( cd .. ; mv $(PROG) $(PACKAGE) )
	( cd .. ; tar zchvvf $(PACKAGE)/$(PACKAGE)-src.tar.gz $(PACKAGE)/*.[ch] \
		  $(PACKAGE)/$(CFFILE) $(PACKAGE)/?akefile $(PACKAGE)/1-* \
		  $(PACKAGE)/config )
	( cd .. ; mv $(PACKAGE) $(PROG) )
	@echo $(PACKAGE)-src.tar.gz has been created.

# this creates the bin distribution
bindistrib: makeinstallscript
	rm -rf sasteroids.o
	rm -rf Joystick.o
	make LFLAGS=-static JOYSTICK=YES
	strip $(PROG)
	rm -rf $(PACKAGE)-bin.tar.gz
	( cd .. ; mv $(PROG) $(PACKAGE) )        
	( cd .. ; tar zchvvf $(PACKAGE)/$(PACKAGE)-bin.tar.gz  \
                  $(PACKAGE)/$(PROG) $(PACKAGE)/2-* \
		  $(PACKAGE)/$(CFFILE) $(PACKAGE)/$(INSTALLSCRIPT) )
	( cd .. ; mv $(PACKAGE) $(PROG) )
	@echo $(PACKAGE)-bin.tar.gz has been created.

# creates the script to install the final program
makeinstallscript:
	@echo "#!/bin/sh" > $(INSTALLSCRIPT)
	@echo "# script to install sasteroids v$(VERSION)" >> $(INSTALLSCRIPT)
	@echo "install -d $(VARDIR)"  >> $(INSTALLSCRIPT)
	@echo "install -d $(BINDIR)"  >> $(INSTALLSCRIPT)
	@echo "echo" >> $(INSTALLSCRIPT)
	@echo "echo Installing \"$(PROG)\" in $(BINDIR)" >> $(INSTALLSCRIPT)
	@echo "install --strip --mode=4755 $(PROG) $(BINDIR)"  >> $(INSTALLSCRIPT)
	@echo "echo Installing \"$(CFFILE)\" in $(BINDIR)" >> $(INSTALLSCRIPT)
	@echo "install --mode=644 $(CFFILE) $(BINDIR)"  >> $(INSTALLSCRIPT)
	@echo "echo" >> $(INSTALLSCRIPT)
	@chmod +rx $(INSTALLSCRIPT)



# create the .cf file, which contains a collection of bitmaps/sounds/etc..
$(CFFILE):
	ccf

# hand-made since 'makedepend' acts a little weird anyway.
Bitmap.o:	Bitmap.h
SBitmap.o:	SBitmap.h Bitmap.h FastMath.h
FastMath.o:	FastMath.h
ObjTools.o:	ObjTools.h FastMath.h
Sprite.o:	Sprite.h FastMath.h Explosion.h SBitmap.h ObjTools.h
Obj.o:		Sprite.h Obj.h ObjTools.h SBitmap.h 
Explosion.o:	ObjTools.h PtrList.h FastMath.h Explosion.h
HiScore.o:	HiScore.h str.h 
Timer.o:	Timer.h 
Ui.o: 		Ui.h str.h
Joystick.o:	Joystick.h
sasteroids.o: 	SBitmap.h Timer.h FastMath.h RawImageLoader.h
sasteroids.o: 	sasteroids.h HiScore.h str.h Obj.h Ui.h ObjTools.h Joystick.h
sasteroids.o:	Keyboard.h
RawImageLoader.o: RawImageLoader.h Bitmap.h cfclass.h
cfclass.o:	cfclass.h
fonts.o:	Ui.h
str.o: 		str.h
