@@ -198,6 +198,22 @@ void tools::hlsl::Validator::ConstructJob(Compilation &C, const JobAction &JA,
198198 Exec, CmdArgs, Inputs, Input));
199199}
200200
201+ void tools::hlsl::MetalConverter::ConstructJob (
202+ Compilation &C, const JobAction &JA, const InputInfo &Output,
203+ const InputInfoList &Inputs, const ArgList &Args,
204+ const char *LinkingOutput) const {
205+ std::string MSCPath = getToolChain ().GetProgramPath (" metal-shaderconverter" );
206+ ArgStringList CmdArgs;
207+ const InputInfo &Input = Inputs[0 ];
208+ CmdArgs.push_back (Input.getFilename ());
209+ CmdArgs.push_back (" -o" );
210+ CmdArgs.push_back (Input.getFilename ());
211+
212+ const char *Exec = Args.MakeArgString (MSCPath);
213+ C.addCommand (std::make_unique<Command>(JA, *this , ResponseFileSupport::None (),
214+ Exec, CmdArgs, Inputs, Input));
215+ }
216+
201217// / DirectX Toolchain
202218HLSLToolChain::HLSLToolChain (const Driver &D, const llvm::Triple &Triple,
203219 const ArgList &Args)
@@ -214,6 +230,10 @@ Tool *clang::driver::toolchains::HLSLToolChain::getTool(
214230 if (!Validator)
215231 Validator.reset (new tools::hlsl::Validator (*this ));
216232 return Validator.get ();
233+ case Action::BinaryTranslatorJobClass:
234+ if (!MetalConverter)
235+ MetalConverter.reset (new tools::hlsl::MetalConverter (*this ));
236+ return MetalConverter.get ();
217237 default :
218238 return ToolChain::getTool (AC);
219239 }
0 commit comments