RunCMakeTest.cmake 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. include(RunCMake)
  2. if(NOT "${MCR_ROOT}" STREQUAL "")
  3. if(NOT EXISTS "${MCR_ROOT}")
  4. message(FATAL_ERROR "MCR does not exist ${MCR_ROOT}")
  5. endif()
  6. set(RunCMake_TEST_OPTIONS "-Dmatlab_root=${MCR_ROOT}")
  7. endif()
  8. run_cmake(MatlabTest1)
  9. if(RunCMake_GENERATOR MATCHES "Make" AND UNIX)
  10. # Use a single build tree for a few tests without cleaning.
  11. set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/RerunFindMatlab-build-init)
  12. set(RunCMake_TEST_NO_CLEAN 1)
  13. file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}")
  14. file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}")
  15. message(STATUS "RerunFindMatlab: first configuration to extract real Matlab_ROOT_DIR")
  16. set(RunCMake_TEST_OPTIONS "-Dmatlab_required=REQUIRED")
  17. if(NOT "${MCR_ROOT}" STREQUAL "")
  18. set(RunCMake_TEST_OPTIONS ${RunCMake_TEST_OPTIONS} "-Dmatlab_root=${MCR_ROOT}")
  19. endif()
  20. run_cmake(MatlabTest2)
  21. message(STATUS "RerunFindMatlab: flushing the variables")
  22. execute_process(COMMAND
  23. ${CMAKE_COMMAND} -L ${RunCMake_TEST_BINARY_DIR}
  24. RESULT_VARIABLE _MatlabTest2_error
  25. OUTPUT_VARIABLE _MatlabTest2_output)
  26. if(NOT _MatlabTest2_error EQUAL 0)
  27. message(FATAL_ERROR "RerunFindMatlab: cannot list the variables ...")
  28. endif()
  29. string(REGEX MATCH "Matlab_ROOT_DIR.+=([^\r\n]+)" _matched ${_MatlabTest2_output})
  30. set(Matlab_ROOT_DIR_correct "${CMAKE_MATCH_1}")
  31. if(Matlab_ROOT_DIR_correct STREQUAL "")
  32. message(FATAL_ERROR "RerunFindMatlab: cannot extract Matlab_ROOT_DIR")
  33. endif()
  34. message(STATUS "RerunFindMatlab: detected correct Matlab_ROOT_DIR=${Matlab_ROOT_DIR_correct}")
  35. message(STATUS "RerunFindMatlab: change configuration, incorrect Matlab_ROOT_DIR setting")
  36. set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/RerunFindMatlab-build-second)
  37. set(RunCMake_TEST_NO_CLEAN 1)
  38. file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}")
  39. file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}")
  40. set(RunCMake_TEST_OPTIONS "-DMatlab_ROOT_DIR=/" "-Dmatlab_required=")
  41. run_cmake(MatlabTest2)
  42. message(STATUS "RerunFindMatlab: fixing configuration with correct Matlab_ROOT_DIR setting")
  43. set(RunCMake_TEST_OPTIONS "-DMatlab_ROOT_DIR=${Matlab_ROOT_DIR_correct}") # required this time?
  44. run_cmake(MatlabTest2)
  45. # no target on this test
  46. run_cmake_command(MatlabTest2 ${CMAKE_COMMAND} --build .)
  47. unset(RunCMake_TEST_BINARY_DIR)
  48. unset(RunCMake_TEST_NO_CLEAN)
  49. endif()