mirror of
https://github.com/ErnyTech/Open-USB-Extreme
synced 2025-01-15 13:07:33 +01:00
76 lines
3.0 KiB
CMake
76 lines
3.0 KiB
CMake
# Adding D unittests
|
|
#
|
|
# Copyright (c) 2010 Jens Mueller <jens.k.mueller@gmx.de>
|
|
#
|
|
# All rights reserved.
|
|
#
|
|
# See LICENSE for details.
|
|
#
|
|
|
|
macro(_add_unittests _TEST_TARGET _SOURCES _INCLUDE_DIRECTORIES _LINK_LIBRARIES)
|
|
set(_TEST_FLAGS "${CMAKE_D_FLAGS_DEBUG_INIT}")
|
|
separate_arguments(_TEST_FLAGS)
|
|
|
|
set(_TEST_MAIN "${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/unittest.d")
|
|
if(NOT EXISTS ${_TEST_MAIN})
|
|
file(WRITE ${_TEST_MAIN} "// Generated by UseDUnittest.cmake\nint main() { return 0; }")
|
|
endif()
|
|
|
|
#if(_INCLUDE_DIRECTORIES)
|
|
set(_TEST_INCLUDE_DIRECTORIES )
|
|
foreach(_INCLUDE_DIRECTORY ${_INCLUDE_DIRECTORIES})
|
|
if(_INCLUDE_DIRECTORY) # since commented out if doesn't work for some reason
|
|
list(APPEND _TEST_INCLUDE_DIRECTORIES "${CMAKE_INCLUDE_FLAG_D}${_INCLUDE_DIRECTORY}")
|
|
endif()
|
|
endforeach()
|
|
#endif()
|
|
|
|
#if(_LINK_LIBRARIES)
|
|
set(_TEST_LINK_LIBRARIES )
|
|
foreach(_LINK_LIBRARY ${_LINK_LIBRARIES})
|
|
if(_LINK_LIBRARY) # since commented out if doesn't work for some reason
|
|
list(APPEND _TEST_LINK_LIBRARIES "${CMAKE_LINK_LIBRARY_FLAG}${_LINK_LIBRARY}")
|
|
endif()
|
|
endforeach()
|
|
#endif()
|
|
|
|
set(_TEST_SOURCES )
|
|
foreach(_SOURCE ${_SOURCES})
|
|
list(APPEND _TEST_LINK_LIBRARIES "${CMAKE_CURRENT_SOURCE_DIR}/${_SOURCE}")
|
|
endforeach()
|
|
|
|
if(CMAKE_LIBRARY_OUTPUT_DIRECTORY)
|
|
set(_TEST_LIBRARY_PATH "${CMAKE_LIBRARY_PATH_FLAG}${CMAKE_LIBRARY_OUTPUT_DIRECTORY}")
|
|
endif()
|
|
|
|
add_test(NAME build_${_TEST_TARGET}
|
|
COMMAND ${CMAKE_D_COMPILER} ${_TEST_FLAGS} ${_TEST_INCLUDE_DIRECTORIES} ${_TEST_LIBRARY_PATH} ${_TEST_LINK_LIBRARIES} -of${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${_TEST_TARGET} ${_TEST_SOURCES} -unittest ${_TEST_MAIN})
|
|
|
|
add_test(NAME ${_TEST_TARGET}
|
|
COMMAND ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${_TEST_TARGET})
|
|
set_tests_properties(${_TEST_TARGET} PROPERTIES ENVIRONMENT "LD_LIBRARY_PATH=${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_LIBRARY_OUTPUT_DIRECTORY}")
|
|
endmacro()
|
|
|
|
macro(add_unittests_for_target _TARGET)
|
|
set(_TEST_TARGET "test_${_TARGET}")
|
|
|
|
get_target_property(_TARGET_TEST_SOURCES ${_TARGET} SOURCES)
|
|
if(_TARGET_TEST_SOURCES)
|
|
get_target_property(_TARGET_INCLUDE_DIRECTORIES ${_TARGET} INCLUDE_DIRECTORIES)
|
|
get_target_property(_TARGET_LINK_LIBRARIES ${_TARGET} LINK_LIBRARIES)
|
|
|
|
_add_unittests(${_TEST_TARGET} "${_TARGET_TEST_SOURCES}" "${_TARGET_INCLUDE_DIRECTORIES}" "${_TARGET_LINK_LIBRARIES}")
|
|
else()
|
|
message(SEND_ERROR "cannot add unittests for target ${TARGET }with no source files")
|
|
endif()
|
|
endmacro()
|
|
|
|
macro(add_unittests _SOURCE)
|
|
set(_TEST_TARGET "test_${_SOURCE}")
|
|
|
|
get_directory_property(_INCLUDE_DIRECTORIES INCLUDE_DIRECTORIES)
|
|
get_directory_property(_LINK_LIBRARIES LINK_LIBRARIES)
|
|
|
|
_add_unittests(${_TEST_TARGET} "${_SOURCE}" "${_INCLUDE_DIRECTORIES}" "${_LINK_LIBRARIES}")
|
|
endmacro()
|