From 38ef6789909c04bb688731fbc3c5433f7fb5bc81 Mon Sep 17 00:00:00 2001 From: Simon McVittie Date: Wed, 25 Nov 2020 13:30:29 +0000 Subject: [PATCH] test: Add a `make install` target for the tests This makes it more convenient to compile them alongside SDL, install them in an optional package and use them as smoke-tests or diagnostic tools. The default installation directory is taken from GNOME's installed-tests, which seems as good a convention as any other: https://wiki.gnome.org/Initiatives/GnomeGoals/InstalledTests Signed-off-by: Simon McVittie --- CMakeLists.txt | 1 + test/CMakeLists.txt | 87 +++++++++++++++++++++++++++++++++++++++++++++ test/Makefile.in | 15 ++++++++ test/configure.ac | 9 +++++ 4 files changed, 112 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 5c695deac..ff430ab4c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -472,6 +472,7 @@ set(SDL_STATIC ${SDL_STATIC_ENABLED_BY_DEFAULT} CACHE BOOL "Build a static versi dep_option(SDL_STATIC_PIC "Static version of the library should be built with Position Independent Code" OFF "SDL_STATIC" OFF) set_option(SDL_TEST "Build the test directory" OFF) +set_option(SDL_INSTALL_TESTS "Install test-cases" OFF) if(VITA) set_option(VIDEO_VITA_PIB "Build with PSVita piglet gles2 support" OFF) diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index f8a21fcf7..0a7b8a12c 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -2,6 +2,10 @@ cmake_minimum_required(VERSION 3.0.0) project(SDL2 C) include(CTest) +if(SDL_INSTALL_TESTS) + include(GNUInstallDirs) +endif() + # Global settings for all of the test targets # FIXME: is this wrong? remove_definitions(-DUSING_GENERATED_CONFIG_H) @@ -136,6 +140,77 @@ add_executable(controllermap controllermap.c testutils.c) add_executable(testvulkan testvulkan.c) add_executable(testoffscreen testoffscreen.c) +SET(ALL_TESTS + checkkeys + checkkeysthreads + controllermap + loopwave + loopwavequeue + testatomic + testaudiocapture + testaudiohotplug + testaudioinfo + testautomation + testbounds + testcustomcursor + testdisplayinfo + testdraw2 + testdrawchessboard + testdropfile + testerror + testfile + testfilesystem + testgamecontroller + testgeometry + testgesture + testgl2 + testgles + testgles2 + testhaptic + testhittesting + testhotplug + testiconv + testime + testintersections + testjoystick + testkeys + testloadso + testlocale + testlock + testmessage + testmouse + testmultiaudio + testnative + testoffscreen + testoverlay2 + testplatform + testpower + testqsort + testrelative + testrendercopyex + testrendertarget + testresample + testrumble + testscale + testsem + testsensor + testshader + testshape + testsprite2 + testspriteminimal + teststreaming + testsurround + testthread + testtimer + testurl + testver + testviewport + testvulkan + testwm2 + testyuv + torturethread +) + set(NONINTERACTIVE testatomic testerror @@ -151,6 +226,7 @@ set(NONINTERACTIVE ) if(LINUX) + list(APPEND ALL_TESTS testevdev) list(APPEND NONINTERACTIVE testevdev) endif() @@ -354,3 +430,14 @@ foreach(TESTCASE ${NONINTERACTIVE} ${NEEDS_AUDIO} ${NEEDS_DISPLAY}) PROPERTIES ENVIRONMENT "${TESTS_ENVIRONMENT}" ) endforeach() + +if(SDL_INSTALL_TESTS) + install( + TARGETS ${ALL_TESTS} + DESTINATION ${CMAKE_INSTALL_LIBEXECDIR}/installed-tests/SDL2 + ) + install( + FILES ${RESOURCE_FILES} + DESTINATION ${CMAKE_INSTALL_LIBEXECDIR}/installed-tests/SDL2 + ) +endif() diff --git a/test/Makefile.in b/test/Makefile.in index 8c11dbf88..d14e07358 100644 --- a/test/Makefile.in +++ b/test/Makefile.in @@ -2,6 +2,15 @@ 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 @@ -81,6 +90,12 @@ TARGETS = \ all: Makefile $(TARGETS) copydatafiles +installedtestsdir = $(libexecdir)/installed-tests/SDL2 + +install: all + install -D -t $(DESTDIR)$(installedtestsdir) $(TARGETS) + install -m644 -D -t $(DESTDIR)$(installedtestsdir) $(DATA) + Makefile: $(srcdir)/Makefile.in $(SHELL) config.status $@ diff --git a/test/configure.ac b/test/configure.ac index 694551c61..3d37b6abd 100644 --- a/test/configure.ac +++ b/test/configure.ac @@ -99,6 +99,15 @@ AC_SUBST(ISWINDOWS) AC_SUBST(ISUNIX) AC_SUBST(ISOS2) +AC_SUBST([prefix]) +AC_SUBST([exec_prefix]) +AC_SUBST([bindir]) +AC_SUBST([libdir]) +AC_SUBST([libexecdir]) +AC_SUBST([includedir]) +AC_SUBST([datarootdir]) +AC_SUBST([datadir]) + dnl Check for SDL SDL_VERSION=2.0.18 AM_PATH_SDL2($SDL_VERSION,