rule clang_x86_alink
  command = rm -f ${out} && "../../third_party/llvm-build/Release+Asserts/bin/llvm-ar" ${arflags} -r -c -D ${out} @"${out}.rsp"
  description = AR ${out}
  rspfile = ${out}.rsp
  rspfile_content = ${in}
rule clang_x86_asm
  command = ../../third_party/llvm-build/Release+Asserts/bin/clang -MMD -MF ${out}.d ${defines} ${include_dirs} ${asmflags} -c ${in} -o ${out}
  description = ASM ${out}
  depfile = ${out}.d
  deps = gcc
rule clang_x86_cc
  command =  ../../third_party/llvm-build/Release+Asserts/bin/clang -MMD -MF ${target_out_dir}/${label_name}/${source_name_part}.o.d ${defines} ${include_dirs} ${cflags} ${cflags_c} -fmodule-name="${cc_module_name}_Private" -c ${in} -o ${target_out_dir}/${label_name}/${source_name_part}.o
  description = CC ${out}
  depfile = ${target_out_dir}/${label_name}/${source_name_part}.o.d
  deps = gcc
rule clang_x86_copy
  command = ln -f ${in} ${out} 2>/dev/null || (rm -rf ${out}.tmp && cp -af ${in} ${out}.tmp && mv -f ${out}.tmp ${out})
  description = COPY ${in} ${out}
rule clang_x86_cxx
  command =  ../../third_party/llvm-build/Release+Asserts/bin/clang++ -MMD -MF ${target_out_dir}/${label_name}/${source_name_part}.o.d ${defines} ${include_dirs} ${cflags} ${cflags_cc} ${module_deps} -fmodule-name="${cc_module_name}_Private" -c ${in} -o ${target_out_dir}/${label_name}/${source_name_part}.o
  description = CXX ${out}
  depfile = ${target_out_dir}/${label_name}/${source_name_part}.o.d
  deps = gcc
rule clang_x86_cxx_module
  command =  ../../third_party/llvm-build/Release+Asserts/bin/clang++ -MD -MF ${out}.d ${defines} ${include_dirs} ${cflags} ${cflags_cc} ${module_deps_no_self} -fmodule-name="${cc_module_name}" -x c++ -Xclang -emit-module -c ${in} -o ${out}
  description = CXX_MODULE ${out}
  depfile = ${out}.d
  deps = gcc
rule clang_x86_link
  command = "../../third_party/cpython3/host/bin/python3" "../../build/toolchain/gcc_link_wrapper.py" --output="${output_dir}/${target_output_name}${output_extension}" --map-file "${output_dir}/${target_output_name}${output_extension}.map.gz" -- ../../third_party/llvm-build/Release+Asserts/bin/clang++ ${ldflags} -o "${output_dir}/${target_output_name}${output_extension}" -Wl,--start-group @"${output_dir}/${target_output_name}${output_extension}.rsp" -Wl,--end-group  ${solibs} ${libs} -Wl,--start-group ${rlibs} -Wl,--end-group 
  description = LINK ${output_dir}/${target_output_name}${output_extension}
  rspfile = ${output_dir}/${target_output_name}${output_extension}.rsp
  rspfile_content = ${in}
  pool = build_toolchain_link_pool
rule clang_x86_rust_bin
  command = "../../third_party/cpython3/host/bin/python3" "../../build/rust/gni_impl/rustc_wrapper.py" --dump-rustc-env-and-flags=${target_out_dir}/${label_name}.rustflags.json --rsp=${target_out_dir}/${label_name}.rsp --rustc=../../third_party/rust-toolchain/bin/rustc --depfile=${output_dir}/${target_output_name}${output_extension}.d --emit=dep-info=${output_dir}/${target_output_name}${output_extension}.d,link -o ${output_dir}/${target_output_name}${output_extension} -- -Clinker="../../third_party/llvm-build/Release+Asserts/bin/clang++" ${in} LDFLAGS ${ldflags}  RUSTENV ${rustenv}
  description = RUST(BIN) ${out}
  rspfile = ${target_out_dir}/${label_name}.rsp
  rspfile_content = --crate-name ${crate_name} --crate-type ${crate_type} ${rustflags} ${rustdeps} ${externs} SOURCES ${sources}
  depfile = ${output_dir}/${target_output_name}${output_extension}.d
  deps = gcc
  pool = build_toolchain_link_pool
