Fix benchmark.sh for the new cmake world.

It relied on reading gamedesc.txt to find a list of puzzle binaries to
run. But gamedesc.txt is now specific to the Windows build (since it
contains Windows executable names), and isn't available in the Unix
cmake build directory.

Fixed by making a simpler gamelist.txt available on all platforms.
This commit is contained in:
Simon Tatham
2021-09-06 10:57:40 +01:00
parent c108271b44
commit 6691ad180c
3 changed files with 19 additions and 3 deletions

View File

@ -275,4 +275,4 @@ cliprogram(penrose-vector-test penrose.c COMPILE_DEFINITIONS TEST_VECTORS)
cliprogram(sort-test sort.c COMPILE_DEFINITIONS SORT_TEST)
cliprogram(tree234-test tree234.c COMPILE_DEFINITIONS TEST)
build_platform_extras()
build_extras()

View File

@ -2,11 +2,15 @@
# Run every puzzle in benchmarking mode, and generate a file of raw
# data that benchmark.pl will format into a web page.
#
# Expects to be run in the cmake build directory, where it can find
# both the game binaries themselves and the file gamelist.txt that
# lists them.
# If any arguments are provided, use those as the list of games to
# benchmark. Otherwise, read the full list from gamedesc.txt.
# benchmark. Otherwise, read the full list from gamelist.txt.
if test $# = 0; then
set -- $(cut -f1 -d: < gamedesc.txt)
set -- $(cat gamelist.txt)
fi
failures=false

View File

@ -160,3 +160,15 @@ macro(export_variables_to_parent_scope)
set(objective_${name} ${objective_${name}} PARENT_SCOPE)
endforeach()
endmacro()
macro(build_extras)
# Write out a list of the game names, for benchmark.sh to use.
file(WRITE ${CMAKE_BINARY_DIR}/gamelist.txt "")
list(SORT puzzle_names)
foreach(name ${puzzle_names})
file(APPEND ${CMAKE_BINARY_DIR}/gamelist.txt "${name}\n")
endforeach()
# Further extra stuff specific to particular platforms.
build_platform_extras()
endmacro()