merge and update

This commit is contained in:
sudo-nautilus 2021-05-13 16:53:29 +05:30
commit 956e0957c7
60 changed files with 260 additions and 59 deletions

View file

@ -46,7 +46,7 @@ jobs:
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
target: [win32] target: [win64,linux64]
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v2 uses: actions/checkout@v2
@ -70,7 +70,7 @@ jobs:
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
target: [win32] target: [win64,linux64]
variant: [gpl,lgpl,gpl 4.4,lgpl 4.4,gpl-shared,lgpl-shared,gpl-shared 4.4,lgpl-shared 4.4] variant: [gpl,lgpl,gpl 4.4,lgpl 4.4,gpl-shared,lgpl-shared,gpl-shared 4.4,lgpl-shared 4.4]
steps: steps:
- name: Checkout - name: Checkout
@ -107,7 +107,7 @@ jobs:
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
target: [win32] target: [win64,linux64]
variant: [gpl,lgpl,gpl 4.4,lgpl 4.4,gpl-shared,lgpl-shared,gpl-shared 4.4,lgpl-shared 4.4] variant: [gpl,lgpl,gpl 4.4,lgpl 4.4,gpl-shared,lgpl-shared,gpl-shared 4.4,lgpl-shared 4.4]
steps: steps:
- name: Checkout - name: Checkout

View file

@ -14,7 +14,7 @@ jobs:
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
target: [win32] target: [win64,linux64]
variant: [gpl,lgpl,gpl 4.4,lgpl 4.4,gpl-shared,lgpl-shared,gpl-shared 4.4,lgpl-shared 4.4] variant: [gpl,lgpl,gpl 4.4,lgpl 4.4,gpl-shared,lgpl-shared,gpl-shared 4.4,lgpl-shared 4.4]
steps: steps:
- name: Checkout - name: Checkout

View file

