blob: 6cbc6335a94306aeb9d6b5f109fe5053cd4db668 [file] [log] [blame]
#!/bin/bash
set -e
# When running inside a Docker sandbox, Bazel records stdout of this script on
# failure but not stderr, which omits error messages and can be confusing. To
# get around this, redirect all of stderr to stdout.
exec 2>&1
readonly BUILD_SOURCE="$1"
readonly BUILD_TARGET="$2"
readonly BAZELDIR=`pwd`
readonly YASMEXE="${BAZELDIR}/$3"
readonly BUILD_DIR="$(mktemp -d)"
trap "rm -rf '${BUILD_DIR}'" EXIT
cp -r -L "$(pwd)/${BUILD_SOURCE}"/* "${BUILD_DIR}"
# Delete GPL licenced files
function delete_gpl_licenced_files() {
gpl_licenced_file_list=(
"${BUILD_DIR}/libavcodec/x86/flac_dsp_gpl.asm"
"${BUILD_DIR}/libavcodec/x86/idct_mmx.c"
"${BUILD_DIR}/libavfilter/x86/vf_removegrain.asm"
"${BUILD_DIR}/compat/solaris/make_sunver.pl"
"${BUILD_DIR}/doc/t2h.pm"
"${BUILD_DIR}/doc/texi2pod.pl"
"${BUILD_DIR}/libswresample/swresample-test.c"
"${BUILD_DIR}/tests/tiny_ssim.c"
"${BUILD_DIR}/libavfilter/vf_blackframe.c"
"${BUILD_DIR}/libavfilter/vf_boxblur.c"
"${BUILD_DIR}/libavfilter/vf_colormatrix.c"
"${BUILD_DIR}/libavfilter/vf_cover_rect.c"
"${BUILD_DIR}/libavfilter/vf_cropdetect.c"
"${BUILD_DIR}/libavfilter/vf_delogo.c"
"${BUILD_DIR}/libavfilter/vf_eq.c"
"${BUILD_DIR}/libavfilter/vf_find_rect.c"
"${BUILD_DIR}/libavfilter/vf_fspp.c"
"${BUILD_DIR}/libavfilter/vf_geq.c"
"${BUILD_DIR}/libavfilter/vf_histeq.c"
"${BUILD_DIR}/libavfilter/vf_hqdn3d.c"
"${BUILD_DIR}/libavfilter/vf_interlace.c"
"${BUILD_DIR}/libavfilter/vf_kerndeint.c"
"${BUILD_DIR}/libavfilter/vf_mcdeint.c"
"${BUILD_DIR}/libavfilter/vf_mpdecimate.c"
"${BUILD_DIR}/libavfilter/vf_owdenoise.c"
"${BUILD_DIR}/libavfilter/vf_perspective.c"
"${BUILD_DIR}/libavfilter/vf_phase.c"
"${BUILD_DIR}/libavfilter/vf_pp.c"
"${BUILD_DIR}/libavfilter/vf_pp7.c"
"${BUILD_DIR}/libavfilter/vf_pullup.c"
"${BUILD_DIR}/libavfilter/vf_repeatfields.c"
"${BUILD_DIR}/libavfilter/vf_sab.c"
"${BUILD_DIR}/libavfilter/vf_smartblur.c"
"${BUILD_DIR}/libavfilter/vf_spp.c"
"${BUILD_DIR}/libavfilter/vf_stereo3d.c"
"${BUILD_DIR}/libavfilter/vf_super2xsai.c"
"${BUILD_DIR}/libavfilter/vf_tinterlace.c"
"${BUILD_DIR}/libavfilter/vf_uspp.c"
"${BUILD_DIR}/libavfilter/vsrc_mptestsrc.c"
)
for FILE in ${gpl_licenced_file_list[@]}; do
if [ -f ${FILE} ]; then
rm -f ${FILE}
fi
done
}
delete_gpl_licenced_files
pushd "${BUILD_DIR}" &> /dev/null
./configure \
--disable-runtime-cpudetect \
--enable-shared \
--disable-static \
--disable-debug \
--disable-programs \
--disable-doc \
--disable-libxcb \
--disable-nvenc \
--disable-everything \
--enable-decoder=h264 \
--enable-demuxer=h264 \
--enable-parser=h264 \
--enable-decoder=vp9 \
--enable-demuxer=vp9 \
--enable-parser=vp9 \
--enable-demuxer=ivf \
--enable-encoder=rawvideo \
--enable-decoder=rawvideo \
--enable-muxer=rawvideo \
--enable-demuxer=rawvideo \
--enable-protocol=file \
--enable-demuxer=image2 \
--enable-muxer=image2 \
--enable-encoder=png \
--enable-parser=png \
--enable-filter=scale \
--enable-ffmpeg \
--disable-gpl \
--cc=${CC} \
--host-cc=${CC} \
--extra-cflags=${CFLAGS} \
--extra-cxxflags=${CXXFLAGS} \
--extra-ldflags=${LDFLAGS} \
--nm=${NM} \
--ar=${AR} \
--strip=${STRIP} \
--enable-pic \
--yasmexe=${YASMEXE} &>/dev/null || cat config.log
make -j$(nproc) &>/dev/null
popd &> /dev/null
readonly TARGET_DIR=$(dirname "${BUILD_TARGET}")
cp "${BUILD_DIR}/ffmpeg" "${TARGET_DIR}"
cp "${BUILD_DIR}/libavcodec/libavcodec.so.58" "${TARGET_DIR}"
cp "${BUILD_DIR}/libavdevice/libavdevice.so.58" "${TARGET_DIR}"
cp "${BUILD_DIR}/libavfilter/libavfilter.so.7" "${TARGET_DIR}"
cp "${BUILD_DIR}/libavformat/libavformat.so.58" "${TARGET_DIR}"
cp "${BUILD_DIR}/libavutil/libavutil.so.56" "${TARGET_DIR}"
cp "${BUILD_DIR}/libswresample/libswresample.so.3" "${TARGET_DIR}"
cp "${BUILD_DIR}/libswscale/libswscale.so.5" "${TARGET_DIR}"