toolchains-v1.cmake 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. # If testing with a specific CMAKE_CXX_COMPILER_ARG1 value is requested, skip
  2. # any checks that try to actually compile anything, because the compiler
  3. # probably wouldn't understand these arguments or lack thereof.
  4. if(DEFINED TOOLCHAINSV1_COMPILERARGS)
  5. if(TOOLCHAINSV1_COMPILERARGS EQUAL 1)
  6. set(CMAKE_CXX_COMPILER_ARG1 "")
  7. elseif(TOOLCHAINSV1_COMPILERARGS EQUAL 2)
  8. set(CMAKE_CXX_COMPILER_ARG1 "--hello world --something=other")
  9. endif()
  10. set(CMAKE_CXX_COMPILER_WORKS 1)
  11. set(CMAKE_CXX_ABI_COMPILED 1)
  12. else()
  13. set(TOOLCHAINSV1_COMPILERARGS 0)
  14. endif()
  15. enable_language(CXX)
  16. set(variable_suffixes
  17. COMPILER COMPILER_ARG1 COMPILER_ID COMPILER_VERSION COMPILER_TARGET
  18. IMPLICIT_INCLUDE_DIRECTORIES IMPLICIT_LINK_DIRECTORIES
  19. IMPLICIT_LINK_FRAMEWORK_DIRECTORIES IMPLICIT_LINK_LIBRARIES
  20. SOURCE_FILE_EXTENSIONS)
  21. set(language CXX)
  22. set(json "{}")
  23. foreach(variable_suffix ${variable_suffixes})
  24. set(variable "CMAKE_${language}_${variable_suffix}")
  25. string(JSON json SET "${json}" "${variable}" "{}")
  26. if(DEFINED "${variable}")
  27. string(JSON json SET "${json}" "${variable}" "defined" "true")
  28. string(JSON json SET "${json}" "${variable}" "value" "\"${${variable}}\"")
  29. else()
  30. string(JSON json SET "${json}" "${variable}" "defined" "false")
  31. endif()
  32. endforeach()
  33. string(JSON json SET "${json}" "TOOLCHAINSV1_COMPILERARGS" "${TOOLCHAINSV1_COMPILERARGS}")
  34. file(WRITE ${CMAKE_BINARY_DIR}/toolchain_variables.json "${json}")
  35. if(FAIL)
  36. message(FATAL_ERROR "Intentionally fail to configure")
  37. endif()