kwsysPlatformTests.cmake 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. SET(KWSYS_PLATFORM_TEST_FILE_C kwsysPlatformTestsC.cxx)
  2. SET(KWSYS_PLATFORM_TEST_FILE_CXX kwsysPlatformTestsCXX.cxx)
  3. MACRO(KWSYS_PLATFORM_TEST lang var description invert)
  4. IF("${var}_COMPILED" MATCHES "^${var}_COMPILED$")
  5. MESSAGE(STATUS "${description}")
  6. TRY_COMPILE(${var}_COMPILED
  7. ${CMAKE_CURRENT_BINARY_DIR}
  8. ${CMAKE_CURRENT_SOURCE_DIR}/${KWSYS_PLATFORM_TEST_FILE_${lang}}
  9. COMPILE_DEFINITIONS -DTEST_${var} ${KWSYS_PLATFORM_TEST_DEFINES} ${KWSYS_PLATFORM_TEST_EXTRA_FLAGS}
  10. OUTPUT_VARIABLE OUTPUT)
  11. IF(${var}_COMPILED)
  12. FILE(APPEND
  13. ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
  14. "${description} compiled with the following output:\n${OUTPUT}\n\n")
  15. ELSE(${var}_COMPILED)
  16. FILE(APPEND
  17. ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
  18. "${description} failed to compile with the following output:\n${OUTPUT}\n\n")
  19. ENDIF(${var}_COMPILED)
  20. IF(${invert} MATCHES INVERT)
  21. IF(${var}_COMPILED)
  22. MESSAGE(STATUS "${description} - no")
  23. ELSE(${var}_COMPILED)
  24. MESSAGE(STATUS "${description} - yes")
  25. ENDIF(${var}_COMPILED)
  26. ELSE(${invert} MATCHES INVERT)
  27. IF(${var}_COMPILED)
  28. MESSAGE(STATUS "${description} - yes")
  29. ELSE(${var}_COMPILED)
  30. MESSAGE(STATUS "${description} - no")
  31. ENDIF(${var}_COMPILED)
  32. ENDIF(${invert} MATCHES INVERT)
  33. ENDIF("${var}_COMPILED" MATCHES "^${var}_COMPILED$")
  34. IF(${invert} MATCHES INVERT)
  35. IF(${var}_COMPILED)
  36. SET(${var} 0)
  37. ELSE(${var}_COMPILED)
  38. SET(${var} 1)
  39. ENDIF(${var}_COMPILED)
  40. ELSE(${invert} MATCHES INVERT)
  41. IF(${var}_COMPILED)
  42. SET(${var} 1)
  43. ELSE(${var}_COMPILED)
  44. SET(${var} 0)
  45. ENDIF(${var}_COMPILED)
  46. ENDIF(${invert} MATCHES INVERT)
  47. ENDMACRO(KWSYS_PLATFORM_TEST)
  48. MACRO(KWSYS_PLATFORM_TEST_RUN lang var description invert)
  49. IF("${var}" MATCHES "^${var}$")
  50. MESSAGE(STATUS "${description}")
  51. TRY_RUN(${var} ${var}_COMPILED
  52. ${CMAKE_CURRENT_BINARY_DIR}
  53. ${CMAKE_CURRENT_SOURCE_DIR}/${KWSYS_PLATFORM_TEST_FILE_${lang}}
  54. COMPILE_DEFINITIONS -DTEST_${var} ${KWSYS_PLATFORM_TEST_DEFINES} ${KWSYS_PLATFORM_TEST_EXTRA_FLAGS}
  55. OUTPUT_VARIABLE OUTPUT)
  56. # Note that ${var} will be a 0 return value on success.
  57. IF(${var}_COMPILED)
  58. IF(${var})
  59. FILE(APPEND
  60. ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
  61. "${description} compiled but failed to run with the following output:\n${OUTPUT}\n\n")
  62. ELSE(${var})
  63. FILE(APPEND
  64. ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
  65. "${description} compiled and ran with the following output:\n${OUTPUT}\n\n")
  66. ENDIF(${var})
  67. ELSE(${var}_COMPILED)
  68. FILE(APPEND
  69. ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
  70. "${description} failed to compile with the following output:\n${OUTPUT}\n\n")
  71. SET(${var} -1 CACHE INTERNAL "${description} failed to compile.")
  72. ENDIF(${var}_COMPILED)
  73. IF(${invert} MATCHES INVERT)
  74. IF(${var}_COMPILED)
  75. IF(${var})
  76. MESSAGE(STATUS "${description} - yes")
  77. ELSE(${var})
  78. MESSAGE(STATUS "${description} - no")
  79. ENDIF(${var})
  80. ELSE(${var}_COMPILED)
  81. MESSAGE(STATUS "${description} - failed to compile")
  82. ENDIF(${var}_COMPILED)
  83. ELSE(${invert} MATCHES INVERT)
  84. IF(${var}_COMPILED)
  85. IF(${var})
  86. MESSAGE(STATUS "${description} - no")
  87. ELSE(${var})
  88. MESSAGE(STATUS "${description} - yes")
  89. ENDIF(${var})
  90. ELSE(${var}_COMPILED)
  91. MESSAGE(STATUS "${description} - failed to compile")
  92. ENDIF(${var}_COMPILED)
  93. ENDIF(${invert} MATCHES INVERT)
  94. ENDIF("${var}" MATCHES "^${var}$")
  95. IF(${invert} MATCHES INVERT)
  96. IF(${var}_COMPILED)
  97. IF(${var})
  98. SET(${var} 1)
  99. ELSE(${var})
  100. SET(${var} 0)
  101. ENDIF(${var})
  102. ELSE(${var}_COMPILED)
  103. SET(${var} 1)
  104. ENDIF(${var}_COMPILED)
  105. ELSE(${invert} MATCHES INVERT)
  106. IF(${var}_COMPILED)
  107. IF(${var})
  108. SET(${var} 0)
  109. ELSE(${var})
  110. SET(${var} 1)
  111. ENDIF(${var})
  112. ELSE(${var}_COMPILED)
  113. SET(${var} 0)
  114. ENDIF(${var}_COMPILED)
  115. ENDIF(${invert} MATCHES INVERT)
  116. ENDMACRO(KWSYS_PLATFORM_TEST_RUN)
  117. MACRO(KWSYS_PLATFORM_C_TEST var description invert)
  118. SET(KWSYS_PLATFORM_TEST_DEFINES ${KWSYS_PLATFORM_C_TEST_DEFINES})
  119. SET(KWSYS_PLATFORM_TEST_EXTRA_FLAGS ${KWSYS_PLATFORM_C_TEST_EXTRA_FLAGS})
  120. KWSYS_PLATFORM_TEST(C "${var}" "${description}" "${invert}")
  121. SET(KWSYS_PLATFORM_TEST_DEFINES)
  122. SET(KWSYS_PLATFORM_TEST_EXTRA_FLAGS)
  123. ENDMACRO(KWSYS_PLATFORM_C_TEST)
  124. MACRO(KWSYS_PLATFORM_C_TEST_RUN var description invert)
  125. SET(KWSYS_PLATFORM_TEST_DEFINES ${KWSYS_PLATFORM_C_TEST_DEFINES})
  126. SET(KWSYS_PLATFORM_TEST_EXTRA_FLAGS ${KWSYS_PLATFORM_C_TEST_EXTRA_FLAGS})
  127. KWSYS_PLATFORM_TEST_RUN(C "${var}" "${description}" "${invert}")
  128. SET(KWSYS_PLATFORM_TEST_DEFINES)
  129. SET(KWSYS_PLATFORM_TEST_EXTRA_FLAGS)
  130. ENDMACRO(KWSYS_PLATFORM_C_TEST_RUN)
  131. MACRO(KWSYS_PLATFORM_CXX_TEST var description invert)
  132. SET(KWSYS_PLATFORM_TEST_DEFINES ${KWSYS_PLATFORM_CXX_TEST_DEFINES})
  133. SET(KWSYS_PLATFORM_TEST_EXTRA_FLAGS ${KWSYS_PLATFORM_CXX_TEST_EXTRA_FLAGS})
  134. KWSYS_PLATFORM_TEST(CXX "${var}" "${description}" "${invert}")
  135. SET(KWSYS_PLATFORM_TEST_DEFINES)
  136. SET(KWSYS_PLATFORM_TEST_EXTRA_FLAGS)
  137. ENDMACRO(KWSYS_PLATFORM_CXX_TEST)
  138. MACRO(KWSYS_PLATFORM_CXX_TEST_RUN var description invert)
  139. SET(KWSYS_PLATFORM_TEST_DEFINES ${KWSYS_PLATFORM_CXX_TEST_DEFINES})
  140. SET(KWSYS_PLATFORM_TEST_EXTRA_FLAGS ${KWSYS_PLATFORM_CXX_TEST_EXTRA_FLAGS})
  141. KWSYS_PLATFORM_TEST_RUN(CXX "${var}" "${description}" "${invert}")
  142. SET(KWSYS_PLATFORM_TEST_DEFINES)
  143. SET(KWSYS_PLATFORM_TEST_EXTRA_FLAGS)
  144. ENDMACRO(KWSYS_PLATFORM_CXX_TEST_RUN)