16d528ed9Sopenharmony_ci# Copyright 2019 The Chromium Authors. All rights reserved.
26d528ed9Sopenharmony_ci# Use of this source code is governed by a BSD-style license that can be
36d528ed9Sopenharmony_ci# found in the LICENSE file.
46d528ed9Sopenharmony_ci
56d528ed9Sopenharmony_citemplate("mac_toolchain") {
66d528ed9Sopenharmony_ci  toolchain(target_name) {
76d528ed9Sopenharmony_ci    assert(defined(invoker.toolchain_args),
86d528ed9Sopenharmony_ci           "Toolchains must declare toolchain_args")
96d528ed9Sopenharmony_ci
106d528ed9Sopenharmony_ci    toolchain_args = {
116d528ed9Sopenharmony_ci      forward_variables_from(invoker.toolchain_args, "*")
126d528ed9Sopenharmony_ci    }
136d528ed9Sopenharmony_ci
146d528ed9Sopenharmony_ci    cc = "clang"
156d528ed9Sopenharmony_ci    cxx = "clang++"
166d528ed9Sopenharmony_ci
176d528ed9Sopenharmony_ci    tool("link") {
186d528ed9Sopenharmony_ci      output = "{{output_dir}}/{{target_output_name}}{{output_extension}}"
196d528ed9Sopenharmony_ci      rspfile = output + ".rsp"
206d528ed9Sopenharmony_ci      rspfile_content = "{{inputs_newline}}"
216d528ed9Sopenharmony_ci
226d528ed9Sopenharmony_ci      outputs = [ output ]
236d528ed9Sopenharmony_ci      command = "$cxx {{ldflags}} -o $output -Wl,-filelist,$rspfile {{libs}} {{solibs}} {{frameworks}}"
246d528ed9Sopenharmony_ci      description = "LINK {{output}}"
256d528ed9Sopenharmony_ci
266d528ed9Sopenharmony_ci      default_output_dir = "{{root_out_dir}}"
276d528ed9Sopenharmony_ci      default_output_extension = ""
286d528ed9Sopenharmony_ci      output_prefix = ""
296d528ed9Sopenharmony_ci    }
306d528ed9Sopenharmony_ci
316d528ed9Sopenharmony_ci    tool("solink") {
326d528ed9Sopenharmony_ci      dylib = "{{output_dir}}/{{target_output_name}}{{output_extension}}"
336d528ed9Sopenharmony_ci      rspfile = dylib + ".rsp"
346d528ed9Sopenharmony_ci      rspfile_content = "{{inputs_newline}}"
356d528ed9Sopenharmony_ci
366d528ed9Sopenharmony_ci      outputs = [ dylib ]
376d528ed9Sopenharmony_ci      command = "$cxx -dynamiclib {{ldflags}} -o $dylib -Wl,-filelist,$rspfile {{libs}} {{solibs}} {{frameworks}}"
386d528ed9Sopenharmony_ci      description = "SOLINK {{output}}"
396d528ed9Sopenharmony_ci
406d528ed9Sopenharmony_ci      default_output_dir = "{{root_out_dir}}"
416d528ed9Sopenharmony_ci      default_output_extension = ".dylib"
426d528ed9Sopenharmony_ci      output_prefix = "lib"
436d528ed9Sopenharmony_ci    }
446d528ed9Sopenharmony_ci
456d528ed9Sopenharmony_ci    tool("cc") {
466d528ed9Sopenharmony_ci      depfile = "{{output}}.d"
476d528ed9Sopenharmony_ci      precompiled_header_type = "gcc"
486d528ed9Sopenharmony_ci      command = "$cc -MMD -MF $depfile {{defines}} {{include_dirs}} {{cflags}} {{cflags_c}} -c {{source}} -o {{output}}"
496d528ed9Sopenharmony_ci      depsformat = "gcc"
506d528ed9Sopenharmony_ci      description = "CC {{output}}"
516d528ed9Sopenharmony_ci      outputs = [ "{{target_out_dir}}/{{label_name}}/{{source_name_part}}.o" ]
526d528ed9Sopenharmony_ci    }
536d528ed9Sopenharmony_ci
546d528ed9Sopenharmony_ci    tool("cxx") {
556d528ed9Sopenharmony_ci      depfile = "{{output}}.d"
566d528ed9Sopenharmony_ci      precompiled_header_type = "gcc"
576d528ed9Sopenharmony_ci      command = "$cxx -MMD -MF $depfile {{defines}} {{include_dirs}} {{cflags}} {{cflags_cc}} -c {{source}} -o {{output}}"
586d528ed9Sopenharmony_ci      depsformat = "gcc"
596d528ed9Sopenharmony_ci      description = "CXX {{output}}"
606d528ed9Sopenharmony_ci      outputs = [ "{{target_out_dir}}/{{label_name}}/{{source_name_part}}.o" ]
616d528ed9Sopenharmony_ci    }
626d528ed9Sopenharmony_ci
636d528ed9Sopenharmony_ci    tool("objc") {
646d528ed9Sopenharmony_ci      depfile = "{{output}}.d"
656d528ed9Sopenharmony_ci      precompiled_header_type = "gcc"
666d528ed9Sopenharmony_ci      command = "$cc -MMD -MF $depfile {{defines}} {{include_dirs}} {{framework_dirs}} {{cflags}} {{cflags_objc}} -c {{source}} -o {{output}}"
676d528ed9Sopenharmony_ci      depsformat = "gcc"
686d528ed9Sopenharmony_ci      description = "OBJC {{output}}"
696d528ed9Sopenharmony_ci      outputs = [ "{{target_out_dir}}/{{label_name}}/{{source_name_part}}.o" ]
706d528ed9Sopenharmony_ci    }
716d528ed9Sopenharmony_ci
726d528ed9Sopenharmony_ci    tool("objcxx") {
736d528ed9Sopenharmony_ci      depfile = "{{output}}.d"
746d528ed9Sopenharmony_ci      precompiled_header_type = "gcc"
756d528ed9Sopenharmony_ci      command = "$cxx -MMD -MF $depfile {{defines}} {{include_dirs}} {{framework_dirs}} {{cflags}} {{cflags_objcc}} -c {{source}} -o {{output}}"
766d528ed9Sopenharmony_ci      depsformat = "gcc"
776d528ed9Sopenharmony_ci      description = "OBJCXX {{output}}"
786d528ed9Sopenharmony_ci      outputs = [ "{{target_out_dir}}/{{label_name}}/{{source_name_part}}.o" ]
796d528ed9Sopenharmony_ci    }
806d528ed9Sopenharmony_ci
816d528ed9Sopenharmony_ci    tool("stamp") {
826d528ed9Sopenharmony_ci      command = "touch {{output}}"
836d528ed9Sopenharmony_ci      description = "STAMP {{output}}"
846d528ed9Sopenharmony_ci    }
856d528ed9Sopenharmony_ci
866d528ed9Sopenharmony_ci    tool("copy_bundle_data") {
876d528ed9Sopenharmony_ci      command = "rm -rf {{output}} && cp -a {{source}} {{output}}"
886d528ed9Sopenharmony_ci      description = "COPY_BUNDLE_DATA {{output}}"
896d528ed9Sopenharmony_ci    }
906d528ed9Sopenharmony_ci  }
916d528ed9Sopenharmony_ci}
926d528ed9Sopenharmony_ci
936d528ed9Sopenharmony_cimac_toolchain("clang_x86") {
946d528ed9Sopenharmony_ci  toolchain_args = {
956d528ed9Sopenharmony_ci    current_cpu = "x86"
966d528ed9Sopenharmony_ci    current_os = "mac"
976d528ed9Sopenharmony_ci  }
986d528ed9Sopenharmony_ci}
996d528ed9Sopenharmony_ci
1006d528ed9Sopenharmony_cimac_toolchain("clang_x64") {
1016d528ed9Sopenharmony_ci  toolchain_args = {
1026d528ed9Sopenharmony_ci    current_cpu = "x64"
1036d528ed9Sopenharmony_ci    current_os = "mac"
1046d528ed9Sopenharmony_ci  }
1056d528ed9Sopenharmony_ci}
1066d528ed9Sopenharmony_ci
1076d528ed9Sopenharmony_cimac_toolchain("clang_arm") {
1086d528ed9Sopenharmony_ci  toolchain_args = {
1096d528ed9Sopenharmony_ci    current_cpu = "arm"
1106d528ed9Sopenharmony_ci    current_os = "mac"
1116d528ed9Sopenharmony_ci  }
1126d528ed9Sopenharmony_ci}
1136d528ed9Sopenharmony_ci
1146d528ed9Sopenharmony_cimac_toolchain("clang_arm64") {
1156d528ed9Sopenharmony_ci  toolchain_args = {
1166d528ed9Sopenharmony_ci    current_cpu = "arm64"
1176d528ed9Sopenharmony_ci    current_os = "mac"
1186d528ed9Sopenharmony_ci  }
1196d528ed9Sopenharmony_ci}
120