CFLAGS=-fstrength-reduce -fomit-frame-pointer -finline-functions

all: prepare bin/devs.a

prepare:
	cd GTNLIB
	make
	cd ..
	copy GTNLIB\GTNLIB.a bin\

bin/devs.a: devs.o video/screen.o video/video.o resource/resource.o system/system.o input/input.o sound/sound.o
	ar bin/devs.a $^

devs.o: ../devs.c
	gcc -O -c $(CFLAGS) -o $@ $<

video/screen.o: video/screen.c ../devs.h ../../core/game_context.h ../memory_map_buffer.h
	gcc -O -c $(CFLAGS) -o $@ $<

video/video.o: video/video.c ../devs.h ../../core/game_context.h ../memory_map_buffer.h address_map.h
	gcc -O -c $(CFLAGS) -o $@ $<

resource/resource.o: resource/resource.c ../devs.h ../../core/game_context.h ../memory_map_buffer.h
	gcc -O -c $(CFLAGS) -o $@ $<

system/system.o: system/system.c ../devs.h resource/resource.h sound/sound.h ../../core/game_context.h ../memory_map_buffer.h
	gcc -O -c $(CFLAGS) -o $@ $<

input/input.o: input/input.c ../devs.h ../../core/game_context.h ../memory_map_buffer.h
	gcc -O -c $(CFLAGS) -o $@ $<

sound/sound.o: sound/sound.c ../devs.h ../../core/game_context.h ../memory_map_buffer.h
	gcc -O -c $(CFLAGS) -o $@ $<

clean:
	-del /Y bin\devs.a
	-del /Y bin\GTNLIB.a
	-del /Y input\*.o
	-del /Y resource\*.o
	-del /Y sound\*.o
	-del /Y system\*.o
	-del /Y video\*.o
	-del /Y *.o
	cd GTNLIB
	-make clean
	cd ..
