handle use of an unconfigured compiler (#41213)
This commit is contained in:
parent
125085c580
commit
2d5ccd3068
2 changed files with 19 additions and 1 deletions
|
@ -324,19 +324,29 @@ def set_compiler_environment_variables(pkg, env):
|
||||||
# ttyout, ttyerr, etc.
|
# ttyout, ttyerr, etc.
|
||||||
link_dir = spack.paths.build_env_path
|
link_dir = spack.paths.build_env_path
|
||||||
|
|
||||||
# Set SPACK compiler variables so that our wrapper knows what to call
|
# Set SPACK compiler variables so that our wrapper knows what to
|
||||||
|
# call. If there is no compiler configured then use a default
|
||||||
|
# wrapper which will emit an error if it is used.
|
||||||
if compiler.cc:
|
if compiler.cc:
|
||||||
env.set("SPACK_CC", compiler.cc)
|
env.set("SPACK_CC", compiler.cc)
|
||||||
env.set("CC", os.path.join(link_dir, compiler.link_paths["cc"]))
|
env.set("CC", os.path.join(link_dir, compiler.link_paths["cc"]))
|
||||||
|
else:
|
||||||
|
env.set("CC", os.path.join(link_dir, "cc"))
|
||||||
if compiler.cxx:
|
if compiler.cxx:
|
||||||
env.set("SPACK_CXX", compiler.cxx)
|
env.set("SPACK_CXX", compiler.cxx)
|
||||||
env.set("CXX", os.path.join(link_dir, compiler.link_paths["cxx"]))
|
env.set("CXX", os.path.join(link_dir, compiler.link_paths["cxx"]))
|
||||||
|
else:
|
||||||
|
env.set("CC", os.path.join(link_dir, "c++"))
|
||||||
if compiler.f77:
|
if compiler.f77:
|
||||||
env.set("SPACK_F77", compiler.f77)
|
env.set("SPACK_F77", compiler.f77)
|
||||||
env.set("F77", os.path.join(link_dir, compiler.link_paths["f77"]))
|
env.set("F77", os.path.join(link_dir, compiler.link_paths["f77"]))
|
||||||
|
else:
|
||||||
|
env.set("F77", os.path.join(link_dir, "f77"))
|
||||||
if compiler.fc:
|
if compiler.fc:
|
||||||
env.set("SPACK_FC", compiler.fc)
|
env.set("SPACK_FC", compiler.fc)
|
||||||
env.set("FC", os.path.join(link_dir, compiler.link_paths["fc"]))
|
env.set("FC", os.path.join(link_dir, compiler.link_paths["fc"]))
|
||||||
|
else:
|
||||||
|
env.set("FC", os.path.join(link_dir, "fc"))
|
||||||
|
|
||||||
# Set SPACK compiler rpath flags so that our wrapper knows what to use
|
# Set SPACK compiler rpath flags so that our wrapper knows what to use
|
||||||
env.set("SPACK_CC_RPATH_ARG", compiler.cc_rpath_arg)
|
env.set("SPACK_CC_RPATH_ARG", compiler.cc_rpath_arg)
|
||||||
|
|
|
@ -154,6 +154,14 @@ def add_compilers_to_config(compilers, scope=None, init_config=True):
|
||||||
"""
|
"""
|
||||||
compiler_config = get_compiler_config(scope, init_config)
|
compiler_config = get_compiler_config(scope, init_config)
|
||||||
for compiler in compilers:
|
for compiler in compilers:
|
||||||
|
if not compiler.cc:
|
||||||
|
tty.debug(f"{compiler.spec} does not have a C compiler")
|
||||||
|
if not compiler.cxx:
|
||||||
|
tty.debug(f"{compiler.spec} does not have a C++ compiler")
|
||||||
|
if not compiler.f77:
|
||||||
|
tty.debug(f"{compiler.spec} does not have a Fortran77 compiler")
|
||||||
|
if not compiler.fc:
|
||||||
|
tty.debug(f"{compiler.spec} does not have a Fortran compiler")
|
||||||
compiler_config.append(_to_dict(compiler))
|
compiler_config.append(_to_dict(compiler))
|
||||||
spack.config.set("compilers", compiler_config, scope=scope)
|
spack.config.set("compilers", compiler_config, scope=scope)
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue