diff --git a/base-win64/Dockerfile b/base-win64/Dockerfile index eb59fc6..d235eff 100644 --- a/base-win64/Dockerfile +++ b/base-win64/Dockerfile @@ -5,3 +5,5 @@ ENV DEBIAN_FRONTEND noninteractive RUN \ apt-get -y install mingw-w64 && \ apt-get -y clean + +ENV FFBUILD_TARGET_FLAGS "--pkg-config=pkg-config --cross-prefix=x86_64-w64-mingw32- --arch=x86_64 --target-os=win32" diff --git a/base/Dockerfile b/base/Dockerfile index 721a254..958ed98 100644 --- a/base/Dockerfile +++ b/base/Dockerfile @@ -7,6 +7,3 @@ RUN \ 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 && \ apt-get -y clean - -RUN mkdir -p /opt/ffbuild/{lib,bin,include} -ENV FFBUILD_PREFIX /opt/ffbuild diff --git a/build.sh b/build.sh new file mode 100755 index 0000000..6300517 --- /dev/null +++ b/build.sh @@ -0,0 +1,58 @@ +#!/bin/bash +set -xe + +cd "$(dirname "$0")" + +if [[ $# -lt 1 || $# -gt 2 ]]; then + echo "Invalid Arguments" + exit -1 +fi + +TARGET="$1" +VARIANT="${2:-gpl}" +REPO="${GITHUB_REPOSITORY:-btbn/ffmpeg-builds}" +REPO="${REPO,,}" + +IMAGE="$REPO/$TARGET-$VARIANT:latest" + +get_output() { + ( + SELF="$1" + source $1 + ffbuild_enabled || exit 0 + ffbuild_$2 || exit -1 + ) +} + +CONFIGURE="" +CFLAGS="" +LDFLAGS="" + +for script in scripts.d/*.sh; do + CONFIGURE+="$(get_output $script configure)" + CFLAGS+="$(get_output $script cflags)" + LDFLAGS+="$(get_output $script ldflags)" +done + +if [[ $VARIANT == gpl ]]; then + VARIANT_FLAGS="--enable-gpl --enable-version3" +elif [[ $VARIANT == lgpl ]]; then + VARIANT_FLAGS="--enable-version3" +else + echo "Unknown variant" + exit -1 +fi + +BUILD_CONTAINER="ffbuild" + +docker rm "$BUILD_CONTAINER" 2>/dev/null || true +docker run -i --name "$BUILD_CONTAINER" "$IMAGE" bash -s <> Dockerfile echo >> Dockerfile } -REPO="${REPO,,}" - to_df "FROM $REPO/base-$TARGET:latest" to_df "ENV TARGET $TARGET" to_df "ENV VARIANT $VARIANT" to_df "ENV REPO $REPO" + to_df "ENV FFPREFIX /opt/ffbuild" +to_df "ENV PKG_CONFIG_LIBDIR /opt/ffbuild/lib/pkgconfig" for script in scripts.d/*.sh; do ( SELF="$script" source $script - ffbuild_relevant || exit 0 + ffbuild_enabled || exit 0 ffbuild_dockerstage || exit $? ) done diff --git a/makeimage.sh b/makeimage.sh new file mode 100755 index 0000000..49c2406 --- /dev/null +++ b/makeimage.sh @@ -0,0 +1,18 @@ +#!/bin/bash +set -e + +cd "$(dirname "$0")" + +if [[ $# -lt 1 || $# -gt 2 ]]; then + echo "Invalid Arguments" + exit -1 +fi + +TARGET="$1" +VARIANT="${2:-gpl}" +REPO="${GITHUB_REPOSITORY:-btbn/ffmpeg-builds}" +REPO="${REPO,,}" + +./generate.sh "$TARGET" "$VARIANT" + +exec docker build -t "$REPO/$TARGET-$VARIANT:latest" . diff --git a/scripts.d/50-x264.sh b/scripts.d/50-x264.sh index 9dca736..64c2bdd 100755 --- a/scripts.d/50-x264.sh +++ b/scripts.d/50-x264.sh @@ -3,7 +3,7 @@ X264_REPO="https://code.videolan.org/videolan/x264.git" X264_COMMIT="db0d417728460c647ed4a847222a535b00d3dbcb" -ffbuild_relevant() { +ffbuild_enabled() { [[ $VARIANT == gpl ]] || return -1 return 0 } @@ -34,3 +34,15 @@ ffbuild_dockerbuild() { popd rm -rf x264 } + +ffbuild_configure() { + echo --enable-libx264 +} + +ffbuild_cflags() { + return 0 +} + +ffbuild_ldflags() { + return 0 +}