@ -6,6 +6,9 @@
Static 32 bit Windows Builds of ffmpeg master and latest release branch. This repository is forked and well maintained. For static 64 bit Windows FFmpeg builds, you can check [BtbN's repository](https://github.com/BtbN/FFmpeg-Builds). Go to Wiki tab or go to releases for downloads. Static 32 bit Windows Builds of ffmpeg master and latest release branch. This repository is forked and well maintained. For static 64 bit Windows FFmpeg builds, you can check [BtbN's repository](https://github.com/BtbN/FFmpeg-Builds). Go to Wiki tab or go to releases for downloads.
EXPERIMENTAL Linux-Builds. Do not expect everything to work on them, specially anything that involved loading dynamic libs at runtime.
Shared Linux builds come without the programs (hopefully just for now), since they won't run without musl.
## Auto-Builds ## Auto-Builds
Builds run daily at 12:00 UTC and are automatically released on success. Builds run daily at 12:00 UTC and are automatically released on success.

View file

@ -40,7 +40,7 @@ FF_LIBS="$(xargs <<< "$FF_LIBS")"
TESTFILE="uidtestfile" TESTFILE="uidtestfile"
rm -f "$TESTFILE" rm -f "$TESTFILE"
docker run --rm -v "$PWD:/uidtestdir" "$IMAGE" /usr/bin/touch "/uidtestdir/$TESTFILE" docker run --rm -v "$PWD:/uidtestdir" "$IMAGE" touch "/uidtestdir/$TESTFILE"
DOCKERUID="$(stat -c "%u" "$TESTFILE")" DOCKERUID="$(stat -c "%u" "$TESTFILE")"
rm -f "$TESTFILE" rm -f "$TESTFILE"
[[ "$DOCKERUID" != "$(id -u)" ]] && UIDARGS=( -u "$(id -u):$(id -g)" ) || UIDARGS=() [[ "$DOCKERUID" != "$(id -u)" ]] && UIDARGS=( -u "$(id -u):$(id -g)" ) || UIDARGS=()
@ -59,7 +59,7 @@ docker run --rm -i "${UIDARGS[@]}" -v $PWD/ffbuild:/ffbuild "$IMAGE" bash -s <<E
./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" --extra-libs="$FF_LIBS" ./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" --extra-libs="$FF_LIBS"
make -j\$(nproc) make -j\$(nproc)
make install make install install-doc
EOF EOF
mkdir -p artifacts mkdir -p artifacts
@ -70,12 +70,18 @@ mkdir -p "ffbuild/pkgroot/$BUILD_NAME"
package_variant ffbuild/prefix "ffbuild/pkgroot/$BUILD_NAME" package_variant ffbuild/prefix "ffbuild/pkgroot/$BUILD_NAME"
cd ffbuild/pkgroot cd ffbuild/pkgroot
zip -9 -r "${ARTIFACTS_PATH}/${BUILD_NAME}.zip" "$BUILD_NAME" if [[ "${TARGET}" == win* ]]; then
OUTPUT_FNAME="${BUILD_NAME}.zip"
zip -9 -r "${ARTIFACTS_PATH}/${OUTPUT_FNAME}" "$BUILD_NAME"
else
OUTPUT_FNAME="${BUILD_NAME}.tar.xz"
tar cJf "${ARTIFACTS_PATH}/${OUTPUT_FNAME}" "$BUILD_NAME"
fi
cd - cd -
rm -rf ffbuild rm -rf ffbuild
if [[ -n "$GITHUB_ACTIONS" ]]; then if [[ -n "$GITHUB_ACTIONS" ]]; then
echo "::set-output name=build_name::${BUILD_NAME}" echo "::set-output name=build_name::${BUILD_NAME}"
echo "${BUILD_NAME}.zip" > "${ARTIFACTS_PATH}/${TARGET}-${VARIANT}${ADDINS_STR:+-}${ADDINS_STR}.txt" echo "${OUTPUT_FNAME}" > "${ARTIFACTS_PATH}/${TARGET}-${VARIANT}${ADDINS_STR:+-}${ADDINS_STR}.txt"
fi fi

View file

@ -0,0 +1,31 @@
FROM alpine:edge
ENV CARGO_HOME="/opt/cargo" PATH="/opt/cargo/bin:${PATH}"
RUN \
apk add --no-cache \
yasm nasm diffutils xxd pkgconf git ca-certificates curl wget unzip subversion autoconf automake libtool perl make cmake clang texinfo gperf gettext gettext-dev gettext-static itstool ragel musl-dev openssl-dev zlib-dev bzip2-static gtk-doc gobject-introspection gawk meson samurai p7zip python3 \
binutils gcc g++ gfortran \
rust cargo && \
ln -s python3 /usr/bin/python && \
cargo install cargo-c && rm -rf "${CARGO_HOME}"/{registry,git} && \
git config --global user.email "builder@localhost" && \
git config --global user.name "Builder" && \
mkdir /opt/ffbuild
ADD run_stage.sh /usr/bin/run_stage
ADD git-mini-clone.sh /usr/bin/git-mini-clone
ADD check-wget.sh /usr/bin/check-wget
ADD toolchain.cmake /toolchain.cmake
ADD cross.meson /cross.meson
ENV FFBUILD_TARGET_FLAGS="" \
FFBUILD_TOOLCHAIN=x86_64-alpine-linux-musl \
FFBUILD_CROSS_PREFIX="" \
FFBUILD_RUST_TARGET="" \
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"

View file

@ -0,0 +1,10 @@
#!/bin/bash
set -xe
FNAME="$1"
URL="$2"
SHA512="$3"
SHAFILE="${FNAME}.sha512"
wget -O "${FNAME}" "${URL}"
trap "rm -f ${SHAFILE}" EXIT
echo "${SHA512} ${FNAME}" > "${SHAFILE}"
sha512sum -c "${SHAFILE}"

View file

@ -0,0 +1,15 @@
[binaries]
c = 'x86_64-alpine-linux-musl-gcc'
cpp = x86_64-alpine-linux-musl-g++'
ar = 'ar'
strip = 'strip'
[properties]
c_link_args = ['-static-libgcc', '-L/opt/ffbuild/lib', '-O2', '-pipe', '-fstack-protector-strong']
cpp_link_args = ['-static-libgcc', '-static-libstdc++', '-L/opt/ffbuild/lib', '-O2', '-pipe', '-fstack-protector-strong']
[host_machine]
system = 'linux'
cpu_family = 'x86_64'
cpu = 'x86_64'
endian = 'little'

View file

@ -0,0 +1,10 @@
#!/bin/bash
set -xe
REPO="$1"
REF="$2"
DEST="$3"
git init "$DEST"
git -C "$DEST" remote add origin "$REPO"
git -C "$DEST" fetch --depth=1 origin "$REF"
git -C "$DEST" config advice.detachedHead false
git -C "$DEST" checkout FETCH_HEAD

View file

@ -0,0 +1,7 @@
#!/bin/bash
set -xe
mkdir -p /stage
source "$1"
cd /stage
ffbuild_dockerbuild
rm -rf /stage "$FFBUILD_PREFIX"/bin

View file

@ -0,0 +1,12 @@
set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR x86_64)
set(CMAKE_C_COMPILER x86_64-alpine-linux-musl-gcc)
set(CMAKE_CXX_COMPILER x86_64-alpine-linux-musl-g++)
set(CMAKE_RANLIB ranlib)
set(CMAKE_FIND_ROOT_PATH /usr/x86_64-alpine-linux-musl /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)

