Files @ r25079:09d645764ffe
Branch filter:

Location: cpp/openttd-patchpack/source/cmake/CreateRegression.cmake

Patric Stout
Change: rename setting "max_heightlevel" to "map_height_limit"

This better reflects what it is, and hopefully removes a bit of
the confusion people are having what this setting actually does.

Additionally, update the text on the setting to better inform
users what it is doing exactly, so they can make an educated
decision on how to change it.

Next commit will introduce an "auto" value, which should be the
new default. The rename has as added benefit that everyone will
start out on the "auto" value.
# 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()