# Makefile to build the SDL tests

srcdir  = @srcdir@

prefix = @prefix@
exec_prefix = @exec_prefix@
bindir = @bindir@
libdir = @libdir@
libexecdir = @libexecdir@
includedir = @includedir@
datarootdir = @datarootdir@
datadir = @datadir@

CC      = @CC@
EXE	= @EXE@
CFLAGS  = @CFLAGS@ -g
LIBS	= @LIBS@

TARGETS = \
	checkkeys$(EXE) \
	checkkeysthreads$(EXE) \
	controllermap$(EXE) \
	loopwave$(EXE) \
	loopwavequeue$(EXE) \
	testatomic$(EXE) \
	testaudiocapture$(EXE) \
	testaudiohotplug$(EXE) \
	testaudioinfo$(EXE) \
	testautomation$(EXE) \
	testbounds$(EXE) \
	testcustomcursor$(EXE) \
	testdisplayinfo$(EXE) \
	testdraw2$(EXE) \
	testdrawchessboard$(EXE) \
	testdropfile$(EXE) \
	testerror$(EXE) \
	testevdev$(EXE) \
	testfile$(EXE) \
	testfilesystem$(EXE) \
	testgamecontroller$(EXE) \
	testgeometry$(EXE) \
	testgesture$(EXE) \
	testhaptic$(EXE) \
	testhittesting$(EXE) \
	testhotplug$(EXE) \
	testiconv$(EXE) \
	testime$(EXE) \
	testintersections$(EXE) \
	testjoystick$(EXE) \
	testkeys$(EXE) \
	testloadso$(EXE) \
	testlocale$(EXE) \
	testlock$(EXE) \
	testmessage$(EXE) \
	testmouse$(EXE) \
	testmultiaudio$(EXE) \
	testnative$(EXE) \
	testoverlay2$(EXE) \
	testplatform$(EXE) \
	testpower$(EXE) \
	testqsort$(EXE) \
	testrelative$(EXE) \
	testrendercopyex$(EXE) \
	testrendertarget$(EXE) \
	testresample$(EXE) \
	testrumble$(EXE) \
	testscale$(EXE) \
	testsem$(EXE) \
	testsensor$(EXE) \
	testshape$(EXE) \
	testsprite2$(EXE) \
	testspriteminimal$(EXE) \
	teststreaming$(EXE) \
	testsurround$(EXE) \
	testthread$(EXE) \
	testtimer$(EXE) \
	testurl$(EXE) \
	testver$(EXE) \
	testviewport$(EXE) \
	testvulkan$(EXE) \
	testwm2$(EXE) \
	testyuv$(EXE) \
	torturethread$(EXE) \


@OPENGL_TARGETS@ += testgl2$(EXE) testshader$(EXE)
@OPENGLES1_TARGETS@ += testgles$(EXE)
@OPENGLES2_TARGETS@ += testgles2$(EXE)


all: Makefile $(TARGETS) copydatafiles generatetestmeta

installedtestsdir = $(libexecdir)/installed-tests/SDL2
installedtestsmetadir = $(datadir)/installed-tests/SDL2

generatetestmeta:
	rm -f *.test
	set -e; for exe in $(noninteractive) $(needs_audio) $(needs_display); do \
		sed \
			-e 's#@installedtestsdir@#$(installedtestsdir)#g' \
			-e "s#@exe@#$$exe#g" \
			< $(srcdir)/template.test.in > $$exe.test; \
	done

install: all
	install -d $(DESTDIR)$(installedtestsdir)
	install $(TARGETS) $(DESTDIR)$(installedtestsdir)
	install -m644 $(DATA) $(DESTDIR)$(installedtestsdir)
	install -d $(DESTDIR)$(installedtestsmetadir)
	install -m644 *.test $(DESTDIR)$(installedtestsmetadir)

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

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

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

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

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

testsurround$(EXE): $(srcdir)/testsurround.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_guid.c \
		      $(srcdir)/testautomation_hints.c \
		      $(srcdir)/testautomation_joystick.c \
		      $(srcdir)/testautomation_keyboard.c \
		      $(srcdir)/testautomation_main.c \
		      $(srcdir)/testautomation_math.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 $(srcdir)/testutils.c
	$(CC) -o $@ $^ $(CFLAGS) $(LIBS)

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

testaudiocapture$(EXE): $(srcdir)/testaudiocapture.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)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

testhotplug$(EXE): $(srcdir)/testhotplug.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 $(srcdir)/testutils.c
	$(CC) -o $@ $^ $(CFLAGS) $(LIBS)

testime$(EXE): $(srcdir)/testime.c $(srcdir)/testutils.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)/testutils.c \
			$(srcdir)/testnativex11.c
	$(CC) -o $@ $^ $(CFLAGS) $(LIBS) -framework Cocoa @XLIB@
endif

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

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

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

#there's probably a better way of doing this
ifeq (@ISMACOSX@,false)
ifeq (@ISWINDOWS@,false)
ifeq (@ISUNIX@,false)
ifeq (@ISOS2@,false)
testnative$(EXE): ;
endif
endif
endif
endif

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

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

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

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

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

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

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

testsensor$(EXE): $(srcdir)/testsensor.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 $(srcdir)/testutils.c
	$(CC) -o $@ $^ $(CFLAGS) $(LIBS)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

testlocale$(EXE): $(srcdir)/testlocale.c
	$(CC) -o $@ $? $(CFLAGS) $(LIBS)

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


clean:
	rm -f $(TARGETS) *.test

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

noninteractive = \
	testatomic$(EXE) \
	testerror$(EXE) \
	testevdev$(EXE) \
	testfilesystem$(EXE) \
	testkeys$(EXE) \
	testlocale$(EXE) \
	testplatform$(EXE) \
	testpower$(EXE) \
	testqsort$(EXE) \
	testthread$(EXE) \
	testtimer$(EXE) \
	testver$(EXE) \
	$(NULL)

needs_audio = \
	testaudioinfo$(EXE) \
	testsurround$(EXE) \
	$(NULL)

needs_display = \
	testbounds$(EXE) \
	testdisplayinfo$(EXE) \
	$(NULL)

TESTS = $(noninteractive) $(needs_audio) $(needs_display)

check:
	@set -e; \
	status=0; \
	export SDL_AUDIODRIVER=dummy; \
	export SDL_VIDEODRIVER=dummy; \
	for exe in $(TESTS); do \
		echo "$$exe..."; \
		if ./"$$exe"; then \
			echo "$$exe: OK"; \
		else \
			echo "$$exe: FAILED: $$?"; \
			status=1; \
		fi; \
	done; \
	exit "$$status"

DATA = \
	axis.bmp \
	button.bmp \
	controllermap.bmp \
	controllermap_back.bmp \
	icon.bmp \
	moose.dat \
	sample.bmp \
	sample.wav \
	testgles2_sdf_img_normal.bmp \
	testgles2_sdf_img_sdf.bmp \
	testyuv.bmp \
	unifont-13.0.06.hex \
	utf8.txt \
	$(NULL)

ifneq ($(srcdir), .)
$(DATA) : %: $(srcdir)/% Makefile
	cp $< $@
endif

copydatafiles: $(DATA)
.PHONY : copydatafiles
