# Makefile to build the SDL tests

srcdir  = @srcdir@

CC      = @CC@
EXE	= @EXE@
CFLAGS  = @CFLAGS@
LIBS	= @LIBS@

TARGETS = \
	checkkeys$(EXE) \
	loopwave$(EXE) \
	testaudioinfo$(EXE) \
	testautomation$(EXE) \
	testdraw2$(EXE) \
	testdrawchessboard$(EXE) \
	testerror$(EXE) \
	testfile$(EXE) \
	testgamecontroller$(EXE) \
	testgesture$(EXE) \
	testgl2$(EXE) \
	testgles$(EXE) \
	testhaptic$(EXE) \
	testrumble$(EXE) \
	testthread$(EXE) \
	testiconv$(EXE) \
	testime$(EXE) \
	testintersections$(EXE) \
	testrelative$(EXE) \
	testjoystick$(EXE) \
	testkeys$(EXE) \
	testloadso$(EXE) \
	testlock$(EXE) \
	testmultiaudio$(EXE) \
	testnative$(EXE) \
	testoverlay2$(EXE) \
	testplatform$(EXE) \
	testpower$(EXE) \
	testrendertarget$(EXE) \
	testresample$(EXE) \
	testscale$(EXE) \
	testsem$(EXE) \
	testshader$(EXE) \
	testshape$(EXE) \
	testsprite2$(EXE) \
	testspriteminimal$(EXE) \
	teststreaming$(EXE) \
	testtimer$(EXE) \
	testver$(EXE) \
	testwm2$(EXE) \
	torturethread$(EXE) \
	testrendercopyex$(EXE) \
	testmessage$(EXE) \

all: Makefile $(TARGETS)

Makefile: $(srcdir)/Makefile.in
	$(SHELL) config.status $@

checkkeys$(EXE): $(srcdir)/checkkeys.c
	$(CC) -o $@ $^ $(CFLAGS) $(LIBS)

loopwave$(EXE): $(srcdir)/loopwave.c
	$(CC) -o $@ $^ $(CFLAGS) $(LIBS)

testresample$(EXE): $(srcdir)/testresample.c
	$(CC) -o $@ $^ $(CFLAGS) $(LIBS)

testaudioinfo$(EXE): $(srcdir)/testaudioinfo.c
	$(CC) -o $@ $^ $(CFLAGS) $(LIBS)

testautomation$(EXE): $(srcdir)/testautomation.c \
		      $(srcdir)/testautomation_audio.c \
		      $(srcdir)/testautomation_clipboard.c \
		      $(srcdir)/testautomation_events.c \
		      $(srcdir)/testautomation_keyboard.c \
		      $(srcdir)/testautomation_main.c \
		      $(srcdir)/testautomation_mouse.c \
		      $(srcdir)/testautomation_pixels.c \
		      $(srcdir)/testautomation_platform.c \
		      $(srcdir)/testautomation_rect.c \
		      $(srcdir)/testautomation_render.c \
		      $(srcdir)/testautomation_rwops.c \
		      $(srcdir)/testautomation_sdltest.c \
		      $(srcdir)/testautomation_stdlib.c \
		      $(srcdir)/testautomation_surface.c \
		      $(srcdir)/testautomation_syswm.c \
		      $(srcdir)/testautomation_timer.c \
		      $(srcdir)/testautomation_video.c
	$(CC) -o $@ $^ $(CFLAGS) $(LIBS) 

testmultiaudio$(EXE): $(srcdir)/testmultiaudio.c
	$(CC) -o $@ $^ $(CFLAGS) $(LIBS)

testatomic$(EXE): $(srcdir)/testatomic.c
	$(CC) -o $@ $^ $(CFLAGS) $(LIBS)

testintersections$(EXE): $(srcdir)/testintersections.c
	$(CC) -o $@ $^ $(CFLAGS) $(LIBS)

testrelative$(EXE): $(srcdir)/testrelative.c
	$(CC) -o $@ $^ $(CFLAGS) $(LIBS)

testdraw2$(EXE): $(srcdir)/testdraw2.c
	$(CC) -o $@ $^ $(CFLAGS) $(LIBS)

testdrawchessboard$(EXE): $(srcdir)/testdrawchessboard.c
	$(CC) -o $@ $^ $(CFLAGS) $(LIBS)

testerror$(EXE): $(srcdir)/testerror.c
	$(CC) -o $@ $^ $(CFLAGS) $(LIBS)

testfile$(EXE): $(srcdir)/testfile.c
	$(CC) -o $@ $^ $(CFLAGS) $(LIBS)

testgamecontroller$(EXE): $(srcdir)/testgamecontroller.c
	$(CC) -o $@ $^ $(CFLAGS) $(LIBS)
 
testgesture$(EXE): $(srcdir)/testgesture.c
	$(CC) -o $@ $^ $(CFLAGS) $(LIBS) @MATHLIB@
 
testgl2$(EXE): $(srcdir)/testgl2.c
	$(CC) -o $@ $^ $(CFLAGS) $(LIBS) @GLLIB@ @MATHLIB@

