# Makefile for game "snakes" for VgaGames3

CFLAGS = -W -Wall -O2 -fsigned-char -g
VGAG_CFLAGS = `vgagames3-config --cflags`
VGAG_LIBS = `vgagames3-config --libs`
VGAG_VERSION_MAIOR = `vgagames3-config --version-maior`
VGAG_VERSION_MINOR = `vgagames3-config --version-minor`

# files
GAME = snakes
HFILES = main.h obj-wall.h obj-isnake.h obj-esnake.h obj-shot.h \
	obj-camhat.h obj-bottle.h
OBJ = main.o ofunc.o keys.o save.o obj-wall.o obj-isnake.o obj-esnake.o \
	obj-shot.o obj-camhat.o obj-bottle.o \
	objmgmt-esnake.o objobj-isnake-wall.o objobj-esnake-wall.o \
	objobj-shot-wall.o objobj-shot-isnake.o objobj-shot-esnake.o \
	objobj-shot-shot.o objobj-isnake-esnake.o objobj-camhat-isnake.o \
	objobj-camhat-esnake.o objobj-bottle-isnake.o objobj-bottle-esnake.o


all: version $(GAME)

version:
	@if test $(VGAG_VERSION_MAIOR) -ne 1 || test $(VGAG_VERSION_MINOR) -lt 3; then \
	  echo "*** VgaGames3 version 1.3 or higher is needed ***" >&2; \
	  exit 1; \
	fi

clean:
	rm -f files/settings.save files/levels.data
	rm -f *.o
	rm -f $(GAME) create_levels


# internal make-directives

$(GAME): create_levels $(OBJ)
	$(CC) $(OBJ) $(VGAG_LIBS) -o $(GAME)

create_levels: create_levels.c level.h
	$(CC) $(CFLAGS) create_levels.c -o create_levels
	./create_levels

main.o: main.c $(HFILES) level.h
	$(CC) $(CFLAGS) $(VGAG_CFLAGS) -c main.c

ofunc.o: ofunc.c $(HFILES)
	$(CC) $(CFLAGS) $(VGAG_CFLAGS) -c ofunc.c

keys.o: keys.c $(HFILES)
	$(CC) $(CFLAGS) $(VGAG_CFLAGS) -c keys.c

save.o: save.c $(HFILES)
	$(CC) $(CFLAGS) $(VGAG_CFLAGS) -c save.c

obj-wall.o: obj-wall.c $(HFILES)
	$(CC) $(CFLAGS) $(VGAG_CFLAGS) -c obj-wall.c

obj-isnake.o: obj-isnake.c $(HFILES)
	$(CC) $(CFLAGS) $(VGAG_CFLAGS) -c obj-isnake.c

obj-esnake.o: obj-esnake.c $(HFILES)
	$(CC) $(CFLAGS) $(VGAG_CFLAGS) -c obj-esnake.c

obj-shot.o: obj-shot.c $(HFILES)
	$(CC) $(CFLAGS) $(VGAG_CFLAGS) -c obj-shot.c

obj-camhat.o: obj-camhat.c $(HFILES)
	$(CC) $(CFLAGS) $(VGAG_CFLAGS) -c obj-camhat.c

obj-bottle.o: obj-bottle.c $(HFILES)
	$(CC) $(CFLAGS) $(VGAG_CFLAGS) -c obj-bottle.c

objmgmt-esnake.o: objmgmt-esnake.c $(HFILES)
	$(CC) $(CFLAGS) $(VGAG_CFLAGS) -c objmgmt-esnake.c

objobj-isnake-wall.o: objobj-isnake-wall.c $(HFILES)
	$(CC) $(CFLAGS) $(VGAG_CFLAGS) -c objobj-isnake-wall.c

objobj-esnake-wall.o: objobj-esnake-wall.c $(HFILES)
	$(CC) $(CFLAGS) $(VGAG_CFLAGS) -c objobj-esnake-wall.c

objobj-shot-wall.o: objobj-shot-wall.c $(HFILES)
	$(CC) $(CFLAGS) $(VGAG_CFLAGS) -c objobj-shot-wall.c

objobj-shot-isnake.o: objobj-shot-isnake.c $(HFILES)
	$(CC) $(CFLAGS) $(VGAG_CFLAGS) -c objobj-shot-isnake.c

objobj-shot-esnake.o: objobj-shot-esnake.c $(HFILES)
	$(CC) $(CFLAGS) $(VGAG_CFLAGS) -c objobj-shot-esnake.c

objobj-shot-shot.o: objobj-shot-shot.c $(HFILES)
	$(CC) $(CFLAGS) $(VGAG_CFLAGS) -c objobj-shot-shot.c

objobj-isnake-esnake.o: objobj-isnake-esnake.c $(HFILES)
	$(CC) $(CFLAGS) $(VGAG_CFLAGS) -c objobj-isnake-esnake.c

objobj-camhat-isnake.o: objobj-camhat-isnake.c $(HFILES)
	$(CC) $(CFLAGS) $(VGAG_CFLAGS) -c objobj-camhat-isnake.c

objobj-camhat-esnake.o: objobj-camhat-esnake.c $(HFILES)
	$(CC) $(CFLAGS) $(VGAG_CFLAGS) -c objobj-camhat-esnake.c

objobj-bottle-isnake.o: objobj-bottle-isnake.c $(HFILES)
	$(CC) $(CFLAGS) $(VGAG_CFLAGS) -c objobj-bottle-isnake.c

objobj-bottle-esnake.o: objobj-bottle-esnake.c $(HFILES)
	$(CC) $(CFLAGS) $(VGAG_CFLAGS) -c objobj-bottle-esnake.c

