| # If testing with a specific CMAKE_CXX_COMPILER_ARG1 value is requested, skip |
| # any checks that try to actually compile anything, because the compiler |
| # probably wouldn't understand these arguments or lack thereof. |
| if(DEFINED TOOLCHAINSV1_COMPILERARGS) |
| if(TOOLCHAINSV1_COMPILERARGS EQUAL 1) |
| set(CMAKE_CXX_COMPILER_ARG1 "") |
| elseif(TOOLCHAINSV1_COMPILERARGS EQUAL 2) |
| set(CMAKE_CXX_COMPILER_ARG1 "--hello world --something=other") |
| endif() |
| set(CMAKE_CXX_COMPILER_WORKS 1) |
| set(CMAKE_CXX_ABI_COMPILED 1) |
| else() |
| set(TOOLCHAINSV1_COMPILERARGS 0) |
| endif() |
| |
| enable_language(CXX) |
| |
| set(variable_suffixes |
| COMPILER COMPILER_ARG1 COMPILER_ID COMPILER_VERSION COMPILER_TARGET |
| IMPLICIT_INCLUDE_DIRECTORIES IMPLICIT_LINK_DIRECTORIES |
| IMPLICIT_LINK_FRAMEWORK_DIRECTORIES IMPLICIT_LINK_LIBRARIES |
| SOURCE_FILE_EXTENSIONS) |
| set(language CXX) |
| set(json "{}") |
| |
| foreach(variable_suffix ${variable_suffixes}) |
| set(variable "CMAKE_${language}_${variable_suffix}") |
| string(JSON json SET "${json}" "${variable}" "{}") |
| if(DEFINED "${variable}") |
| string(JSON json SET "${json}" "${variable}" "defined" "true") |
| string(JSON json SET "${json}" "${variable}" "value" "\"${${variable}}\"") |
| else() |
| string(JSON json SET "${json}" "${variable}" "defined" "false") |
| endif() |
| endforeach() |
| string(JSON json SET "${json}" "TOOLCHAINSV1_COMPILERARGS" "${TOOLCHAINSV1_COMPILERARGS}") |
| |
| file(WRITE ${CMAKE_BINARY_DIR}/toolchain_variables.json "${json}") |
| |
| if(FAIL) |
| message(FATAL_ERROR "Intentionally fail to configure") |
| endif() |