build phony/clang_x86_rust_bin_inputs: phony ../../build/action_helpers.py ../../build/gn_helpers.py ../../build/rust/gni_impl/rustc_wrapper.py ../../third_party/rust-toolchain/bin/rustc
rule clang_x86_rust_cdylib
  command = "../../third_party/cpython3/host/bin/python3" "../../build/rust/gni_impl/rustc_wrapper.py" --dump-rustc-env-and-flags=${target_out_dir}/${label_name}.rustflags.json --rsp=${target_out_dir}/${label_name}.rsp --rustc=../../third_party/rust-toolchain/bin/rustc --depfile=${output_dir}/${target_output_name}${output_extension}.d --emit=dep-info=${output_dir}/${target_output_name}${output_extension}.d,link -o ${output_dir}/${target_output_name}${output_extension} -- -Clinker="../../third_party/llvm-build/Release+Asserts/bin/clang++" ${in} LDFLAGS ${ldflags}  RUSTENV ${rustenv}
  description = RUST(CDYLIB) ${out}
  rspfile = ${target_out_dir}/${label_name}.rsp
  rspfile_content = --crate-name ${crate_name} --crate-type ${crate_type} ${rustflags} ${rustdeps} ${externs} SOURCES ${sources}
  depfile = ${output_dir}/${target_output_name}${output_extension}.d
  deps = gcc
  pool = build_toolchain_link_pool
build phony/clang_x86_rust_cdylib_inputs: phony ../../build/action_helpers.py ../../build/gn_helpers.py ../../build/rust/gni_impl/rustc_wrapper.py ../../third_party/rust-toolchain/bin/rustc
rule clang_x86_rust_dylib
  command = "../../third_party/cpython3/host/bin/python3" "../../build/rust/gni_impl/rustc_wrapper.py" --dump-rustc-env-and-flags=${target_out_dir}/${label_name}.rustflags.json --rsp=${target_out_dir}/${label_name}.rsp --rustc=../../third_party/rust-toolchain/bin/rustc --depfile=${output_dir}/${target_output_name}${output_extension}.d --emit=dep-info=${output_dir}/${target_output_name}${output_extension}.d,link,metadata=${output_dir}/lib${target_output_name}.rmeta -o ${output_dir}/${target_output_name}${output_extension} -- -Clinker="../../third_party/llvm-build/Release+Asserts/bin/clang++" ${in} LDFLAGS ${ldflags}  RUSTENV ${rustenv}
  description = RUST(DYLIB) ${out}
  rspfile = ${target_out_dir}/${label_name}.rsp
  rspfile_content = --crate-name ${crate_name} --crate-type ${crate_type} ${rustflags} ${rustdeps} ${externs} SOURCES ${sources}
  depfile = ${output_dir}/${target_output_name}${output_extension}.d
  deps = gcc
  pool = build_toolchain_link_pool
build phony/clang_x86_rust_dylib_inputs: phony ../../build/action_helpers.py ../../build/gn_helpers.py ../../build/rust/gni_impl/rustc_wrapper.py ../../third_party/rust-toolchain/bin/rustc
rule clang_x86_rust_macro
  command = "../../third_party/cpython3/host/bin/python3" "../../build/rust/gni_impl/rustc_wrapper.py" --dump-rustc-env-and-flags=${target_out_dir}/${label_name}.rustflags.json --rsp=${target_out_dir}/${label_name}.rsp --rustc=../../third_party/rust-toolchain/bin/rustc --depfile=${output_dir}/${target_output_name}${output_extension}.d --emit=dep-info=${output_dir}/${target_output_name}${output_extension}.d,link -o ${output_dir}/${target_output_name}${output_extension} -- -Clinker="../../third_party/llvm-build/Release+Asserts/bin/clang++" ${in} LDFLAGS ${ldflags}  RUSTENV ${rustenv}
  description = RUST(MACRO) ${out}
  rspfile = ${target_out_dir}/${label_name}.rsp
  rspfile_content = --crate-name ${crate_name} --crate-type ${crate_type} ${rustflags} ${rustdeps} ${externs} SOURCES ${sources}
  depfile = ${output_dir}/${target_output_name}${output_extension}.d
  deps = gcc
  pool = build_toolchain_link_pool
