blob: c8bd9607d76232e43420f098e3139787ca913b2b [file]
function (_cmake_cxx_find_modules_json)
if (NOT CMAKE_CXX_STANDARD_LIBRARY STREQUAL "libstdc++")
set(CMAKE_CXX_COMPILER_IMPORT_STD_ERROR_MESSAGE "Only `libstdc++` is supported" PARENT_SCOPE)
return ()
endif ()
if (NOT CMAKE_CXX_STDLIB_MODULES_JSON)
execute_process(
COMMAND
"${CMAKE_CXX_COMPILER}"
${CMAKE_CXX_COMPILER_ID_ARG1}
-print-file-name=libstdc++.modules.json
OUTPUT_VARIABLE _gnu_libstdcxx_modules_json_file
ERROR_VARIABLE _gnu_libstdcxx_modules_json_file_err
RESULT_VARIABLE _gnu_libstdcxx_modules_json_file_res
OUTPUT_STRIP_TRAILING_WHITESPACE
ERROR_STRIP_TRAILING_WHITESPACE)
if (_gnu_libstdcxx_modules_json_file_res)
set(CMAKE_CXX_COMPILER_IMPORT_STD_ERROR_MESSAGE "Could not find `libstdc++.modules.json` resource" PARENT_SCOPE)
return ()
endif ()
set(CMAKE_CXX_STDLIB_MODULES_JSON "${_gnu_libstdcxx_modules_json_file}" PARENT_SCOPE)
endif ()
endfunction ()