PRG = borgSim
OPTIMIZE = -O0
LIBS = -lglut -lpthread -lGL -lGLU
CC = gcc
LD = ld

override CFLAGS        = -g -Wall -pedantic -std=c99 $(OPTIMIZE)
$(DEFS)
override LDFLAGS       = -Wl,-Map,$(PRG).map

OBJ = breakpoint.o font_arial8.o font_small6.o font_uni53.o invader_draw.o \
  invader_init.o invader_proc.o invaders2.o joystick.o main.o menu.o pixel.o \
  programm.o scrolltext3.o snake.o trackball.o util.o tetris/input.o \
  tetris/logic.o tetris/piece.o tetris/playfield.o tetris/view.o prng.o \
  memxor_c.o noekeon.o stonefly.o

all: $(PRG)

$(PRG): $(OBJ)
	$(CC) $(CFLAGS) $(LDFLAGS) $(LIBS) $(OBJ) -o $@

clean:
	rm -rf $(OBJ) $(PRG) $(PRG).map

breakpoint.o: breakpoint.c pixel.h util.h config.h
	$(CC) $(CFLAGS) -c -o breakpoint.o breakpoint.c

font_arial8.o: font_arial8.c font.h
	$(CC) $(CFLAGS) -c -o font_arial8.o font_arial8.c

font_small6.o: font_small6.c font.h
	$(CC) $(CFLAGS) -c -o font_small6.o font_small6.c

font_uni53.o: font_uni53.c font.h
	$(CC) $(CFLAGS) -c -o font_uni53.o font_uni53.c

invader_draw.o: invader_draw.c invaders2.h pixel.h util.h config.h \
  scrolltext.h joystick.h
	$(CC) $(CFLAGS) -c -o invader_draw.o invader_draw.c

invader_init.o: invader_init.c invaders2.h pixel.h util.h config.h \
  scrolltext.h joystick.h
	$(CC) $(CFLAGS) -c -o invader_init.o invader_init.c

invader_proc.o: invader_proc.c invaders2.h pixel.h util.h config.h \
  scrolltext.h joystick.h
	$(CC) $(CFLAGS) -c -o invader_proc.o invader_proc.c

invaders2.o: invaders2.c util.h invaders2.h pixel.h config.h scrolltext.h \
  joystick.h
	$(CC) $(CFLAGS) -c -o invaders2.o invaders2.c

joystick.o: joystick.c joystick.h
	$(CC) $(CFLAGS) -c -o joystick.o joystick.c

main.o: main.c config.h pixel.h util.h programm.h menu.h tetris/logic.h \
  tetris/piece.h trackball.h snake.h scrolltext.h
	$(CC) $(CFLAGS) -c -o main.o main.c

menu.o: menu.c menu.h config.h util.h pixel.h joystick.h snake.h \
  tetris/logic.h tetris/piece.h invaders2.h scrolltext.h
	$(CC) $(CFLAGS) -c -o menu.o menu.c

pixel.o: pixel.c pixel.h util.h config.h
	$(CC) $(CFLAGS) -c -o pixel.o pixel.c

programm.o: programm.c pixel.h util.h config.h programm.h joystick.h
	$(CC) $(CFLAGS) -c -o programm.o programm.c

scrolltext3.o: scrolltext3.c config.h scrolltext.h pixel.h util.h \
  font_arial8.h font.h font_small6.h font_uni53.h
	$(CC) $(CFLAGS) -c -o scrolltext3.o scrolltext3.c

snake.o: snake.c pixel.h util.h config.h joystick.h
	$(CC) $(CFLAGS) -c -o snake.o snake.c

trackball.o: trackball.c trackball.h
	$(CC) $(CFLAGS) -c -o trackball.o trackball.c

util.o: util.c joystick.h
	$(CC) $(CFLAGS) -c -o util.o util.c

noekeon.o: noekeon.c noekeon.h memxor.h
	$(CC) $(CFLAGS) -c -o $@ $<

memxor_c.o: memxor_c.c memxor.h
	$(CC) $(CFLAGS) -c -o $@ $<

prng.o: prng.c prng.h noekeon.h memxor.h
	$(CC) $(CFLAGS) -c -o $@ $<

tetris/input.o: tetris/input.c joystick.h util.h tetris/input.h
	$(CC) $(CFLAGS) -c -o tetris/input.o tetris/input.c

logic.o: tetris/logic.c tetris/logic.h tetris/piece.h tetris/playfield.h \
  tetris/view.h tetris/input.h prng.h ../borg-base/prng.h
	$(CC) $(CFLAGS) -c -o tetris/logic.o tetris/logic.c

tetris/piece.o: tetris/piece.c tetris/piece.h
	$(CC) $(CFLAGS) -c -o tetris/piece.o tetris/piece.c

tetris/playfield.o: tetris/playfield.c tetris/playfield.h tetris/piece.h
	$(CC) $(CFLAGS) -c -o tetris/playfield.o tetris/playfield.c

tetris/view.o: tetris/view.c config.h pixel.h util.h scrolltext.h \
  tetris/logic.h tetris/piece.h tetris/playfield.h tetris/view.h
	$(CC) $(CFLAGS) -c -o tetris/view.o tetris/view.c

stonefly.o: stonefly.h stonefly.c pixel.h util.h config.h prng.h \
  ../borg-base/prng.h tetris/piece.h
	$(CC) $(CFLAGS) -c -o stonefly.o stonefly.c