build phony/clang_x86_rust_macro_inputs: phony ../../build/action_helpers.py ../../build/gn_helpers.py ../../build/rust/gni_impl/rustc_wrapper.py ../../third_party/rust-toolchain/bin/rustc
rule clang_x86_rust_rlib
  command = "../../third_party/cpython3/host/bin/python3" "../../build/rust/gni_impl/rustc_wrapper.py" --dump-rustc-env-and-flags=${target_out_dir}/${label_name}.rustflags.json --rsp=${target_out_dir}/${label_name}.rsp --rustc=../../third_party/rust-toolchain/bin/rustc --depfile=${output_dir}/lib${target_output_name}${output_extension}.d --emit=dep-info=${output_dir}/lib${target_output_name}${output_extension}.d,link,metadata=${output_dir}/lib${target_output_name}.rmeta -o ${output_dir}/lib${target_output_name}${output_extension} -- -Clinker="../../third_party/llvm-build/Release+Asserts/bin/clang++" ${in} LDFLAGS RUSTENV ${rustenv}
  description = RUST ${out}
  rspfile = ${target_out_dir}/${label_name}.rsp
  rspfile_content = --crate-name ${crate_name} --crate-type ${crate_type} ${rustflags} ${rustdeps} ${externs} SOURCES ${sources}
  depfile = ${output_dir}/lib${target_output_name}${output_extension}.d
  deps = gcc
build phony/clang_x86_rust_rlib_inputs: phony ../../build/action_helpers.py ../../build/gn_helpers.py ../../build/rust/gni_impl/rustc_wrapper.py ../../third_party/rust-toolchain/bin/rustc
rule clang_x86_rust_staticlib
  command = "../../third_party/cpython3/host/bin/python3" "../../build/rust/gni_impl/rustc_wrapper.py" --dump-rustc-env-and-flags=${target_out_dir}/${label_name}.rustflags.json --rsp=${target_out_dir}/${label_name}.rsp --rustc=../../third_party/rust-toolchain/bin/rustc --depfile=${output_dir}/${target_output_name}${output_extension}.d --emit=dep-info=${output_dir}/${target_output_name}${output_extension}.d,link -o ${output_dir}/${target_output_name}${output_extension} -- -Clinker="../../third_party/llvm-build/Release+Asserts/bin/clang++" ${in} LDFLAGS RUSTENV ${rustenv}
  description = RUST(STATICLIB) ${out}
  rspfile = ${target_out_dir}/${label_name}.rsp
  rspfile_content = --crate-name ${crate_name} --crate-type ${crate_type} ${rustflags} ${rustdeps} ${externs} SOURCES ${sources}
  depfile = ${output_dir}/${target_output_name}${output_extension}.d
  deps = gcc
build phony/clang_x86_rust_staticlib_inputs: phony ../../build/action_helpers.py ../../build/gn_helpers.py ../../build/rust/gni_impl/rustc_wrapper.py ../../third_party/rust-toolchain/bin/rustc
rule clang_x86_solink
  command = "../../third_party/cpython3/host/bin/python3" "../../build/toolchain/gcc_solink_wrapper.py" --readelf="../../third_party/llvm-build/Release+Asserts/bin/llvm-readelf" --nm="../../third_party/llvm-build/Release+Asserts/bin/llvm-nm"  --tocfile="${output_dir}/${target_output_name}${output_extension}.TOC" --map-file "${output_dir}/${target_output_name}${output_extension}.map.gz" --output="${output_dir}/${target_output_name}${output_extension}" -- ../../third_party/llvm-build/Release+Asserts/bin/clang++ -shared -Wl,-soname="${target_output_name}${output_extension}" ${ldflags} -o "${output_dir}/${target_output_name}${output_extension}" @"${output_dir}/${target_output_name}${output_extension}.rsp" ${rlibs} 
  description = SOLINK ${output_dir}/${target_output_name}${output_extension}
  rspfile = ${output_dir}/${target_output_name}${output_extension}.rsp
  rspfile_content = -Wl,--whole-archive ${in} ${solibs} -Wl,--no-whole-archive ${libs}
  pool = build_toolchain_link_pool
  restat = 1
rule clang_x86_solink_module
  command = "../../third_party/cpython3/host/bin/python3" "../../build/toolchain/gcc_link_wrapper.py" --output="${output_dir}/${target_output_name}${output_extension}" --map-file "${output_dir}/${target_output_name}${output_extension}.map.gz" -- ../../third_party/llvm-build/Release+Asserts/bin/clang++ -shared -Wl,-soname="${target_output_name}${output_extension}" ${ldflags} -o "${output_dir}/${target_output_name}${output_extension}" @"${output_dir}/${target_output_name}${output_extension}.rsp" ${rlibs}
  description = SOLINK_MODULE ${output_dir}/${target_output_name}${output_extension}
  rspfile = ${output_dir}/${target_output_name}${output_extension}.rsp
  rspfile_content = -Wl,--whole-archive ${in} ${solibs} -Wl,--no-whole-archive ${libs} ${rlibs}
  pool = build_toolchain_link_pool
rule clang_x86_stamp
  command = touch ${out}
  description = STAMP ${out}

