| # 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. |
| |
| declare_args() { |
| # Use a prebuilt ffmpeg binary rather than building it locally. See |
| # //garnet/lib/media/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 garnet manifest/ffmpeg https://fuchsia.googlesource.com/garnet` |
| use_prebuilt_ffmpeg = true |
| } |
| |
| ffmpeg_prebuilts = [ |
| "", |
| "debug", |
| "release", |
| "asan", |
| "lto", |
| "profile", |
| "thinlto", |
| "ubsan", |
| ] |
| |
| if (ffmpeg_prebuilts + [ toolchain_variant.name ] - |
| [ toolchain_variant.name ] == ffmpeg_prebuilts) { |
| use_prebuilt_ffmpeg = false |
| } |
| |
| group("ffmpeg") { |
| visibility = [ |
| "//garnet/bin/mediaplayer/ffmpeg", |
| "//garnet/bin/media/codecs/sw/ffmpeg:codec_runner_sw_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) { |
| assert( |
| ffmpeg_prebuilts + [ toolchain_variant.name ] - |
| [ toolchain_variant.name ] != ffmpeg_prebuilts, |
| "Set use_prebuilt_ffmpeg=false when selecting variants outside $ffmpeg_prebuilts for ffmpeg clients.") |
| |
| group("prebuilt_ffmpeg") { |
| deps = [ |
| ":prebuilt_libffmpeg_copy", |
| ":prebuilt_libffmpeg_debug_copy", |
| ] |
| |
| public_configs = [ ":prebuilt_ffmpeg_config" ] |
| } |
| |
| variant_prefix = toolchain_variant.name |
| if (variant_prefix == "debug" || variant_prefix == "release") { |
| variant_prefix = "" |
| } |
| if (variant_prefix != "") { |
| variant_prefix += "/" |
| } |
| |
| prebuilt_dir = "prebuilt/arch/$current_cpu" |
| libffmpeg = "$prebuilt_dir/lib/${variant_prefix}libffmpeg.so" |
| libffmpeg_debug = "$prebuilt_dir/debug/${variant_prefix}libffmpeg.so" |
| |
| copy("prebuilt_libffmpeg_copy") { |
| visibility = [ ":prebuilt_ffmpeg" ] |
| sources = [ |
| libffmpeg, |
| ] |
| outputs = [ |
| "$root_out_dir/libffmpeg.so", |
| ] |
| } |
| |
| copy("prebuilt_libffmpeg_debug_copy") { |
| visibility = [ ":prebuilt_ffmpeg" ] |
| sources = [ |
| libffmpeg_debug, |
| ] |
| outputs = [ |
| "$root_out_dir/lib.unstripped/libffmpeg.so", |
| ] |
| } |
| |
| config("prebuilt_ffmpeg_config") { |
| visibility = [ ":prebuilt_ffmpeg" ] |
| |
| ffmpeg_include = "prebuilt/pkg/ffmpeg/include" |
| if (current_cpu == "x64") { |
| ffmpeg_config = "max" |
| } else { |
| ffmpeg_config = "default" |
| } |
| |
| include_dirs = [ |
| ffmpeg_include, |
| "$ffmpeg_include/fuchsia/config/$ffmpeg_config/$current_cpu", |
| ] |
| |
| libs = get_target_outputs(":prebuilt_libffmpeg_copy") |
| } |
| } |