asteroids: linux.compile asteroids.o vector.o draw.o blit.o bullet.o ship.o text.o linklist.o settings.o game.o
	g++ -o asteroids asteroids.o vector.o draw.o blit.o bullet.o ship.o text.o linklist.o settings.o game.o `sdl-config --libs`

asteroids.exe: asteroids.o vector.o draw.o blit.o bullet.o ship.o text.o linklist.o game.o settings.o asteroids.res
	g++ -o asteroids.exe -static asteroids.o vector.o draw.o blit.o bullet.o ship.o text.o linklist.o game.o settings.o asteroids.res `sdl-config --static-libs`
	strip asteroids.exe
	upx asteroids.exe

asteroids.o: asteroids.cpp vector.h draw.h blit.h bullet.h ship.h text.h linklist.h settings.h game.h
	g++ -O2 -c asteroids.cpp `sdl-config --cflags`

vector.o: vector.cpp vector.h
	g++ -O2 -c vector.cpp

draw.o: draw.cpp draw.h vector.h
	g++ -O2 -c draw.cpp

blit.o: blit.cpp draw.h vector.h blit.h
	g++ -O2 -c blit.cpp `sdl-config --cflags`

bullet.o: bullet.cpp bullet.h draw.h vector.h
	g++ -O2 -c bullet.cpp

ship.o: ship.cpp ship.h bullet.h draw.h vector.h
	g++ -O2 -c ship.cpp

text.o: text.cpp text.h ship.h bullet.h draw.h vector.h
	g++ -O2 -c text.cpp

linklist.o: linklist.cpp linklist.h text.h ship.h bullet.h draw.h vector.h
	g++ -O2 -c linklist.cpp

game.o: game.cpp game.h linklist.h text.h ship.h bullet.h draw.h blit.h settings.h vector.h
	g++ -O2 -c game.cpp `sdl-config --cflags`

settings.o: settings.cpp settings.h
	g++ -O2 -c settings.cpp

windows: windows.compile
	cross-make.sh asteroids.exe

windows.compile:
	make clean
	touch windows.compile

linux.compile:
	make clean
	touch linux.compile

asteroids.res: asteroids.rc asteroids.ico
	i386-mingw32msvc-windres -i asteroids.rc --output-format=coff -o asteroids.res	

clean:
	rm -rf *.o asteroids asteroids.exe windows.compile linux.compile
