Skip to content

Commit 2664d36

Browse files
committed
1 parent 609b147 commit 2664d36

File tree

1 file changed

+51
-49
lines changed

1 file changed

+51
-49
lines changed

test/CMakeLists.txt

Lines changed: 51 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ define_property(TARGET PROPERTY SDL_NONINTERACTIVE_ARGUMENTS BRIEF_DOCS "Argumen
102102
define_property(TARGET PROPERTY SDL_NONINTERACTIVE_TIMEOUT BRIEF_DOCS "Timeout for noninteractive executable." FULL_DOCS "Timeout for noninteractive executable.")
103103

104104
macro(add_sdl_test_executable TARGET)
105-
cmake_parse_arguments(AST "BUILD_DEPENDENT;NONINTERACTIVE;NEEDS_RESOURCES;TESTUTILS;THREADS;NO_C90;MAIN_CALLBACKS;NOTRACKMEM" "" "DISABLE_THREADS_ARGS;NONINTERACTIVE_TIMEOUT;NONINTERACTIVE_ARGS;INSTALLED_ARGS;SOURCES" ${ARGN})
105+
cmake_parse_arguments(AST "BUILD_DEPENDENT;NONINTERACTIVE;NEEDS_RESOURCES;TESTUTILS;THREADS;NO_C90;MAIN_CALLBACKS;NOTRACKMEM" "" "DEPENDS;DISABLE_THREADS_ARGS;NONINTERACTIVE_TIMEOUT;NONINTERACTIVE_ARGS;INSTALLED_ARGS;SOURCES" ${ARGN})
106106
if(AST_UNPARSED_ARGUMENTS)
107107
message(FATAL_ERROR "Unknown argument(s): ${AST_UNPARSED_ARGUMENTS}")
108108
endif()
@@ -128,6 +128,7 @@ macro(add_sdl_test_executable TARGET)
128128
set_property(TARGET ${TARGET} PROPERTY C_STANDARD 90)
129129
set_property(TARGET ${TARGET} PROPERTY C_EXTENSIONS FALSE)
130130
endif()
131+
add_dependencies(${TARGET} ${AST_DEPENDS})
131132

132133
list(APPEND SDL_TEST_EXECUTABLES ${TARGET})
133134
set_property(TARGET ${TARGET} PROPERTY SDL_NOTRACKMEM ${AST_NOTRACKMEM})
@@ -208,6 +209,50 @@ if(HAVE_LIBUDEV_H)
208209
add_definitions(-DHAVE_LIBUDEV_H)
209210
endif()
210211

212+
function(files2headers OUTPUT)
213+
set(xxd "${SDL3_SOURCE_DIR}/cmake/xxd.py")
214+
set(inputs ${ARGN})
215+
set(outputs )
216+
foreach(input IN LISTS inputs)
217+
get_filename_component(file_we "${input}" NAME_WE)
218+
set(intermediate "${CMAKE_CURRENT_BINARY_DIR}/${file_we}.h")
219+
set(output "${CMAKE_CURRENT_SOURCE_DIR}/${file_we}.h")
220+
list(APPEND outputs "${output}")
221+
if(TARGET Python3::Interpreter AND NOT CMAKE_CROSSCOMPILING)
222+
list(APPEND outputs "${intermediate}")
223+
# Don't add the 'output' header to the output, to avoid marking them as GENERATED
224+
# (generated files are removed when running the CLEAN target)
225+
add_custom_command(OUTPUT "${intermediate}"
226+
COMMAND Python3::Interpreter "${xxd}" -i "${CMAKE_CURRENT_SOURCE_DIR}/${input}" "-o" "${intermediate}"
227+
COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${intermediate}" "${output}"
228+
DEPENDS "${xxd}" "${bmp}"
229+
)
230+
endif()
231+
endforeach()
232+
set(${OUTPUT} "${outputs}" PARENT_SCOPE)
233+
add_custom_target(generate-${OUTPUT} DEPENDS ${ARGN})
234+
endfunction()
235+
236+
files2headers(gamepad_image_headers
237+
gamepad_axis_arrow.bmp
238+
gamepad_axis.bmp
239+
gamepad_back.bmp
240+
gamepad_battery.bmp
241+
gamepad_battery_wired.bmp
242+
gamepad_button_background.bmp
243+
gamepad_button.bmp
244+
gamepad_button_small.bmp
245+
gamepad_face_abxy.bmp
246+
gamepad_face_bayx.bmp
247+
gamepad_face_sony.bmp
248+
gamepad_front.bmp
249+
gamepad_touchpad.bmp
250+
gamepad_wired.bmp
251+
gamepad_wireless.bmp
252+
)
253+
files2headers(icon_bmp_header icon.bmp)
254+
files2headers(glass_bmp_header glass.bmp)
255+
211256
set(FFmpeg_FIND_COMPONENTS AVCODEC AVFORMAT AVUTIL SWSCALE)
212257
include("${CMAKE_CURRENT_LIST_DIR}/../cmake/FindFFmpeg.cmake")
213258
if(FFmpeg_FOUND)
@@ -219,7 +264,7 @@ if(FFmpeg_FOUND)
219264
cmake_pop_check_state()
220265
endif()
221266
if(FFmpeg_FOUND AND LIBAVUTIL_AVFRAME_HAS_CH_LAYOUT)
222-
add_sdl_test_executable(testffmpeg NO_C90 SOURCES testffmpeg.c testffmpeg_vulkan.c ${icon_bmp_header})
267+
add_sdl_test_executable(testffmpeg NO_C90 SOURCES testffmpeg.c testffmpeg_vulkan.c ${icon_bmp_header} DEPENDS generate-icon_bmp_header)
223268
if(LIBAVUTIL_AVFULKANFRAMESCONTEXT_HAS_FORMAT)
224269
target_compile_definitions(testffmpeg PRIVATE FFMPEG_VULKAN_SUPPORT)
225270
endif()
@@ -290,54 +335,11 @@ elseif(HAVE_X11 OR HAVE_WAYLAND)
290335
endif ()
291336
endif()
292337

293-
function(files2headers OUTPUT)
294-
set(xxd "${SDL3_SOURCE_DIR}/cmake/xxd.py")
295-
set(inputs ${ARGN})
296-
set(outputs )
297-
foreach(input IN LISTS inputs)
298-
get_filename_component(file_we "${input}" NAME_WE)
299-
set(intermediate "${CMAKE_CURRENT_BINARY_DIR}/${file_we}.h")
300-
set(output "${CMAKE_CURRENT_SOURCE_DIR}/${file_we}.h")
301-
list(APPEND outputs "${output}")
302-
if(TARGET Python3::Interpreter AND NOT CMAKE_CROSSCOMPILING)
303-
list(APPEND outputs "${intermediate}")
304-
# Don't add the 'output' header to the output, to avoid marking them as GENERATED
305-
# (generated files are removed when running the CLEAN target)
306-
add_custom_command(OUTPUT "${intermediate}"
307-
COMMAND Python3::Interpreter "${xxd}" -i "${CMAKE_CURRENT_SOURCE_DIR}/${input}" "-o" "${intermediate}"
308-
COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${intermediate}" "${output}"
309-
DEPENDS "${xxd}" "${bmp}"
310-
)
311-
endif()
312-
endforeach()
313-
set(${OUTPUT} "${outputs}" PARENT_SCOPE)
314-
endfunction()
315-
316-
files2headers(gamepad_image_headers
317-
gamepad_axis_arrow.bmp
318-
gamepad_axis.bmp
319-
gamepad_back.bmp
320-
gamepad_battery.bmp
321-
gamepad_battery_wired.bmp
322-
gamepad_button_background.bmp
323-
gamepad_button.bmp
324-
gamepad_button_small.bmp
325-
gamepad_face_abxy.bmp
326-
gamepad_face_bayx.bmp
327-
gamepad_face_sony.bmp
328-
gamepad_front.bmp
329-
gamepad_touchpad.bmp
330-
gamepad_wired.bmp
331-
gamepad_wireless.bmp
332-
)
333-
files2headers(icon_bmp_header icon.bmp)
334-
files2headers(glass_bmp_header glass.bmp)
335-
336338
add_sdl_test_executable(testasyncio MAIN_CALLBACKS NEEDS_RESOURCES TESTUTILS SOURCES testasyncio.c)
337339
add_sdl_test_executable(testaudio MAIN_CALLBACKS NEEDS_RESOURCES TESTUTILS SOURCES testaudio.c)
338340
add_sdl_test_executable(testcolorspace SOURCES testcolorspace.c)
339341
add_sdl_test_executable(testfile NONINTERACTIVE SOURCES testfile.c)
340-
add_sdl_test_executable(testcontroller TESTUTILS SOURCES testcontroller.c gamepadutils.c ${gamepad_image_headers})
342+
add_sdl_test_executable(testcontroller TESTUTILS SOURCES testcontroller.c gamepadutils.c ${gamepad_image_headers} DEPENDS generate-gamepad_image_headers)
341343
add_sdl_test_executable(testgeometry TESTUTILS SOURCES testgeometry.c)
342344
add_sdl_test_executable(testgl SOURCES testgl.c)
343345
add_sdl_test_executable(testgles SOURCES testgles.c)
@@ -383,10 +385,10 @@ add_sdl_test_executable(testshader NEEDS_RESOURCES TESTUTILS SOURCES testshader.
383385
if(EMSCRIPTEN)
384386
target_link_options(testshader PRIVATE "-sLEGACY_GL_EMULATION")
385387
endif()
386-
add_sdl_test_executable(testshape NEEDS_RESOURCES SOURCES testshape.c ${glass_bmp_header})
388+
add_sdl_test_executable(testshape NEEDS_RESOURCES SOURCES testshape.c ${glass_bmp_header} DEPENDS generate-glass_bmp_header)
387389
add_sdl_test_executable(testsprite MAIN_CALLBACKS NEEDS_RESOURCES TESTUTILS SOURCES testsprite.c)
388-
add_sdl_test_executable(testspriteminimal SOURCES testspriteminimal.c ${icon_bmp_header})
389-
add_sdl_test_executable(testspritesurface SOURCES testspritesurface.c ${icon_bmp_header})
390+
add_sdl_test_executable(testspriteminimal SOURCES testspriteminimal.c ${icon_bmp_header} DEPENDS generate-icon_bmp_header)
391+
add_sdl_test_executable(testspritesurface SOURCES testspritesurface.c ${icon_bmp_header} DEPENDS generate-icon_bmp_header)
390392
add_sdl_test_executable(teststreaming NEEDS_RESOURCES TESTUTILS SOURCES teststreaming.c)
391393
add_sdl_test_executable(testtimer NONINTERACTIVE NONINTERACTIVE_ARGS --no-interactive NONINTERACTIVE_TIMEOUT 60 SOURCES testtimer.c)
392394
add_sdl_test_executable(testurl SOURCES testurl.c)

0 commit comments

Comments
 (0)