# Copyright 2021 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

# This file is based on gcc_toolchain.gni and customized for z/OS.

import("//build/toolchain/gcc_toolchain.gni")

toolchain("s390x") {
  cc = "ibm-clang"
  cxx = "ibm-clang++"
  asm = "ibm-clang"
  ar = "ar"
  ld = cxx

  toolchain_args = {
    current_cpu = "s390x"
    current_os = "zos"
  }

  rebuild_string = ""
  default_shlib_extension = ".so"
  default_shlib_subdir = ""
  extra_cflags = ""
  extra_cppflags = ""
  extra_cxxflags = ""
  extra_asmflags = ""
  extra_ldflags = ""

  # These library switches can apply to all tools below.
  lib_switch = "-l"
  lib_dir_switch = "-L"

  # Object files go in this directory.
  object_subdir = "{{target_out_dir}}/{{label_name}}"

  tool("cc") {
    depfile = "{{output}}.d"
    command = "$cc -MMD -MF $depfile ${rebuild_string}{{defines}} {{include_dirs}} {{cflags}} {{cflags_c}}${extra_cflags} -c {{source}} -o {{output}}"
    depsformat = "gcc"
    description = "CC {{output}}"
    outputs = [ "$object_subdir/{{source_name_part}}.o" ]
  }

  tool("cxx") {
    depfile = "{{output}}.d"
    command = "$cxx -MMD -MF $depfile ${rebuild_string}{{defines}} {{include_dirs}} {{cflags}} {{cflags_cc}}${extra_cppflags}${extra_cxxflags} -c {{source}} -o {{output}}"
    depsformat = "gcc"
    description = "CXX {{output}}"
    outputs = [ "$object_subdir/{{source_name_part}}.o" ]
  }

  tool("asm") {
    # Just use the C compiler to compile assembly.
    depfile = "{{output}}.d"
    command = "$asm ${rebuild_string} {{asmflags}}${extra_asmflags} -c {{source}} -o {{output}}"
    depsformat = "gcc"
    description = "ASM {{output}}"
    outputs = [ "$object_subdir/{{source_name_part}}.o" ]
  }

  tool("alink") {
    command = "$ar {{arflags}} -r -c -s {{output}} {{inputs}}"

    # Remove the output file first so that ar doesn't try to modify the
    # existing file.
    command = "rm -f {{output}} && $command"

    # Almost all targets build with //build/config/compiler:thin_archive which
    # adds -T to arflags.
    description = "AR {{output}}"
    outputs = [ "{{output_dir}}/{{target_output_name}}{{output_extension}}" ]

    # Shared libraries go in the target out directory by default so we can
    # generate different targets with the same name and not have them collide.
    default_output_dir = "{{target_out_dir}}"
    default_output_extension = ".a"
    output_prefix = "lib"
  }

  tool("solink") {
    soname = "{{target_output_name}}{{output_extension}}"  # e.g. "libfoo.so".
    sofile = "{{output_dir}}/$soname"  # Possibly including toolchain dir.
    xfile = "{{output_dir}}/{{target_output_name}}.x"
    rspfile = sofile + ".rsp"

    # These variables are not built into GN but are helpers that
    # implement (1) linking to produce a .so, (2) extracting the symbols
    # from that file (3) if the extracted list differs from the existing
    # .TOC file, overwrite it, otherwise, don't change it.
    link_command = "$ld -Wl,-x${xfile} {{ldflags}}${extra_ldflags} -o \"$sofile\" `cat $rspfile`"

    solink_wrapper =
        rebase_path("//build/toolchain/gcc_link_wrapper.py", root_build_dir)
    command =
        "$python_path \"$solink_wrapper\" --output=\"$sofile\" -- $link_command"

    rspfile_content = "{{inputs}} {{solibs}} {{libs}}"

    description = "SOLINK $sofile"

    # Use this for {{output_extension}} expansions unless a target manually
    # overrides it (in which case {{output_extension}} will be what the target
    # specifies).
    default_output_extension = default_shlib_extension

    default_output_dir = "{{root_out_dir}}${default_shlib_subdir}"

    output_prefix = "lib"

    # Since the above commands only updates the .TOC file when it changes, ask
    # Ninja to check if the timestamp actually changed to know if downstream
    # dependencies should be recompiled.
    restat = true

    # Tell GN about the output files. It will link to the sofile but use the
    # tocfile for dependency management.
    outputs = [ xfile ]
    outputs += [ sofile ]

    link_output = xfile
    depend_output = xfile
  }

  tool("solink_module") {
    soname = "{{target_output_name}}{{output_extension}}"  # e.g. "libfoo.so".
    sofile = "{{output_dir}}/$soname"
    xfile = "{{output_dir}}/{{target_output_name}}.x"

    rspfile = sofile + ".rsp"

    command = "$ld {{ldflags}}${extra_ldflags} -o \"$sofile\" `cat $rspfile`"

    rspfile_content = "{{inputs}} {{solibs}} {{libs}}"

    description = "SOLINK_MODULE $sofile"

    default_output_dir = "{{root_out_dir}}${default_shlib_subdir}"

    output_prefix = "lib"
    outputs = [ xfile ]
    outputs += [ sofile ]
  }

  tool("link") {
    exename = "{{target_output_name}}{{output_extension}}"
    outfile = "{{output_dir}}/$exename"
    rspfile = "$outfile.rsp"

    default_output_dir = "{{root_out_dir}}"

    link_command = "$ld {{ldflags}}${extra_ldflags} -o \"$outfile\" `cat $rspfile` {{solibs}} {{libs}}"

    link_wrapper =
        rebase_path("//build/toolchain/gcc_link_wrapper.py", root_build_dir)

    command =
        "$python_path \"$link_wrapper\" --output=\"$outfile\" -- $link_command"

    description = "LINK $outfile"
    rspfile_content = "{{inputs}}"
    outputs = [ outfile ]
  }

  # These two are really entirely generic, but have to be repeated in
  # each toolchain because GN doesn't allow a template to be used here.
  # See //build/toolchain/toolchain.gni for details.
  tool("stamp") {
    command = stamp_command
    description = stamp_description
  }
  tool("copy") {
    command = copy_command
    description = copy_description
  }
}
