kwsysPlatformTests.cmake 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. #=============================================================================
  2. # KWSys - Kitware System Library
  3. # Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
  4. #
  5. # Distributed under the OSI-approved BSD License (the "License");
  6. # see accompanying file Copyright.txt for details.
  7. #
  8. # This software is distributed WITHOUT ANY WARRANTY; without even the
  9. # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  10. # See the License for more information.
  11. #=============================================================================
  12. SET(KWSYS_PLATFORM_TEST_FILE_C kwsysPlatformTestsC.c)
  13. SET(KWSYS_PLATFORM_TEST_FILE_CXX kwsysPlatformTestsCXX.cxx)
  14. MACRO(KWSYS_PLATFORM_TEST lang var description invert)
  15. IF("${var}_COMPILED" MATCHES "^${var}_COMPILED$")
  16. MESSAGE(STATUS "${description}")
  17. TRY_COMPILE(${var}_COMPILED
  18. ${CMAKE_CURRENT_BINARY_DIR}
  19. ${CMAKE_CURRENT_SOURCE_DIR}/${KWSYS_PLATFORM_TEST_FILE_${lang}}
  20. COMPILE_DEFINITIONS -DTEST_${var} ${KWSYS_PLATFORM_TEST_DEFINES} ${KWSYS_PLATFORM_TEST_EXTRA_FLAGS}
  21. OUTPUT_VARIABLE OUTPUT)
  22. IF(${var}_COMPILED)
  23. FILE(APPEND
  24. ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
  25. "${description} compiled with the following output:\n${OUTPUT}\n\n")
  26. ELSE(${var}_COMPILED)
  27. FILE(APPEND
  28. ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
  29. "${description} failed to compile with the following output:\n${OUTPUT}\n\n")
  30. ENDIF(${var}_COMPILED)
  31. IF(${invert} MATCHES INVERT)
  32. IF(${var}_COMPILED)
  33. MESSAGE(STATUS "${description} - no")
  34. ELSE(${var}_COMPILED)
  35. MESSAGE(STATUS "${description} - yes")
  36. ENDIF(${var}_COMPILED)
  37. ELSE(${invert} MATCHES INVERT)
  38. IF(${var}_COMPILED)
  39. MESSAGE(STATUS "${description} - yes")
  40. ELSE(${var}_COMPILED)
  41. MESSAGE(STATUS "${description} - no")
  42. ENDIF(${var}_COMPILED)
  43. ENDIF(${invert} MATCHES INVERT)
  44. ENDIF("${var}_COMPILED" MATCHES "^${var}_COMPILED$")
  45. IF(${invert} MATCHES INVERT)
  46. IF(${var}_COMPILED)
  47. SET(${var} 0)
  48. ELSE(${var}_COMPILED)
  49. SET(${var} 1)
  50. ENDIF(${var}_COMPILED)
  51. ELSE(${invert} MATCHES INVERT)
  52. IF(${var}_COMPILED)
  53. SET(${var} 1)
  54. ELSE(${var}_COMPILED)
  55. SET(${var} 0)
  56. ENDIF(${var}_COMPILED)
  57. ENDIF(${invert} MATCHES INVERT)
  58. ENDMACRO(KWSYS_PLATFORM_TEST)
  59. MACRO(KWSYS_PLATFORM_TEST_RUN lang var description invert)
  60. IF("${var}" MATCHES "^${var}$")
  61. MESSAGE(STATUS "${description}")
  62. TRY_RUN(${var} ${var}_COMPILED
  63. ${CMAKE_CURRENT_BINARY_DIR}
  64. ${CMAKE_CURRENT_SOURCE_DIR}/${KWSYS_PLATFORM_TEST_FILE_${lang}}
  65. COMPILE_DEFINITIONS -DTEST_${var} ${KWSYS_PLATFORM_TEST_DEFINES} ${KWSYS_PLATFORM_TEST_EXTRA_FLAGS}
  66. OUTPUT_VARIABLE OUTPUT)
  67. # Note that ${var} will be a 0 return value on success.
  68. IF(${var}_COMPILED)
  69. IF(${var})
  70. FILE(APPEND
  71. ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
  72. "${description} compiled but failed to run with the following output:\n${OUTPUT}\n\n")
  73. ELSE(${var})
  74. FILE(APPEND
  75. ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
  76. "${description} compiled and ran with the following output:\n${OUTPUT}\n\n")
  77. ENDIF(${var})
  78. ELSE(${var}_COMPILED)
  79. FILE(APPEND
  80. ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
  81. "${description} failed to compile with the following output:\n${OUTPUT}\n\n")
  82. SET(${var} -1 CACHE INTERNAL "${description} failed to compile.")
  83. ENDIF(${var}_COMPILED)
  84. IF(${invert} MATCHES INVERT)
  85. IF(${var}_COMPILED)
  86. IF(${var})
  87. MESSAGE(STATUS "${description} - yes")
  88. ELSE(${var})
  89. MESSAGE(STATUS "${description} - no")
  90. ENDIF(${var})
  91. ELSE(${var}_COMPILED)
  92. MESSAGE(STATUS "${description} - failed to compile")
  93. ENDIF(${var}_COMPILED)
  94. ELSE(${invert} MATCHES INVERT)
  95. IF(${var}_COMPILED)
  96. IF(${var})
  97. MESSAGE(STATUS "${description} - no")
  98. ELSE(${var})
  99. MESSAGE(STATUS "${description} - yes")
  100. ENDIF(${var})
  101. ELSE(${var}_COMPILED)
  102. MESSAGE(STATUS "${description} - failed to compile")
  103. ENDIF(${var}_COMPILED)
  104. ENDIF(${invert} MATCHES INVERT)
  105. ENDIF("${var}" MATCHES "^${var}$")
  106. IF(${invert} MATCHES INVERT)
  107. IF(${var}_COMPILED)
  108. IF(${var})
  109. SET(${var} 1)
  110. ELSE(${var})
  111. SET(${var} 0)
  112. ENDIF(${var})
  113. ELSE(${var}_COMPILED)
  114. SET(${var} 1)
  115. ENDIF(${var}_COMPILED)
  116. ELSE(${invert} MATCHES INVERT)
  117. IF(${var}_COMPILED)
  118. IF(${var})
  119. SET(${var} 0)
  120. ELSE(${var})
  121. SET(${var} 1)
  122. ENDIF(${var})
  123. ELSE(${var}_COMPILED)
  124. SET(${var} 0)
  125. ENDIF(${var}_COMPILED)
  126. ENDIF(${invert} MATCHES INVERT)
  127. ENDMACRO(KWSYS_PLATFORM_TEST_RUN)
  128. MACRO(KWSYS_PLATFORM_C_TEST var description invert)
  129. SET(KWSYS_PLATFORM_TEST_DEFINES ${KWSYS_PLATFORM_C_TEST_DEFINES})
  130. SET(KWSYS_PLATFORM_TEST_EXTRA_FLAGS ${KWSYS_PLATFORM_C_TEST_EXTRA_FLAGS})
  131. KWSYS_PLATFORM_TEST(C "${var}" "${description}" "${invert}")
  132. SET(KWSYS_PLATFORM_TEST_DEFINES)
  133. SET(KWSYS_PLATFORM_TEST_EXTRA_FLAGS)
  134. ENDMACRO(KWSYS_PLATFORM_C_TEST)
  135. MACRO(KWSYS_PLATFORM_C_TEST_RUN var description invert)
  136. SET(KWSYS_PLATFORM_TEST_DEFINES ${KWSYS_PLATFORM_C_TEST_DEFINES})
  137. SET(KWSYS_PLATFORM_TEST_EXTRA_FLAGS ${KWSYS_PLATFORM_C_TEST_EXTRA_FLAGS})
  138. KWSYS_PLATFORM_TEST_RUN(C "${var}" "${description}" "${invert}")
  139. SET(KWSYS_PLATFORM_TEST_DEFINES)
  140. SET(KWSYS_PLATFORM_TEST_EXTRA_FLAGS)
  141. ENDMACRO(KWSYS_PLATFORM_C_TEST_RUN)
  142. MACRO(KWSYS_PLATFORM_CXX_TEST var description invert)
  143. SET(KWSYS_PLATFORM_TEST_DEFINES ${KWSYS_PLATFORM_CXX_TEST_DEFINES})
  144. SET(KWSYS_PLATFORM_TEST_EXTRA_FLAGS ${KWSYS_PLATFORM_CXX_TEST_EXTRA_FLAGS})
  145. KWSYS_PLATFORM_TEST(CXX "${var}" "${description}" "${invert}")
  146. SET(KWSYS_PLATFORM_TEST_DEFINES)
  147. SET(KWSYS_PLATFORM_TEST_EXTRA_FLAGS)
  148. ENDMACRO(KWSYS_PLATFORM_CXX_TEST)
  149. MACRO(KWSYS_PLATFORM_CXX_TEST_RUN var description invert)
  150. SET(KWSYS_PLATFORM_TEST_DEFINES ${KWSYS_PLATFORM_CXX_TEST_DEFINES})
  151. SET(KWSYS_PLATFORM_TEST_EXTRA_FLAGS ${KWSYS_PLATFORM_CXX_TEST_EXTRA_FLAGS})
  152. KWSYS_PLATFORM_TEST_RUN(CXX "${var}" "${description}" "${invert}")
  153. SET(KWSYS_PLATFORM_TEST_DEFINES)
  154. SET(KWSYS_PLATFORM_TEST_EXTRA_FLAGS)
  155. ENDMACRO(KWSYS_PLATFORM_CXX_TEST_RUN)