# Generate adhoc tests.
#
# This is boilerplate code for generating a set of executables, one per
# .cpp file in a "tests/adhoc" subdirectory. These are for "loose" test
# cases, not suitable as regression tests but perhaps useful to the
# developer or as demos. Unlike the similar boilerplate code in the "tests"
# directory, this does not generate CMake ADD_TEST commands so these
# will never run automatically.
#
# For IDEs that can deal with PROJECT_LABEL properties (at least
# Visual Studio) the projects for building each of these adhoc
# executables will be labeled "Adhoc - TheTestName" if a file
# TheTestName.cpp is found in this directory.
#
# We check the BUILD_TESTS_AND_EXAMPLES_{SHARED,STATIC} variables to determine
# whether to build dynamically linked, statically linked, or both
# versions of the executable.


FILE(GLOB ADHOC_TESTS "*.cpp")
FOREACH(TEST_PROG ${ADHOC_TESTS})
    GET_FILENAME_COMPONENT(TEST_ROOT ${TEST_PROG} NAME_WE)

    IF (BUILD_TESTS_AND_EXAMPLES_SHARED)
        # Link with shared library
        ADD_EXECUTABLE(${TEST_ROOT} ${TEST_PROG})
    IF(GUI_NAME)
        ADD_DEPENDENCIES(${TEST_ROOT} ${GUI_NAME})
    ENDIF()
        SET_TARGET_PROPERTIES(${TEST_ROOT}
        PROPERTIES
          PROJECT_LABEL "Test_Adhoc - ${TEST_ROOT}")
        TARGET_LINK_LIBRARIES(${TEST_ROOT} 
                      ${TEST_SHARED_TARGET})
    ENDIF (BUILD_TESTS_AND_EXAMPLES_SHARED)

    IF (BUILD_STATIC_LIBRARIES AND BUILD_TESTS_AND_EXAMPLES_STATIC)
        # Link with static library
        SET(TEST_STATIC ${TEST_ROOT}Static)
        ADD_EXECUTABLE(${TEST_STATIC} ${TEST_PROG})
    IF(GUI_NAME)
        ADD_DEPENDENCIES(${TEST_STATIC} ${GUI_NAME})
    ENDIF()
        SET_TARGET_PROPERTIES(${TEST_STATIC}
        PROPERTIES
        COMPILE_FLAGS "-DSimTK_USE_STATIC_LIBRARIES"
        PROJECT_LABEL "Test_Adhoc - ${TEST_STATIC}")
        TARGET_LINK_LIBRARIES(${TEST_STATIC}
                      ${TEST_STATIC_TARGET})
    ENDIF()

ENDFOREACH(TEST_PROG ${ADHOC_TESTS})

FILE(GLOB ADHOC_OBJS "*.obj" "*.vtp")
FOREACH(TEST_OBJ ${ADHOC_OBJS})
    GET_FILENAME_COMPONENT(OBJ_ROOT ${TEST_OBJ} NAME)
    CONFIGURE_FILE(${TEST_OBJ} 
            ${CMAKE_CURRENT_BINARY_DIR}/${OBJ_ROOT} COPYONLY)
ENDFOREACH(TEST_OBJ ${ADHOC_OBJS})
