16d528ed9Sopenharmony_citoolchain("rust") {
26d528ed9Sopenharmony_ci  tool("rust_bin") {
36d528ed9Sopenharmony_ci    depfile = "{{target_out_dir}}/{{crate_name}}.d"
46d528ed9Sopenharmony_ci    outfile = "{{target_out_dir}}/{{crate_name}}"
56d528ed9Sopenharmony_ci    command = "rustc --crate-name {{crate_name}} {{source}} --crate-type {{crate_type}} --emit=dep-info=$depfile,link -Z dep-info-omit-d-target {{rustflags}} -o $outfile {{rustdeps}} {{externs}}"
66d528ed9Sopenharmony_ci    description = "RUST $outfile"
76d528ed9Sopenharmony_ci    outputs = [ outfile ]
86d528ed9Sopenharmony_ci  }
96d528ed9Sopenharmony_ci
106d528ed9Sopenharmony_ci  tool("rust_staticlib") {
116d528ed9Sopenharmony_ci    depfile = "{{target_out_dir}}/{{crate_name}}.d"
126d528ed9Sopenharmony_ci    outfile = "{{target_out_dir}}/{{crate_name}}.a"
136d528ed9Sopenharmony_ci    command = "rustc --crate-name {{crate_name}} {{source}} --crate-type {{crate_type}} --emit=dep-info=$depfile,link -Z dep-info-omit-d-target {{rustflags}} -o $outfile {{rustdeps}} {{externs}}"
146d528ed9Sopenharmony_ci    description = "RUST $outfile"
156d528ed9Sopenharmony_ci    outputs = [ outfile ]
166d528ed9Sopenharmony_ci  }
176d528ed9Sopenharmony_ci
186d528ed9Sopenharmony_ci  tool("rust_rlib") {
196d528ed9Sopenharmony_ci    depfile = "{{target_out_dir}}/{{crate_name}}.d"
206d528ed9Sopenharmony_ci    outfile = "{{target_out_dir}}/lib{{crate_name}}.rlib"
216d528ed9Sopenharmony_ci    command = "rustc --crate-name {{crate_name}} {{source}} --crate-type {{crate_type}} --emit=dep-info=$depfile,link -Z dep-info-omit-d-target {{rustflags}} -o $outfile {{rustdeps}} {{externs}}"
226d528ed9Sopenharmony_ci    description = "RUST $outfile"
236d528ed9Sopenharmony_ci    outputs = [ outfile ]
246d528ed9Sopenharmony_ci  }
256d528ed9Sopenharmony_ci
266d528ed9Sopenharmony_ci  tool("rust_cdylib") {
276d528ed9Sopenharmony_ci    depfile = "{{target_out_dir}}/{{crate_name}}.d"
286d528ed9Sopenharmony_ci    outfile = "{{target_out_dir}}/lib{{crate_name}}.so"
296d528ed9Sopenharmony_ci    command = "rustc --crate-name {{crate_name}} {{source}} --crate-type {{crate_type}} --emit=dep-info=$depfile,link -Z dep-info-omit-d-target {{rustflags}} -o $outfile {{rustdeps}} {{externs}}"
306d528ed9Sopenharmony_ci    description = "RUST $outfile"
316d528ed9Sopenharmony_ci    outputs = [ outfile ]
326d528ed9Sopenharmony_ci  }
336d528ed9Sopenharmony_ci
346d528ed9Sopenharmony_ci  tool("stamp") {
356d528ed9Sopenharmony_ci    command = "touch {{output}}"
366d528ed9Sopenharmony_ci    description = "STAMP {{output}}"
376d528ed9Sopenharmony_ci  }
386d528ed9Sopenharmony_ci
396d528ed9Sopenharmony_ci  tool("copy") {
406d528ed9Sopenharmony_ci    command = "cp -af {{source}} {{output}}"
416d528ed9Sopenharmony_ci    description = "COPY {{source}} {{output}}"
426d528ed9Sopenharmony_ci  }
436d528ed9Sopenharmony_ci}
446d528ed9Sopenharmony_ci
456d528ed9Sopenharmony_ciconfig("rust_defaults") {
466d528ed9Sopenharmony_ci  rustflags = [ "-Cdebuginfo=2" ]
476d528ed9Sopenharmony_ci}
48