.PHONY: all clean veryclean

MODULES = \
	globaldata.o environment.o player.o virtobj.o floattext.o teleport.o physobj.o decor.o explosion.o missile.o beam.o tank.o atanks.o fade.o perlin.o sky.o

CC  = g++
FLAGS = -DLINUX -DVERSION=\"${VERSION}\" -DDATA_DIR=\".\"
OUTPUT = ../atanks
WFLAGS = 
OFLAGS = 
LFLAGS +=
LDFLAGS =  `allegro-config --libs`

CFLAGS += -Wall -Iinclude # -fprofile-arcs -ftest-coverage 
CFLAGS += -g	# debug vs optimize flags

SRCS  = $(MODULES:.o=.cc)
GLOBALS	= main.h globals.h externs.h globaldata.h weapons.h imagedefs.h lineseq.h

all: $(OUTPUT)

clean:
	rm -f *.o

veryclean: clean
	rm $(OUTPUT)

$(MODULES): Makefile


atanks.o: atanks.cc menu.h menucontent.h $(GLOBALS)
	$(CC) -c atanks.cc -o $@ $(FLAGS) $(LFLAGS) $(OFLAGS) $(CFLAGS)

environment.o: environment.cc environment.h virtobj.h missile.h tank.h $(GLOBALS)
	$(CC) -c $< -o $@ $(FLAGS) $(LFLAGS) $(OFLAGS) $(CFLAGS)

explosion.o: explosion.cc explosion.h environment.h player.h virtobj.h missile.h tank.h $(GLOBALS)
	$(CC) -c $< -o $@ $(FLAGS) $(LFLAGS) $(OFLAGS) $(CFLAGS)

floattext.o: floattext.cc floattext.h $(GLOBALS)
	$(CC) -c $< -o $@ $(FLAGS) $(LFLAGS) $(OFLAGS) $(CFLAGS)

globaldata.o: globaldata.cc player.h $(GLOBALS)
	$(CC) -c $< -o $@ $(FLAGS) $(LFLAGS) $(OFLAGS) $(CFLAGS)

missile.o: missile.cc missile.h environment.h explosion.h tank.h $(GLOBALS)
	$(CC) -c $< -o $@ $(FLAGS) $(LFLAGS) $(OFLAGS) $(CFLAGS)

teleport.o: teleport.cc teleport.h environment.h $(GLOBALS)
	$(CC) -c $< -o $@ $(FLAGS) $(LFLAGS) $(OFLAGS) $(CFLAGS)

physobj.o: physobj.cc physobj.h environment.h $(GLOBALS)
	$(CC) -c $< -o $@ $(FLAGS) $(LFLAGS) $(OFLAGS) $(CFLAGS)

player.o: player.cc player.h environment.h missile.h tank.h $(GLOBALS)
	$(CC) -c $< -o $@ $(FLAGS) $(LFLAGS) $(OFLAGS) $(CFLAGS)

tank.o: tank.cc tank.h environment.h floattext.h explosion.h player.h $(GLOBALS)
	$(CC) -c $< -o $@ $(FLAGS) $(LFLAGS) $(OFLAGS) $(CFLAGS)

virtobj.o: virtobj.cc virtobj.h environment.h $(GLOBALS)
	$(CC) -c $< -o $@ $(FLAGS) $(LFLAGS) $(OFLAGS) $(CFLAGS)

fade.o: fade.cc $(GLOBALS)
	$(CC) -c $< -o $@ $(FLAGS) $(LFLAGS) $(OFLAGS) $(CFLAGS)

perlin.o: perlin.cc $(GLOBALS)
	$(CC) -c $< -o $@ $(FLAGS) $(LFLAGS) $(OFLAGS) $(CFLAGS)

sky.o: sky.cc $(GLOBALS)
	$(CC) -c $< -o $@ $(FLAGS) $(LFLAGS) $(OFLAGS) $(CFLAGS)

%.o: %.cc %.h
	$(CC) -c $< -o $@ $(FLAGS) $(LFLAGS) $(OFLAGS) $(CFLAGS)

$(OUTPUT): $(OBJECTS) $(MODULES)
	$(CC) $(MODULES) -o $(OUTPUT) $(FLAGS) $(LFALGS) $(LDFLAGS) $(SFLAGS)
	#strip $(OUTPUT)
