parent
0e104d9662
commit
77b3030134
17 changed files with 123 additions and 19 deletions
26
images/base-win32/Dockerfile
Normal file
26
images/base-win32/Dockerfile
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
ARG GH_REPO=btbn/ffmpeg-builds
|
||||||
|
FROM docker.pkg.github.com/$GH_REPO/base:latest
|
||||||
|
|
||||||
|
ENV DEBIAN_FRONTEND noninteractive
|
||||||
|
|
||||||
|
RUN \
|
||||||
|
apt-get -y install mingw-w64 && \
|
||||||
|
apt-get -y clean && \
|
||||||
|
rm /usr/lib/gcc/*-w64-mingw32/*/libstdc++*.dll* && \
|
||||||
|
rm /usr/lib/gcc/*-w64-mingw32/*/libgcc_s* && \
|
||||||
|
rm /usr/lib/gcc/*-w64-mingw32/*/*.dll.a && \
|
||||||
|
rm /usr/*-w64-mingw32/lib/*.dll.a && \
|
||||||
|
mkdir /opt/ffbuild
|
||||||
|
|
||||||
|
ADD toolchain.cmake /toolchain.cmake
|
||||||
|
ADD cross.meson /cross.meson
|
||||||
|
|
||||||
|
ENV FFBUILD_TARGET_FLAGS="--pkg-config=pkg-config --cross-prefix=i686-w64-mingw32- --arch=i686 --target-os=mingw32" \
|
||||||
|
FFBUILD_TOOLCHAIN=i686-w64-mingw32 \
|
||||||
|
FFBUILD_CROSS_PREFIX=i686-w64-mingw32- \
|
||||||
|
FFBUILD_PREFIX=/opt/ffbuild \
|
||||||
|
FFBUILD_CMAKE_TOOLCHAIN=/toolchain.cmake \
|
||||||
|
PKG_CONFIG_LIBDIR=/opt/ffbuild/lib/pkgconfig \
|
||||||
|
CFLAGS="-static-libgcc -static-libstdc++ -I/opt/ffbuild/include -O2 -pipe -D_FORTIFY_SOURCE=2 -fstack-protector-strong" \
|
||||||
|
CXXFLAGS="-static-libgcc -static-libstdc++ -I/opt/ffbuild/include -O2 -pipe -D_FORTIFY_SOURCE=2 -fstack-protector-strong" \
|
||||||
|
LDFLAGS="-static-libgcc -static-libstdc++ -L/opt/ffbuild/lib -O2 -pipe -fstack-protector-strong"
|
18
images/base-win32/cross.meson
Normal file
18
images/base-win32/cross.meson
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
[binaries]
|
||||||
|
c = 'i686-w64-mingw32-gcc'
|
||||||
|
cpp = 'i686-w64-mingw32-g++'
|
||||||
|
ar = 'i686-w64-mingw32-ar'
|
||||||
|
strip = 'i686-w64-mingw32-strip'
|
||||||
|
windres = 'i686-w64-mingw32-windres'
|
||||||
|
exe_wrapper = ['wine']
|
||||||
|
|
||||||
|
[properties]
|
||||||
|
c_link_args = ['-static-libgcc']
|
||||||
|
cpp_link_args = ['-static-libgcc', '-static-libstdc++']
|
||||||
|
needs_exe_wrapper = true
|
||||||
|
|
||||||
|
[host_machine]
|
||||||
|
system = 'windows'
|
||||||
|
cpu_family = 'i686'
|
||||||
|
cpu = 'i686'
|
||||||
|
endian = 'little'
|
13
images/base-win32/toolchain.cmake
Normal file
13
images/base-win32/toolchain.cmake
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
set(CMAKE_SYSTEM_NAME Windows)
|
||||||
|
set(CMAKE_SYSTEM_PROCESSOR i686)
|
||||||
|
|
||||||
|
set(CMAKE_C_COMPILER i686-w64-mingw32-gcc)
|
||||||
|
set(CMAKE_CXX_COMPILER i686-w64-mingw32-g++)
|
||||||
|
set(CMAKE_RC_COMPILER i686-w64-mingw32-windres)
|
||||||
|
set(CMAKE_RANLIB i686-w64-mingw32-ranlib)
|
||||||
|
|
||||||
|
set(CMAKE_FIND_ROOT_PATH /usr/i686-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)
|
|
@ -26,11 +26,16 @@ ffbuild_dockerbuild() {
|
||||||
--prefix="$FFBUILD_PREFIX"
|
--prefix="$FFBUILD_PREFIX"
|
||||||
)
|
)
|
||||||
|
|
||||||
if [[ $TARGET == win* ]]; then
|
if [[ $TARGET == win64 ]]; then
|
||||||
myconf+=(
|
myconf+=(
|
||||||
--cross-compile-prefix="$FFBUILD_CROSS_PREFIX"
|
--cross-compile-prefix="$FFBUILD_CROSS_PREFIX"
|
||||||
mingw64
|
mingw64
|
||||||
)
|
)
|
||||||
|
elif [[ $TARGET == win32 ]]; then
|
||||||
|
myconf+=(
|
||||||
|
--cross-compile-prefix="$FFBUILD_CROSS_PREFIX"
|
||||||
|
mingw
|
||||||
|
)
|
||||||
else
|
else
|
||||||
echo "Unknown target"
|
echo "Unknown target"
|
||||||
return -1
|
return -1
|
||||||
|
|
|
@ -24,9 +24,9 @@ ffbuild_dockerbuild() {
|
||||||
--default-library=static
|
--default-library=static
|
||||||
)
|
)
|
||||||
|
|
||||||
if [[ $TARGET == win64 ]]; then
|
if [[ $TARGET == win* ]]; then
|
||||||
myconf+=(
|
myconf+=(
|
||||||
--cross-file=../package/crossfiles/x86_64-w64-mingw32.meson
|
--cross-file=/cross.meson
|
||||||
)
|
)
|
||||||
else
|
else
|
||||||
echo "Unknown target"
|
echo "Unknown target"
|
||||||
|
|
|
@ -26,11 +26,16 @@ ffbuild_dockerbuild() {
|
||||||
--prefix="$FFBUILD_PREFIX"
|
--prefix="$FFBUILD_PREFIX"
|
||||||
)
|
)
|
||||||
|
|
||||||
if [[ $TARGET == win* ]]; then
|
if [[ $TARGET == win64 ]]; then
|
||||||
myconf+=(
|
myconf+=(
|
||||||
--target=x86_64-win64-gcc
|
--target=x86_64-win64-gcc
|
||||||
)
|
)
|
||||||
export CROSS="$FFBUILD_CROSS_PREFIX"
|
export CROSS="$FFBUILD_CROSS_PREFIX"
|
||||||
|
elif [[ $TARGET == win32 ]]; then
|
||||||
|
myconf+=(
|
||||||
|
--target=x86-win32-gcc
|
||||||
|
)
|
||||||
|
export CROSS="$FFBUILD_CROSS_PREFIX"
|
||||||
else
|
else
|
||||||
echo "Unknown target"
|
echo "Unknown target"
|
||||||
return -1
|
return -1
|
||||||
|
|
|
@ -4,6 +4,7 @@ SVTAV1_REPO="https://github.com/OpenVisualCloud/SVT-AV1.git"
|
||||||
SVTAV1_COMMIT="0dc2297715861b78577b3790e361af74b6c4bfef"
|
SVTAV1_COMMIT="0dc2297715861b78577b3790e361af74b6c4bfef"
|
||||||
|
|
||||||
ffbuild_enabled() {
|
ffbuild_enabled() {
|
||||||
|
[[ $TARGET == win32 ]] && return -1
|
||||||
[[ $VARIANT == *4.3* ]] && return -1
|
[[ $VARIANT == *4.3* ]] && return -1
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,24 +18,25 @@ ffbuild_dockerbuild() {
|
||||||
cd x265
|
cd x265
|
||||||
git checkout "$X265_COMMIT"
|
git checkout "$X265_COMMIT"
|
||||||
|
|
||||||
mkdir 8bit 10bit 12bit
|
if [[ $TARGET != *32 ]]; then
|
||||||
|
mkdir 8bit 10bit 12bit
|
||||||
|
|
||||||
cd 12bit
|
cd 12bit
|
||||||
cmake -DCMAKE_TOOLCHAIN_FILE="$FFBUILD_CMAKE_TOOLCHAIN" -DCMAKE_BUILD_TYPE=Release -DHIGH_BIT_DEPTH=ON -DEXPORT_C_API=OFF -DENABLE_SHARED=OFF -DENABLE_CLI=OFF -DMAIN12=ON ../source || return -1
|
cmake -DCMAKE_TOOLCHAIN_FILE="$FFBUILD_CMAKE_TOOLCHAIN" -DCMAKE_BUILD_TYPE=Release -DHIGH_BIT_DEPTH=ON -DEXPORT_C_API=OFF -DENABLE_SHARED=OFF -DENABLE_CLI=OFF -DMAIN12=ON ../source
|
||||||
make -j$(nproc) || return -1
|
make -j$(nproc)
|
||||||
cp libx265.a ../8bit/libx265_main12.a
|
cp libx265.a ../8bit/libx265_main12.a
|
||||||
|
|
||||||
cd ../10bit
|
|
||||||
cmake -DCMAKE_TOOLCHAIN_FILE="$FFBUILD_CMAKE_TOOLCHAIN" -DCMAKE_BUILD_TYPE=Release -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
|
cd ../10bit
|
||||||
cmake -DCMAKE_TOOLCHAIN_FILE="$FFBUILD_CMAKE_TOOLCHAIN" -DCMAKE_BUILD_TYPE=Release -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
|
cmake -DCMAKE_TOOLCHAIN_FILE="$FFBUILD_CMAKE_TOOLCHAIN" -DCMAKE_BUILD_TYPE=Release -DHIGH_BIT_DEPTH=ON -DEXPORT_C_API=OFF -DENABLE_SHARED=OFF -DENABLE_CLI=OFF ../source
|
||||||
make -j$(nproc) || return -1
|
make -j$(nproc)
|
||||||
mv libx265.a libx265_main.a
|
cp libx265.a ../8bit/libx265_main10.a
|
||||||
|
|
||||||
${FFBUILD_CROSS_PREFIX}ar -M <<EOF
|
cd ../8bit
|
||||||
|
cmake -DCMAKE_TOOLCHAIN_FILE="$FFBUILD_CMAKE_TOOLCHAIN" -DCMAKE_BUILD_TYPE=Release -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
|
||||||
|
make -j$(nproc)
|
||||||
|
mv libx265.a libx265_main.a
|
||||||
|
|
||||||
|
${FFBUILD_CROSS_PREFIX}ar -M <<EOF
|
||||||
CREATE libx265.a
|
CREATE libx265.a
|
||||||
ADDLIB libx265_main.a
|
ADDLIB libx265_main.a
|
||||||
ADDLIB libx265_main10.a
|
ADDLIB libx265_main10.a
|
||||||
|
@ -43,6 +44,12 @@ ADDLIB libx265_main12.a
|
||||||
SAVE
|
SAVE
|
||||||
END
|
END
|
||||||
EOF
|
EOF
|
||||||
|
else
|
||||||
|
mkdir 8bit
|
||||||
|
cd 8bit
|
||||||
|
cmake -DCMAKE_TOOLCHAIN_FILE="$FFBUILD_CMAKE_TOOLCHAIN" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="$FFBUILD_PREFIX" -DENABLE_SHARED=OFF -DENABLE_CLI=OFF ../source
|
||||||
|
make -j$(nproc)
|
||||||
|
fi
|
||||||
|
|
||||||
make install || return -1
|
make install || return -1
|
||||||
|
|
||||||
|
|
|
@ -14,6 +14,11 @@ BASE_IMAGE="${REGISTRY}/${REPO}/base:latest"
|
||||||
TARGET_IMAGE="${REGISTRY}/${REPO}/base-${TARGET}:latest"
|
TARGET_IMAGE="${REGISTRY}/${REPO}/base-${TARGET}:latest"
|
||||||
IMAGE="${REGISTRY}/${REPO}/${TARGET}-${VARIANT}:latest"
|
IMAGE="${REGISTRY}/${REPO}/${TARGET}-${VARIANT}:latest"
|
||||||
|
|
||||||
|
if ! [[ -f "variants/${TARGET}-${VARIANT}.sh" ]]; then
|
||||||
|
echo "Invalid target/variant"
|
||||||
|
exit -1
|
||||||
|
fi
|
||||||
|
|
||||||
ffbuild_configure() {
|
ffbuild_configure() {
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
3
variants/win32-gpl-4.3-shared.sh
Normal file
3
variants/win32-gpl-4.3-shared.sh
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
#!/bin/bash
|
||||||
|
source "$(dirname "$BASH_SOURCE")"/win32-gpl-shared.sh
|
||||||
|
GIT_BRANCH="release/4.3"
|
3
variants/win32-gpl-4.3.sh
Normal file
3
variants/win32-gpl-4.3.sh
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
#!/bin/bash
|
||||||
|
source "$(dirname "$BASH_SOURCE")"/win32-gpl.sh
|
||||||
|
GIT_BRANCH="release/4.3"
|
3
variants/win32-gpl-shared.sh
Normal file
3
variants/win32-gpl-shared.sh
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
#!/bin/bash
|
||||||
|
source "$(dirname "$BASH_SOURCE")"/default-install-shared.sh
|
||||||
|
source "$(dirname "$BASH_SOURCE")"/defaults-gpl-shared.sh
|
3
variants/win32-gpl.sh
Normal file
3
variants/win32-gpl.sh
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
#!/bin/bash
|
||||||
|
source "$(dirname "$BASH_SOURCE")"/default-install.sh
|
||||||
|
source "$(dirname "$BASH_SOURCE")"/defaults-gpl.sh
|
3
variants/win32-lgpl-4.3-shared.sh
Normal file
3
variants/win32-lgpl-4.3-shared.sh
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
#!/bin/bash
|
||||||
|
source "$(dirname "$BASH_SOURCE")"/win32-lgpl-shared.sh
|
||||||
|
GIT_BRANCH="release/4.3"
|
3
variants/win32-lgpl-4.3.sh
Normal file
3
variants/win32-lgpl-4.3.sh
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
#!/bin/bash
|
||||||
|
source "$(dirname "$BASH_SOURCE")"/win32-lgpl.sh
|
||||||
|
GIT_BRANCH="release/4.3"
|
3
variants/win32-lgpl-shared.sh
Normal file
3
variants/win32-lgpl-shared.sh
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
#!/bin/bash
|
||||||
|
source "$(dirname "$BASH_SOURCE")"/default-install-shared.sh
|
||||||
|
source "$(dirname "$BASH_SOURCE")"/defaults-lgpl-shared.sh
|
3
variants/win32-lgpl.sh
Normal file
3
variants/win32-lgpl.sh
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
#!/bin/bash
|
||||||
|
source "$(dirname "$BASH_SOURCE")"/default-install.sh
|
||||||
|
source "$(dirname "$BASH_SOURCE")"/defaults-lgpl.sh
|
Loading…
Reference in a new issue