Commit e9b35972 authored by Oleh Prypin's avatar Oleh Prypin Committed by Commit Bot

Reland "Make a GN template for generate_stubs.py"

This is a reland of e14ed878
With correct output path to v4l2/v4l2_stubs.{h,cc}

Original change's description:
> Make a GN template for generate_stubs.py
>
> Make it produce a source_set which can be depended on rather than directly including sources into the parent target.
>
> Bug: chromium:682122
> Change-Id: I7ad9f94459f187481e656e3513eabb3e2a6f92a1
> Reviewed-on: https://chromium-review.googlesource.com/c/1348042
> Reviewed-by: Dan Sanders <sandersd@chromium.org>
> Reviewed-by: Mirko Bonadei <mbonadei@chromium.org>
> Reviewed-by: Dirk Pranke <dpranke@chromium.org>
> Commit-Queue: Oleh Prypin <oprypin@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#611117}

Bug: chromium:682122, chromium:909020
Change-Id: I1d34d5bb0dc9f4f72a444e9463669793c3f5a171
Reviewed-on: https://chromium-review.googlesource.com/c/1356703Reviewed-by: default avatarSteven Bennetts <stevenjb@chromium.org>
Reviewed-by: default avatarDirk Pranke <dpranke@chromium.org>
Reviewed-by: default avatarDan Sanders <sandersd@chromium.org>
Commit-Queue: Oleh Prypin <oprypin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#613300}
parent 405e5676
......@@ -4,42 +4,18 @@
import("//build/config/linux/pkg_config.gni")
import("//media/media_options.gni")
import("//tools/generate_stubs/rules.gni")
# When libpulse is not directly linked, use stubs to allow for dlopening of the
# binary.
if (!link_pulseaudio) {
action("pulse_generate_stubs") {
if (use_pulseaudio && !link_pulseaudio) {
generate_stubs("libpulse_stubs") {
extra_header = "pulse/pulse_stub_header.fragment"
script = "../../tools/generate_stubs/generate_stubs.py"
sources = [
"pulse/pulse.sigs",
]
inputs = [
extra_header,
]
stubs_filename_root = "pulse_stubs"
outputs = [
"$target_gen_dir/pulse/$stubs_filename_root.cc",
"$target_gen_dir/pulse/$stubs_filename_root.h",
]
args = [
"-i",
rebase_path("$target_gen_dir/pulse", root_build_dir),
"-o",
rebase_path("$target_gen_dir/pulse", root_build_dir),
"-t",
"posix_stubs",
"-e",
rebase_path(extra_header, root_build_dir),
"-s",
stubs_filename_root,
"-p",
"media/audio/pulse",
sigs = [ "pulse/pulse.sigs" ]
output_name = "pulse/pulse_stubs"
deps = [
"//base",
]
args += rebase_path(sources, root_build_dir)
}
}
......@@ -308,9 +284,7 @@ source_set("audio") {
if (link_pulseaudio) {
configs += [ ":libpulse" ]
} else {
libs += [ "dl" ]
deps += [ ":pulse_generate_stubs" ]
sources += get_target_outputs(":pulse_generate_stubs")
deps += [ ":libpulse_stubs" ]
}
}
......
......@@ -8,6 +8,7 @@ import("//build/config/ui.gni")
import("//media/gpu/args.gni")
import("//media/media_options.gni")
import("//testing/test.gni")
import("//tools/generate_stubs/rules.gni")
buildflag_header("buildflags") {
header = "buildflags.h"
......@@ -24,38 +25,13 @@ if (is_mac) {
}
if (is_chromeos && use_v4lplugin) {
action("libv4l2_generate_stubs") {
generate_stubs("libv4l2_stubs") {
extra_header = "v4l2/v4l2_stub_header.fragment"
script = "../../tools/generate_stubs/generate_stubs.py"
sources = [
"v4l2/v4l2.sig",
]
inputs = [
extra_header,
]
stubs_filename_root = "v4l2_stubs"
outputs = [
"$target_gen_dir/v4l2/$stubs_filename_root.cc",
"$target_gen_dir/v4l2/$stubs_filename_root.h",
]
args = [
"-i",
rebase_path("$target_gen_dir/v4l2", root_build_dir),
"-o",
rebase_path("$target_gen_dir/v4l2", root_build_dir),
"-t",
"posix_stubs",
"-e",
rebase_path(extra_header, root_build_dir),
"-s",
stubs_filename_root,
"-p",
"media/gpu/v4l2",
sigs = [ "v4l2/v4l2.sig" ]
output_name = "v4l2/v4l2_stubs"
deps = [
"//base",
]
args += rebase_path(sources, root_build_dir)
}
}
......@@ -216,8 +192,7 @@ component("gpu") {
}
if (use_v4lplugin) {
sources += get_target_outputs(":libv4l2_generate_stubs")
deps += [ ":libv4l2_generate_stubs" ]
deps += [ ":libv4l2_stubs" ]
}
if (use_v4l2_codec) {
......
......@@ -5,49 +5,25 @@
import("//build/config/features.gni")
import("//build/config/ui.gni")
import("//media/gpu/args.gni")
import("//tools/generate_stubs/rules.gni")
import("//ui/gl/features.gni")
import("//ui/ozone/ozone.gni")
assert(use_vaapi)
action("libva_generate_stubs") {
generate_stubs("libva_stubs") {
extra_header = "va_stub_header.fragment"
script = "//tools/generate_stubs/generate_stubs.py"
sources = [
"va.sigs",
]
inputs = [
extra_header,
]
sigs = [ "va.sigs" ]
if (use_x11) {
sources += [ "va_x11.sigs" ]
sigs += [ "va_x11.sigs" ]
}
if (is_linux) {
sources += [ "va_drm.sigs" ]
sigs += [ "va_drm.sigs" ]
}
stubs_filename_root = "va_stubs"
outputs = [
"$target_gen_dir/$stubs_filename_root.cc",
"$target_gen_dir/$stubs_filename_root.h",
]
args = [
"-i",
rebase_path("$target_gen_dir", root_build_dir),
"-o",
rebase_path("$target_gen_dir", root_build_dir),
"-t",
"posix_stubs",
"-e",
rebase_path(extra_header, root_build_dir),
"-s",
stubs_filename_root,
"-p",
"media/gpu/vaapi",
output_name = "va_stubs"
deps = [
"//base",
]
args += rebase_path(sources, root_build_dir)
}
source_set("vaapi") {
......@@ -88,12 +64,11 @@ source_set("vaapi") {
"vp8_encoder.cc",
"vp8_encoder.h",
]
sources += get_target_outputs(":libva_generate_stubs")
configs += [ "//third_party/libyuv:libyuv_config" ]
deps = [
":libva_generate_stubs",
":libva_stubs",
"//gpu/ipc/service",
"//media",
"//media/gpu:common",
......
# 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)
#
# 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.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 += [ ":${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 ]
}
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment