blob: 1c9430728f59341410d13cb3fe2443df2152da25 [file] [log] [blame]
# Copyright 2018 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import("//build/components.gni")
declare_args() {
# Use a prebuilt ffmpeg binary rather than building it locally. See
# //src/media/lib/ffmpeg/README.md for details. This is ignored when
# building in variant builds for which there is no prebuilt. In that case,
# ffmpeg is always built from source so as to be built with the selected
# variant's config. When this is false (either explicitly or in a variant
# build) then //third_party/ffmpeg must be in the source tree, which
# requires:
#
# ```
# jiri import -name third_party/ffmpeg -revision HEAD third_party/ffmpeg http://fuchsia.googlesource.com/integration
# ```
#
# Or, if already importing a different manifest from there, resulting in
# errors from jiri update, it can work to just git clone (but jiri update
# won't manage third_party/ffmpeg in this case):
#
# ```
# mkdir third_party/ffmpeg
# git clone "https://fuchsia.googlesource.com/third_party/ffmpeg" third_party/ffmpeg
# ```
use_prebuilt_ffmpeg = true
}
group("ffmpeg") {
visibility = [
"//src/media/codec/codecs/sw/ffmpeg:codec_runner_sw_ffmpeg",
"//src/media/lib",
"//src/media/playback/mediaplayer/ffmpeg",
"//src/media/vnext/lib/ffmpeg",
]
if (use_prebuilt_ffmpeg) {
public_deps = [ ":prebuilt_ffmpeg($shlib_toolchain)" ]
} else {
deps = [ "//third_party/ffmpeg" ]
public_configs = [ "//third_party/ffmpeg:ffmpeg_dependent_config" ]
}
}
if (use_prebuilt_ffmpeg) {
group("prebuilt_ffmpeg") {
deps = [ ":prebuilt_ffmpeg_shared_library" ]
public_configs = [ ":prebuilt_ffmpeg_config" ]
}
prebuilt_dir = "//prebuilt/third_party/ffmpeg"
prebuilt_lib_dir = "$prebuilt_dir/arch/$current_cpu/lib"
prebuilt_include_dir = "$prebuilt_dir/pkg/ffmpeg/include"
# This file is produced by the ffmpeg prebuilt recipe, defining the list of
# all the variants for which prebuilt ffmpeg binaries are available. Each
# of these corresponds to a subdirectory of $prebuilt_dir containing a
# libffmpeg.so file.
forward_variables_from(
read_file("$prebuilt_dir/prebuilt_variants.json", "json"),
[ "prebuilt_variants" ])
# If there is a variant prebuilt, use it from the variant-named subdirectory.
# Otherwise use the vanilla build in the main directory.
if (prebuilt_variants + [ toolchain_variant.name ] -
[ toolchain_variant.name ] != prebuilt_variants) {
ffmpeg_lib_dir = "$prebuilt_lib_dir/${toolchain_variant.name}/"
} else {
ffmpeg_lib_dir = prebuilt_lib_dir
}
ffmpeg_so = "$ffmpeg_lib_dir/libffmpeg.so"
config("prebuilt_ffmpeg_config") {
visibility = [ ":prebuilt_ffmpeg" ]
if (current_cpu == "x64") {
ffmpeg_config = "max"
} else {
ffmpeg_config = "default"
}
include_dirs = [
prebuilt_include_dir,
"$prebuilt_include_dir/fuchsia/config/$ffmpeg_config/$current_cpu",
]
libs = [ ffmpeg_so ]
}
resource("prebuilt_ffmpeg_shared_library") {
sources = [ ffmpeg_so ]
outputs = [ "lib/${toolchain_variant.libprefix}{{source_file_part}}" ]
}
}