mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-08-21 13:39:09 +00:00
.github
bin
cmake
scripts
AddCustomXXXTimestamp.cmake
CheckAtomic.cmake
CompileFlags.cmake
CreateGrfCommand.cmake
CreateRegression.cmake
Endian.cmake
FindAllegro.cmake
FindEditbin.cmake
FindFluidsynth.cmake
FindFontconfig.cmake
FindGrfcodec.cmake
FindICU.cmake
FindIconv.cmake
FindLZO.cmake
FindPandoc.cmake
FindSSE.cmake
FindXaudio2.cmake
InstallAndPackage.cmake
LinkPackage.cmake
MSVCFilters.cmake
Options.cmake
PackageBundle.cmake
PackageDeb.cmake
PackageNSIS.cmake
PackageRPM.cmake
SourceList.cmake
Static.cmake
docs
media
os
regression
src
.dorpsgek.yml
.editorconfig
.gitignore
CMakeLists.txt
COMPILING.md
CONTRIBUTING.md
COPYING.md
CPackProperties.cmake.in
CREDITS.md
Doxyfile.in
README.md
changelog.txt
known-bugs.txt
87 lines
3.9 KiB
CMake
87 lines
3.9 KiB
CMake
# Macro which contains all bits and pieces to create the regression tests.
|
|
# This creates both a standalone target 'regression', and it integrates with
|
|
# 'ctest'. The first is prefered, as it is more verbose, and takes care of
|
|
# dependencies correctly.
|
|
#
|
|
# create_regression()
|
|
#
|
|
macro(create_regression)
|
|
# Find all the files in the regression folder; they need to be copied to the
|
|
# build folder before we can run the regression
|
|
file(GLOB_RECURSE REGRESSION_SOURCE_FILES ${CMAKE_SOURCE_DIR}/regression/*)
|
|
foreach(REGRESSION_SOURCE_FILE IN LISTS REGRESSION_SOURCE_FILES)
|
|
string(REPLACE "${CMAKE_SOURCE_DIR}/regression/" "" REGRESSION_SOURCE_FILE_NAME "${REGRESSION_SOURCE_FILE}")
|
|
string(CONCAT REGRESSION_BINARY_FILE "${CMAKE_BINARY_DIR}/ai/" "${REGRESSION_SOURCE_FILE_NAME}")
|
|
|
|
if("${REGRESSION_SOURCE_FILE_NAME}" STREQUAL "regression.cfg")
|
|
continue()
|
|
endif()
|
|
|
|
add_custom_command(OUTPUT ${REGRESSION_BINARY_FILE}
|
|
COMMAND ${CMAKE_COMMAND} -E copy
|
|
${REGRESSION_SOURCE_FILE}
|
|
${REGRESSION_BINARY_FILE}
|
|
MAIN_DEPENDENCY ${REGRESSION_SOURCE_FILE}
|
|
COMMENT "Copying ${REGRESSION_SOURCE_FILE_NAME} regression file"
|
|
)
|
|
|
|
list(APPEND REGRESSION_BINARY_FILES ${REGRESSION_BINARY_FILE})
|
|
endforeach()
|
|
|
|
# Copy the regression configuration in a special folder, so all autogenerated
|
|
# folders end up in the same place after running regression.
|
|
add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/regression/regression.cfg
|
|
COMMAND ${CMAKE_COMMAND} -E copy
|
|
${CMAKE_SOURCE_DIR}/regression/regression.cfg
|
|
${CMAKE_BINARY_DIR}/regression/regression.cfg
|
|
MAIN_DEPENDENCY ${CMAKE_SOURCE_DIR}/regression/regression.cfg
|
|
COMMENT "Copying ${REGRESSION_SOURCE_FILE_NAME} regression file"
|
|
)
|
|
list(APPEND REGRESSION_BINARY_FILES ${CMAKE_BINARY_DIR}/regression/regression.cfg)
|
|
|
|
# Create a new target which copies all regression files
|
|
add_custom_target(regression_files
|
|
ALL # this is needed because 'make test' doesn't resolve dependencies, and otherwise this is never executed
|
|
DEPENDS
|
|
${REGRESSION_BINARY_FILES}
|
|
)
|
|
|
|
enable_testing()
|
|
|
|
# Find all the tests we have, and create a target for them
|
|
file(GLOB REGRESSION_TESTS ${CMAKE_SOURCE_DIR}/regression/*)
|
|
foreach(REGRESSION_TEST IN LISTS REGRESSION_TESTS)
|
|
get_filename_component(REGRESSION_TEST_NAME "${REGRESSION_TEST}" NAME)
|
|
|
|
if("${REGRESSION_TEST_NAME}" STREQUAL "regression.cfg")
|
|
continue()
|
|
endif()
|
|
|
|
add_custom_target(regression_${REGRESSION_TEST_NAME}
|
|
COMMAND ${CMAKE_COMMAND}
|
|
-DOPENTTD_EXECUTABLE=$<TARGET_FILE:openttd>
|
|
-DEDITBIN_EXECUTABLE=${EDITBIN_EXECUTABLE}
|
|
-DREGRESSION_TEST=${REGRESSION_TEST_NAME}
|
|
-P "${CMAKE_SOURCE_DIR}/cmake/scripts/Regression.cmake"
|
|
DEPENDS openttd regression_files
|
|
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
|
COMMENT "Running regression test ${REGRESSION_TEST_NAME}"
|
|
)
|
|
|
|
# Also make sure that 'make test' runs the regression
|
|
add_test(NAME regression_${REGRESSION_TEST_NAME}
|
|
COMMAND ${CMAKE_COMMAND}
|
|
-DOPENTTD_EXECUTABLE=$<TARGET_FILE:openttd>
|
|
-DEDITBIN_EXECUTABLE=${EDITBIN_EXECUTABLE}
|
|
-DREGRESSION_TEST=${REGRESSION_TEST_NAME}
|
|
-P "${CMAKE_SOURCE_DIR}/cmake/scripts/Regression.cmake"
|
|
WORKING_DIRECTORY ${CMAKE_BINARY_DIR})
|
|
|
|
list(APPEND REGRESSION_TARGETS regression_${REGRESSION_TEST_NAME})
|
|
endforeach()
|
|
|
|
# Create a new target which runs the regression
|
|
add_custom_target(regression
|
|
DEPENDS ${REGRESSION_TARGETS})
|
|
endmacro()
|