View file

@ -5,7 +5,10 @@ source util/vars.sh
export DOCKER_BUILDKIT=1 export DOCKER_BUILDKIT=1
docker build --tag "$BASE_IMAGE" images/base if grep "FROM.*base.*" "images/base-${TARGET}/Dockerfile" >/dev/null 2>&1; then
docker build --tag "$BASE_IMAGE" images/base
fi
docker build --build-arg GH_REPO="$REPO" --tag "$TARGET_IMAGE" "images/base-${TARGET}" docker build --build-arg GH_REPO="$REPO" --tag "$TARGET_IMAGE" "images/base-${TARGET}"
./generate.sh "$TARGET" "$VARIANT" "${ADDINS[@]}" ./generate.sh "$TARGET" "$VARIANT" "${ADDINS[@]}"

View file

@ -8,8 +8,6 @@ ffbuild_enabled() {
} }
ffbuild_dockerbuild() { ffbuild_dockerbuild() {
mkdir iconv
cd iconv
wget -O iconv.tar.gz "$ICONV_SRC" wget -O iconv.tar.gz "$ICONV_SRC"
tar xaf iconv.tar.gz tar xaf iconv.tar.gz
rm iconv.tar.gz rm iconv.tar.gz
@ -27,7 +25,7 @@ ffbuild_dockerbuild() {
myconf+=( myconf+=(
--host="$FFBUILD_TOOLCHAIN" --host="$FFBUILD_TOOLCHAIN"
) )
else elif [[ $TARGET != linux* ]]; then
echo "Unknown target" echo "Unknown target"
return -1 return -1
fi fi

View file

@ -23,7 +23,7 @@ ffbuild_dockerbuild() {
myconf+=( myconf+=(
--host="$FFBUILD_TOOLCHAIN" --host="$FFBUILD_TOOLCHAIN"
) )
else elif [[ $TARGET != linux* ]]; then
echo "Unknown target" echo "Unknown target"
return -1 return -1
fi fi

View file

@ -23,7 +23,7 @@ ffbuild_dockerbuild() {
if [[ $TARGET == win* ]]; then if [[ $TARGET == win* ]]; then
export CC="${FFBUILD_CROSS_PREFIX}gcc" export CC="${FFBUILD_CROSS_PREFIX}gcc"
export AR="${FFBUILD_CROSS_PREFIX}ar" export AR="${FFBUILD_CROSS_PREFIX}ar"
else elif [[ $TARGET != linux* ]]; then
echo "Unknown target" echo "Unknown target"
return -1 return -1
fi fi

View file

@ -37,7 +37,7 @@ ffbuild_dockerbuild() {
myconf+=( myconf+=(
--host="$FFBUILD_TOOLCHAIN" --host="$FFBUILD_TOOLCHAIN"
) )
else elif [[ $TARGET != linux* ]]; then
echo "Unknown target" echo "Unknown target"
return -1 return -1
fi fi

View file

@ -25,7 +25,7 @@ ffbuild_dockerbuild() {
myconf+=( myconf+=(
--host="$FFBUILD_TOOLCHAIN" --host="$FFBUILD_TOOLCHAIN"
) )
else elif [[ $TARGET != linux* ]]; then
echo "Unknown target" echo "Unknown target"
return -1 return -1
fi fi

View file

@ -26,7 +26,7 @@ ffbuild_dockerbuild() {
myconf+=( myconf+=(
--cross-file=/cross.meson --cross-file=/cross.meson
) )
else elif [[ $TARGET != linux* ]]; then
echo "Unknown target" echo "Unknown target"
return -1 return -1
fi fi

View file

@ -7,9 +7,6 @@ ffbuild_enabled() {
} }
ffbuild_dockerbuild() { ffbuild_dockerbuild() {
mkdir gmp
cd gmp
wget "$GMP_SRC" -O gmp.tar.xz wget "$GMP_SRC" -O gmp.tar.xz
tar xaf gmp.tar.xz tar xaf gmp.tar.xz
rm gmp.tar.xz rm gmp.tar.xz
@ -27,7 +24,7 @@ ffbuild_dockerbuild() {
myconf+=( myconf+=(
--host="$FFBUILD_TOOLCHAIN" --host="$FFBUILD_TOOLCHAIN"
) )
else elif [[ $TARGET != linux* ]]; then
echo "Unknown target" echo "Unknown target"
return -1 return -1
fi fi

View file

@ -24,7 +24,7 @@ ffbuild_dockerbuild() {
myconf+=( myconf+=(
--host="$FFBUILD_TOOLCHAIN" --host="$FFBUILD_TOOLCHAIN"
) )
else elif [[ $TARGET != linux* ]]; then
echo "Unknown target" echo "Unknown target"
return -1 return -1
fi fi

View file

@ -31,6 +31,10 @@ ffbuild_dockerbuild() {
--cross-compile-prefix="$FFBUILD_CROSS_PREFIX" --cross-compile-prefix="$FFBUILD_CROSS_PREFIX"
mingw mingw
) )
elif [[ $TARGET == linux64 ]]; then
myconf+=(
linux-x86_64
)
else else
echo "Unknown target" echo "Unknown target"
return -1 return -1

View file

@ -26,7 +26,7 @@ ffbuild_dockerbuild() {
myconf+=( myconf+=(
--host="$FFBUILD_TOOLCHAIN" --host="$FFBUILD_TOOLCHAIN"
) )
else elif [[ $TARGET != linux* ]]; then
echo "Unknown target" echo "Unknown target"
return -1 return -1
fi fi

View file

@ -28,7 +28,7 @@ ffbuild_dockerbuild() {
myconf+=( myconf+=(
--host="$FFBUILD_TOOLCHAIN" --host="$FFBUILD_TOOLCHAIN"
) )
else elif [[ $TARGET != linux* ]]; then
echo "Unknown target" echo "Unknown target"
return -1 return -1
fi fi
@ -36,6 +36,8 @@ ffbuild_dockerbuild() {
./configure "${myconf[@]}" ./configure "${myconf[@]}"
make -j$(nproc) make -j$(nproc)
make install make install
sed -i 's/Libs.private:/Libs.private: -lintl/' "$FFBUILD_PREFIX"/lib/pkgconfig/fontconfig.pc
} }
ffbuild_configure() { ffbuild_configure() {

View file

@ -22,7 +22,7 @@ ffbuild_dockerbuild() {
myconf+=( myconf+=(
--host="$FFBUILD_TOOLCHAIN" --host="$FFBUILD_TOOLCHAIN"
) )
else elif [[ $TARGET != linux* ]]; then
echo "Unknown target" echo "Unknown target"
return -1 return -1
fi fi

View file

@ -24,7 +24,7 @@ ffbuild_dockerbuild() {
myconf+=( myconf+=(
--host="$FFBUILD_TOOLCHAIN" --host="$FFBUILD_TOOLCHAIN"
) )
else elif [[ $TARGET != linux* ]]; then
echo "Unknown target" echo "Unknown target"
return -1 return -1
fi fi

View file

@ -24,7 +24,7 @@ ffbuild_dockerbuild() {
myconf+=( myconf+=(
--host="$FFBUILD_TOOLCHAIN" --host="$FFBUILD_TOOLCHAIN"
) )
else elif [[ $TARGET != linux* ]]; then
echo "Unknown target" echo "Unknown target"
return -1 return -1
fi fi

View file

@ -31,7 +31,7 @@ ffbuild_dockerbuild() {
myconf+=( myconf+=(
--cross-file=/cross.meson --cross-file=/cross.meson
) )
else elif [[ $TARGET != linux* ]]; then
echo "Unknown target" echo "Unknown target"
return -1 return -1
fi fi

View file

@ -4,6 +4,9 @@ LOADER_REPO="https://github.com/KhronosGroup/Vulkan-Loader.git"
LOADER_COMMIT="7ea01c139ffc7c33cd12bd258c1bc8bf530c6d2d" LOADER_COMMIT="7ea01c139ffc7c33cd12bd258c1bc8bf530c6d2d"
ffbuild_enabled() { ffbuild_enabled() {
# The various graphics systems(xcb, xlib, wayland, ...) need figured out first
[[ $TARGET == linux* ]] && return -1
return 0 return 0
} }

View file

@ -23,7 +23,7 @@ ffbuild_dockerbuild() {
myconf+=( myconf+=(
--cross-file=/cross.meson --cross-file=/cross.meson
) )
else elif [[ $TARGET != linux* ]]; then
echo "Unknown target" echo "Unknown target"
return -1 return -1
fi fi

View file

@ -26,7 +26,7 @@ ffbuild_dockerbuild() {
--host="$FFBUILD_TOOLCHAIN" --host="$FFBUILD_TOOLCHAIN"
--cross-prefix="$FFBUILD_CROSS_PREFIX" --cross-prefix="$FFBUILD_CROSS_PREFIX"
) )
else elif [[ $TARGET != linux* ]]; then
echo "Unknown target" echo "Unknown target"
return -1 return -1
fi fi

View file

@ -4,6 +4,9 @@ GLSLANG_REPO="https://github.com/KhronosGroup/glslang.git"
GLSLANG_COMMIT="5878bcb17e43bf22cecaf6095900a33ff7f53445" GLSLANG_COMMIT="5878bcb17e43bf22cecaf6095900a33ff7f53445"
ffbuild_enabled() { ffbuild_enabled() {
# Pointless without Vulkan
[[ $TARGET == linux* ]] && return -1
return 0 return 0
} }

View file

@ -24,7 +24,7 @@ ffbuild_dockerbuild() {
myconf+=( myconf+=(
--host="$FFBUILD_TOOLCHAIN" --host="$FFBUILD_TOOLCHAIN"
) )
else elif [[ $TARGET != linux* ]]; then
echo "Unknown target" echo "Unknown target"
return -1 return -1
fi fi

View file

@ -31,7 +31,7 @@ ffbuild_dockerbuild() {
myconf+=( myconf+=(
--host="$FFBUILD_TOOLCHAIN" --host="$FFBUILD_TOOLCHAIN"
) )
else elif [[ $TARGET != linux* ]]; then
echo "Unknown target" echo "Unknown target"
return -1 return -1
fi fi

View file

@ -28,7 +28,7 @@ ffbuild_dockerbuild() {
myconf+=( myconf+=(
--host="$FFBUILD_TOOLCHAIN" --host="$FFBUILD_TOOLCHAIN"
) )
else elif [[ $TARGET != linux* ]]; then
echo "Unknown target" echo "Unknown target"
return -1 return -1
fi fi

View file

@ -24,7 +24,7 @@ ffbuild_dockerbuild() {
myconf+=( myconf+=(
--host="$FFBUILD_TOOLCHAIN" --host="$FFBUILD_TOOLCHAIN"
) )
else elif [[ $TARGET != linux* ]]; then
echo "Unknown target" echo "Unknown target"
return -1 return -1
fi fi

View file

@ -29,7 +29,7 @@ ffbuild_dockerbuild() {
myconf+=( myconf+=(
--host="$FFBUILD_TOOLCHAIN" --host="$FFBUILD_TOOLCHAIN"
) )
else elif [[ $TARGET != linux* ]]; then
echo "Unknown target" echo "Unknown target"
return -1 return -1
fi fi

View file

@ -32,7 +32,7 @@ ffbuild_dockerbuild() {
--target=x86-win32-gcc --target=x86-win32-gcc
) )
export CROSS="$FFBUILD_CROSS_PREFIX" export CROSS="$FFBUILD_CROSS_PREFIX"
else elif [[ $TARGET != linux* ]]; then
echo "Unknown target" echo "Unknown target"
return -1 return -1
fi fi

View file

@ -33,7 +33,7 @@ ffbuild_dockerbuild() {
myconf+=( myconf+=(
--host="$FFBUILD_TOOLCHAIN" --host="$FFBUILD_TOOLCHAIN"
) )
else elif [[ $TARGET != linux* ]]; then
echo "Unknown target" echo "Unknown target"
return -1 return -1
fi fi

View file

@ -24,7 +24,7 @@ ffbuild_dockerbuild() {
myconf+=( myconf+=(
--host="$FFBUILD_TOOLCHAIN" --host="$FFBUILD_TOOLCHAIN"
) )
else elif [[ $TARGET != linux* ]]; then
echo "Unknown target" echo "Unknown target"
return -1 return -1
fi fi

View file

@ -30,7 +30,7 @@ ffbuild_dockerbuild() {
myconf+=( myconf+=(
--host="$FFBUILD_TOOLCHAIN" --host="$FFBUILD_TOOLCHAIN"
) )
else elif [[ $TARGET != linux* ]]; then
echo "Unknown target" echo "Unknown target"
return -1 return -1
fi fi

View file

@ -12,12 +12,20 @@ ffbuild_dockerbuild() {
git-mini-clone "$RAV1E_REPO" "$RAV1E_COMMIT" rav1e git-mini-clone "$RAV1E_REPO" "$RAV1E_COMMIT" rav1e
cd rav1e cd rav1e
cargo cinstall \ local myconf=(
--target="$FFBUILD_RUST_TARGET" \
--prefix="$FFBUILD_PREFIX" \ --prefix="$FFBUILD_PREFIX" \
--library-type=staticlib \ --library-type=staticlib \
--crt-static \ --crt-static \
--release --release
)
if [[ -n "$FFBUILD_RUST_TARGET" ]]; then
myconf+=(
--target="$FFBUILD_RUST_TARGET"
)
fi
cargo cinstall "${myconf[@]}"
} }
ffbuild_configure() { ffbuild_configure() {

View file

@ -31,7 +31,7 @@ ffbuild_dockerbuild() {
myconf+=( myconf+=(
--cross-file=/cross.meson --cross-file=/cross.meson
) )
else elif [[ $TARGET != linux* ]]; then
echo "Unknown target" echo "Unknown target"
return -1 return -1
fi fi

View file

@ -27,7 +27,7 @@ ffbuild_dockerbuild() {
myconf+=( myconf+=(
--host="$FFBUILD_TOOLCHAIN" --host="$FFBUILD_TOOLCHAIN"
) )
else elif [[ $TARGET != linux* ]]; then
echo "Unknown target" echo "Unknown target"
return -1 return -1
fi fi

View file

@ -14,7 +14,13 @@ ffbuild_dockerbuild() {
mkdir build && cd build mkdir build && cd build
cmake -DCMAKE_TOOLCHAIN_FILE="$FFBUILD_CMAKE_TOOLCHAIN" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="$FFBUILD_PREFIX" -DBUILD_TESTS=OFF -DBUILD_EXAMPLES=OFF -DBUILD_SHARED_LIBS=OFF .. if [[ $VARIANT == *shared* && $TARGET == linux* ]]; then
USE_OMP="OFF"
else
USE_OMP="ON"
fi
cmake -DCMAKE_TOOLCHAIN_FILE="$FFBUILD_CMAKE_TOOLCHAIN" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="$FFBUILD_PREFIX" -DWITH_OPENMP="$USE_OMP" -DBUILD_TESTS=OFF -DBUILD_EXAMPLES=OFF -DBUILD_SHARED_LIBS=OFF ..
make -j$(nproc) make -j$(nproc)
make install make install
} }
@ -32,5 +38,5 @@ ffbuild_ldflags() {
} }
ffbuild_libs() { ffbuild_libs() {
echo -lgomp [[ $VARIANT == *shared* && $TARGET == linux* ]] || echo -lgomp
} }

View file

@ -26,7 +26,7 @@ ffbuild_dockerbuild() {
myconf+=( myconf+=(
--host="$FFBUILD_TOOLCHAIN" --host="$FFBUILD_TOOLCHAIN"
) )
else elif [[ $TARGET != linux* ]]; then
echo "Unknown target" echo "Unknown target"
return -1 return -1
fi fi

View file

@ -15,7 +15,13 @@ ffbuild_dockerbuild() {
mkdir build && cd build mkdir build && cd build
cmake -DCMAKE_TOOLCHAIN_FILE="$FFBUILD_CMAKE_TOOLCHAIN" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="$FFBUILD_PREFIX" -DBUILD_SHARED_LIBS=OFF .. if [[ $VARIANT == *shared* && $TARGET == linux* ]]; then
USE_OMP="OFF"
else
USE_OMP="ON"
fi
cmake -DCMAKE_TOOLCHAIN_FILE="$FFBUILD_CMAKE_TOOLCHAIN" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="$FFBUILD_PREFIX" -DBUILD_SHARED_LIBS=OFF -DUSE_OMP="$USE_OMP" ..
make -j$(nproc) make -j$(nproc)
make install make install
} }

View file

@ -26,7 +26,7 @@ ffbuild_dockerbuild() {
--host="$FFBUILD_TOOLCHAIN" --host="$FFBUILD_TOOLCHAIN"
--cross-prefix="$FFBUILD_CROSS_PREFIX" --cross-prefix="$FFBUILD_CROSS_PREFIX"
) )
else elif [[ $TARGET != linux* ]]; then
echo "Unknown target" echo "Unknown target"
return -1 return -1
fi fi

View file

@ -33,7 +33,7 @@ ffbuild_dockerbuild() {
--host="$FFBUILD_TOOLCHAIN" --host="$FFBUILD_TOOLCHAIN"
--cross-prefix="$FFBUILD_CROSS_PREFIX" --cross-prefix="$FFBUILD_CROSS_PREFIX"
) )
else elif [[ $TARGET != linux* ]]; then
echo "Unknown target" echo "Unknown target"
return -1 return -1
fi fi

View file

@ -33,7 +33,7 @@ ffbuild_dockerbuild() {
myconf+=( myconf+=(
--host="$FFBUILD_TOOLCHAIN" --host="$FFBUILD_TOOLCHAIN"
) )
else elif [[ $TARGET != linux* ]]; then
echo "Unknown target" echo "Unknown target"
return -1 return -1
fi fi
@ -42,8 +42,12 @@ ffbuild_dockerbuild() {
make -j$(nproc) make -j$(nproc)
make install make install
if [[ $TARGET == win* ]]; then
rm "$FFBUILD_PREFIX"/{bin/xvidcore.dll,lib/xvidcore.dll.a} rm "$FFBUILD_PREFIX"/{bin/xvidcore.dll,lib/xvidcore.dll.a}
mv "$FFBUILD_PREFIX"/lib/{,lib}xvidcore.a mv "$FFBUILD_PREFIX"/lib/{,lib}xvidcore.a
elif [[ $TARGET == linux* ]]; then
rm "$FFBUILD_PREFIX"/lib/libxvidcore.so*
fi
} }
ffbuild_configure() { ffbuild_configure() {

View file

@ -1,7 +1,7 @@
#!/bin/bash #!/bin/bash
ZIMG_REPO="https://github.com/sekrit-twc/zimg.git" ZIMG_REPO="https://github.com/sekrit-twc/zimg.git"
ZIMG_COMMIT="c0d9c49ec157fc0708129a2bb6ca8906e85eb0f0" ZIMG_COMMIT="c8153de9aa33bf4a8b47678986e34662a532c05e"
ffbuild_enabled() { ffbuild_enabled() {
return 0 return 0
@ -17,13 +17,14 @@ ffbuild_dockerbuild() {
--prefix="$FFBUILD_PREFIX" --prefix="$FFBUILD_PREFIX"
--disable-shared --disable-shared
--enable-static --enable-static
--with-pic
) )
if [[ $TARGET == win* ]]; then if [[ $TARGET == win* ]]; then
myconf+=( myconf+=(
--host="$FFBUILD_TOOLCHAIN" --host="$FFBUILD_TOOLCHAIN"
) )
else elif [[ $TARGET != linux* ]]; then
echo "Unknown target" echo "Unknown target"
return -1 return -1
fi fi

42
scripts.d/99-staticify.sh Executable file
View file

@ -0,0 +1,42 @@
#!/bin/bash
ffbuild_enabled() {
[[ $TARGET == linux* ]]
}
ffbuild_dockerfinal() {
to_df "RUN find /lib /usr/lib -maxdepth 1 -and -type l -and -name '*.so' -delete"
}
ffbuild_dockerlayer() {
return 0
}
ffbuild_dockerstage() {
return 0
}
ffbuild_dockerbuild() {
return 0
}
ffbuild_ldflags() {
if [[ $VARIANT == *shared* ]]; then
#if [[ $TARGET == *64* ]]; then
# echo "-Wl,--dynamic-linker=/lib64/ld-linux-x86-64.so.2"
#else
# echo "-Wl,--dynamic-linker=/lib/ld-linux.so.2"
#fi
return 0
else
echo "-pie -fPIE -static"
fi
}
ffbuild_configure() {
# Any dynamic executables linked against musl need its dynamic loader to run
# Thus it's impossible to build both the libraries and the programs, since
# with shared libs, the programs need to be dynamic, and in turn needs the musl
# dynamic loader at runtime.
[[ $VARIANT == *shared* ]] && echo --disable-programs
}

View file

@ -0,0 +1,18 @@
#!/bin/bash
package_variant() {
IN="$1"
OUT="$2"
# mkdir -p "$OUT"/bin
# cp "$IN"/bin/* "$OUT"/bin
mkdir -p "$OUT"/lib
cp -a "$IN"/lib/*.so* "$OUT"/lib
mkdir -p "$OUT"/include
cp -r "$IN"/include/* "$OUT"/include
mkdir -p "$OUT"/doc
cp -r "$IN"/share/doc/ffmpeg/* "$OUT"/doc
}

View file

@ -0,0 +1,3 @@
#!/bin/bash
source "$(dirname "$BASH_SOURCE")"/linux-install-shared.sh
source "$(dirname "$BASH_SOURCE")"/defaults-gpl-shared.sh

3
variants/linux64-gpl.sh Normal file
View file

@ -0,0 +1,3 @@
#!/bin/bash
source "$(dirname "$BASH_SOURCE")"/default-install.sh
source "$(dirname "$BASH_SOURCE")"/defaults-gpl.sh

View file

@ -0,0 +1,3 @@
#!/bin/bash
source "$(dirname "$BASH_SOURCE")"/linux-install-shared.sh
source "$(dirname "$BASH_SOURCE")"/defaults-lgpl-shared.sh

3
variants/linux64-lgpl.sh Normal file
View file

@ -0,0 +1,3 @@
#!/bin/bash
source "$(dirname "$BASH_SOURCE")"/default-install.sh
source "$(dirname "$BASH_SOURCE")"/defaults-lgpl.sh

View file

@ -1,3 +1,3 @@
#!/bin/bash #!/bin/bash
source "$(dirname "$BASH_SOURCE")"/default-install-shared.sh source "$(dirname "$BASH_SOURCE")"/windows-install-shared.sh
source "$(dirname "$BASH_SOURCE")"/defaults-gpl-shared.sh source "$(dirname "$BASH_SOURCE")"/defaults-gpl-shared.sh

View file

@ -1,3 +1,3 @@
#!/bin/bash #!/bin/bash
source "$(dirname "$BASH_SOURCE")"/default-install-shared.sh source "$(dirname "$BASH_SOURCE")"/windows-install-shared.sh
source "$(dirname "$BASH_SOURCE")"/defaults-lgpl-shared.sh source "$(dirname "$BASH_SOURCE")"/defaults-lgpl-shared.sh

View file

@ -1,3 +1,3 @@
#!/bin/bash #!/bin/bash
source "$(dirname "$BASH_SOURCE")"/default-install-shared.sh source "$(dirname "$BASH_SOURCE")"/windows-install-shared.sh
source "$(dirname "$BASH_SOURCE")"/defaults-gpl-shared.sh source "$(dirname "$BASH_SOURCE")"/defaults-gpl-shared.sh

View file

@ -1,3 +1,3 @@
#!/bin/bash #!/bin/bash
source "$(dirname "$BASH_SOURCE")"/default-install-shared.sh source "$(dirname "$BASH_SOURCE")"/windows-install-shared.sh
source "$(dirname "$BASH_SOURCE")"/defaults-lgpl-shared.sh source "$(dirname "$BASH_SOURCE")"/defaults-lgpl-shared.sh

View file

@ -14,6 +14,6 @@ package_variant() {
mkdir -p "$OUT"/include mkdir -p "$OUT"/include
cp -r "$IN"/include/* "$OUT"/include cp -r "$IN"/include/* "$OUT"/include
mkdir -p "$OUT/doc" mkdir -p "$OUT"/doc
cp -r "$IN"/share/doc/ffmpeg/* "$OUT"/doc cp -r "$IN"/share/doc/ffmpeg/* "$OUT"/doc
} }