ProcessorCountTest.cmake 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. include(ProcessorCount)
  2. ProcessorCount(processor_count)
  3. message("### 1. This line should be the first line of text in the test output.")
  4. message("### 2. If there was output from this test before line #1, then the")
  5. message("### 3. ProcessorCount(...) function call is emitting output that it shouldn't...")
  6. message("processor_count='${processor_count}'")
  7. execute_process(
  8. COMMAND "${KWSYS_TEST_EXE}"
  9. testSystemInformation
  10. OUTPUT_VARIABLE tsi_out
  11. ERROR_VARIABLE tsi_err
  12. RESULT_VARIABLE tsi_res
  13. )
  14. if (tsi_res)
  15. message("executing \"${KWSYS_TEST_EXE}\" failed")
  16. message(FATAL_ERROR "output: ${tsi_res}")
  17. endif ()
  18. string(REGEX REPLACE "(.*)GetNumberOfPhysicalCPU:.([0-9]*)(.*)" "\\2"
  19. system_info_processor_count "${tsi_out}")
  20. message("system_info_processor_count='${system_info_processor_count}'")
  21. if(system_info_processor_count EQUAL processor_count)
  22. message("processor count matches system information")
  23. endif()
  24. message("")
  25. message("CTEST_FULL_OUTPUT (Avoid ctest truncation of output)")
  26. message("")
  27. message("tsi_out='${tsi_out}'")
  28. message("tsi_err='${tsi_err}'")
  29. message("")
  30. # Evaluate possible error conditions:
  31. #
  32. set(err 0)
  33. set(fatal 0)
  34. if(processor_count EQUAL 0)
  35. set(err 1)
  36. set(fatal 1)
  37. message("err 1")
  38. message("could not determine number of processors
  39. - Additional code for this platform needed in ProcessorCount.cmake?")
  40. message("")
  41. endif()
  42. if(NOT system_info_processor_count EQUAL processor_count)
  43. set(err 2)
  44. message("err 2")
  45. message("SystemInformation and ProcessorCount.cmake disagree:\n"
  46. "processor_count='${processor_count}'\n"
  47. "SystemInformation processor_count='${system_info_processor_count}'")
  48. message("")
  49. endif()
  50. if(NOT processor_count MATCHES "^[0-9]+$")
  51. set(err 3)
  52. set(fatal 1)
  53. message("err 3")
  54. message("ProcessorCount function returned a non-integer")
  55. message("")
  56. endif()
  57. if(NOT system_info_processor_count MATCHES "^[0-9]+$")
  58. set(err 4)
  59. message("err 4")
  60. message("SystemInformation ProcessorCount function returned a non-integer")
  61. message("")
  62. endif()
  63. if(fatal)
  64. message(FATAL_ERROR "processor_count='${processor_count}' - see previous test output for more details - it is likely more/different code is needed in ProcessorCount.cmake to fix this test failure - processor_count should be a non-zero positive integer (>=1) for all supported CMake platforms")
  65. endif()