1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- # Copyright 2014 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
- # This template makes a stub for a Linux system library that dynamically loads
- # it at runtime.
- # name: Name to use for the value of the --name arg.
- # output_h/output_cc: Names for the generated header/cc file with no dir.
- # header: header file to process. Example: "<foo/bar.h>"
- # functions: List of strings for functions to process.
- # config: (optional) Label of the config generated by pkgconfig.
- # bundled_header: (optional)
- template("generate_library_loader") {
- output_h = "$root_gen_dir/library_loaders/" + invoker.output_h
- output_cc = "$root_gen_dir/library_loaders/" + invoker.output_cc
- action_visibility = [ ":$target_name" ]
- action("${target_name}_loader") {
- visibility = action_visibility
- script = "//tools/generate_library_loader/generate_library_loader.py"
- outputs = [
- output_h,
- output_cc,
- ]
- args = [
- "--name",
- invoker.name,
- "--output-h",
- rebase_path(output_h, root_build_dir),
- "--output-cc",
- rebase_path(output_cc, root_build_dir),
- "--header",
- invoker.header,
- # Note GYP build exposes a per-target variable to control this, which, if
- # manually set to true, will disable dlopen(). Its not clear this is
- # needed, so here we just leave off. If this can be done globally, we can
- # expose one switch for this value, otherwise we need to add a template
- # param for this.
- "--link-directly=0",
- ]
- if (defined(invoker.bundled_header)) {
- args += [
- "--bundled-header",
- invoker.bundled_header,
- ]
- }
- args += invoker.functions
- }
- source_set(target_name) {
- if (defined(invoker.config)) {
- public_configs = [ invoker.config ]
- }
- sources = [
- output_cc,
- output_h,
- ]
- public_deps = [ ":${target_name}_loader" ]
- }
- }
|