Add x265 and all its madness
This commit is contained in:
parent
9ee8d5d019
commit
1b853bc960
11 changed files with 128 additions and 25 deletions
16
build.sh
16
build.sh
|
@ -19,14 +19,16 @@ source "variants/${VARIANT}.sh"
|
||||||
source "variants/${TARGET}-${VARIANT}.sh"
|
source "variants/${TARGET}-${VARIANT}.sh"
|
||||||
|
|
||||||
for script in scripts.d/*.sh; do
|
for script in scripts.d/*.sh; do
|
||||||
CONFIGURE+=" $(get_output $script configure)"
|
FF_CONFIGURE+=" $(get_output $script configure)"
|
||||||
CFLAGS+=" $(get_output $script cflags)"
|
FF_CFLAGS+=" $(get_output $script cflags)"
|
||||||
LDFLAGS+=" $(get_output $script ldflags)"
|
FF_CXXFLAGS+=" $(get_output $script cxxflags)"
|
||||||
|
FF_LDFLAGS+=" $(get_output $script ldflags)"
|
||||||
done
|
done
|
||||||
|
|
||||||
CONFIGURE="$(xargs <<< "$CONFIGURE")"
|
FF_CONFIGURE="$(xargs <<< "$FF_CONFIGURE")"
|
||||||
CFLAGS="$(xargs <<< "$CFLAGS")"
|
FF_CFLAGS="$(xargs <<< "$FF_CFLAGS")"
|
||||||
LDFLAGS="$(xargs <<< "$LDFLAGS")"
|
FF_CXXFLAGS="$(xargs <<< "$FF_CXXFLAGS")"
|
||||||
|
FF_LDFLAGS="$(xargs <<< "$FF_LDFLAGS")"
|
||||||
|
|
||||||
rm -rf ffbuild
|
rm -rf ffbuild
|
||||||
mkdir ffbuild
|
mkdir ffbuild
|
||||||
|
@ -40,7 +42,7 @@ docker run --rm -i -u "$(id -u):$(id -g)" -v $PWD/ffbuild:/ffbuild "$IMAGE" bash
|
||||||
cd ffmpeg
|
cd ffmpeg
|
||||||
git checkout $GIT_BRANCH
|
git checkout $GIT_BRANCH
|
||||||
|
|
||||||
./configure --prefix=/ffbuild/prefix --pkg-config-flags="--static" \$FFBUILD_TARGET_FLAGS $CONFIGURE --extra-cflags="$CFLAGS" --extra-ldflags="$LDFLAGS"
|
./configure --prefix=/ffbuild/prefix --pkg-config-flags="--static" \$FFBUILD_TARGET_FLAGS $FF_CONFIGURE --extra-cflags="$FF_CFLAGS" --extra-cxxflags="$FF_CXXFLAGS" --extra-ldflags="$FF_LDFLAGS"
|
||||||
make -j\$(nproc)
|
make -j\$(nproc)
|
||||||
make install
|
make install
|
||||||
EOF
|
EOF
|
||||||
|
|
|
@ -12,7 +12,6 @@ to_df() {
|
||||||
|
|
||||||
to_df "FROM $REPO:base-$TARGET"
|
to_df "FROM $REPO:base-$TARGET"
|
||||||
to_df "ENV TARGET=$TARGET VARIANT=$VARIANT REPO=$REPO"
|
to_df "ENV TARGET=$TARGET VARIANT=$VARIANT REPO=$REPO"
|
||||||
to_df "ENV FFBUILD_PREFIX=/opt/ffbuild PKG_CONFIG_LIBDIR=/opt/ffbuild/lib/pkgconfig"
|
|
||||||
|
|
||||||
for script in scripts.d/*.sh; do
|
for script in scripts.d/*.sh; do
|
||||||
(
|
(
|
||||||
|
|
|
@ -4,8 +4,19 @@ ENV DEBIAN_FRONTEND noninteractive
|
||||||
|
|
||||||
RUN \
|
RUN \
|
||||||
apt-get -y install mingw-w64 && \
|
apt-get -y install mingw-w64 && \
|
||||||
apt-get -y clean
|
apt-get -y clean && \
|
||||||
|
rm /usr/lib/gcc/*-w64-mingw32/*/libstdc++*.dll* && \
|
||||||
|
rm /usr/lib/gcc/*-w64-mingw32/*/libgcc_s* && \
|
||||||
|
mkdir /opt/ffbuild
|
||||||
|
|
||||||
ENV FFBUILD_TARGET_FLAGS "--pkg-config=pkg-config --cross-prefix=x86_64-w64-mingw32- --arch=x86_64 --target-os=win32"
|
ADD toolchain.cmake /toolchain.cmake
|
||||||
ENV FFBUILD_TOOLCHAIN x86_64-w64-mingw32
|
|
||||||
ENV FFBUILD_CROSS_PREFIX x86_64-w64-mingw32-
|
ENV FFBUILD_TARGET_FLAGS="--pkg-config=pkg-config --cross-prefix=x86_64-w64-mingw32- --arch=x86_64 --target-os=win32" \
|
||||||
|
FFBUILD_TOOLCHAIN=x86_64-w64-mingw32 \
|
||||||
|
FFBUILD_CROSS_PREFIX=x86_64-w64-mingw32- \
|
||||||
|
FFBUILD_PREFIX=/opt/ffbuild \
|
||||||
|
FFBUILD_CMAKE_TOOLCHAIN=/toolchain.cmake \
|
||||||
|
PKG_CONFIG_LIBDIR=/opt/ffbuild/lib/pkgconfig \
|
||||||
|
CFLAGS="-static-libgcc -static-libstdc++" \
|
||||||
|
CXXFLAGS="-static-libgcc -static-libstdc++" \
|
||||||
|
LDFLAGS="-static-libgcc -static-libstdc++"
|
||||||
|
|
12
images/base-win64/toolchain.cmake
Normal file
12
images/base-win64/toolchain.cmake
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
set(CMAKE_SYSTEM_NAME Windows)
|
||||||
|
|
||||||
|
set(CMAKE_C_COMPILER x86_64-w64-mingw32-gcc)
|
||||||
|
set(CMAKE_CXX_COMPILER x86_64-w64-mingw32-g++)
|
||||||
|
set(CMAKE_RC_COMPILER x86_64-w64-mingw32-windres)
|
||||||
|
set(CMAKE_RANLIB x86_64-w64-mingw32-ranlib)
|
||||||
|
|
||||||
|
set(CMAKE_FIND_ROOT_PATH /usr/x86_64-w64-mingw32 /opt/ffbuild)
|
||||||
|
|
||||||
|
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
||||||
|
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
||||||
|
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
|
@ -5,5 +5,5 @@ ENV DEBIAN_FRONTEND noninteractive
|
||||||
RUN \
|
RUN \
|
||||||
apt-get -y update && \
|
apt-get -y update && \
|
||||||
apt-get -y dist-upgrade && \
|
apt-get -y dist-upgrade && \
|
||||||
apt-get -y install build-essential yasm nasm pkg-config git curl wget cmake unzip subversion autoconf automake libtool clang texinfo texi2html && \
|
apt-get -y install build-essential yasm nasm pkg-config git curl wget cmake unzip subversion autoconf automake libtool cmake clang texinfo texi2html && \
|
||||||
apt-get -y clean
|
apt-get -y clean
|
||||||
|
|
67
scripts.d/50-x265.sh
Executable file
67
scripts.d/50-x265.sh
Executable file
|
@ -0,0 +1,67 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
X265_REPO="https://github.com/videolan/x265.git"
|
||||||
|
X265_COMMIT="ac186359c3706f63579b2291cd2dc84f6e17a336"
|
||||||
|
|
||||||
|
ffbuild_enabled() {
|
||||||
|
[[ $VARIANT == gpl* ]] || return -1
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
ffbuild_dockerstage() {
|
||||||
|
to_df "ADD $SELF /root/x264.sh"
|
||||||
|
to_df "RUN bash -c 'source /root/x264.sh && ffbuild_dockerbuild && rm /root/x264.sh'"
|
||||||
|
}
|
||||||
|
|
||||||
|
ffbuild_dockerbuild() {
|
||||||
|
git clone "$X265_REPO" x265 || return -1
|
||||||
|
cd x265
|
||||||
|
git checkout "$X265_COMMIT" || return -1
|
||||||
|
|
||||||
|
mkdir 8bit 10bit 12bit
|
||||||
|
|
||||||
|
cd 12bit
|
||||||
|
cmake -DCMAKE_TOOLCHAIN_FILE="$FFBUILD_CMAKE_TOOLCHAIN" -DHIGH_BIT_DEPTH=ON -DEXPORT_C_API=OFF -DENABLE_SHARED=OFF -DENABLE_CLI=OFF -DMAIN12=ON ../source || return -1
|
||||||
|
make -j$(nproc) || return -1
|
||||||
|
cp libx265.a ../8bit/libx265_main12.a
|
||||||
|
|
||||||
|
cd ../10bit
|
||||||
|
cmake -DCMAKE_TOOLCHAIN_FILE="$FFBUILD_CMAKE_TOOLCHAIN" -DHIGH_BIT_DEPTH=ON -DEXPORT_C_API=OFF -DENABLE_SHARED=OFF -DENABLE_CLI=OFF ../source || return -1
|
||||||
|
make -j$(nproc) || return -1
|
||||||
|
cp libx265.a ../8bit/libx265_main10.a
|
||||||
|
|
||||||
|
cd ../8bit
|
||||||
|
cmake -DCMAKE_TOOLCHAIN_FILE="$FFBUILD_CMAKE_TOOLCHAIN" -DCMAKE_INSTALL_PREFIX="$FFBUILD_PREFIX" -DEXTRA_LIB="x265_main10.a;x265_main12.a" -DEXTRA_LINK_FLAGS=-L. -DLINKED_10BIT=ON -DLINKED_12BIT=ON -DENABLE_SHARED=OFF -DENABLE_CLI=OFF ../source || return -1
|
||||||
|
make -j$(nproc) || return -1
|
||||||
|
mv libx265.a libx265_main.a
|
||||||
|
|
||||||
|
${FFBUILD_CROSS_PREFIX}ar -M <<EOF
|
||||||
|
CREATE libx265.a
|
||||||
|
ADDLIB libx265_main.a
|
||||||
|
ADDLIB libx265_main10.a
|
||||||
|
ADDLIB libx265_main12.a
|
||||||
|
SAVE
|
||||||
|
END
|
||||||
|
EOF
|
||||||
|
|
||||||
|
make install || return -1
|
||||||
|
|
||||||
|
cd ../..
|
||||||
|
rm -rf x265
|
||||||
|
}
|
||||||
|
|
||||||
|
ffbuild_configure() {
|
||||||
|
echo --enable-libx265
|
||||||
|
}
|
||||||
|
|
||||||
|
ffbuild_unconfigure() {
|
||||||
|
echo --disable-libx265
|
||||||
|
}
|
||||||
|
|
||||||
|
ffbuild_cflags() {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
ffbuild_ldflags() {
|
||||||
|
return 0
|
||||||
|
}
|
|
@ -26,6 +26,14 @@ ffbuild_uncflags() {
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ffbuild_cxxflags() {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
ffbuild_uncxxflags() {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
ffbuild_ldflags() {
|
ffbuild_ldflags() {
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
CONFIGURE="--enable-gpl --enable-version3"
|
FF_CONFIGURE="--enable-gpl --enable-version3"
|
||||||
CFLAGS=""
|
FF_CFLAGS="-static-libgcc -static-libstdc++"
|
||||||
LDFLAGS=""
|
FF_CXXFLAGS="-static-libgcc -static-libstdc++"
|
||||||
|
FF_LDFLAGS="-static-libgcc -static-libstdc++"
|
||||||
GIT_BRANCH="release/4.2"
|
GIT_BRANCH="release/4.2"
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
CONFIGURE="--enable-gpl --enable-version3"
|
FF_CONFIGURE="--enable-gpl --enable-version3"
|
||||||
CFLAGS=""
|
FF_CFLAGS="-static-libgcc -static-libstdc++"
|
||||||
LDFLAGS=""
|
FF_CXXFLAGS="-static-libgcc -static-libstdc++"
|
||||||
|
FF_LDFLAGS="-static-libgcc -static-libstdc++"
|
||||||
GIT_BRANCH="master"
|
GIT_BRANCH="master"
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
CONFIGURE="--enable-version3"
|
FF_CONFIGURE="--enable-version3"
|
||||||
CFLAGS=""
|
FF_CFLAGS="-static-libgcc -static-libstdc++"
|
||||||
LDFLAGS=""
|
FF_CXXFLAGS="-static-libgcc -static-libstdc++"
|
||||||
|
FF_LDFLAGS="-static-libgcc -static-libstdc++"
|
||||||
GIT_BRANCH="release/4.2"
|
GIT_BRANCH="release/4.2"
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
CONFIGURE="--enable-version3"
|
FF_CONFIGURE="--enable-version3"
|
||||||
CFLAGS=""
|
FF_CFLAGS="-static-libgcc -static-libstdc++"
|
||||||
LDFLAGS=""
|
FF_CXXFLAGS="-static-libgcc -static-libstdc++"
|
||||||
|
FF_LDFLAGS="-static-libgcc -static-libstdc++"
|
||||||
GIT_BRANCH="master"
|
GIT_BRANCH="master"
|
||||||
|
|
Loading…
Reference in a new issue