brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.9 KiB · d81d9ea Raw
61 lines · plain
1# This file defines a template for using .export files.2#3# Parameters:4#   exports_file (required)5#       Path of the .exports file to use.6#7# Example use:8#   symbol_exports("my_exports") {9#     exports_file = "//foo/bar/my.exports"10#   }11#   ...12#   shared_library("my_target") {13#     deps = [ ":my_exports" ]  # Adds correct ldflags.14#     ...15#   }16 17# Corresponds to add_llvm_symbol_exports() in the CMake build.18template("symbol_exports") {19  # Create a platform-appropriate name for the temporary file.20  linker_file = get_path_info(invoker.exports_file, "name")21  if (current_os == "mac") {22    linker_file = linker_file + "_symbols.txt"23  } else if (current_os == "win") {24    linker_file = linker_file + ".def"25  } else {26    linker_file = linker_file + ".script"27  }28  linker_file = "$target_gen_dir/$linker_file"29  rebased_linker_file = rebase_path(linker_file, root_build_dir)30 31  config_name = "${target_name}_config"32  config(config_name) {33    # FIXME: With this setup, targets are not relinked automatically34    # when the input exports file is touched but nothing else changes.35    # https://groups.google.com/a/chromium.org/g/gn-dev/c/sN09GYS1ufE36    visibility = [ ":$target_name" ]37    if (current_os == "mac") {38      ldflags = [ "-Wl,-exported_symbols_list,$rebased_linker_file" ]39    } else if (current_os == "win") {40      ldflags = [ "/DEF:$rebased_linker_file" ]41    } else {42      ldflags = [ "-Wl,--version-script,$rebased_linker_file" ]43    }44  }45 46  action(target_name) {47    forward_variables_from(invoker, [ "deps" ])48    script = "//llvm/utils/gn/build/symbol_exports.py"49    inputs = [ invoker.exports_file ]50    outputs = [ linker_file ]51    args = [52      "--format=" + current_os,53      rebase_path(inputs[0], root_build_dir),54      rebased_linker_file,55    ]56 57    # Let targets depending on this receive the right ldflags.58    public_configs = [ ":$config_name" ]59  }60}61