forked from chromium/chromium
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrules.gni
105 lines (102 loc) · 3.07 KB
/
rules.gni
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
# Create a source_set with generated stubs for a POSIX shared library.
#
# Based on C-style signatures, it will generate a source and a header file
# and expose it as a source_set.
#
# See //tools/generate_stubs/generate_stubs.py for more info.
#
# Variables
# sigs: list of files with C-style signatures (*.sig)
# output_name: name of the generated files: $output_name.h and $output_name.cc
# extra_header: prepend the contents of this file to the generated .cc file
# logging_function: override the used logging function (default: VLOG(1))
# logging_include: override the additional include (default: base/logging.h)
# path_from_source: relative path of generated files from the project root
#
# Example
# generate_stubs("libfoo_stubs") {
# sigs = [ "foo/foo.sigs" ]
# extra_header = "foo/foo_stub_header.fragment"
# output_name = "foo/foo_stubs"
# deps = [
# "//base",
# ]
# }
#
# Targets that depend on this target can `#include "path/to/foo/foo_stubs.h"`
template("generate_stubs") {
forward_variables_from(invoker, [ "testonly" ])
_gen_dir = get_path_info(invoker.output_name, "gen_dir")
action("${target_name}__stubs_gen") {
script = "//tools/generate_stubs/generate_stubs.py"
sources = invoker.sigs
inputs = [ invoker.extra_header ]
outputs = [
"${target_gen_dir}/${invoker.output_name}.cc",
"${target_gen_dir}/${invoker.output_name}.h",
]
args = [
"--intermediate_dir",
rebase_path(_gen_dir, root_build_dir),
"--output",
rebase_path(_gen_dir, root_build_dir),
"--type",
"posix_stubs",
"--extra_stub_header",
rebase_path(invoker.extra_header, root_build_dir),
"--stubfile_name",
get_path_info(invoker.output_name, "name"),
"--path_from_source",
rebase_path(_gen_dir, root_gen_dir),
]
if (defined(invoker.path_from_source)) {
args += [
"--path_from_source",
invoker.path_from_source,
]
} else {
args += [
"--path_from_source",
rebase_path(_gen_dir, root_gen_dir),
]
}
if (defined(invoker.logging_function)) {
args += [
"--logging-function",
invoker.logging_function,
]
}
if (defined(invoker.logging_include)) {
args += [
"--logging-include",
invoker.logging_include,
]
}
args += rebase_path(invoker.sigs, root_build_dir)
}
source_set(target_name) {
forward_variables_from(invoker,
[
"deps",
"public_deps",
"visibility",
])
if (!defined(deps)) {
deps = []
}
deps += [ "//base" ]
if (!defined(public_deps)) {
public_deps = []
}
public_deps += [ ":${target_name}__stubs_gen" ]
sources = [
"${target_gen_dir}/${invoker.output_name}.cc",
"${target_gen_dir}/${invoker.output_name}.h",
]
libs = [ "dl" ]
include_dirs = [ target_gen_dir ]
if (defined(invoker.configs)) {
configs += invoker.configs
}
}
}