49 lines
2.1 KiB
CMake
49 lines
2.1 KiB
CMake
|
|
# The sidescroller tutorial game.
|
||
|
|
#
|
||
|
|
# A real target, built by default, so docs/19-tutorial-sidescroller.md cannot
|
||
|
|
# quote a program that does not compile -- and registered as a headless smoke
|
||
|
|
# test, so it cannot quote one that does not run.
|
||
|
|
|
||
|
|
get_filename_component(SS_ASSET_DIR
|
||
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/../../docs/tutorials/assets/sidescroller" ABSOLUTE)
|
||
|
|
|
||
|
|
add_executable(sidescroller
|
||
|
|
main.c
|
||
|
|
collision.c
|
||
|
|
player.c
|
||
|
|
actors.c
|
||
|
|
)
|
||
|
|
|
||
|
|
target_include_directories(sidescroller PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}")
|
||
|
|
target_compile_options(sidescroller PRIVATE ${AKGL_WARNING_FLAGS})
|
||
|
|
|
||
|
|
# Baked in rather than looked up at runtime, so the smoke test can be launched
|
||
|
|
# from any working directory. `--assets DIR` overrides it for a reader who has
|
||
|
|
# moved the art somewhere else.
|
||
|
|
target_compile_definitions(sidescroller PRIVATE "SS_ASSET_DIR=\"${SS_ASSET_DIR}\"")
|
||
|
|
|
||
|
|
target_link_libraries(sidescroller
|
||
|
|
PRIVATE akstdlib::akstdlib akerror::akerror akgl SDL3::SDL3 SDL3_ttf::SDL3_ttf
|
||
|
|
SDL3_image::SDL3_image SDL3_mixer::SDL3_mixer jansson::jansson -lm)
|
||
|
|
|
||
|
|
# A vendored build leaves the SDL satellite libraries in per-project
|
||
|
|
# subdirectories that are not on the loader's default search path, which is the
|
||
|
|
# same problem AKGL_VENDORED_RPATH solves for the test executables.
|
||
|
|
if(AKGL_VENDORED_DEPENDENCIES)
|
||
|
|
set_target_properties(sidescroller PROPERTIES BUILD_RPATH "${AKGL_VENDORED_RPATH}")
|
||
|
|
endif()
|
||
|
|
|
||
|
|
# Four seconds of scripted play under the headless drivers: the level loads, the
|
||
|
|
# player walks and jumps, the swept collision runs against real terrain, and the
|
||
|
|
# program tears down and exits 0. A tutorial that stops working fails here rather
|
||
|
|
# than in front of a reader.
|
||
|
|
#
|
||
|
|
# add_test() rather than _add_test(): the root CMakeLists.txt shadows it only
|
||
|
|
# while this project is top-level, and by the time examples/ is added the
|
||
|
|
# suppression has already been lifted. An embedded build gets the builtin.
|
||
|
|
add_test(NAME example_sidescroller COMMAND sidescroller --frames 240 --autoplay)
|
||
|
|
set_tests_properties(example_sidescroller PROPERTIES
|
||
|
|
TIMEOUT 120
|
||
|
|
ENVIRONMENT "SDL_VIDEODRIVER=dummy;SDL_RENDER_DRIVER=software;SDL_AUDIODRIVER=dummy"
|
||
|
|
)
|