testgles$(EXE): $(srcdir)/testgles.c
	$(CC) -o $@ $^ $(CFLAGS) $(LIBS) @GLLIB@ @MATHLIB@

testhaptic$(EXE): $(srcdir)/testhaptic.c
	$(CC) -o $@ $^ $(CFLAGS) $(LIBS)

testrumble$(EXE): $(srcdir)/testrumble.c
	$(CC) -o $@ $^ $(CFLAGS) $(LIBS)

testthread$(EXE): $(srcdir)/testthread.c
	$(CC) -o $@ $^ $(CFLAGS) $(LIBS)

testiconv$(EXE): $(srcdir)/testiconv.c
	$(CC) -o $@ $^ $(CFLAGS) $(LIBS)

testime$(EXE): $(srcdir)/testime.c
	$(CC) -o $@ $^ $(CFLAGS) $(LIBS) @SDL_TTF_LIB@

testjoystick$(EXE): $(srcdir)/testjoystick.c
	$(CC) -o $@ $^ $(CFLAGS) $(LIBS)

testkeys$(EXE): $(srcdir)/testkeys.c
	$(CC) -o $@ $^ $(CFLAGS) $(LIBS)

testloadso$(EXE): $(srcdir)/testloadso.c
	$(CC) -o $@ $^ $(CFLAGS) $(LIBS)

testlock$(EXE): $(srcdir)/testlock.c
	$(CC) -o $@ $^ $(CFLAGS) $(LIBS)

ifeq (@ISMACOSX@,true)
testnative$(EXE): $(srcdir)/testnative.c \
			$(srcdir)/testnativecocoa.m \
			$(srcdir)/testnativex11.c
	$(CC) -o $@ $^ $(CFLAGS) $(LIBS) -framework Cocoa @XLIB@
endif

ifeq (@ISWINDOWS@,true)
testnative$(EXE): $(srcdir)/testnative.c \
			$(srcdir)/testnativew32.c
	$(CC) -o $@ $^ $(CFLAGS) $(LIBS)
endif

ifeq (@ISUNIX@,true)
testnative$(EXE): $(srcdir)/testnative.c \
			$(srcdir)/testnativex11.c
	$(CC) -o $@ $^ $(CFLAGS) $(LIBS) @XLIB@
endif

testoverlay2$(EXE): $(srcdir)/testoverlay2.c
	$(CC) -o $@ $^ $(CFLAGS) $(LIBS)

testplatform$(EXE): $(srcdir)/testplatform.c
	$(CC) -o $@ $^ $(CFLAGS) $(LIBS)

testpower$(EXE): $(srcdir)/testpower.c
	$(CC) -o $@ $^ $(CFLAGS) $(LIBS)

testrendertarget$(EXE): $(srcdir)/testrendertarget.c
	$(CC) -o $@ $^ $(CFLAGS) $(LIBS)

testscale$(EXE): $(srcdir)/testscale.c
	$(CC) -o $@ $^ $(CFLAGS) $(LIBS)

testsem$(EXE): $(srcdir)/testsem.c
	$(CC) -o $@ $^ $(CFLAGS) $(LIBS)

testshader$(EXE): $(srcdir)/testshader.c
	$(CC) -o $@ $^ $(CFLAGS) $(LIBS) @GLLIB@ @MATHLIB@

testshape$(EXE): $(srcdir)/testshape.c
	$(CC) -o $@ $^ $(CFLAGS) $(LIBS)

testsprite2$(EXE): $(srcdir)/testsprite2.c
	$(CC) -o $@ $^ $(CFLAGS) $(LIBS)

testspriteminimal$(EXE): $(srcdir)/testspriteminimal.c
	$(CC) -o $@ $^ $(CFLAGS) $(LIBS) @MATHLIB@

teststreaming$(EXE): $(srcdir)/teststreaming.c
	$(CC) -o $@ $^ $(CFLAGS) $(LIBS) @MATHLIB@

testtimer$(EXE): $(srcdir)/testtimer.c
	$(CC) -o $@ $^ $(CFLAGS) $(LIBS)

testver$(EXE): $(srcdir)/testver.c
	$(CC) -o $@ $^ $(CFLAGS) $(LIBS)

testwm2$(EXE): $(srcdir)/testwm2.c
	$(CC) -o $@ $^ $(CFLAGS) $(LIBS)

torturethread$(EXE): $(srcdir)/torturethread.c
	$(CC) -o $@ $^ $(CFLAGS) $(LIBS)

testrendercopyex$(EXE): $(srcdir)/testrendercopyex.c
	$(CC) -o $@ $^ $(CFLAGS) $(LIBS) @MATHLIB@

testmessage$(EXE): $(srcdir)/testmessage.c
	$(CC) -o $@ $^ $(CFLAGS) $(LIBS)

clean:
	rm -f $(TARGETS)

distclean: clean
	rm -f Makefile
	rm -f config.status config.cache config.log
	rm -rf $(srcdir)/autom4te*
