You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

67 lines
3.3 KiB

  1. # Initialize ######################################################################################
  2. Include ( cotire OPTIONAL RESULT_VARIABLE HAS_COTIRE )
  3. Include ( pedantic OPTIONAL RESULT_VARIABLE HAS_PEDANTIC )
  4. Include ( cmake_tests OPTIONAL RESULT_VARIABLE HAS_CMAKE_TESTS )
  5. Find_Package ( Sanitizers QUIET )
  6. Find_Package ( Sanitizers QUIET )
  7. # Test ############################################################################################
  8. Find_Package ( GTest )
  9. If ( NOT "${GTest_FOUND}" )
  10. Return ( )
  11. EndIf ( )
  12. File ( GLOB_RECURSE CPPMP_TEST_HEADER_FILES
  13. ${CMAKE_CURRENT_SOURCE_DIR}/*.h )
  14. File ( GLOB_RECURSE CPPMP_TEST_INLINE_FILES
  15. ${CMAKE_CURRENT_SOURCE_DIR}/*.inl )
  16. File ( GLOB_RECURSE CPPMP_TEST_SOURCE_FILES
  17. RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}
  18. ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp )
  19. ForEach ( FILE IN LISTS CPPMP_TEST_SOURCE_FILES )
  20. # add test
  21. Get_Filename_Component ( TEST_DIR ${FILE} DIRECTORY )
  22. Get_Filename_Component ( TEST_NAME ${FILE} NAME_WE )
  23. Set ( TEST_NAME "${TEST_DIR}/${TEST_NAME}" )
  24. String ( REPLACE "\\" "-" TEST_NAME "${TEST_NAME}" )
  25. String ( REPLACE "/" "-" TEST_NAME "${TEST_NAME}" )
  26. String ( REPLACE "_" "-" TEST_NAME "${TEST_NAME}" )
  27. Set ( TEST_NAME "test-${TEST_NAME}" )
  28. Add_Executable ( ${TEST_NAME}
  29. EXCLUDE_FROM_ALL
  30. ${CPPMP_TEST_HEADER_FILES}
  31. ${CPPMP_TEST_INLINE_FILES}
  32. ${FILE} )
  33. Target_Link_Libraries ( ${TEST_NAME}
  34. PUBLIC
  35. cppmp
  36. GTest::Main )
  37. # Sanitizers
  38. If ( Sanitizers_FOUND )
  39. Add_Sanitizers ( ${TEST_NAME} )
  40. EndIf ( )
  41. # Sanitizers
  42. If ( Sanitizers_FOUND )
  43. Add_Sanitizers ( ${TEST_NAME} )
  44. EndIf ( )
  45. # pedantic
  46. If ( HAS_PEDANTIC )
  47. Pedantic_Apply_Flags_Target ( ${TEST_NAME} ALL )
  48. EndIf ( )
  49. # test
  50. If ( HAS_CMAKE_TESTS )
  51. Add_CMake_Test ( NAME ${TEST_NAME} TARGET ${TEST_NAME} GROUP cppmp )
  52. Else ( )
  53. Add_Test ( NAME ${TEST_NAME} COMMAND ${TEST_NAME} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} )
  54. EndIf ( )
  55. EndForEach ( )