| # 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}}" ] |
| } |
| } |