PRG = borgSim
APP = $(PRG).app/Contents/MacOS/$(PRG)
OPTIMIZE = -O2
LIBS = -lpthread -framework Carbon -framework GLUT -framework OpenGL -framework Foundation -framework AppKit
CC = gcc
LD = ld

override CFLAGS        = -g -Wall -pedantic -std=c99 $(OPTIMIZE) -DOSX_
$(DEFS)
override LDFLAGS       = -Wl --prebind

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 \
  program.o scrolltext3.o snake.o trackball.o util.o tetris/input.o \
  tetris/logic.o tetris/piece.o tetris/playfield.o tetris/view.o

all: Makefile.osx $(APP)

$(APP): $(OBJ)
	test -d $(PRG).app/Contents/MacOS/ || mkdir -p $(PRG).app/Contents/MacOS/
	test -d $(PRG).app/Contents/Resources/ || mkdir -p $(PRG).app/Resources/
	test $(PRG).app/Contents/Rescources/borg3d.icns || cp -f borg3d.icns $(PRG).app/Contents/Rescources/
	$(CC) $(CFLAGS) $(LDFLAGS) $(LIBS) $(OBJ) -o $@

clean:
	rm -rf $(OBJ) $(PRG) $(PRG).app/

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 program.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

program.o: program.c pixel.h util.h config.h program.h joystick.h
	$(CC) $(CFLAGS) -c -o program.o program.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

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

tetris/logic.o: tetris/logic.c tetris/logic.h tetris/piece.h \
  tetris/playfield.h tetris/view.h tetris/input.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