# This file defines a template for using .export files.
#
# Parameters:
#   exports_file (required)
#       Path of the .exports file to use.
#
# Example use:
#   symbol_exports("my_exports") {
#     exports_file = "//foo/bar/my.exports"
#   }
#   ...
#   shared_library("my_target") {
#     deps = [ ":my_exports" ]  # Adds correct ldflags.
#     ...
#   }

# Corresponds to add_llvm_symbol_exports() in the CMake build.
template("symbol_exports") {
  # Create a platform-appropriate name for the temporary file.
  linker_file = get_path_info(invoker.exports_file, "name")
  if (current_os == "mac") {
    linker_file = linker_file + "_symbols.txt"
  } else if (current_os == "win") {
    linker_file = linker_file + ".def"
  } else {
    linker_file = linker_file + ".script"
  }
  linker_file = "$target_gen_dir/$linker_file"
  rebased_linker_file = rebase_path(linker_file, root_build_dir)

  config_name = "${target_name}_config"
  config(config_name) {
    # FIXME: With this setup, targets are not relinked automatically
    # when the input exports file is touched but nothing else changes.
    # https://groups.google.com/a/chromium.org/g/gn-dev/c/sN09GYS1ufE
    visibility = [ ":$target_name" ]
    if (current_os == "mac") {
      ldflags = [ "-Wl,-exported_symbols_list,$rebased_linker_file" ]
    } else if (current_os == "win") {
      ldflags = [ "/DEF:$rebased_linker_file" ]
    } else {
      ldflags = [ "-Wl,--version-script,$rebased_linker_file" ]
    }
  }

  action(target_name) {
    forward_variables_from(invoker, [ "deps" ])
    script = "//llvm/utils/gn/build/symbol_exports.py"
    inputs = [ invoker.exports_file ]
    outputs = [ linker_file ]
    args = [
      "--format=" + current_os,
      rebase_path(inputs[0], root_build_dir),
      rebased_linker_file,
    ]

    # Let targets depending on this receive the right ldflags.
    public_configs = [ ":$config_name" ]
  }
}
