diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a66ecc4..971260b 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -5,39 +5,71 @@ on: paths-ignore: - '**.md' - 'LICENSE' - repository_dispatch: - types: [build] + workflow_dispatch: + inputs: + doRelease: + description: 'Publish new release' + type: boolean + default: false + required: false + buildOnly: + description: 'Only build ffmpeg' + type: boolean + default: false + required: false schedule: - cron: '0 12 * * *' env: DOCKER_BUILDKIT: 1 + HAVE_CLEANUP_PAT: ${{ secrets.CLEANUP_PAT != '' }} jobs: + pre_check: + name: Pre Checks + if: ${{ github.event.inputs.buildOnly != 'true' }} + runs-on: ubuntu-latest + steps: + - name: Repo Check + run: | + if [[ "$GITHUB_REPOSITORY" != "BtbN/FFmpeg-Builds" ]]; then + echo "When forking this repository to make your own builds, you have to adjust this check." + echo "When doing so make sure to randomize the scheduled cron time above, in order to spread out the various build times as much as possible." + echo "This has been put in place due to the enormous amounts of traffic hundreds/thousands of parallel builds can cause on external infrastructure." + exit 1 + fi + exit 0 build_base: name: Build base image + if: ${{ github.event.inputs.buildOnly != 'true' }} + needs: pre_check runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Install buildx - uses: docker/setup-buildx-action@v1 + uses: docker/setup-buildx-action@v2 with: config: .github/buildkit.toml - driver-opts: image=moby/buildkit:v0.9.1 - name: Login to Docker - uses: docker/login-action@v1 + uses: docker/login-action@v2 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ github.token }} - name: Image Name id: imagename - run: echo "::set-output name=name::ghcr.io/${GITHUB_REPOSITORY,,}/base" + run: | + IMG="${GITHUB_REPOSITORY,,}/base" + DLIMG="${GITHUB_REPOSITORY,,}/dl_cache" + echo "name=ghcr.io/${IMG/ /-}" >> $GITHUB_OUTPUT + echo "rawname=${IMG/ /-}" >> $GITHUB_OUTPUT + echo "dlname=ghcr.io/${DLIMG/ /-}" >> $GITHUB_OUTPUT + echo "dlrawname=${DLIMG/ /-}" >> $GITHUB_OUTPUT - name: Stop Commands run: T="$(echo -n ${{ github.token }} | sha256sum | head -c 64)" && echo -e "::add-mask::${T}\n::stop-commands::${T}" - name: Build target base image - uses: docker/build-push-action@v2 + uses: docker/build-push-action@v3 with: context: images/base pull: true @@ -45,35 +77,78 @@ jobs: tags: ${{ steps.imagename.outputs.name }}:latest cache-to: type=registry,mode=max,ref=${{ steps.imagename.outputs.name }}:cache cache-from: type=registry,ref=${{ steps.imagename.outputs.name }}:cache + - name: Generate download cache Dockerfile + id: dl_cache + run: | + ./generate.sh dl only + echo "dltagname=$(./util/get_dl_cache_tag.sh)" >> $GITHUB_OUTPUT + cat Dockerfile.dl + - name: Build download cache image + uses: docker/build-push-action@v3 + with: + context: . + file: Dockerfile.dl + pull: true + push: true + tags: ${{ steps.imagename.outputs.dlname }}:${{ steps.dl_cache.outputs.dltagname }} + cache-to: type=registry,mode=max,ref=${{ steps.imagename.outputs.dlname }}:cache + cache-from: type=registry,ref=${{ steps.imagename.outputs.dlname }}:cache + - name: Cleanup + if: ${{ env.HAVE_CLEANUP_PAT == 'true' }} + continue-on-error: true + uses: BtbN/delete-untagged-ghcr-action@main + with: + token: ${{ secrets.CLEANUP_PAT }} + package_name: ${{ steps.imagename.outputs.rawname }} + repository_owner: ${{ github.repository_owner }} + repository: ${{ github.repository }} + owner_type: user + untagged_only: true + - name: Cleanup Download Cache + if: ${{ env.HAVE_CLEANUP_PAT == 'true' }} + continue-on-error: true + uses: BtbN/delete-untagged-ghcr-action@main + with: + token: ${{ secrets.CLEANUP_PAT }} + package_name: ${{ steps.imagename.outputs.dlrawname }} + repository_owner: ${{ github.repository_owner }} + repository: ${{ github.repository }} + owner_type: user + untagged_only: false + keep_latest: 20 build_target_bases: name: Build target base image + if: ${{ github.event.inputs.buildOnly != 'true' }} needs: build_base runs-on: ubuntu-latest strategy: fail-fast: false matrix: - target: [win64,linux64] + target: [win64,linux64,linuxarm64] steps: - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Install buildx - uses: docker/setup-buildx-action@v1 + uses: docker/setup-buildx-action@v2 with: config: .github/buildkit.toml - driver-opts: image=moby/buildkit:v0.9.1 - name: Login to Docker - uses: docker/login-action@v1 + uses: docker/login-action@v2 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ github.token }} - name: Image Name id: imagename - run: echo "::set-output name=name::ghcr.io/${GITHUB_REPOSITORY,,}/base-${{ matrix.target }}" + run: | + IMG="${GITHUB_REPOSITORY,,}/base-${{ matrix.target }}" + echo "name=ghcr.io/${IMG/ /-}" >> $GITHUB_OUTPUT + echo "rawname=${IMG/ /-}" >> $GITHUB_OUTPUT + echo "gh_repo=${GITHUB_REPOSITORY,,}" >> $GITHUB_OUTPUT - name: Stop Commands run: T="$(echo -n ${{ github.token }} | sha256sum | head -c 64)" && echo -e "::add-mask::${T}\n::stop-commands::${T}" - name: Build target base image - uses: docker/build-push-action@v2 + uses: docker/build-push-action@v3 with: context: images/base-${{ matrix.target }} pull: true @@ -81,25 +156,38 @@ jobs: tags: ${{ steps.imagename.outputs.name }}:latest cache-to: type=registry,mode=max,ref=${{ steps.imagename.outputs.name }}:cache cache-from: type=registry,ref=${{ steps.imagename.outputs.name }}:cache + build-args: | + GH_REPO=ghcr.io/${{ steps.imagename.outputs.gh_repo }} + - name: Cleanup + if: ${{ env.HAVE_CLEANUP_PAT == 'true' }} + continue-on-error: true + uses: BtbN/delete-untagged-ghcr-action@main + with: + token: ${{ secrets.CLEANUP_PAT }} + package_name: ${{ steps.imagename.outputs.rawname }} + repository_owner: ${{ github.repository_owner }} + repository: ${{ github.repository }} + owner_type: user + untagged_only: true build_targets: name: Build target-variant image + if: ${{ github.event.inputs.buildOnly != 'true' }} needs: build_target_bases runs-on: ubuntu-latest strategy: fail-fast: false matrix: - target: [win64,linux64] - variant: [gpl,lgpl,gpl 4.4,lgpl 4.4,gpl-shared,lgpl-shared,gpl-shared 4.4,lgpl-shared 4.4] + target: [win64,linux64,linuxarm64] + variant: [gpl,lgpl,gpl 4.4,gpl 5.1,gpl 6.0,lgpl 4.4,lgpl 5.1,lgpl 6.0,gpl-shared,lgpl-shared,gpl-shared 4.4,gpl-shared 5.1,gpl-shared 6.0,lgpl-shared 4.4,lgpl-shared 5.1,lgpl-shared 6.0] steps: - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Install buildx - uses: docker/setup-buildx-action@v1 + uses: docker/setup-buildx-action@v2 with: config: .github/buildkit.toml - driver-opts: image=moby/buildkit:v0.9.1 - name: Login to Docker - uses: docker/login-action@v1 + uses: docker/login-action@v2 with: registry: ghcr.io username: ${{ github.actor }} @@ -109,12 +197,13 @@ jobs: - name: Image Name id: imagename run: | - IMG="ghcr.io/${GITHUB_REPOSITORY,,}/${{ matrix.target }}-${{ matrix.variant }}" - echo "::set-output name=name::${IMG/ /-}" + IMG="${GITHUB_REPOSITORY,,}/${{ matrix.target }}-${{ matrix.variant }}" + echo "name=ghcr.io/${IMG/ /-}" >> $GITHUB_OUTPUT + echo "rawname=${IMG/ /-}" >> $GITHUB_OUTPUT - name: Stop Commands run: T="$(echo -n ${{ github.token }} | sha256sum | head -c 64)" && echo -e "::add-mask::${T}\n::stop-commands::${T}" - name: Build target base image - uses: docker/build-push-action@v2 + uses: docker/build-push-action@v3 with: context: . pull: true @@ -122,20 +211,32 @@ jobs: tags: ${{ steps.imagename.outputs.name }}:latest cache-to: type=registry,mode=max,ref=${{ steps.imagename.outputs.name }}:cache cache-from: type=registry,ref=${{ steps.imagename.outputs.name }}:cache + - name: Cleanup + if: ${{ env.HAVE_CLEANUP_PAT == 'true' }} + continue-on-error: true + uses: BtbN/delete-untagged-ghcr-action@main + with: + token: ${{ secrets.CLEANUP_PAT }} + package_name: ${{ steps.imagename.outputs.rawname }} + repository_owner: ${{ github.repository_owner }} + repository: ${{ github.repository }} + owner_type: user + untagged_only: true build_ffmpeg: name: Build ffmpeg + if: ${{ ( github.event.inputs.buildOnly == 'true' && !cancelled() ) || success() }} needs: build_targets runs-on: ubuntu-latest strategy: fail-fast: false matrix: - target: [win64,linux64] - variant: [gpl,lgpl,gpl 4.4,lgpl 4.4,gpl-shared,lgpl-shared,gpl-shared 4.4,lgpl-shared 4.4] + target: [win64,linux64,linuxarm64] + variant: [gpl,lgpl,gpl 4.4,gpl 5.1,gpl 6.0,lgpl 4.4,lgpl 5.1,lgpl 6.0,gpl-shared,lgpl-shared,gpl-shared 4.4,gpl-shared 5.1,gpl-shared 6.0,lgpl-shared 4.4,lgpl-shared 5.1,lgpl-shared 6.0] steps: - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Login to Docker - uses: docker/login-action@v1 + uses: docker/login-action@v2 with: registry: ghcr.io username: ${{ github.actor }} @@ -145,20 +246,20 @@ jobs: T="$(echo -n ${{ github.token }} | sha256sum | head -c 64)" && echo -e "::add-mask::${T}\n::stop-commands::${T}" ./build.sh ${{ matrix.target }} ${{ matrix.variant }} - name: Upload artifacts - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v3 with: name: ffmpeg path: artifacts/* publish_release: name: Publish release - if: github.event_name != 'push' + if: ${{ !cancelled() && ( github.event_name == 'schedule' || github.event.inputs.doRelease == 'true' ) && needs.build_ffmpeg.result == 'success' }} needs: build_ffmpeg runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Download artifacts - uses: actions/download-artifact@v2 + uses: actions/download-artifact@v3 with: name: ffmpeg path: artifacts @@ -166,10 +267,27 @@ jobs: id: create_release run: | set -xe - NAME="Auto-Build $(date +'%Y-%m-%d %H:%M')" + shopt -s nullglob + RELDATE="$(date +'%Y-%m-%d %H:%M')" + NAME="Auto-Build $RELDATE" TAGNAME="autobuild-$(date +'%Y-%m-%d-%H-%M')" hub release create $(for a in artifacts/*.{zip,tar.xz}; do echo -a $a; done) -m "$NAME" -t "master" "$TAGNAME" - echo "::set-output name=tag_name::${TAGNAME}" + echo "tag_name=${TAGNAME}" >> $GITHUB_OUTPUT + echo "rel_date=${RELDATE}" >> $GITHUB_OUTPUT + env: + GITHUB_TOKEN: ${{ github.token }} + - name: Update Latest + run: | + set -xe + shopt -s nullglob + mkdir latest_artifacts + ./util/repack_latest.sh latest_artifacts artifacts/*.{zip,tar.xz} + NAME="Latest Auto-Build (${{ steps.create_release.outputs.rel_date }})" + TAGNAME="latest" + hub release delete "$TAGNAME" || true + git push --delete origin "$TAGNAME" || true + sleep 15 + hub release create $(for a in latest_artifacts/*; do echo -a $a; done) -m "$NAME" -t "master" "$TAGNAME" env: GITHUB_TOKEN: ${{ github.token }} - name: Update Wiki diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index e0c023e..cc42dd8 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -17,22 +17,35 @@ jobs: strategy: fail-fast: false matrix: - target: [win64,linux64] - variant: [gpl,lgpl,gpl 4.4,lgpl 4.4,gpl-shared,lgpl-shared,gpl-shared 4.4,lgpl-shared 4.4] + target: [win64,linux64,linuxarm64] + variant: [lgpl,gpl 6.0,gpl 5.1,lgpl 6.0,lgpl 5.1,gpl-shared,lgpl-shared,gpl-shared 6.0,gpl-shared 5.1,lgpl-shared 6.0,lgpl-shared 5.1] + quickbuild: [1] + include: + - target: win64 + variant: gpl + quickbuild: '' + - target: linux64 + variant: gpl + quickbuild: '' + - target: linuxarm64 + variant: gpl + quickbuild: '' steps: - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Install buildx - uses: docker/setup-buildx-action@v1 + uses: docker/setup-buildx-action@v2 with: config: .github/buildkit.toml - driver-opts: image=moby/buildkit:v0.9.1 + driver: docker - name: Build Image run: ./makeimage.sh ${{ matrix.target }} ${{ matrix.variant }} + env: + QUICKBUILD: ${{ matrix.quickbuild }} - name: Build ffmpeg run: ./build.sh ${{ matrix.target }} ${{ matrix.variant }} - name: Upload artifacts - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v3 with: name: ffmpeg path: artifacts/* diff --git a/.gitignore b/.gitignore index bc80281..107f214 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ -/Dockerfile +/Dockerfile* /ffbuild/ /artifacts/ +/.cache/ diff --git a/README.md b/README.md index 336ad59..0185e90 100644 --- a/README.md +++ b/README.md @@ -4,18 +4,21 @@ Static Windows (x86_64) and Linux (x86_64) Builds of ffmpeg master and latest re Windows builds are targetting Windows 7 and newer. -Linux builds are targetting Ubuntu 16.04 (glibc-2.23 + linux-4.4) and anything more recent. +Linux (x86_64) builds are targetting Ubuntu 16.04 (glibc-2.23 + linux-4.4) and anything more recent. + +Linux (arm64) builds are targetting Ubuntu 18.04 (glibc-2.27 + linux-4.15) and anything more recent. ## Auto-Builds Builds run daily at 12:00 UTC (or GitHubs idea of that time) and are automatically released on success. -**Auto-Builds run ONLY for win64 and linux64. There are no win32/x86 auto-builds, though you can produce win32 builds yourself following the instructions below.** +**Auto-Builds run ONLY for win64 and linux(arm)64. There are no win32/x86 auto-builds, though you can produce win32 builds yourself following the instructions below.** ### Release Retention Policy - The last build of each month is kept for two years. - The last 14 daily builds are kept. +- The special "latest" build floats and provides consistent URLs always pointing to the latest build. ## Package List @@ -31,11 +34,11 @@ Every file corresponds to its respective package. ### Build Image -* `./makeimage.sh target variant [addins]` +* `./makeimage.sh target variant [addin [addin] [addin] ...]` ### Build FFmpeg -* `./build.sh target variant [addins]` +* `./build.sh target variant [addin [addin] [addin] ...]` On success, the resulting zip file will be in the `artifacts` subdir. @@ -45,13 +48,22 @@ Available targets: * `win64` (x86_64 Windows) * `win32` (x86 Windows) * `linux64` (x86_64 Linux, glibc>=2.23, linux>=4.4) +* `linuxarm64` (arm64 (aarch64) Linux, glibc>=2.27, linux>=4.15) -Available: +The linuxarm64 target will not build some dependencies due to lack of arm64 (aarch64) architecture support or cross-compiling restrictions. + +* `davs2` and `xavs2`: aarch64 support is broken. +* `libmfx` and `libva`: Library for Intel QSV, so there is no aarch64 support. + +Available variants: * `gpl` Includes all dependencies, even those that require full GPL instead of just LGPL. * `lgpl` Lacking libraries that are GPL-only. Most prominently libx264 and libx265. +* `nonfree` Includes fdk-aac in addition to all the dependencies of the gpl variant. * `gpl-shared` Same as gpl, but comes with the libav* family of shared libs instead of pure static executables. * `lgpl-shared` Same again, but with the lgpl set of dependencies. +* `nonfree-shared` Same again, but with the nonfree set of dependencies. -All of those can be optionally combined with any combination of addins. -* `4.4` to build from the 4.4 release branch instead of master. +All of those can be optionally combined with any combination of addins: +* `4.4`/`5.0`/`5.1`/`6.0` to build from the respective release branch instead of master. * `debug` to not strip debug symbols from the binaries. This increases the output size by about 250MB. +* `lto` build all dependencies and ffmpeg with -flto=auto (HIGHLY EXPERIMENTAL, broken for Windows, sometimes works for Linux) diff --git a/addins/5.0.sh b/addins/5.0.sh new file mode 100644 index 0000000..4a1b864 --- /dev/null +++ b/addins/5.0.sh @@ -0,0 +1,2 @@ +#!/bin/bash +GIT_BRANCH="release/5.0" diff --git a/addins/5.1.sh b/addins/5.1.sh new file mode 100644 index 0000000..a58b318 --- /dev/null +++ b/addins/5.1.sh @@ -0,0 +1,2 @@ +#!/bin/bash +GIT_BRANCH="release/5.1" diff --git a/addins/6.0.sh b/addins/6.0.sh new file mode 100644 index 0000000..720a9cd --- /dev/null +++ b/addins/6.0.sh @@ -0,0 +1,2 @@ +#!/bin/bash +GIT_BRANCH="release/6.0" diff --git a/addins/lto.sh b/addins/lto.sh new file mode 100644 index 0000000..26fa2c2 --- /dev/null +++ b/addins/lto.sh @@ -0,0 +1,7 @@ +#!/bin/bash +FF_CONFIGURE="$FF_CONFIGURE --enable-lto" + +ffbuild_dockeraddin() { + to_df 'ENV CFLAGS="$CFLAGS -flto=auto" CXXFLAGS="$CXXFLAGS -flto=auto" LDFLAGS="$LDFLAGS -flto=auto"' + to_df 'ENV FFBUILD_TARGET_FLAGS="$FFBUILD_TARGET_FLAGS --ar=${FFBUILD_TOOLCHAIN}-gcc-ar --nm=${FFBUILD_TOOLCHAIN}-gcc-nm --ranlib=${FFBUILD_TOOLCHAIN}-gcc-ranlib"' +} diff --git a/build.sh b/build.sh index ef82b48..532535a 100755 --- a/build.sh +++ b/build.sh @@ -90,16 +90,16 @@ package_variant ffbuild/prefix "ffbuild/pkgroot/$BUILD_NAME" cd ffbuild/pkgroot if [[ "${TARGET}" == win* ]]; then OUTPUT_FNAME="${BUILD_NAME}.zip" - zip -9 -r "${ARTIFACTS_PATH}/${OUTPUT_FNAME}" "$BUILD_NAME" + docker run --rm -i $TTY_ARG "${UIDARGS[@]}" -v "${ARTIFACTS_PATH}":/out -v "${PWD}/${BUILD_NAME}":"/${BUILD_NAME}" -w / "$IMAGE" zip -9 -r "/out/${OUTPUT_FNAME}" "$BUILD_NAME" else OUTPUT_FNAME="${BUILD_NAME}.tar.xz" - tar cJf "${ARTIFACTS_PATH}/${OUTPUT_FNAME}" "$BUILD_NAME" + docker run --rm -i $TTY_ARG "${UIDARGS[@]}" -v "${ARTIFACTS_PATH}":/out -v "${PWD}/${BUILD_NAME}":"/${BUILD_NAME}" -w / "$IMAGE" tar cJf "/out/${OUTPUT_FNAME}" "$BUILD_NAME" fi cd - rm -rf ffbuild if [[ -n "$GITHUB_ACTIONS" ]]; then - echo "::set-output name=build_name::${BUILD_NAME}" + echo "build_name=${BUILD_NAME}" >> "$GITHUB_OUTPUT" echo "${OUTPUT_FNAME}" > "${ARTIFACTS_PATH}/${TARGET}-${VARIANT}${ADDINS_STR:+-}${ADDINS_STR}.txt" fi diff --git a/generate.sh b/generate.sh index b5ceb93..c9fda9b 100755 --- a/generate.sh +++ b/generate.sh @@ -1,34 +1,95 @@ #!/bin/bash -set -xe +set -e cd "$(dirname "$0")" source util/vars.sh -rm -f Dockerfile +export LC_ALL=C.UTF-8 + +rm -f Dockerfile Dockerfile.{dl,final,dl.final} layername() { printf "layer-" basename "$1" | sed 's/.sh$//' } -exec_dockerstage() { - SCRIPT="$1" - ( - SELF="$SCRIPT" - source "$SCRIPT" - ffbuild_enabled || exit 0 - ffbuild_dockerstage || exit $? - ) -} - to_df() { _of="${TODF:-Dockerfile}" printf "$@" >> "$_of" echo >> "$_of" } +default_dl() { + to_df "RUN git-mini-clone \"$SCRIPT_REPO\" \"$SCRIPT_COMMIT\" \"$1\"" +} + +### +### Generate download Dockerfile +### + +exec_dockerstage_dl() { + SCRIPT="$1" + ( + SELF="$SCRIPT" + SELFLAYER="$(layername "$STAGE")" + source "$SCRIPT" + ffbuild_dockerdl || exit $? + TODF="Dockerfile.dl.final" ffbuild_dockerlayer_dl || exit $? + ) +} + +export TODF="Dockerfile.dl" + +to_df "FROM ${REGISTRY}/${REPO}/base:latest AS base" +to_df "ENV TARGET=$TARGET VARIANT=$VARIANT REPO=$REPO ADDINS_STR=$ADDINS_STR" +to_df "WORKDIR \$FFBUILD_DLDIR" + +for STAGE in scripts.d/*.sh scripts.d/*/*.sh; do + to_df "FROM base AS $(layername "$STAGE")" + exec_dockerstage_dl "$STAGE" +done + +to_df "FROM base AS intermediate" +cat Dockerfile.dl.final >> "$TODF" +rm Dockerfile.dl.final + +to_df "FROM scratch" +to_df "COPY --from=intermediate /opt/ffdl/. /" + +if [[ "$TARGET" == "dl" && "$VARIANT" == "only" ]]; then + exit 0 +fi + +DL_IMAGE="${DL_IMAGE_RAW}:$(./util/get_dl_cache_tag.sh)" + +### +### Generate main Dockerfile +### + +exec_dockerstage() { + SCRIPT="$1" + ( + SELF="$SCRIPT" + source "$SCRIPT" + + ffbuild_enabled || exit 0 + + to_df "ENV SELF=\"$SELF\"" + ffbuild_dockerstage || exit $? + ) +} + +export TODF="Dockerfile" + to_df "FROM ${REGISTRY}/${REPO}/base-${TARGET}:latest AS base" to_df "ENV TARGET=$TARGET VARIANT=$VARIANT REPO=$REPO ADDINS_STR=$ADDINS_STR" +for addin in "${ADDINS[@]}"; do +( + source addins/"${addin}.sh" + type ffbuild_dockeraddin &>/dev/null && ffbuild_dockeraddin || true +) +done + PREVLAYER="base" for ID in $(ls -1d scripts.d/??-* | sed -s 's|^.*/\(..\).*|\1|' | sort -u); do LAYER="layer-$ID" diff --git a/images/base-linux64/Dockerfile b/images/base-linux64/Dockerfile index ad41468..d91dd19 100644 --- a/images/base-linux64/Dockerfile +++ b/images/base-linux64/Dockerfile @@ -1,9 +1,8 @@ -ARG GH_REPO=btbn/ffmpeg-builds -FROM ghcr.io/$GH_REPO/base:latest +ARG GH_REPO=ghcr.io/btbn/ffmpeg-builds +FROM $GH_REPO/base:latest -ENV PATH="/opt/ct-ng/bin:${PATH}" RUN --mount=src=ct-ng-config,dst=/.config \ - git clone https://github.com/crosstool-ng/crosstool-ng.git /ct-ng && cd /ct-ng && \ + git clone --filter=blob:none https://github.com/crosstool-ng/crosstool-ng.git /ct-ng && cd /ct-ng && \ ./bootstrap && \ ./configure --enable-local && \ make -j$(nproc) && \ @@ -20,26 +19,43 @@ RUN \ -and -not -name 'libdl.*' \ -and -not -name 'libc.*' \ -and -not -name 'libm.*' \ + -and -not -name 'libmvec.*' \ + -and -not -name 'librt.*' \ + -and -not -name 'libpthread.*' \ -delete && \ find /opt/ct-ng \ -name 'libdl.a' \ -or -name 'libc.a' \ -or -name 'libm.a' \ - -delete + -or -name 'libmvec.a' \ + -or -name 'librt.a' \ + -or -name 'libpthread.a' \ + -delete && \ + mkdir /opt/ffbuild ADD toolchain.cmake /toolchain.cmake ADD cross.meson /cross.meson -ENV FFBUILD_TARGET_FLAGS="--pkg-config=pkg-config --cross-prefix=x86_64-ffbuild-linux-gnu- --arch=x86_64 --target-os=linux" \ - FFBUILD_TOOLCHAIN=x86_64-ffbuild-linux-gnu \ - FFBUILD_CROSS_PREFIX="x86_64-ffbuild-linux-gnu-" \ +ADD gen-implib.sh /usr/bin/gen-implib +RUN git clone --filter=blob:none --depth=1 https://github.com/yugr/Implib.so /opt/implib + +ENV FFBUILD_TOOLCHAIN=x86_64-ffbuild-linux-gnu +ENV PATH="/opt/ct-ng/bin:${PATH}" \ + FFBUILD_TARGET_FLAGS="--pkg-config=pkg-config --cross-prefix=${FFBUILD_TOOLCHAIN}- --arch=x86_64 --target-os=linux" \ + FFBUILD_CROSS_PREFIX="${FFBUILD_TOOLCHAIN}-" \ FFBUILD_RUST_TARGET="x86_64-unknown-linux-gnu" \ FFBUILD_PREFIX=/opt/ffbuild \ FFBUILD_CMAKE_TOOLCHAIN=/toolchain.cmake \ PKG_CONFIG=pkg-config \ PKG_CONFIG_LIBDIR=/opt/ffbuild/lib/pkgconfig:/opt/ffbuild/share/pkgconfig \ - CFLAGS="-static-libgcc -static-libstdc++ -I/opt/ffbuild/include -O2 -pipe -fPIC -DPIC -D_FORTIFY_SOURCE=2 -fstack-protector-strong -pthread" \ - CXXFLAGS="-static-libgcc -static-libstdc++ -I/opt/ffbuild/include -O2 -pipe -fPIC -DPIC -D_FORTIFY_SOURCE=2 -fstack-protector-strong -pthread" \ - LDFLAGS="-static-libgcc -static-libstdc++ -L/opt/ffbuild/lib -O2 -pipe -fstack-protector-strong -Wl,-z,relro,-z,now -pthread -lm" \ + CC="${FFBUILD_TOOLCHAIN}-gcc" \ + CXX="${FFBUILD_TOOLCHAIN}-g++" \ + LD="${FFBUILD_TOOLCHAIN}-ld" \ + AR="${FFBUILD_TOOLCHAIN}-gcc-ar" \ + RANLIB="${FFBUILD_TOOLCHAIN}-gcc-ranlib" \ + NM="${FFBUILD_TOOLCHAIN}-gcc-nm" \ + CFLAGS="-static-libgcc -static-libstdc++ -I/opt/ffbuild/include -O2 -pipe -fPIC -DPIC -D_FORTIFY_SOURCE=2 -fstack-protector-strong -fstack-clash-protection -pthread" \ + CXXFLAGS="-static-libgcc -static-libstdc++ -I/opt/ffbuild/include -O2 -pipe -fPIC -DPIC -D_FORTIFY_SOURCE=2 -fstack-protector-strong -fstack-clash-protection -pthread" \ + LDFLAGS="-static-libgcc -static-libstdc++ -L/opt/ffbuild/lib -O2 -pipe -fstack-protector-strong -fstack-clash-protection -Wl,-z,relro,-z,now -pthread -lm" \ STAGE_CFLAGS="-fvisibility=hidden -fno-semantic-interposition" \ STAGE_CXXFLAGS="-fvisibility=hidden -fno-semantic-interposition" diff --git a/images/base-linux64/cross.meson b/images/base-linux64/cross.meson index da9e709..8619c70 100644 --- a/images/base-linux64/cross.meson +++ b/images/base-linux64/cross.meson @@ -2,7 +2,8 @@ c = 'x86_64-ffbuild-linux-gnu-gcc' cpp = 'x86_64-ffbuild-linux-gnu-g++' ld = 'x86_64-ffbuild-linux-gnu-ld' -ar = 'x86_64-ffbuild-linux-gnu-ar' +ar = 'x86_64-ffbuild-linux-gnu-gcc-ar' +ranlib = 'x86_64-ffbuild-linux-gnu-gcc-ranlib' strip = 'x86_64-ffbuild-linux-gnu-strip' [host_machine] diff --git a/images/base-linux64/ct-ng-config b/images/base-linux64/ct-ng-config index ba1cb16..dc1039b 100644 --- a/images/base-linux64/ct-ng-config +++ b/images/base-linux64/ct-ng-config @@ -1,6 +1,6 @@ # # Automatically generated file; DO NOT EDIT. -# crosstool-NG 1.24.0.479_aa52493 Configuration +# crosstool-NG 1.25.0.196_227d99d Configuration # CT_CONFIGURE_has_static_link=y CT_CONFIGURE_has_cxx11=y @@ -8,16 +8,18 @@ CT_CONFIGURE_has_wget=y CT_CONFIGURE_has_curl=y CT_CONFIGURE_has_meson=y CT_CONFIGURE_has_ninja=y +CT_CONFIGURE_has_rsync=y CT_CONFIGURE_has_make_3_81_or_newer=y CT_CONFIGURE_has_make_4_0_or_newer=y CT_CONFIGURE_has_libtool_2_4_or_newer=y CT_CONFIGURE_has_libtoolize_2_4_or_newer=y -CT_CONFIGURE_has_autoconf_2_65_or_newer=y -CT_CONFIGURE_has_autoreconf_2_65_or_newer=y -CT_CONFIGURE_has_automake_1_15_or_newer=y +CT_CONFIGURE_has_autoconf_2_71_or_newer=y +CT_CONFIGURE_has_autoreconf_2_71_or_newer=y +CT_CONFIGURE_has_automake_1_16_or_newer=y CT_CONFIGURE_has_gnu_m4_1_4_12_or_newer=y CT_CONFIGURE_has_python_3_4_or_newer=y CT_CONFIGURE_has_bison_2_7_or_newer=y +CT_CONFIGURE_has_bison_3_0_4_or_newer=y CT_CONFIGURE_has_python=y CT_CONFIGURE_has_svn=y CT_CONFIGURE_has_git=y @@ -26,11 +28,11 @@ CT_CONFIGURE_has_sha1sum=y CT_CONFIGURE_has_sha256sum=y CT_CONFIGURE_has_sha512sum=y CT_CONFIGURE_has_install_with_strip_program=y -CT_VERSION="1.24.0.479_aa52493" +CT_VERSION="1.25.0.196_227d99d" CT_VCHECK="" -CT_CONFIG_VERSION_ENV="3" -CT_CONFIG_VERSION_CURRENT="3" -CT_CONFIG_VERSION="3" +CT_CONFIG_VERSION_ENV="4" +CT_CONFIG_VERSION_CURRENT="4" +CT_CONFIG_VERSION="4" CT_MODULES=y # @@ -44,6 +46,7 @@ CT_OBSOLETE=y CT_EXPERIMENTAL=y CT_ALLOW_BUILD_AS_ROOT=y CT_ALLOW_BUILD_AS_ROOT_SURE=y +# CT_ENABLE_EXPERIMENTAL_BUNDLED_PATCHES is not set # CT_DEBUG_CT is not set # @@ -62,6 +65,7 @@ CT_REMOVE_DOCS=y # CT_PREFIX_DIR_RO is not set CT_STRIP_HOST_TOOLCHAIN_EXECUTABLES=y CT_STRIP_TARGET_TOOLCHAIN_EXECUTABLES=y +# CT_TARBALL_RESULT is not set # # Downloading @@ -119,12 +123,11 @@ CT_CONFIG_SHELL="${bash}" # CT_LOG_ERROR is not set # CT_LOG_WARN is not set # CT_LOG_INFO is not set -CT_LOG_EXTRA=y +# CT_LOG_EXTRA is not set # CT_LOG_ALL is not set -# CT_LOG_DEBUG is not set -CT_LOG_LEVEL_MAX="EXTRA" +CT_LOG_DEBUG=y +CT_LOG_LEVEL_MAX="DEBUG" # CT_LOG_SEE_TOOLS_WARN is not set -# CT_LOG_PROGRESS_BAR is not set # CT_LOG_TO_FILE is not set # end of Paths and misc options @@ -135,7 +138,9 @@ CT_LOG_LEVEL_MAX="EXTRA" # CT_ARCH_ARC is not set # CT_ARCH_ARM is not set # CT_ARCH_AVR is not set +# CT_ARCH_BPF is not set # CT_ARCH_C6X is not set +# CT_ARCH_LOONGARCH is not set # CT_ARCH_M68K is not set # CT_ARCH_MICROBLAZE is not set # CT_ARCH_MIPS is not set @@ -160,7 +165,7 @@ CT_ARCH_X86_SHOW=y # Options for x86 # CT_ARCH_X86_PKG_KSYM="" -CT_ALL_ARCH_CHOICES="ALPHA ARC ARM AVR C6X M68K MICROBLAZE MIPS MOXIE MSP430 NIOS2 POWERPC PRU RISCV S390 SH SPARC X86 XTENSA" +CT_ALL_ARCH_CHOICES="ALPHA ARC ARM AVR BPF C6X LOONGARCH M68K MICROBLAZE MIPS MOXIE MSP430 NIOS2 POWERPC PRU RISCV S390 SH SPARC X86 XTENSA" CT_ARCH_SUFFIX="" # CT_OMIT_TARGET_VENDOR is not set @@ -170,6 +175,7 @@ CT_ARCH_SUFFIX="" # CT_MULTILIB is not set CT_DEMULTILIB=y CT_ARCH_USE_MMU=y +CT_ARCH_SUPPORTS_LIBSANITIZER=y CT_ARCH_SUPPORTS_32=y CT_ARCH_SUPPORTS_64=y CT_ARCH_DEFAULT_32=y @@ -263,6 +269,15 @@ CT_LINUX_PATCH_GLOBAL=y # CT_LINUX_PATCH_LOCAL_BUNDLED is not set # CT_LINUX_PATCH_NONE is not set CT_LINUX_PATCH_ORDER="global" +# CT_LINUX_V_6_3 is not set +# CT_LINUX_V_6_2 is not set +# CT_LINUX_V_6_1 is not set +# CT_LINUX_V_6_0 is not set +# CT_LINUX_V_5_19 is not set +# CT_LINUX_V_5_18 is not set +# CT_LINUX_V_5_17 is not set +# CT_LINUX_V_5_16 is not set +# CT_LINUX_V_5_15 is not set # CT_LINUX_V_5_14 is not set # CT_LINUX_V_5_13 is not set # CT_LINUX_V_5_12 is not set @@ -299,18 +314,27 @@ CT_LINUX_V_4_4=y # CT_LINUX_V_3_4 is not set # CT_LINUX_V_3_2 is not set # CT_LINUX_V_2_6_32 is not set -CT_LINUX_VERSION="4.4.283" +CT_LINUX_VERSION="4.4.302" CT_LINUX_MIRRORS="$(CT_Mirrors kernel.org linux ${CT_LINUX_VERSION})" CT_LINUX_ARCHIVE_FILENAME="@{pkg_name}-@{version}" CT_LINUX_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" CT_LINUX_ARCHIVE_FORMATS=".tar.xz .tar.gz" CT_LINUX_SIGNATURE_FORMAT="unpacked/.sign" +CT_LINUX_5_19_or_older=y +CT_LINUX_older_than_5_19=y +CT_LINUX_5_12_or_older=y +CT_LINUX_older_than_5_12=y +CT_LINUX_5_5_or_older=y +CT_LINUX_older_than_5_5=y +CT_LINUX_5_3_or_older=y +CT_LINUX_older_than_5_3=y CT_LINUX_4_8_or_older=y CT_LINUX_older_than_4_8=y CT_LINUX_later_than_3_7=y CT_LINUX_3_7_or_later=y CT_LINUX_later_than_3_2=y CT_LINUX_3_2_or_later=y +CT_KERNEL_DEP_RSYNC=y CT_KERNEL_LINUX_VERBOSITY_0=y # CT_KERNEL_LINUX_VERBOSITY_1 is not set # CT_KERNEL_LINUX_VERBOSITY_2 is not set @@ -353,7 +377,10 @@ CT_BINUTILS_PATCH_GLOBAL=y # CT_BINUTILS_PATCH_LOCAL_BUNDLED is not set # CT_BINUTILS_PATCH_NONE is not set CT_BINUTILS_PATCH_ORDER="global" -CT_BINUTILS_V_2_37=y +CT_BINUTILS_V_2_40=y +# CT_BINUTILS_V_2_39 is not set +# CT_BINUTILS_V_2_38 is not set +# CT_BINUTILS_V_2_37 is not set # CT_BINUTILS_V_2_36 is not set # CT_BINUTILS_V_2_35 is not set # CT_BINUTILS_V_2_34 is not set @@ -365,12 +392,14 @@ CT_BINUTILS_V_2_37=y # CT_BINUTILS_V_2_28 is not set # CT_BINUTILS_V_2_27 is not set # CT_BINUTILS_V_2_26 is not set -CT_BINUTILS_VERSION="2.37" +CT_BINUTILS_VERSION="2.40" CT_BINUTILS_MIRRORS="$(CT_Mirrors GNU binutils) $(CT_Mirrors sourceware binutils/releases)" CT_BINUTILS_ARCHIVE_FILENAME="@{pkg_name}-@{version}" CT_BINUTILS_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" CT_BINUTILS_ARCHIVE_FORMATS=".tar.xz .tar.bz2 .tar.gz" CT_BINUTILS_SIGNATURE_FORMAT="packed/.sig" +CT_BINUTILS_later_than_2_39=y +CT_BINUTILS_2_39_or_later=y CT_BINUTILS_later_than_2_30=y CT_BINUTILS_2_30_or_later=y CT_BINUTILS_later_than_2_27=y @@ -390,6 +419,7 @@ CT_BINUTILS_LINKERS_LIST="ld" CT_BINUTILS_LINKER_DEFAULT="bfd" CT_BINUTILS_PLUGINS=y CT_BINUTILS_RELRO=m +CT_BINUTILS_DETERMINISTIC_ARCHIVES=y CT_BINUTILS_EXTRA_CONFIG_ARRAY="" # CT_BINUTILS_FOR_TARGET is not set CT_ALL_BINUTILS_CHOICES="BINUTILS" @@ -398,13 +428,11 @@ CT_ALL_BINUTILS_CHOICES="BINUTILS" # # C-library # -# CT_LIBC_BIONIC is not set CT_LIBC_GLIBC=y # CT_LIBC_MUSL is not set -# CT_LIBC_UCLIBC is not set +# CT_LIBC_UCLIBC_NG is not set CT_LIBC="glibc" CT_LIBC_CHOICE_KSYM="GLIBC" -CT_THREADS="nptl" CT_LIBC_GLIBC_SHOW=y # @@ -426,6 +454,9 @@ CT_GLIBC_PATCH_GLOBAL=y # CT_GLIBC_PATCH_LOCAL_BUNDLED is not set # CT_GLIBC_PATCH_NONE is not set CT_GLIBC_PATCH_ORDER="global" +# CT_GLIBC_V_2_37 is not set +# CT_GLIBC_V_2_36 is not set +# CT_GLIBC_V_2_35 is not set # CT_GLIBC_V_2_34 is not set # CT_GLIBC_V_2_33 is not set # CT_GLIBC_V_2_32 is not set @@ -440,15 +471,22 @@ CT_GLIBC_PATCH_ORDER="global" CT_GLIBC_V_2_23=y # CT_GLIBC_V_2_19 is not set # CT_GLIBC_V_2_17 is not set -# CT_GLIBC_V_2_12_1 is not set CT_GLIBC_VERSION="2.23" CT_GLIBC_MIRRORS="$(CT_Mirrors GNU glibc)" CT_GLIBC_ARCHIVE_FILENAME="@{pkg_name}-@{version}" CT_GLIBC_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" CT_GLIBC_ARCHIVE_FORMATS=".tar.xz .tar.bz2 .tar.gz" CT_GLIBC_SIGNATURE_FORMAT="packed/.sig" +CT_GLIBC_2_37_or_older=y +CT_GLIBC_older_than_2_37=y +CT_GLIBC_2_36_or_older=y +CT_GLIBC_older_than_2_36=y +CT_GLIBC_2_34_or_older=y +CT_GLIBC_older_than_2_34=y CT_GLIBC_2_32_or_older=y CT_GLIBC_older_than_2_32=y +CT_GLIBC_2_31_or_older=y +CT_GLIBC_older_than_2_31=y CT_GLIBC_2_30_or_older=y CT_GLIBC_older_than_2_30=y CT_GLIBC_2_29_or_older=y @@ -476,13 +514,15 @@ CT_GLIBC_DEP_BINUTILS=y CT_GLIBC_DEP_GCC=y CT_GLIBC_DEP_PYTHON=y CT_GLIBC_SPARC_ALLOW_V7=y +CT_THREADS="nptl" CT_GLIBC_HAS_LIBIDN_ADDON=y # CT_GLIBC_USE_LIBIDN_ADDON is not set CT_GLIBC_NO_SPARC_V8=y CT_GLIBC_HAS_OBSOLETE_RPC=y CT_GLIBC_EXTRA_CONFIG_ARRAY="--with-pic" CT_GLIBC_CONFIGPARMS="" -CT_GLIBC_EXTRA_CFLAGS="-fPIC -DPIC" +# CT_GLIBC_ENABLE_DEBUG is not set +CT_GLIBC_EXTRA_CFLAGS="-fPIC -DPIC -no-pie" CT_GLIBC_ENABLE_OBSOLETE_RPC=y # CT_GLIBC_ENABLE_FORTIFIED_BUILD is not set # CT_GLIBC_DISABLE_VERSIONING is not set @@ -492,9 +532,9 @@ CT_GLIBC_FORCE_UNWIND=y # CT_GLIBC_KERNEL_VERSION_NONE is not set CT_GLIBC_KERNEL_VERSION_AS_HEADERS=y # CT_GLIBC_KERNEL_VERSION_CHOSEN is not set -CT_GLIBC_MIN_KERNEL="4.4.283" +CT_GLIBC_MIN_KERNEL="4.4.302" CT_GLIBC_ENABLE_COMMON_FLAG=y -CT_ALL_LIBC_CHOICES="AVR_LIBC BIONIC GLIBC MINGW_W64 MOXIEBOX MUSL NEWLIB NONE UCLIBC" +CT_ALL_LIBC_CHOICES="AVR_LIBC GLIBC MINGW_W64 MOXIEBOX MUSL NEWLIB NONE PICOLIBC UCLIBC_NG" CT_LIBC_SUPPORT_THREADS_ANY=y CT_LIBC_SUPPORT_THREADS_NATIVE=y @@ -509,12 +549,12 @@ CT_LIBC_XLDD=y # # C compiler # -CT_CC_CORE_PASSES_NEEDED=y -CT_CC_CORE_PASS_1_NEEDED=y -CT_CC_CORE_PASS_2_NEEDED=y +CT_CC_CORE_NEEDED=y CT_CC_SUPPORT_CXX=y CT_CC_SUPPORT_FORTRAN=y CT_CC_SUPPORT_ADA=y +CT_CC_SUPPORT_D=y +CT_CC_SUPPORT_JIT=y CT_CC_SUPPORT_OBJC=y CT_CC_SUPPORT_OBJCXX=y CT_CC_SUPPORT_GOLANG=y @@ -543,7 +583,9 @@ CT_GCC_PATCH_GLOBAL=y # CT_GCC_PATCH_LOCAL_BUNDLED is not set # CT_GCC_PATCH_NONE is not set CT_GCC_PATCH_ORDER="global" -CT_GCC_V_11=y +CT_GCC_V_13=y +# CT_GCC_V_12 is not set +# CT_GCC_V_11 is not set # CT_GCC_V_10 is not set # CT_GCC_V_9 is not set # CT_GCC_V_8 is not set @@ -551,12 +593,16 @@ CT_GCC_V_11=y # CT_GCC_V_6 is not set # CT_GCC_V_5 is not set # CT_GCC_V_4_9 is not set -CT_GCC_VERSION="11.2.0" +CT_GCC_VERSION="13.1.0" CT_GCC_MIRRORS="$(CT_Mirrors GNU gcc/gcc-${CT_GCC_VERSION}) $(CT_Mirrors sourceware gcc/releases/gcc-${CT_GCC_VERSION})" CT_GCC_ARCHIVE_FILENAME="@{pkg_name}-@{version}" CT_GCC_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" CT_GCC_ARCHIVE_FORMATS=".tar.xz .tar.gz" CT_GCC_SIGNATURE_FORMAT="" +CT_GCC_later_than_13=y +CT_GCC_13_or_later=y +CT_GCC_later_than_12=y +CT_GCC_12_or_later=y CT_GCC_later_than_11=y CT_GCC_11_or_later=y CT_GCC_later_than_10=y @@ -573,13 +619,11 @@ CT_GCC_later_than_5=y CT_GCC_5_or_later=y CT_GCC_later_than_4_9=y CT_GCC_4_9_or_later=y -CT_GCC_later_than_4_8=y -CT_GCC_4_8_or_later=y CT_CC_GCC_ENABLE_PLUGINS=y CT_CC_GCC_HAS_LIBMPX=y CT_CC_GCC_ENABLE_CXX_FLAGS="" CT_CC_GCC_CORE_EXTRA_CONFIG_ARRAY="--enable-host-shared --enable-default-ssp" -CT_CC_GCC_EXTRA_CONFIG_ARRAY="--enable-host-shared --enable-default-ssp" +CT_CC_GCC_EXTRA_CONFIG_ARRAY="--enable-host-shared --enable-default-ssp --with-build-config=bootstrap-lto-lean --enable-link-serialization=2" # CT_CC_GCC_STATIC_LIBSTDCXX is not set # CT_CC_GCC_SYSTEM_ZLIB is not set CT_CC_GCC_CONFIG_TLS=m @@ -594,6 +638,7 @@ CT_CC_GCC_LTO_ZSTD=m # # Settings for libraries running on target # +CT_CC_GCC_ENABLE_DEFAULT_PIE=y # CT_CC_GCC_ENABLE_TARGET_OPTSPACE is not set # CT_CC_GCC_LIBMUDFLAP is not set CT_CC_GCC_LIBGOMP=y @@ -601,6 +646,7 @@ CT_CC_GCC_LIBSSP=m # CT_CC_GCC_LIBQUADMATH is not set # CT_CC_GCC_LIBSANITIZER is not set # CT_CC_GCC_LIBMPX is not set +# CT_CC_GCC_LIBSTDCXX_VERBOSE is not set # # Misc. obscure options. @@ -627,8 +673,10 @@ CT_ALL_CC_CHOICES="GCC" # Additional supported languages: # CT_CC_LANG_CXX=y -CT_CC_LANG_FORTRAN=y +# CT_CC_LANG_FORTRAN is not set +# CT_CC_LANG_JIT is not set # CT_CC_LANG_ADA is not set +# CT_CC_LANG_D is not set # CT_CC_LANG_OBJC is not set # CT_CC_LANG_OBJCXX is not set # CT_CC_LANG_GOLANG is not set @@ -665,14 +713,30 @@ CT_GETTEXT_PATCH_GLOBAL=y # CT_GETTEXT_PATCH_LOCAL_BUNDLED is not set # CT_GETTEXT_PATCH_NONE is not set CT_GETTEXT_PATCH_ORDER="global" -CT_GETTEXT_V_0_20_1=y +CT_GETTEXT_V_0_21=y +# CT_GETTEXT_V_0_20_1 is not set # CT_GETTEXT_V_0_19_8_1 is not set -CT_GETTEXT_VERSION="0.20.1" +CT_GETTEXT_VERSION="0.21" CT_GETTEXT_MIRRORS="$(CT_Mirrors GNU gettext)" CT_GETTEXT_ARCHIVE_FILENAME="@{pkg_name}-@{version}" CT_GETTEXT_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" CT_GETTEXT_ARCHIVE_FORMATS=".tar.xz .tar.gz" CT_GETTEXT_SIGNATURE_FORMAT="packed/.sig" +CT_GETTEXT_0_21_or_later=y +CT_GETTEXT_0_21_or_older=y +CT_GETTEXT_INCOMPATIBLE_WITH_UCLIBC_NG=y + +# +# This version of gettext is not compatible with uClibc-NG. Select +# + +# +# a different version if uClibc-NG is used on the target or (in a +# + +# +# Canadian cross build) on the host. +# CT_COMP_LIBS_GMP=y CT_COMP_LIBS_GMP_PKG_KSYM="GMP" CT_GMP_DIR_NAME="gmp" @@ -695,11 +759,6 @@ CT_GMP_ARCHIVE_FILENAME="@{pkg_name}-@{version}" CT_GMP_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" CT_GMP_ARCHIVE_FORMATS=".tar.xz .tar.lz .tar.bz2" CT_GMP_SIGNATURE_FORMAT="packed/.sig" -CT_GMP_later_than_5_1_0=y -CT_GMP_5_1_0_or_later=y -CT_GMP_later_than_5_0_0=y -CT_GMP_5_0_0_or_later=y -CT_GMP_REQUIRE_5_0_0_or_later=y CT_COMP_LIBS_ISL=y CT_COMP_LIBS_ISL_PKG_KSYM="ISL" CT_ISL_DIR_NAME="isl" @@ -714,7 +773,10 @@ CT_ISL_PATCH_GLOBAL=y # CT_ISL_PATCH_LOCAL_BUNDLED is not set # CT_ISL_PATCH_NONE is not set CT_ISL_PATCH_ORDER="global" -CT_ISL_V_0_24=y +CT_ISL_V_0_26=y +# CT_ISL_V_0_25 is not set +# CT_ISL_V_0_24 is not set +# CT_ISL_V_0_23 is not set # CT_ISL_V_0_22 is not set # CT_ISL_V_0_21 is not set # CT_ISL_V_0_20 is not set @@ -723,8 +785,9 @@ CT_ISL_V_0_24=y # CT_ISL_V_0_17 is not set # CT_ISL_V_0_16 is not set # CT_ISL_V_0_15 is not set -CT_ISL_VERSION="0.24" -CT_ISL_MIRRORS="https://ftp.halifax.rwth-aachen.de/gentoo/distfiles" +# CT_ISL_V_0_11 is not set +CT_ISL_VERSION="0.26" +CT_ISL_MIRRORS="https://libisl.sourceforge.io" CT_ISL_ARCHIVE_FILENAME="@{pkg_name}-@{version}" CT_ISL_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" CT_ISL_ARCHIVE_FORMATS=".tar.xz .tar.bz2 .tar.gz" @@ -733,15 +796,6 @@ CT_ISL_later_than_0_18=y CT_ISL_0_18_or_later=y CT_ISL_later_than_0_15=y CT_ISL_0_15_or_later=y -CT_ISL_REQUIRE_0_15_or_later=y -CT_ISL_later_than_0_14=y -CT_ISL_0_14_or_later=y -CT_ISL_REQUIRE_0_14_or_later=y -CT_ISL_later_than_0_13=y -CT_ISL_0_13_or_later=y -CT_ISL_later_than_0_12=y -CT_ISL_0_12_or_later=y -CT_ISL_REQUIRE_0_12_or_later=y # CT_COMP_LIBS_LIBELF is not set CT_COMP_LIBS_LIBICONV=y CT_COMP_LIBS_LIBICONV_PKG_KSYM="LIBICONV" @@ -782,7 +836,7 @@ CT_MPC_PATCH_ORDER="global" CT_MPC_V_1_2=y # CT_MPC_V_1_1 is not set # CT_MPC_V_1_0 is not set -CT_MPC_VERSION="1.2.0" +CT_MPC_VERSION="1.2.1" CT_MPC_MIRRORS="http://www.multiprecision.org/downloads $(CT_Mirrors GNU mpc)" CT_MPC_ARCHIVE_FILENAME="@{pkg_name}-@{version}" CT_MPC_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" @@ -815,9 +869,6 @@ CT_MPFR_ARCHIVE_FORMATS=".tar.xz .tar.bz2 .tar.gz .zip" CT_MPFR_SIGNATURE_FORMAT="packed/.asc" CT_MPFR_later_than_4_0_0=y CT_MPFR_4_0_0_or_later=y -CT_MPFR_later_than_3_0_0=y -CT_MPFR_3_0_0_or_later=y -CT_MPFR_REQUIRE_3_0_0_or_later=y CT_COMP_LIBS_NCURSES=y CT_COMP_LIBS_NCURSES_PKG_KSYM="NCURSES" CT_NCURSES_DIR_NAME="ncurses" @@ -832,10 +883,11 @@ CT_NCURSES_PATCH_GLOBAL=y # CT_NCURSES_PATCH_LOCAL_BUNDLED is not set # CT_NCURSES_PATCH_NONE is not set CT_NCURSES_PATCH_ORDER="global" -CT_NCURSES_V_6_2=y +CT_NCURSES_V_6_4=y +# CT_NCURSES_V_6_2 is not set # CT_NCURSES_V_6_1 is not set # CT_NCURSES_V_6_0 is not set -CT_NCURSES_VERSION="6.2" +CT_NCURSES_VERSION="6.4" CT_NCURSES_MIRRORS="https://invisible-mirror.net/archives/ncurses $(CT_Mirrors GNU ncurses)" CT_NCURSES_ARCHIVE_FILENAME="@{pkg_name}-@{version}" CT_NCURSES_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" @@ -862,14 +914,37 @@ CT_ZLIB_PATCH_GLOBAL=y # CT_ZLIB_PATCH_LOCAL_BUNDLED is not set # CT_ZLIB_PATCH_NONE is not set CT_ZLIB_PATCH_ORDER="global" -CT_ZLIB_V_1_2_11=y -CT_ZLIB_VERSION="1.2.11" -CT_ZLIB_MIRRORS="http://downloads.sourceforge.net/project/libpng/zlib/${CT_ZLIB_VERSION} https://www.zlib.net/" +CT_ZLIB_V_1_2_13=y +# CT_ZLIB_V_1_2_12 is not set +CT_ZLIB_VERSION="1.2.13" +CT_ZLIB_MIRRORS="https://github.com/madler/zlib/releases/download/v${CT_ZLIB_VERSION} https://www.zlib.net/" CT_ZLIB_ARCHIVE_FILENAME="@{pkg_name}-@{version}" CT_ZLIB_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" CT_ZLIB_ARCHIVE_FORMATS=".tar.xz .tar.gz" CT_ZLIB_SIGNATURE_FORMAT="packed/.asc" -CT_ALL_COMP_LIBS_CHOICES="CLOOG EXPAT GETTEXT GMP GNUPRUMCU ISL LIBELF LIBICONV MPC MPFR NCURSES NEWLIB_NANO PICOLIBC ZLIB" +CT_COMP_LIBS_ZSTD=y +CT_COMP_LIBS_ZSTD_PKG_KSYM="ZSTD" +CT_ZSTD_DIR_NAME="zstd" +CT_ZSTD_PKG_NAME="zstd" +CT_ZSTD_SRC_RELEASE=y +# CT_ZSTD_SRC_DEVEL is not set +# CT_ZSTD_SRC_CUSTOM is not set +CT_ZSTD_PATCH_GLOBAL=y +# CT_ZSTD_PATCH_BUNDLED is not set +# CT_ZSTD_PATCH_LOCAL is not set +# CT_ZSTD_PATCH_BUNDLED_LOCAL is not set +# CT_ZSTD_PATCH_LOCAL_BUNDLED is not set +# CT_ZSTD_PATCH_NONE is not set +CT_ZSTD_PATCH_ORDER="global" +CT_ZSTD_V_1_5_5=y +# CT_ZSTD_V_1_5_2 is not set +CT_ZSTD_VERSION="1.5.5" +CT_ZSTD_MIRRORS="https://github.com/facebook/zstd/releases/download/v${CT_ZSTD_VERSION} https://www.zstd.net/" +CT_ZSTD_ARCHIVE_FILENAME="@{pkg_name}-@{version}" +CT_ZSTD_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" +CT_ZSTD_ARCHIVE_FORMATS=".tar.gz" +CT_ZSTD_SIGNATURE_FORMAT="packed/.sig" +CT_ALL_COMP_LIBS_CHOICES="CLOOG EXPAT GETTEXT GMP GNUPRUMCU ISL LIBELF LIBICONV MPC MPFR NCURSES NEWLIB_NANO PICOLIBC ZLIB ZSTD" CT_LIBICONV_NEEDED=y CT_GETTEXT_NEEDED=y CT_GMP_NEEDED=y @@ -878,6 +953,7 @@ CT_ISL_NEEDED=y CT_MPC_NEEDED=y CT_NCURSES_NEEDED=y CT_ZLIB_NEEDED=y +CT_ZSTD_NEEDED=y CT_LIBICONV=y CT_GETTEXT=y CT_GMP=y @@ -886,6 +962,7 @@ CT_ISL=y CT_MPC=y CT_NCURSES=y CT_ZLIB=y +CT_ZSTD=y # end of Companion libraries # diff --git a/images/base-linux64/gen-implib.sh b/images/base-linux64/gen-implib.sh new file mode 100755 index 0000000..fd1930f --- /dev/null +++ b/images/base-linux64/gen-implib.sh @@ -0,0 +1,17 @@ +#!/bin/bash +set -e +if [[ $# != 2 ]]; then + echo "Invalid arguments" + exit 1 +fi +IN="$1" +OUT="$2" + +TMPDIR="$(mktemp -d)" +trap "rm -rf '$TMPDIR'" EXIT +cd "$TMPDIR" + +set -x +python3 /opt/implib/implib-gen.py --target x86_64-linux-gnu --dlopen --lazy-load --verbose "$IN" +${FFBUILD_CROSS_PREFIX}gcc $CFLAGS $STAGE_CFLAGS -DIMPLIB_HIDDEN_SHIMS -c *.tramp.S *.init.c +${FFBUILD_CROSS_PREFIX}ar -rcs "$OUT" *.tramp.o *.init.o diff --git a/images/base-linux64/toolchain.cmake b/images/base-linux64/toolchain.cmake index dd73670..91f8226 100644 --- a/images/base-linux64/toolchain.cmake +++ b/images/base-linux64/toolchain.cmake @@ -5,8 +5,8 @@ set(triple x86_64-ffbuild-linux-gnu) set(CMAKE_C_COMPILER ${triple}-gcc) set(CMAKE_CXX_COMPILER ${triple}-g++) -set(CMAKE_RANLIB ${triple}-ranlib) -set(CMAKE_AR ${triple}-ar) +set(CMAKE_RANLIB ${triple}-gcc-ranlib) +set(CMAKE_AR ${triple}-gcc-ar) set(CMAKE_SYSROOT /opt/ct-ng/${triple}/sysroot) set(CMAKE_FIND_ROOT_PATH /opt/ct-ng /opt/ct-ng/${triple}/sysroot /opt/ffbuild) diff --git a/images/base-linuxarm64/Dockerfile b/images/base-linuxarm64/Dockerfile new file mode 100644 index 0000000..89be1fd --- /dev/null +++ b/images/base-linuxarm64/Dockerfile @@ -0,0 +1,63 @@ +ARG GH_REPO=ghcr.io/btbn/ffmpeg-builds +FROM $GH_REPO/base:latest + +RUN --mount=src=ct-ng-config,dst=/.config \ + git clone --filter=blob:none https://github.com/crosstool-ng/crosstool-ng.git /ct-ng && cd /ct-ng && \ + ./bootstrap && \ + ./configure --enable-local && \ + make -j$(nproc) && \ + cp /.config .config && \ + ./ct-ng build && \ + cd / && \ + rm -rf ct-ng + +# Prepare cross environment to heavily favour static builds +RUN \ + find /opt/ct-ng -type l \ + -and -name '*.so' \ + -and -not -ipath '*plugin*' \ + -and -not -name 'libdl.*' \ + -and -not -name 'libc.*' \ + -and -not -name 'libm.*' \ + -and -not -name 'libmvec.*' \ + -and -not -name 'librt.*' \ + -and -not -name 'libpthread.*' \ + -delete && \ + find /opt/ct-ng \ + -name 'libdl.a' \ + -or -name 'libc.a' \ + -or -name 'libm.a' \ + -or -name 'libmvec.a' \ + -or -name 'librt.a' \ + -or -name 'libpthread.a' \ + -delete && \ + mkdir /opt/ffbuild + +RUN rustup target add aarch64-unknown-linux-gnu + +ADD toolchain.cmake /toolchain.cmake +ADD cross.meson /cross.meson + +ADD gen-implib.sh /usr/bin/gen-implib +RUN git clone --filter=blob:none --depth=1 https://github.com/yugr/Implib.so /opt/implib + +ENV FFBUILD_TOOLCHAIN=aarch64-ffbuild-linux-gnu +ENV PATH="/opt/ct-ng/bin:${PATH}" \ + FFBUILD_TARGET_FLAGS="--pkg-config=pkg-config --cross-prefix=${FFBUILD_TOOLCHAIN}- --arch=aarch64 --target-os=linux" \ + FFBUILD_CROSS_PREFIX="${FFBUILD_TOOLCHAIN}-" \ + FFBUILD_RUST_TARGET="aarch64-unknown-linux-gnu" \ + FFBUILD_PREFIX=/opt/ffbuild \ + FFBUILD_CMAKE_TOOLCHAIN=/toolchain.cmake \ + PKG_CONFIG=pkg-config \ + PKG_CONFIG_LIBDIR=/opt/ffbuild/lib/pkgconfig:/opt/ffbuild/share/pkgconfig \ + CC="${FFBUILD_TOOLCHAIN}-gcc" \ + CXX="${FFBUILD_TOOLCHAIN}-g++" \ + LD="${FFBUILD_TOOLCHAIN}-ld" \ + AR="${FFBUILD_TOOLCHAIN}-gcc-ar" \ + RANLIB="${FFBUILD_TOOLCHAIN}-gcc-ranlib" \ + NM="${FFBUILD_TOOLCHAIN}-gcc-nm" \ + CFLAGS="-static-libgcc -static-libstdc++ -I/opt/ffbuild/include -O2 -pipe -fPIC -DPIC -D_FORTIFY_SOURCE=2 -fstack-protector-strong -fstack-clash-protection -pthread" \ + CXXFLAGS="-static-libgcc -static-libstdc++ -I/opt/ffbuild/include -O2 -pipe -fPIC -DPIC -D_FORTIFY_SOURCE=2 -fstack-protector-strong -fstack-clash-protection -pthread" \ + LDFLAGS="-static-libgcc -static-libstdc++ -L/opt/ffbuild/lib -O2 -pipe -fstack-protector-strong -fstack-clash-protection -Wl,-z,relro,-z,now -pthread -lm" \ + STAGE_CFLAGS="-fvisibility=hidden -fno-semantic-interposition" \ + STAGE_CXXFLAGS="-fvisibility=hidden -fno-semantic-interposition" diff --git a/images/base-linuxarm64/cross.meson b/images/base-linuxarm64/cross.meson new file mode 100644 index 0000000..88a8609 --- /dev/null +++ b/images/base-linuxarm64/cross.meson @@ -0,0 +1,13 @@ +[binaries] +c = 'aarch64-ffbuild-linux-gnu-gcc' +cpp = 'aarch64-ffbuild-linux-gnu-g++' +ld = 'aarch64-ffbuild-linux-gnu-ld' +ar = 'aarch64-ffbuild-linux-gnu-gcc-ar' +ranlib = 'x86_64-ffbuild-linux-gnu-gcc-ranlib' +strip = 'aarch64-ffbuild-linux-gnu-strip' + +[host_machine] +system = 'linux' +cpu_family = 'aarch64' +cpu = 'aarch64' +endian = 'little' diff --git a/images/base-linuxarm64/ct-ng-config b/images/base-linuxarm64/ct-ng-config new file mode 100644 index 0000000..1ab09e8 --- /dev/null +++ b/images/base-linuxarm64/ct-ng-config @@ -0,0 +1,998 @@ +# +# Automatically generated file; DO NOT EDIT. +# crosstool-NG 1.25.0.196_227d99d Configuration +# +CT_CONFIGURE_has_static_link=y +CT_CONFIGURE_has_cxx11=y +CT_CONFIGURE_has_wget=y +CT_CONFIGURE_has_curl=y +CT_CONFIGURE_has_meson=y +CT_CONFIGURE_has_ninja=y +CT_CONFIGURE_has_rsync=y +CT_CONFIGURE_has_make_3_81_or_newer=y +CT_CONFIGURE_has_make_4_0_or_newer=y +CT_CONFIGURE_has_libtool_2_4_or_newer=y +CT_CONFIGURE_has_libtoolize_2_4_or_newer=y +CT_CONFIGURE_has_autoconf_2_71_or_newer=y +CT_CONFIGURE_has_autoreconf_2_71_or_newer=y +CT_CONFIGURE_has_automake_1_16_or_newer=y +CT_CONFIGURE_has_gnu_m4_1_4_12_or_newer=y +CT_CONFIGURE_has_python_3_4_or_newer=y +CT_CONFIGURE_has_bison_2_7_or_newer=y +CT_CONFIGURE_has_bison_3_0_4_or_newer=y +CT_CONFIGURE_has_python=y +CT_CONFIGURE_has_svn=y +CT_CONFIGURE_has_git=y +CT_CONFIGURE_has_md5sum=y +CT_CONFIGURE_has_sha1sum=y +CT_CONFIGURE_has_sha256sum=y +CT_CONFIGURE_has_sha512sum=y +CT_CONFIGURE_has_install_with_strip_program=y +CT_VERSION="1.25.0.196_227d99d" +CT_VCHECK="" +CT_CONFIG_VERSION_ENV="4" +CT_CONFIG_VERSION_CURRENT="4" +CT_CONFIG_VERSION="4" +CT_MODULES=y + +# +# Paths and misc options +# + +# +# crosstool-NG behavior +# +CT_OBSOLETE=y +CT_EXPERIMENTAL=y +CT_ALLOW_BUILD_AS_ROOT=y +CT_ALLOW_BUILD_AS_ROOT_SURE=y +# CT_ENABLE_EXPERIMENTAL_BUNDLED_PATCHES is not set +# CT_DEBUG_CT is not set + +# +# Paths +# +CT_LOCAL_TARBALLS_DIR="${HOME}/src" +# CT_SAVE_TARBALLS is not set +# CT_TARBALLS_BUILDROOT_LAYOUT is not set +CT_WORK_DIR="${CT_TOP_DIR}/build" +CT_BUILD_TOP_DIR="${CT_WORK_DIR:-${CT_TOP_DIR}/.build}/${CT_HOST:+HOST-${CT_HOST}/}${CT_TARGET}" +CT_BUILD_DIR="${CT_BUILD_TOP_DIR}/build" +CT_PREFIX_DIR="/opt/ct-ng" +CT_RM_RF_PREFIX_DIR=y +CT_REMOVE_DOCS=y +# CT_INSTALL_LICENSES is not set +# CT_PREFIX_DIR_RO is not set +CT_STRIP_HOST_TOOLCHAIN_EXECUTABLES=y +CT_STRIP_TARGET_TOOLCHAIN_EXECUTABLES=y +# CT_TARBALL_RESULT is not set + +# +# Downloading +# +CT_DOWNLOAD_AGENT_WGET=y +# CT_DOWNLOAD_AGENT_CURL is not set +# CT_DOWNLOAD_AGENT_NONE is not set +# CT_FORBID_DOWNLOAD is not set +# CT_FORCE_DOWNLOAD is not set +CT_CONNECT_TIMEOUT=10 +CT_DOWNLOAD_WGET_OPTIONS="--passive-ftp --tries=3 -nc --progress=dot:binary" +# CT_ONLY_DOWNLOAD is not set +# CT_USE_MIRROR is not set +CT_VERIFY_DOWNLOAD_DIGEST=y +CT_VERIFY_DOWNLOAD_DIGEST_SHA512=y +# CT_VERIFY_DOWNLOAD_DIGEST_SHA256 is not set +# CT_VERIFY_DOWNLOAD_DIGEST_SHA1 is not set +# CT_VERIFY_DOWNLOAD_DIGEST_MD5 is not set +CT_VERIFY_DOWNLOAD_DIGEST_ALG="sha512" +# CT_VERIFY_DOWNLOAD_SIGNATURE is not set + +# +# Extracting +# +# CT_FORCE_EXTRACT is not set +CT_OVERRIDE_CONFIG_GUESS_SUB=y +# CT_ONLY_EXTRACT is not set +CT_PATCH_BUNDLED=y +# CT_PATCH_LOCAL is not set +# CT_PATCH_BUNDLED_LOCAL is not set +# CT_PATCH_LOCAL_BUNDLED is not set +# CT_PATCH_NONE is not set +CT_PATCH_ORDER="bundled" + +# +# Build behavior +# +CT_PARALLEL_JOBS=0 +CT_LOAD="" +CT_USE_PIPES=y +CT_EXTRA_CFLAGS_FOR_BUILD="-fPIC -DPIC" +CT_EXTRA_CXXFLAGS_FOR_BUILD="-fPIC -DPIC" +CT_EXTRA_LDFLAGS_FOR_BUILD="" +CT_EXTRA_CFLAGS_FOR_HOST="-fPIC -DPIC" +CT_EXTRA_LDFLAGS_FOR_HOST="" +# CT_CONFIG_SHELL_SH is not set +# CT_CONFIG_SHELL_ASH is not set +CT_CONFIG_SHELL_BASH=y +# CT_CONFIG_SHELL_CUSTOM is not set +CT_CONFIG_SHELL="${bash}" + +# +# Logging +# +# CT_LOG_ERROR is not set +# CT_LOG_WARN is not set +# CT_LOG_INFO is not set +# CT_LOG_EXTRA is not set +# CT_LOG_ALL is not set +CT_LOG_DEBUG=y +CT_LOG_LEVEL_MAX="DEBUG" +# CT_LOG_SEE_TOOLS_WARN is not set +# CT_LOG_TO_FILE is not set +# end of Paths and misc options + +# +# Target options +# +# CT_ARCH_ALPHA is not set +# CT_ARCH_ARC is not set +CT_ARCH_ARM=y +# CT_ARCH_AVR is not set +# CT_ARCH_BPF is not set +# CT_ARCH_C6X is not set +# CT_ARCH_LOONGARCH is not set +# CT_ARCH_M68K is not set +# CT_ARCH_MICROBLAZE is not set +# CT_ARCH_MIPS is not set +# CT_ARCH_MOXIE is not set +# CT_ARCH_MSP430 is not set +# CT_ARCH_NIOS2 is not set +# CT_ARCH_POWERPC is not set +# CT_ARCH_PRU is not set +# CT_ARCH_RISCV is not set +# CT_ARCH_S390 is not set +# CT_ARCH_SH is not set +# CT_ARCH_SPARC is not set +# CT_ARCH_X86 is not set +# CT_ARCH_XTENSA is not set +CT_ARCH="arm" +CT_ARCH_CHOICE_KSYM="ARM" +CT_ARCH_CPU="" +CT_ARCH_TUNE="" +CT_ARCH_ARM_SHOW=y + +# +# Options for arm +# +CT_ARCH_ARM_PKG_KSYM="" +CT_ALL_ARCH_CHOICES="ALPHA ARC ARM AVR BPF C6X LOONGARCH M68K MICROBLAZE MIPS MOXIE MSP430 NIOS2 POWERPC PRU RISCV S390 SH SPARC X86 XTENSA" +CT_ARCH_SUFFIX="" +# CT_OMIT_TARGET_VENDOR is not set + +# +# Generic target options +# +# CT_MULTILIB is not set +CT_DEMULTILIB=y +CT_ARCH_SUPPORTS_BOTH_MMU=y +CT_ARCH_DEFAULT_HAS_MMU=y +CT_ARCH_USE_MMU=y +CT_ARCH_SUPPORTS_FLAT_FORMAT=y +CT_ARCH_SUPPORTS_LIBSANITIZER=y +CT_ARCH_SUPPORTS_EITHER_ENDIAN=y +CT_ARCH_DEFAULT_LE=y +# CT_ARCH_BE is not set +CT_ARCH_LE=y +CT_ARCH_ENDIAN="little" +CT_ARCH_SUPPORTS_32=y +CT_ARCH_SUPPORTS_64=y +CT_ARCH_DEFAULT_32=y +CT_ARCH_BITNESS=64 +# CT_ARCH_32 is not set +CT_ARCH_64=y + +# +# Target optimisations +# +CT_ARCH_SUPPORTS_WITH_ARCH=y +CT_ARCH_SUPPORTS_WITH_CPU=y +CT_ARCH_SUPPORTS_WITH_TUNE=y +CT_ARCH_EXCLUSIVE_WITH_CPU=y +CT_ARCH_ARCH="" +CT_TARGET_CFLAGS="-fPIC -DPIC" +CT_TARGET_LDFLAGS="" +# end of Target options + +# +# Toolchain options +# + +# +# General toolchain options +# +CT_USE_SYSROOT=y +CT_SYSROOT_NAME="sysroot" +CT_SYSROOT_DIR_PREFIX="" +# CT_STATIC_TOOLCHAIN is not set +CT_SHOW_CT_VERSION=y +CT_TOOLCHAIN_PKGVERSION="" +CT_TOOLCHAIN_BUGURL="" + +# +# Tuple completion and aliasing +# +CT_TARGET_VENDOR="ffbuild" +CT_TARGET_ALIAS_SED_EXPR="" +CT_TARGET_ALIAS="" + +# +# Toolchain type +# +# CT_NATIVE is not set +CT_CROSS=y +# CT_CROSS_NATIVE is not set +# CT_CANADIAN is not set +CT_TOOLCHAIN_TYPE="cross" + +# +# Build system +# +CT_BUILD="" +CT_BUILD_PREFIX="" +CT_BUILD_SUFFIX="" + +# +# Misc options +# +# CT_TOOLCHAIN_ENABLE_NLS is not set +# end of Toolchain options + +# +# Operating System +# +CT_KERNEL_SUPPORTS_SHARED_LIBS=y +# CT_KERNEL_BARE_METAL is not set +CT_KERNEL_LINUX=y +CT_KERNEL="linux" +CT_KERNEL_CHOICE_KSYM="LINUX" +CT_KERNEL_LINUX_SHOW=y + +# +# Options for linux +# +CT_KERNEL_LINUX_PKG_KSYM="LINUX" +CT_LINUX_DIR_NAME="linux" +CT_LINUX_USE_WWW_KERNEL_ORG=y +# CT_LINUX_USE_ORACLE is not set +CT_LINUX_USE="LINUX" +CT_LINUX_PKG_NAME="linux" +CT_LINUX_SRC_RELEASE=y +# CT_LINUX_SRC_DEVEL is not set +# CT_LINUX_SRC_CUSTOM is not set +CT_LINUX_PATCH_GLOBAL=y +# CT_LINUX_PATCH_BUNDLED is not set +# CT_LINUX_PATCH_LOCAL is not set +# CT_LINUX_PATCH_BUNDLED_LOCAL is not set +# CT_LINUX_PATCH_LOCAL_BUNDLED is not set +# CT_LINUX_PATCH_NONE is not set +CT_LINUX_PATCH_ORDER="global" +# CT_LINUX_V_6_3 is not set +# CT_LINUX_V_6_2 is not set +# CT_LINUX_V_6_1 is not set +# CT_LINUX_V_6_0 is not set +# CT_LINUX_V_5_19 is not set +# CT_LINUX_V_5_18 is not set +# CT_LINUX_V_5_17 is not set +# CT_LINUX_V_5_16 is not set +# CT_LINUX_V_5_15 is not set +# CT_LINUX_V_5_14 is not set +# CT_LINUX_V_5_13 is not set +# CT_LINUX_V_5_12 is not set +# CT_LINUX_V_5_11 is not set +# CT_LINUX_V_5_10 is not set +# CT_LINUX_V_5_9 is not set +# CT_LINUX_V_5_8 is not set +# CT_LINUX_V_5_7 is not set +# CT_LINUX_V_5_5 is not set +# CT_LINUX_V_5_4 is not set +# CT_LINUX_V_5_3 is not set +# CT_LINUX_V_5_2 is not set +# CT_LINUX_V_5_1 is not set +# CT_LINUX_V_5_0 is not set +# CT_LINUX_V_4_20 is not set +# CT_LINUX_V_4_19 is not set +# CT_LINUX_V_4_18 is not set +# CT_LINUX_V_4_17 is not set +# CT_LINUX_V_4_16 is not set +CT_LINUX_V_4_15=y +# CT_LINUX_V_4_14 is not set +# CT_LINUX_V_4_13 is not set +# CT_LINUX_V_4_12 is not set +# CT_LINUX_V_4_11 is not set +# CT_LINUX_V_4_10 is not set +# CT_LINUX_V_4_9 is not set +# CT_LINUX_V_4_4 is not set +# CT_LINUX_V_4_1 is not set +# CT_LINUX_V_3_18 is not set +# CT_LINUX_V_3_16 is not set +# CT_LINUX_V_3_13 is not set +# CT_LINUX_V_3_12 is not set +# CT_LINUX_V_3_10 is not set +CT_LINUX_VERSION="4.15.18" +CT_LINUX_MIRRORS="$(CT_Mirrors kernel.org linux ${CT_LINUX_VERSION})" +CT_LINUX_ARCHIVE_FILENAME="@{pkg_name}-@{version}" +CT_LINUX_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" +CT_LINUX_ARCHIVE_FORMATS=".tar.xz .tar.gz" +CT_LINUX_SIGNATURE_FORMAT="unpacked/.sign" +CT_LINUX_5_19_or_older=y +CT_LINUX_older_than_5_19=y +CT_LINUX_5_12_or_older=y +CT_LINUX_older_than_5_12=y +CT_LINUX_5_5_or_older=y +CT_LINUX_older_than_5_5=y +CT_LINUX_5_3_or_older=y +CT_LINUX_older_than_5_3=y +CT_LINUX_later_than_4_8=y +CT_LINUX_4_8_or_later=y +CT_LINUX_later_than_3_7=y +CT_LINUX_3_7_or_later=y +CT_LINUX_REQUIRE_3_7_or_later=y +CT_LINUX_later_than_3_2=y +CT_LINUX_3_2_or_later=y +CT_LINUX_REQUIRE_3_2_or_later=y +CT_KERNEL_DEP_RSYNC=y +CT_KERNEL_LINUX_VERBOSITY_0=y +# CT_KERNEL_LINUX_VERBOSITY_1 is not set +# CT_KERNEL_LINUX_VERBOSITY_2 is not set +CT_KERNEL_LINUX_VERBOSE_LEVEL=0 +# CT_KERNEL_LINUX_INSTALL_CHECK is not set +CT_ALL_KERNEL_CHOICES="BARE_METAL LINUX WINDOWS" + +# +# Common kernel options +# +CT_SHARED_LIBS=y +# end of Operating System + +# +# Binary utilities +# +CT_ARCH_BINFMT_ELF=y +CT_BINUTILS_BINUTILS=y +CT_BINUTILS="binutils" +CT_BINUTILS_CHOICE_KSYM="BINUTILS" +CT_BINUTILS_BINUTILS_SHOW=y + +# +# Options for binutils +# +CT_BINUTILS_BINUTILS_PKG_KSYM="BINUTILS" +CT_BINUTILS_DIR_NAME="binutils" +CT_BINUTILS_USE_GNU=y +# CT_BINUTILS_USE_LINARO is not set +# CT_BINUTILS_USE_ORACLE is not set +CT_BINUTILS_USE="BINUTILS" +CT_BINUTILS_PKG_NAME="binutils" +CT_BINUTILS_SRC_RELEASE=y +# CT_BINUTILS_SRC_DEVEL is not set +# CT_BINUTILS_SRC_CUSTOM is not set +CT_BINUTILS_PATCH_GLOBAL=y +# CT_BINUTILS_PATCH_BUNDLED is not set +# CT_BINUTILS_PATCH_LOCAL is not set +# CT_BINUTILS_PATCH_BUNDLED_LOCAL is not set +# CT_BINUTILS_PATCH_LOCAL_BUNDLED is not set +# CT_BINUTILS_PATCH_NONE is not set +CT_BINUTILS_PATCH_ORDER="global" +CT_BINUTILS_V_2_40=y +# CT_BINUTILS_V_2_39 is not set +# CT_BINUTILS_V_2_38 is not set +# CT_BINUTILS_V_2_37 is not set +# CT_BINUTILS_V_2_36 is not set +# CT_BINUTILS_V_2_35 is not set +# CT_BINUTILS_V_2_34 is not set +# CT_BINUTILS_V_2_33 is not set +# CT_BINUTILS_V_2_32 is not set +# CT_BINUTILS_V_2_31 is not set +# CT_BINUTILS_V_2_30 is not set +# CT_BINUTILS_V_2_29 is not set +# CT_BINUTILS_V_2_28 is not set +# CT_BINUTILS_V_2_27 is not set +# CT_BINUTILS_V_2_26 is not set +CT_BINUTILS_VERSION="2.40" +CT_BINUTILS_MIRRORS="$(CT_Mirrors GNU binutils) $(CT_Mirrors sourceware binutils/releases)" +CT_BINUTILS_ARCHIVE_FILENAME="@{pkg_name}-@{version}" +CT_BINUTILS_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" +CT_BINUTILS_ARCHIVE_FORMATS=".tar.xz .tar.bz2 .tar.gz" +CT_BINUTILS_SIGNATURE_FORMAT="packed/.sig" +CT_BINUTILS_later_than_2_39=y +CT_BINUTILS_2_39_or_later=y +CT_BINUTILS_later_than_2_30=y +CT_BINUTILS_2_30_or_later=y +CT_BINUTILS_later_than_2_27=y +CT_BINUTILS_2_27_or_later=y +CT_BINUTILS_later_than_2_26=y +CT_BINUTILS_2_26_or_later=y + +# +# GNU binutils +# +CT_BINUTILS_GOLD_SUPPORTS_ARCH=y +CT_BINUTILS_GOLD_SUPPORT=y +CT_BINUTILS_FORCE_LD_BFD_DEFAULT=y +CT_BINUTILS_LINKER_LD=y +# CT_BINUTILS_LINKER_LD_GOLD is not set +CT_BINUTILS_LINKERS_LIST="ld" +CT_BINUTILS_LINKER_DEFAULT="bfd" +CT_BINUTILS_PLUGINS=y +CT_BINUTILS_RELRO=m +CT_BINUTILS_DETERMINISTIC_ARCHIVES=y +CT_BINUTILS_EXTRA_CONFIG_ARRAY="" +# CT_BINUTILS_FOR_TARGET is not set +CT_ALL_BINUTILS_CHOICES="BINUTILS" +# end of Binary utilities + +# +# C-library +# +CT_LIBC_GLIBC=y +# CT_LIBC_MUSL is not set +# CT_LIBC_UCLIBC_NG is not set +CT_LIBC="glibc" +CT_LIBC_CHOICE_KSYM="GLIBC" +CT_LIBC_GLIBC_SHOW=y + +# +# Options for glibc +# +CT_LIBC_GLIBC_PKG_KSYM="GLIBC" +CT_GLIBC_DIR_NAME="glibc" +CT_GLIBC_USE_GNU=y +# CT_GLIBC_USE_ORACLE is not set +CT_GLIBC_USE="GLIBC" +CT_GLIBC_PKG_NAME="glibc" +CT_GLIBC_SRC_RELEASE=y +# CT_GLIBC_SRC_DEVEL is not set +# CT_GLIBC_SRC_CUSTOM is not set +CT_GLIBC_PATCH_GLOBAL=y +# CT_GLIBC_PATCH_BUNDLED is not set +# CT_GLIBC_PATCH_LOCAL is not set +# CT_GLIBC_PATCH_BUNDLED_LOCAL is not set +# CT_GLIBC_PATCH_LOCAL_BUNDLED is not set +# CT_GLIBC_PATCH_NONE is not set +CT_GLIBC_PATCH_ORDER="global" +# CT_GLIBC_V_2_37 is not set +# CT_GLIBC_V_2_36 is not set +# CT_GLIBC_V_2_35 is not set +# CT_GLIBC_V_2_34 is not set +# CT_GLIBC_V_2_33 is not set +# CT_GLIBC_V_2_32 is not set +# CT_GLIBC_V_2_31 is not set +# CT_GLIBC_V_2_30 is not set +# CT_GLIBC_V_2_29 is not set +# CT_GLIBC_V_2_28 is not set +CT_GLIBC_V_2_27=y +# CT_GLIBC_V_2_26 is not set +# CT_GLIBC_V_2_25 is not set +# CT_GLIBC_V_2_24 is not set +# CT_GLIBC_V_2_23 is not set +# CT_GLIBC_V_2_19 is not set +# CT_GLIBC_V_2_17 is not set +CT_GLIBC_VERSION="2.27" +CT_GLIBC_MIRRORS="$(CT_Mirrors GNU glibc)" +CT_GLIBC_ARCHIVE_FILENAME="@{pkg_name}-@{version}" +CT_GLIBC_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" +CT_GLIBC_ARCHIVE_FORMATS=".tar.xz .tar.bz2 .tar.gz" +CT_GLIBC_SIGNATURE_FORMAT="packed/.sig" +CT_GLIBC_2_37_or_older=y +CT_GLIBC_older_than_2_37=y +CT_GLIBC_2_36_or_older=y +CT_GLIBC_older_than_2_36=y +CT_GLIBC_2_34_or_older=y +CT_GLIBC_older_than_2_34=y +CT_GLIBC_2_32_or_older=y +CT_GLIBC_older_than_2_32=y +CT_GLIBC_2_31_or_older=y +CT_GLIBC_older_than_2_31=y +CT_GLIBC_2_30_or_older=y +CT_GLIBC_older_than_2_30=y +CT_GLIBC_2_29_or_older=y +CT_GLIBC_older_than_2_29=y +CT_GLIBC_2_28_or_older=y +CT_GLIBC_older_than_2_28=y +CT_GLIBC_2_27_or_later=y +CT_GLIBC_2_27_or_older=y +CT_GLIBC_later_than_2_26=y +CT_GLIBC_2_26_or_later=y +CT_GLIBC_later_than_2_25=y +CT_GLIBC_2_25_or_later=y +CT_GLIBC_later_than_2_24=y +CT_GLIBC_2_24_or_later=y +CT_GLIBC_later_than_2_23=y +CT_GLIBC_2_23_or_later=y +CT_GLIBC_later_than_2_20=y +CT_GLIBC_2_20_or_later=y +CT_GLIBC_later_than_2_17=y +CT_GLIBC_2_17_or_later=y +CT_GLIBC_later_than_2_14=y +CT_GLIBC_2_14_or_later=y +CT_GLIBC_DEP_KERNEL_HEADERS_VERSION=y +CT_GLIBC_DEP_BINUTILS=y +CT_GLIBC_DEP_GCC=y +CT_GLIBC_DEP_PYTHON=y +CT_GLIBC_SPARC_ALLOW_V7=y +CT_THREADS="nptl" +CT_GLIBC_BUILD_SSP=y +CT_GLIBC_HAS_LIBIDN_ADDON=y +# CT_GLIBC_USE_LIBIDN_ADDON is not set +CT_GLIBC_NO_SPARC_V8=y +CT_GLIBC_HAS_OBSOLETE_RPC=y +CT_GLIBC_EXTRA_CONFIG_ARRAY="--with-pic" +CT_GLIBC_CONFIGPARMS="" +# CT_GLIBC_ENABLE_DEBUG is not set +CT_GLIBC_EXTRA_CFLAGS="-fPIC -DPIC" +CT_GLIBC_ENABLE_OBSOLETE_RPC=y +# CT_GLIBC_ENABLE_FORTIFIED_BUILD is not set +# CT_GLIBC_DISABLE_VERSIONING is not set +CT_GLIBC_OLDEST_ABI="" +CT_GLIBC_FORCE_UNWIND=y +# CT_GLIBC_LOCALES is not set +# CT_GLIBC_KERNEL_VERSION_NONE is not set +CT_GLIBC_KERNEL_VERSION_AS_HEADERS=y +# CT_GLIBC_KERNEL_VERSION_CHOSEN is not set +CT_GLIBC_MIN_KERNEL="4.15.18" +CT_GLIBC_SSP_DEFAULT=y +# CT_GLIBC_SSP_NO is not set +# CT_GLIBC_SSP_YES is not set +# CT_GLIBC_SSP_ALL is not set +# CT_GLIBC_SSP_STRONG is not set +CT_GLIBC_ENABLE_COMMON_FLAG=y +CT_ALL_LIBC_CHOICES="AVR_LIBC GLIBC MINGW_W64 MOXIEBOX MUSL NEWLIB NONE PICOLIBC UCLIBC_NG" +CT_LIBC_SUPPORT_THREADS_ANY=y +CT_LIBC_SUPPORT_THREADS_NATIVE=y + +# +# Common C library options +# +CT_THREADS_NATIVE=y +# CT_CREATE_LDSO_CONF is not set +CT_LIBC_XLDD=y +# end of C-library + +# +# C compiler +# +CT_CC_CORE_NEEDED=y +CT_CC_SUPPORT_CXX=y +CT_CC_SUPPORT_FORTRAN=y +CT_CC_SUPPORT_ADA=y +CT_CC_SUPPORT_D=y +CT_CC_SUPPORT_JIT=y +CT_CC_SUPPORT_OBJC=y +CT_CC_SUPPORT_OBJCXX=y +CT_CC_SUPPORT_GOLANG=y +CT_CC_GCC=y +CT_CC="gcc" +CT_CC_CHOICE_KSYM="GCC" +CT_CC_GCC_SHOW=y + +# +# Options for gcc +# +CT_CC_GCC_PKG_KSYM="GCC" +CT_GCC_DIR_NAME="gcc" +CT_GCC_USE_GNU=y +# CT_GCC_USE_LINARO is not set +# CT_GCC_USE_ORACLE is not set +CT_GCC_USE="GCC" +CT_GCC_PKG_NAME="gcc" +CT_GCC_SRC_RELEASE=y +# CT_GCC_SRC_DEVEL is not set +# CT_GCC_SRC_CUSTOM is not set +CT_GCC_PATCH_GLOBAL=y +# CT_GCC_PATCH_BUNDLED is not set +# CT_GCC_PATCH_LOCAL is not set +# CT_GCC_PATCH_BUNDLED_LOCAL is not set +# CT_GCC_PATCH_LOCAL_BUNDLED is not set +# CT_GCC_PATCH_NONE is not set +CT_GCC_PATCH_ORDER="global" +CT_GCC_V_13=y +# CT_GCC_V_12 is not set +# CT_GCC_V_11 is not set +# CT_GCC_V_10 is not set +# CT_GCC_V_9 is not set +# CT_GCC_V_8 is not set +# CT_GCC_V_7 is not set +# CT_GCC_V_6 is not set +# CT_GCC_V_5 is not set +# CT_GCC_V_4_9 is not set +CT_GCC_VERSION="13.1.0" +CT_GCC_MIRRORS="$(CT_Mirrors GNU gcc/gcc-${CT_GCC_VERSION}) $(CT_Mirrors sourceware gcc/releases/gcc-${CT_GCC_VERSION})" +CT_GCC_ARCHIVE_FILENAME="@{pkg_name}-@{version}" +CT_GCC_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" +CT_GCC_ARCHIVE_FORMATS=".tar.xz .tar.gz" +CT_GCC_SIGNATURE_FORMAT="" +CT_GCC_later_than_13=y +CT_GCC_13_or_later=y +CT_GCC_later_than_12=y +CT_GCC_12_or_later=y +CT_GCC_later_than_11=y +CT_GCC_11_or_later=y +CT_GCC_later_than_10=y +CT_GCC_10_or_later=y +CT_GCC_later_than_9=y +CT_GCC_9_or_later=y +CT_GCC_later_than_8=y +CT_GCC_8_or_later=y +CT_GCC_later_than_7=y +CT_GCC_7_or_later=y +CT_GCC_later_than_6=y +CT_GCC_6_or_later=y +CT_GCC_later_than_5=y +CT_GCC_5_or_later=y +CT_GCC_later_than_4_9=y +CT_GCC_4_9_or_later=y +CT_GCC_REQUIRE_4_9_or_later=y +CT_CC_GCC_ENABLE_PLUGINS=y +CT_CC_GCC_HAS_LIBMPX=y +CT_CC_GCC_ENABLE_CXX_FLAGS="" +CT_CC_GCC_CORE_EXTRA_CONFIG_ARRAY="--enable-host-shared --enable-default-ssp" +CT_CC_GCC_EXTRA_CONFIG_ARRAY="--enable-host-shared --enable-default-ssp --with-build-config=bootstrap-lto-lean --enable-link-serialization=2" +# CT_CC_GCC_STATIC_LIBSTDCXX is not set +# CT_CC_GCC_SYSTEM_ZLIB is not set +CT_CC_GCC_CONFIG_TLS=m + +# +# Optimisation features +# +CT_CC_GCC_USE_GRAPHITE=y +CT_CC_GCC_USE_LTO=y +CT_CC_GCC_LTO_ZSTD=m + +# +# Settings for libraries running on target +# +CT_CC_GCC_ENABLE_DEFAULT_PIE=y +# CT_CC_GCC_ENABLE_TARGET_OPTSPACE is not set +# CT_CC_GCC_LIBMUDFLAP is not set +CT_CC_GCC_LIBGOMP=y +CT_CC_GCC_LIBSSP=m +# CT_CC_GCC_LIBQUADMATH is not set +# CT_CC_GCC_LIBSANITIZER is not set +# CT_CC_GCC_LIBSTDCXX_VERBOSE is not set + +# +# Misc. obscure options. +# +CT_CC_CXA_ATEXIT=y +CT_CC_GCC_TM_CLONE_REGISTRY=m +# CT_CC_GCC_DISABLE_PCH is not set +CT_CC_GCC_SJLJ_EXCEPTIONS=m +CT_CC_GCC_LDBL_128=m +# CT_CC_GCC_BUILD_ID is not set +CT_CC_GCC_LNK_HASH_STYLE_DEFAULT=y +# CT_CC_GCC_LNK_HASH_STYLE_SYSV is not set +# CT_CC_GCC_LNK_HASH_STYLE_GNU is not set +# CT_CC_GCC_LNK_HASH_STYLE_BOTH is not set +CT_CC_GCC_LNK_HASH_STYLE="" +CT_CC_GCC_DEC_FLOATS_AUTO=y +# CT_CC_GCC_DEC_FLOATS_BID is not set +# CT_CC_GCC_DEC_FLOATS_DPD is not set +# CT_CC_GCC_DEC_FLOATS_NO is not set +CT_CC_GCC_DEC_FLOATS="" +CT_ALL_CC_CHOICES="GCC" + +# +# Additional supported languages: +# +CT_CC_LANG_CXX=y +# CT_CC_LANG_FORTRAN is not set +# CT_CC_LANG_JIT is not set +# CT_CC_LANG_ADA is not set +# CT_CC_LANG_D is not set +# CT_CC_LANG_OBJC is not set +# CT_CC_LANG_OBJCXX is not set +# CT_CC_LANG_GOLANG is not set +CT_CC_LANG_OTHERS="" +# end of C compiler + +# +# Debug facilities +# +# CT_DEBUG_DUMA is not set +# CT_DEBUG_GDB is not set +# CT_DEBUG_LTRACE is not set +# CT_DEBUG_STRACE is not set +CT_ALL_DEBUG_CHOICES="DUMA GDB LTRACE STRACE" +# end of Debug facilities + +# +# Companion libraries +# +# CT_COMPLIBS_CHECK is not set +# CT_COMP_LIBS_CLOOG is not set +# CT_COMP_LIBS_EXPAT is not set +CT_COMP_LIBS_GETTEXT=y +CT_COMP_LIBS_GETTEXT_PKG_KSYM="GETTEXT" +CT_GETTEXT_DIR_NAME="gettext" +CT_GETTEXT_PKG_NAME="gettext" +CT_GETTEXT_SRC_RELEASE=y +# CT_GETTEXT_SRC_DEVEL is not set +# CT_GETTEXT_SRC_CUSTOM is not set +CT_GETTEXT_PATCH_GLOBAL=y +# CT_GETTEXT_PATCH_BUNDLED is not set +# CT_GETTEXT_PATCH_LOCAL is not set +# CT_GETTEXT_PATCH_BUNDLED_LOCAL is not set +# CT_GETTEXT_PATCH_LOCAL_BUNDLED is not set +# CT_GETTEXT_PATCH_NONE is not set +CT_GETTEXT_PATCH_ORDER="global" +CT_GETTEXT_V_0_21=y +# CT_GETTEXT_V_0_20_1 is not set +# CT_GETTEXT_V_0_19_8_1 is not set +CT_GETTEXT_VERSION="0.21" +CT_GETTEXT_MIRRORS="$(CT_Mirrors GNU gettext)" +CT_GETTEXT_ARCHIVE_FILENAME="@{pkg_name}-@{version}" +CT_GETTEXT_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" +CT_GETTEXT_ARCHIVE_FORMATS=".tar.xz .tar.gz" +CT_GETTEXT_SIGNATURE_FORMAT="packed/.sig" +CT_GETTEXT_0_21_or_later=y +CT_GETTEXT_0_21_or_older=y +CT_GETTEXT_INCOMPATIBLE_WITH_UCLIBC_NG=y + +# +# This version of gettext is not compatible with uClibc-NG. Select +# + +# +# a different version if uClibc-NG is used on the target or (in a +# + +# +# Canadian cross build) on the host. +# +CT_COMP_LIBS_GMP=y +CT_COMP_LIBS_GMP_PKG_KSYM="GMP" +CT_GMP_DIR_NAME="gmp" +CT_GMP_PKG_NAME="gmp" +CT_GMP_SRC_RELEASE=y +# CT_GMP_SRC_DEVEL is not set +# CT_GMP_SRC_CUSTOM is not set +CT_GMP_PATCH_GLOBAL=y +# CT_GMP_PATCH_BUNDLED is not set +# CT_GMP_PATCH_LOCAL is not set +# CT_GMP_PATCH_BUNDLED_LOCAL is not set +# CT_GMP_PATCH_LOCAL_BUNDLED is not set +# CT_GMP_PATCH_NONE is not set +CT_GMP_PATCH_ORDER="global" +CT_GMP_V_6_2=y +# CT_GMP_V_6_1 is not set +CT_GMP_VERSION="6.2.1" +CT_GMP_MIRRORS="https://gmplib.org/download/gmp https://gmplib.org/download/gmp/archive $(CT_Mirrors GNU gmp)" +CT_GMP_ARCHIVE_FILENAME="@{pkg_name}-@{version}" +CT_GMP_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" +CT_GMP_ARCHIVE_FORMATS=".tar.xz .tar.lz .tar.bz2" +CT_GMP_SIGNATURE_FORMAT="packed/.sig" +CT_COMP_LIBS_ISL=y +CT_COMP_LIBS_ISL_PKG_KSYM="ISL" +CT_ISL_DIR_NAME="isl" +CT_ISL_PKG_NAME="isl" +CT_ISL_SRC_RELEASE=y +# CT_ISL_SRC_DEVEL is not set +# CT_ISL_SRC_CUSTOM is not set +CT_ISL_PATCH_GLOBAL=y +# CT_ISL_PATCH_BUNDLED is not set +# CT_ISL_PATCH_LOCAL is not set +# CT_ISL_PATCH_BUNDLED_LOCAL is not set +# CT_ISL_PATCH_LOCAL_BUNDLED is not set +# CT_ISL_PATCH_NONE is not set +CT_ISL_PATCH_ORDER="global" +CT_ISL_V_0_26=y +# CT_ISL_V_0_25 is not set +# CT_ISL_V_0_24 is not set +# CT_ISL_V_0_23 is not set +# CT_ISL_V_0_22 is not set +# CT_ISL_V_0_21 is not set +# CT_ISL_V_0_20 is not set +# CT_ISL_V_0_19 is not set +# CT_ISL_V_0_18 is not set +# CT_ISL_V_0_17 is not set +# CT_ISL_V_0_16 is not set +# CT_ISL_V_0_15 is not set +# CT_ISL_V_0_11 is not set +CT_ISL_VERSION="0.26" +CT_ISL_MIRRORS="https://libisl.sourceforge.io" +CT_ISL_ARCHIVE_FILENAME="@{pkg_name}-@{version}" +CT_ISL_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" +CT_ISL_ARCHIVE_FORMATS=".tar.xz .tar.bz2 .tar.gz" +CT_ISL_SIGNATURE_FORMAT="" +CT_ISL_later_than_0_18=y +CT_ISL_0_18_or_later=y +CT_ISL_later_than_0_15=y +CT_ISL_0_15_or_later=y +# CT_COMP_LIBS_LIBELF is not set +CT_COMP_LIBS_LIBICONV=y +CT_COMP_LIBS_LIBICONV_PKG_KSYM="LIBICONV" +CT_LIBICONV_DIR_NAME="libiconv" +CT_LIBICONV_PKG_NAME="libiconv" +CT_LIBICONV_SRC_RELEASE=y +# CT_LIBICONV_SRC_DEVEL is not set +# CT_LIBICONV_SRC_CUSTOM is not set +CT_LIBICONV_PATCH_GLOBAL=y +# CT_LIBICONV_PATCH_BUNDLED is not set +# CT_LIBICONV_PATCH_LOCAL is not set +# CT_LIBICONV_PATCH_BUNDLED_LOCAL is not set +# CT_LIBICONV_PATCH_LOCAL_BUNDLED is not set +# CT_LIBICONV_PATCH_NONE is not set +CT_LIBICONV_PATCH_ORDER="global" +CT_LIBICONV_V_1_16=y +# CT_LIBICONV_V_1_15 is not set +CT_LIBICONV_VERSION="1.16" +CT_LIBICONV_MIRRORS="$(CT_Mirrors GNU libiconv)" +CT_LIBICONV_ARCHIVE_FILENAME="@{pkg_name}-@{version}" +CT_LIBICONV_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" +CT_LIBICONV_ARCHIVE_FORMATS=".tar.gz" +CT_LIBICONV_SIGNATURE_FORMAT="packed/.sig" +CT_COMP_LIBS_MPC=y +CT_COMP_LIBS_MPC_PKG_KSYM="MPC" +CT_MPC_DIR_NAME="mpc" +CT_MPC_PKG_NAME="mpc" +CT_MPC_SRC_RELEASE=y +# CT_MPC_SRC_DEVEL is not set +# CT_MPC_SRC_CUSTOM is not set +CT_MPC_PATCH_GLOBAL=y +# CT_MPC_PATCH_BUNDLED is not set +# CT_MPC_PATCH_LOCAL is not set +# CT_MPC_PATCH_BUNDLED_LOCAL is not set +# CT_MPC_PATCH_LOCAL_BUNDLED is not set +# CT_MPC_PATCH_NONE is not set +CT_MPC_PATCH_ORDER="global" +CT_MPC_V_1_2=y +# CT_MPC_V_1_1 is not set +# CT_MPC_V_1_0 is not set +CT_MPC_VERSION="1.2.1" +CT_MPC_MIRRORS="http://www.multiprecision.org/downloads $(CT_Mirrors GNU mpc)" +CT_MPC_ARCHIVE_FILENAME="@{pkg_name}-@{version}" +CT_MPC_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" +CT_MPC_ARCHIVE_FORMATS=".tar.gz" +CT_MPC_SIGNATURE_FORMAT="packed/.sig" +CT_MPC_later_than_1_1_0=y +CT_MPC_1_1_0_or_later=y +CT_COMP_LIBS_MPFR=y +CT_COMP_LIBS_MPFR_PKG_KSYM="MPFR" +CT_MPFR_DIR_NAME="mpfr" +CT_MPFR_PKG_NAME="mpfr" +CT_MPFR_SRC_RELEASE=y +# CT_MPFR_SRC_DEVEL is not set +# CT_MPFR_SRC_CUSTOM is not set +CT_MPFR_PATCH_GLOBAL=y +# CT_MPFR_PATCH_BUNDLED is not set +# CT_MPFR_PATCH_LOCAL is not set +# CT_MPFR_PATCH_BUNDLED_LOCAL is not set +# CT_MPFR_PATCH_LOCAL_BUNDLED is not set +# CT_MPFR_PATCH_NONE is not set +CT_MPFR_PATCH_ORDER="global" +CT_MPFR_V_4_1=y +# CT_MPFR_V_4_0 is not set +# CT_MPFR_V_3_1 is not set +CT_MPFR_VERSION="4.1.0" +CT_MPFR_MIRRORS="http://www.mpfr.org/mpfr-${CT_MPFR_VERSION} $(CT_Mirrors GNU mpfr)" +CT_MPFR_ARCHIVE_FILENAME="@{pkg_name}-@{version}" +CT_MPFR_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" +CT_MPFR_ARCHIVE_FORMATS=".tar.xz .tar.bz2 .tar.gz .zip" +CT_MPFR_SIGNATURE_FORMAT="packed/.asc" +CT_MPFR_later_than_4_0_0=y +CT_MPFR_4_0_0_or_later=y +CT_COMP_LIBS_NCURSES=y +CT_COMP_LIBS_NCURSES_PKG_KSYM="NCURSES" +CT_NCURSES_DIR_NAME="ncurses" +CT_NCURSES_PKG_NAME="ncurses" +CT_NCURSES_SRC_RELEASE=y +# CT_NCURSES_SRC_DEVEL is not set +# CT_NCURSES_SRC_CUSTOM is not set +CT_NCURSES_PATCH_GLOBAL=y +# CT_NCURSES_PATCH_BUNDLED is not set +# CT_NCURSES_PATCH_LOCAL is not set +# CT_NCURSES_PATCH_BUNDLED_LOCAL is not set +# CT_NCURSES_PATCH_LOCAL_BUNDLED is not set +# CT_NCURSES_PATCH_NONE is not set +CT_NCURSES_PATCH_ORDER="global" +CT_NCURSES_V_6_4=y +# CT_NCURSES_V_6_2 is not set +# CT_NCURSES_V_6_1 is not set +# CT_NCURSES_V_6_0 is not set +CT_NCURSES_VERSION="6.4" +CT_NCURSES_MIRRORS="https://invisible-mirror.net/archives/ncurses $(CT_Mirrors GNU ncurses)" +CT_NCURSES_ARCHIVE_FILENAME="@{pkg_name}-@{version}" +CT_NCURSES_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" +CT_NCURSES_ARCHIVE_FORMATS=".tar.gz" +CT_NCURSES_SIGNATURE_FORMAT="packed/.sig" +# CT_NCURSES_NEW_ABI is not set +CT_NCURSES_HOST_CONFIG_ARGS="" +CT_NCURSES_HOST_DISABLE_DB=y +CT_NCURSES_HOST_FALLBACKS="linux,xterm,xterm-color,xterm-256color,vt100" +CT_NCURSES_TARGET_CONFIG_ARGS="" +# CT_NCURSES_TARGET_DISABLE_DB is not set +CT_NCURSES_TARGET_FALLBACKS="" +CT_COMP_LIBS_ZLIB=y +CT_COMP_LIBS_ZLIB_PKG_KSYM="ZLIB" +CT_ZLIB_DIR_NAME="zlib" +CT_ZLIB_PKG_NAME="zlib" +CT_ZLIB_SRC_RELEASE=y +# CT_ZLIB_SRC_DEVEL is not set +# CT_ZLIB_SRC_CUSTOM is not set +CT_ZLIB_PATCH_GLOBAL=y +# CT_ZLIB_PATCH_BUNDLED is not set +# CT_ZLIB_PATCH_LOCAL is not set +# CT_ZLIB_PATCH_BUNDLED_LOCAL is not set +# CT_ZLIB_PATCH_LOCAL_BUNDLED is not set +# CT_ZLIB_PATCH_NONE is not set +CT_ZLIB_PATCH_ORDER="global" +CT_ZLIB_V_1_2_13=y +# CT_ZLIB_V_1_2_12 is not set +CT_ZLIB_VERSION="1.2.13" +CT_ZLIB_MIRRORS="https://github.com/madler/zlib/releases/download/v${CT_ZLIB_VERSION} https://www.zlib.net/" +CT_ZLIB_ARCHIVE_FILENAME="@{pkg_name}-@{version}" +CT_ZLIB_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" +CT_ZLIB_ARCHIVE_FORMATS=".tar.xz .tar.gz" +CT_ZLIB_SIGNATURE_FORMAT="packed/.asc" +CT_COMP_LIBS_ZSTD=y +CT_COMP_LIBS_ZSTD_PKG_KSYM="ZSTD" +CT_ZSTD_DIR_NAME="zstd" +CT_ZSTD_PKG_NAME="zstd" +CT_ZSTD_SRC_RELEASE=y +# CT_ZSTD_SRC_DEVEL is not set +# CT_ZSTD_SRC_CUSTOM is not set +CT_ZSTD_PATCH_GLOBAL=y +# CT_ZSTD_PATCH_BUNDLED is not set +# CT_ZSTD_PATCH_LOCAL is not set +# CT_ZSTD_PATCH_BUNDLED_LOCAL is not set +# CT_ZSTD_PATCH_LOCAL_BUNDLED is not set +# CT_ZSTD_PATCH_NONE is not set +CT_ZSTD_PATCH_ORDER="global" +CT_ZSTD_V_1_5_5=y +# CT_ZSTD_V_1_5_2 is not set +CT_ZSTD_VERSION="1.5.5" +CT_ZSTD_MIRRORS="https://github.com/facebook/zstd/releases/download/v${CT_ZSTD_VERSION} https://www.zstd.net/" +CT_ZSTD_ARCHIVE_FILENAME="@{pkg_name}-@{version}" +CT_ZSTD_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" +CT_ZSTD_ARCHIVE_FORMATS=".tar.gz" +CT_ZSTD_SIGNATURE_FORMAT="packed/.sig" +CT_ALL_COMP_LIBS_CHOICES="CLOOG EXPAT GETTEXT GMP GNUPRUMCU ISL LIBELF LIBICONV MPC MPFR NCURSES NEWLIB_NANO PICOLIBC ZLIB ZSTD" +CT_LIBICONV_NEEDED=y +CT_GETTEXT_NEEDED=y +CT_GMP_NEEDED=y +CT_MPFR_NEEDED=y +CT_ISL_NEEDED=y +CT_MPC_NEEDED=y +CT_NCURSES_NEEDED=y +CT_ZLIB_NEEDED=y +CT_ZSTD_NEEDED=y +CT_LIBICONV=y +CT_GETTEXT=y +CT_GMP=y +CT_MPFR=y +CT_ISL=y +CT_MPC=y +CT_NCURSES=y +CT_ZLIB=y +CT_ZSTD=y +# end of Companion libraries + +# +# Companion tools +# +# CT_COMP_TOOLS_FOR_HOST is not set +# CT_COMP_TOOLS_AUTOCONF is not set +# CT_COMP_TOOLS_AUTOMAKE is not set +# CT_COMP_TOOLS_BISON is not set +# CT_COMP_TOOLS_DTC is not set +# CT_COMP_TOOLS_LIBTOOL is not set +# CT_COMP_TOOLS_M4 is not set +# CT_COMP_TOOLS_MAKE is not set +CT_ALL_COMP_TOOLS_CHOICES="AUTOCONF AUTOMAKE BISON DTC LIBTOOL M4 MAKE" +# end of Companion tools + +# +# Test suite +# +# CT_TEST_SUITE_GCC is not set +# end of Test suite diff --git a/images/base-linuxarm64/gen-implib.sh b/images/base-linuxarm64/gen-implib.sh new file mode 100755 index 0000000..71d6d46 --- /dev/null +++ b/images/base-linuxarm64/gen-implib.sh @@ -0,0 +1,17 @@ +#!/bin/bash +set -e +if [[ $# != 2 ]]; then + echo "Invalid arguments" + exit 1 +fi +IN="$1" +OUT="$2" + +TMPDIR="$(mktemp -d)" +trap "rm -rf '$TMPDIR'" EXIT +cd "$TMPDIR" + +set -x +python3 /opt/implib/implib-gen.py --target aarch64-linux-gnu --dlopen --lazy-load --verbose "$IN" +${FFBUILD_CROSS_PREFIX}gcc $CFLAGS $STAGE_CFLAGS -DIMPLIB_HIDDEN_SHIMS -c *.tramp.S *.init.c +${FFBUILD_CROSS_PREFIX}ar -rcs "$OUT" *.tramp.o *.init.o diff --git a/images/base-linuxarm64/toolchain.cmake b/images/base-linuxarm64/toolchain.cmake new file mode 100644 index 0000000..9ca16df --- /dev/null +++ b/images/base-linuxarm64/toolchain.cmake @@ -0,0 +1,16 @@ +set(CMAKE_SYSTEM_NAME Linux) +set(CMAKE_SYSTEM_PROCESSOR aarch64) + +set(triple aarch64-ffbuild-linux-gnu) + +set(CMAKE_C_COMPILER ${triple}-gcc) +set(CMAKE_CXX_COMPILER ${triple}-g++) +set(CMAKE_RANLIB ${triple}-gcc-ranlib) +set(CMAKE_AR ${triple}-gcc-ar) + +set(CMAKE_SYSROOT /opt/ct-ng/${triple}/sysroot) +set(CMAKE_FIND_ROOT_PATH /opt/ct-ng /opt/ct-ng/${triple}/sysroot /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) diff --git a/images/base-win32/Dockerfile b/images/base-win32/Dockerfile index faae234..01105ef 100644 --- a/images/base-win32/Dockerfile +++ b/images/base-win32/Dockerfile @@ -1,15 +1,22 @@ -ARG GH_REPO=btbn/ffmpeg-builds -FROM ghcr.io/$GH_REPO/base:latest +ARG GH_REPO=ghcr.io/btbn/ffmpeg-builds +FROM $GH_REPO/base:latest -ENV DEBIAN_FRONTEND noninteractive +RUN --mount=src=ct-ng-config,dst=/.config \ + git clone --filter=blob:none https://github.com/crosstool-ng/crosstool-ng.git /ct-ng && cd /ct-ng && \ + ./bootstrap && \ + ./configure --enable-local && \ + make -j$(nproc) && \ + cp /.config .config && \ + ./ct-ng build && \ + cd / && \ + rm -rf ct-ng +# Prepare "cross" environment to heavily favour static builds RUN \ - apt-get -y install binutils-mingw-w64-i686 gcc-mingw-w64-i686 g++-mingw-w64-i686 gfortran-mingw-w64-i686 && \ - 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 && \ + find /opt/ct-ng \ + -name "*.dll" \ + -or -name "*.dll.a" \ + -delete && \ mkdir /opt/ffbuild RUN rustup target add i686-pc-windows-gnu @@ -17,17 +24,24 @@ RUN rustup target add i686-pc-windows-gnu 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- \ +ENV FFBUILD_TOOLCHAIN=i686-w64-mingw32 +ENV PATH="/opt/ct-ng/bin:${PATH}" \ + FFBUILD_TARGET_FLAGS="--pkg-config=pkg-config --cross-prefix=${FFBUILD_TOOLCHAIN}- --arch=i686 --target-os=mingw32" \ + FFBUILD_CROSS_PREFIX=${FFBUILD_TOOLCHAIN}- \ FFBUILD_RUST_TARGET=i686-pc-windows-gnu \ FFBUILD_PREFIX=/opt/ffbuild \ FFBUILD_CMAKE_TOOLCHAIN=/toolchain.cmake \ PKG_CONFIG=pkg-config \ PKG_CONFIG_LIBDIR=/opt/ffbuild/lib/pkgconfig:/opt/ffbuild/share/pkgconfig \ + CC="${FFBUILD_TOOLCHAIN}-gcc" \ + CXX="${FFBUILD_TOOLCHAIN}-g++" \ + LD="${FFBUILD_TOOLCHAIN}-ld" \ + AR="${FFBUILD_TOOLCHAIN}-gcc-ar" \ + RANLIB="${FFBUILD_TOOLCHAIN}-gcc-ranlib" \ + NM="${FFBUILD_TOOLCHAIN}-gcc-nm" \ + DLLTOOL="${FFBUILD_TOOLCHAIN}-dlltool" \ 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" \ - DLLTOOL="i686-w64-mingw32-dlltool" \ STAGE_CFLAGS="-fno-semantic-interposition" \ STAGE_CXXFLAGS="-fno-semantic-interposition" diff --git a/images/base-win32/cross.meson b/images/base-win32/cross.meson index 5b99ce3..c2a0ad1 100644 --- a/images/base-win32/cross.meson +++ b/images/base-win32/cross.meson @@ -1,9 +1,11 @@ [binaries] c = 'i686-w64-mingw32-gcc' cpp = 'i686-w64-mingw32-g++' -ar = 'i686-w64-mingw32-ar' +ar = 'i686-w64-mingw32-gcc-ar' +ranlib = 'i686-w64-mingw32-gcc-ranlib' strip = 'i686-w64-mingw32-strip' windres = 'i686-w64-mingw32-windres' +dlltool = 'i686-w64-mingw32-dlltool' exe_wrapper = ['wine'] [properties] diff --git a/images/base-win32/ct-ng-config b/images/base-win32/ct-ng-config new file mode 100644 index 0000000..96759e1 --- /dev/null +++ b/images/base-win32/ct-ng-config @@ -0,0 +1,784 @@ +# +# Automatically generated file; DO NOT EDIT. +# crosstool-NG 1.25.0.196_227d99d Configuration +# +CT_CONFIGURE_has_static_link=y +CT_CONFIGURE_has_cxx11=y +CT_CONFIGURE_has_wget=y +CT_CONFIGURE_has_curl=y +CT_CONFIGURE_has_meson=y +CT_CONFIGURE_has_ninja=y +CT_CONFIGURE_has_rsync=y +CT_CONFIGURE_has_make_3_81_or_newer=y +CT_CONFIGURE_has_make_4_0_or_newer=y +CT_CONFIGURE_has_libtool_2_4_or_newer=y +CT_CONFIGURE_has_libtoolize_2_4_or_newer=y +CT_CONFIGURE_has_autoconf_2_71_or_newer=y +CT_CONFIGURE_has_autoreconf_2_71_or_newer=y +CT_CONFIGURE_has_automake_1_16_or_newer=y +CT_CONFIGURE_has_gnu_m4_1_4_12_or_newer=y +CT_CONFIGURE_has_python_3_4_or_newer=y +CT_CONFIGURE_has_bison_2_7_or_newer=y +CT_CONFIGURE_has_bison_3_0_4_or_newer=y +CT_CONFIGURE_has_python=y +CT_CONFIGURE_has_svn=y +CT_CONFIGURE_has_git=y +CT_CONFIGURE_has_md5sum=y +CT_CONFIGURE_has_sha1sum=y +CT_CONFIGURE_has_sha256sum=y +CT_CONFIGURE_has_sha512sum=y +CT_CONFIGURE_has_install_with_strip_program=y +CT_VERSION="1.25.0.196_227d99d" +CT_VCHECK="" +CT_CONFIG_VERSION_ENV="4" +CT_CONFIG_VERSION_CURRENT="4" +CT_CONFIG_VERSION="4" +CT_MODULES=y + +# +# Paths and misc options +# + +# +# crosstool-NG behavior +# +# CT_OBSOLETE is not set +CT_EXPERIMENTAL=y +CT_ALLOW_BUILD_AS_ROOT=y +CT_ALLOW_BUILD_AS_ROOT_SURE=y +# CT_ENABLE_EXPERIMENTAL_BUNDLED_PATCHES is not set +# CT_DEBUG_CT is not set + +# +# Paths +# +CT_LOCAL_TARBALLS_DIR="${HOME}/src" +# CT_SAVE_TARBALLS is not set +# CT_TARBALLS_BUILDROOT_LAYOUT is not set +CT_WORK_DIR="${CT_TOP_DIR}/build" +CT_BUILD_TOP_DIR="${CT_WORK_DIR:-${CT_TOP_DIR}/.build}/${CT_HOST:+HOST-${CT_HOST}/}${CT_TARGET}" +CT_BUILD_DIR="${CT_BUILD_TOP_DIR}/build" +CT_PREFIX_DIR="/opt/ct-ng" +CT_RM_RF_PREFIX_DIR=y +CT_REMOVE_DOCS=y +# CT_INSTALL_LICENSES is not set +# CT_PREFIX_DIR_RO is not set +CT_STRIP_HOST_TOOLCHAIN_EXECUTABLES=y +CT_STRIP_TARGET_TOOLCHAIN_EXECUTABLES=y +# CT_TARBALL_RESULT is not set + +# +# Downloading +# +CT_DOWNLOAD_AGENT_WGET=y +# CT_DOWNLOAD_AGENT_CURL is not set +# CT_DOWNLOAD_AGENT_NONE is not set +# CT_FORBID_DOWNLOAD is not set +# CT_FORCE_DOWNLOAD is not set +CT_CONNECT_TIMEOUT=10 +CT_DOWNLOAD_WGET_OPTIONS="--passive-ftp --tries=3 -nc --progress=dot:binary" +# CT_ONLY_DOWNLOAD is not set +# CT_USE_MIRROR is not set +CT_VERIFY_DOWNLOAD_DIGEST=y +CT_VERIFY_DOWNLOAD_DIGEST_SHA512=y +# CT_VERIFY_DOWNLOAD_DIGEST_SHA256 is not set +# CT_VERIFY_DOWNLOAD_DIGEST_SHA1 is not set +# CT_VERIFY_DOWNLOAD_DIGEST_MD5 is not set +CT_VERIFY_DOWNLOAD_DIGEST_ALG="sha512" +# CT_VERIFY_DOWNLOAD_SIGNATURE is not set + +# +# Extracting +# +# CT_FORCE_EXTRACT is not set +CT_OVERRIDE_CONFIG_GUESS_SUB=y +# CT_ONLY_EXTRACT is not set +CT_PATCH_BUNDLED=y +# CT_PATCH_LOCAL is not set +# CT_PATCH_BUNDLED_LOCAL is not set +# CT_PATCH_LOCAL_BUNDLED is not set +# CT_PATCH_NONE is not set +CT_PATCH_ORDER="bundled" + +# +# Build behavior +# +CT_PARALLEL_JOBS=0 +CT_LOAD="" +CT_USE_PIPES=y +CT_EXTRA_CFLAGS_FOR_BUILD="" +CT_EXTRA_CXXFLAGS_FOR_BUILD="" +CT_EXTRA_LDFLAGS_FOR_BUILD="" +CT_EXTRA_CFLAGS_FOR_HOST="" +CT_EXTRA_LDFLAGS_FOR_HOST="" +# CT_CONFIG_SHELL_SH is not set +# CT_CONFIG_SHELL_ASH is not set +CT_CONFIG_SHELL_BASH=y +# CT_CONFIG_SHELL_CUSTOM is not set +CT_CONFIG_SHELL="${bash}" + +# +# Logging +# +# CT_LOG_ERROR is not set +# CT_LOG_WARN is not set +# CT_LOG_INFO is not set +# CT_LOG_EXTRA is not set +# CT_LOG_ALL is not set +CT_LOG_DEBUG=y +CT_LOG_LEVEL_MAX="DEBUG" +# CT_LOG_SEE_TOOLS_WARN is not set +# CT_LOG_TO_FILE is not set +# end of Paths and misc options + +# +# Target options +# +# CT_ARCH_ALPHA is not set +# CT_ARCH_ARC is not set +# CT_ARCH_ARM is not set +# CT_ARCH_AVR is not set +# CT_ARCH_BPF is not set +# CT_ARCH_C6X is not set +# CT_ARCH_LOONGARCH is not set +# CT_ARCH_M68K is not set +# CT_ARCH_MICROBLAZE is not set +# CT_ARCH_MIPS is not set +# CT_ARCH_MOXIE is not set +# CT_ARCH_MSP430 is not set +# CT_ARCH_NIOS2 is not set +# CT_ARCH_POWERPC is not set +# CT_ARCH_PRU is not set +# CT_ARCH_RISCV is not set +# CT_ARCH_S390 is not set +# CT_ARCH_SH is not set +# CT_ARCH_SPARC is not set +CT_ARCH_X86=y +# CT_ARCH_XTENSA is not set +CT_ARCH="x86" +CT_ARCH_CHOICE_KSYM="X86" +CT_ARCH_CPU="" +CT_ARCH_TUNE="" +CT_ARCH_X86_SHOW=y + +# +# Options for x86 +# +CT_ARCH_X86_PKG_KSYM="" +CT_ALL_ARCH_CHOICES="ALPHA ARC ARM AVR BPF C6X LOONGARCH M68K MICROBLAZE MIPS MOXIE MSP430 NIOS2 POWERPC PRU RISCV S390 SH SPARC X86 XTENSA" +CT_ARCH_SUFFIX="" +# CT_OMIT_TARGET_VENDOR is not set + +# +# Generic target options +# +# CT_MULTILIB is not set +CT_DEMULTILIB=y +CT_ARCH_USE_MMU=y +CT_ARCH_SUPPORTS_LIBSANITIZER=y +CT_ARCH_SUPPORTS_32=y +CT_ARCH_SUPPORTS_64=y +CT_ARCH_DEFAULT_32=y +CT_ARCH_BITNESS=32 +CT_ARCH_32=y +# CT_ARCH_64 is not set +CT_ARCH_SUPPORTS_WITH_32_64=y + +# +# Target optimisations +# +CT_ARCH_SUPPORTS_WITH_ARCH=y +CT_ARCH_SUPPORTS_WITH_CPU=y +CT_ARCH_SUPPORTS_WITH_TUNE=y +CT_ARCH_ARCH="i686" +CT_TARGET_CFLAGS="" +CT_TARGET_LDFLAGS="" +# end of Target options + +# +# Toolchain options +# + +# +# General toolchain options +# +CT_FORCE_SYSROOT=y +CT_USE_SYSROOT=y +CT_SYSROOT_NAME="sysroot" +CT_SYSROOT_DIR_PREFIX="" +CT_WANTS_STATIC_LINK=y +CT_WANTS_STATIC_LINK_CXX=y +# CT_STATIC_TOOLCHAIN is not set +CT_SHOW_CT_VERSION=y +CT_TOOLCHAIN_PKGVERSION="" +CT_TOOLCHAIN_BUGURL="" + +# +# Tuple completion and aliasing +# +CT_TARGET_VENDOR="w64" +CT_TARGET_ALIAS_SED_EXPR="" +CT_TARGET_ALIAS="" + +# +# Toolchain type +# +# CT_NATIVE is not set +CT_CROSS=y +# CT_CROSS_NATIVE is not set +# CT_CANADIAN is not set +CT_TOOLCHAIN_TYPE="cross" + +# +# Build system +# +CT_BUILD="" +CT_BUILD_PREFIX="" +CT_BUILD_SUFFIX="" + +# +# Misc options +# +# CT_TOOLCHAIN_ENABLE_NLS is not set +# end of Toolchain options + +# +# Operating System +# +CT_WINDOWS=y +CT_KERNEL_SUPPORTS_SHARED_LIBS=y +# CT_KERNEL_BARE_METAL is not set +# CT_KERNEL_LINUX is not set +CT_KERNEL_WINDOWS=y +CT_KERNEL="windows" +CT_KERNEL_CHOICE_KSYM="WINDOWS" +CT_KERNEL_WINDOWS_SHOW=y + +# +# Options for windows +# +CT_KERNEL_WINDOWS_PKG_KSYM="" +CT_ALL_KERNEL_CHOICES="BARE_METAL LINUX WINDOWS" + +# +# Common kernel options +# +CT_SHARED_LIBS=y +# end of Operating System + +# +# Binary utilities +# +CT_ARCH_BINFMT_ELF=y +CT_BINUTILS_BINUTILS=y +CT_BINUTILS="binutils" +CT_BINUTILS_CHOICE_KSYM="BINUTILS" +CT_BINUTILS_BINUTILS_SHOW=y + +# +# Options for binutils +# +CT_BINUTILS_BINUTILS_PKG_KSYM="BINUTILS" +CT_BINUTILS_DIR_NAME="binutils" +CT_BINUTILS_USE_GNU=y +# CT_BINUTILS_USE_LINARO is not set +# CT_BINUTILS_USE_ORACLE is not set +CT_BINUTILS_USE="BINUTILS" +CT_BINUTILS_PKG_NAME="binutils" +CT_BINUTILS_SRC_RELEASE=y +# CT_BINUTILS_SRC_DEVEL is not set +# CT_BINUTILS_SRC_CUSTOM is not set +CT_BINUTILS_PATCH_GLOBAL=y +# CT_BINUTILS_PATCH_BUNDLED is not set +# CT_BINUTILS_PATCH_LOCAL is not set +# CT_BINUTILS_PATCH_BUNDLED_LOCAL is not set +# CT_BINUTILS_PATCH_LOCAL_BUNDLED is not set +# CT_BINUTILS_PATCH_NONE is not set +CT_BINUTILS_PATCH_ORDER="global" +CT_BINUTILS_V_2_40=y +# CT_BINUTILS_V_2_39 is not set +# CT_BINUTILS_V_2_38 is not set +# CT_BINUTILS_V_2_37 is not set +# CT_BINUTILS_V_2_36 is not set +# CT_BINUTILS_V_2_35 is not set +# CT_BINUTILS_V_2_34 is not set +# CT_BINUTILS_V_2_33 is not set +# CT_BINUTILS_V_2_32 is not set +# CT_BINUTILS_V_2_31 is not set +# CT_BINUTILS_V_2_30 is not set +# CT_BINUTILS_V_2_29 is not set +# CT_BINUTILS_V_2_28 is not set +# CT_BINUTILS_V_2_27 is not set +# CT_BINUTILS_V_2_26 is not set +CT_BINUTILS_VERSION="2.40" +CT_BINUTILS_MIRRORS="$(CT_Mirrors GNU binutils) $(CT_Mirrors sourceware binutils/releases)" +CT_BINUTILS_ARCHIVE_FILENAME="@{pkg_name}-@{version}" +CT_BINUTILS_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" +CT_BINUTILS_ARCHIVE_FORMATS=".tar.xz .tar.bz2 .tar.gz" +CT_BINUTILS_SIGNATURE_FORMAT="packed/.sig" +CT_BINUTILS_later_than_2_39=y +CT_BINUTILS_2_39_or_later=y +CT_BINUTILS_later_than_2_30=y +CT_BINUTILS_2_30_or_later=y +CT_BINUTILS_later_than_2_27=y +CT_BINUTILS_2_27_or_later=y +CT_BINUTILS_later_than_2_26=y +CT_BINUTILS_2_26_or_later=y + +# +# GNU binutils +# +CT_BINUTILS_GOLD_SUPPORTS_ARCH=y +CT_BINUTILS_GOLD_SUPPORT=y +CT_BINUTILS_FORCE_LD_BFD_DEFAULT=y +CT_BINUTILS_LINKER_LD=y +# CT_BINUTILS_LINKER_LD_GOLD is not set +CT_BINUTILS_LINKERS_LIST="ld" +CT_BINUTILS_LINKER_DEFAULT="bfd" +CT_BINUTILS_PLUGINS=y +CT_BINUTILS_RELRO=m +CT_BINUTILS_DETERMINISTIC_ARCHIVES=y +CT_BINUTILS_EXTRA_CONFIG_ARRAY="" +# CT_BINUTILS_FOR_TARGET is not set +CT_ALL_BINUTILS_CHOICES="BINUTILS" +# end of Binary utilities + +# +# C-library +# +CT_LIBC_MINGW_W64=y +CT_LIBC="mingw-w64" +CT_LIBC_CHOICE_KSYM="MINGW_W64" +CT_THREADS="posix" +CT_LIBC_MINGW_W64_SHOW=y + +# +# Options for mingw-w64 +# +CT_LIBC_MINGW_W64_PKG_KSYM="MINGW_W64" +CT_MINGW_W64_DIR_NAME="mingw-w64" +CT_MINGW_W64_PKG_NAME="mingw-w64" +CT_MINGW_W64_SRC_RELEASE=y +# CT_MINGW_W64_SRC_DEVEL is not set +# CT_MINGW_W64_SRC_CUSTOM is not set +CT_MINGW_W64_PATCH_GLOBAL=y +# CT_MINGW_W64_PATCH_BUNDLED is not set +# CT_MINGW_W64_PATCH_LOCAL is not set +# CT_MINGW_W64_PATCH_BUNDLED_LOCAL is not set +# CT_MINGW_W64_PATCH_LOCAL_BUNDLED is not set +# CT_MINGW_W64_PATCH_NONE is not set +CT_MINGW_W64_PATCH_ORDER="global" +CT_MINGW_W64_V_V10_0=y +# CT_MINGW_W64_V_V9_0 is not set +# CT_MINGW_W64_V_V8_0 is not set +# CT_MINGW_W64_V_V7_0 is not set +# CT_MINGW_W64_V_V6_0 is not set +# CT_MINGW_W64_V_V5_0 is not set +# CT_MINGW_W64_V_V4_0 is not set +CT_MINGW_W64_VERSION="v10.0.0" +CT_MINGW_W64_MIRRORS="http://downloads.sourceforge.net/sourceforge/mingw-w64 https://downloads.sourceforge.net/project/mingw-w64/mingw-w64/mingw-w64-release/" +CT_MINGW_W64_ARCHIVE_FILENAME="@{pkg_name}-@{version}" +CT_MINGW_W64_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" +CT_MINGW_W64_ARCHIVE_FORMATS=".tar.bz2 .zip" +CT_MINGW_W64_SIGNATURE_FORMAT="packed/.sig" +CT_MINGW_SECURE_API=y +# CT_MINGW_DEFAULT_MSVCRT_DEFAULT is not set +# CT_MINGW_DEFAULT_MSVCRT_MSVCRT is not set +CT_MINGW_DEFAULT_MSVCRT_UCRT=y +# CT_MINGW_DEFAULT_MSVCRT_CUSTOM is not set +CT_MINGW_DIRECTX=y +CT_MINGW_DDK=y +CT_MINGW_TOOLS=y +CT_MINGW_TOOL_LIST_ARRAY="gendef genidl genlib genpeimg widl" +CT_ALL_LIBC_CHOICES="AVR_LIBC GLIBC MINGW_W64 MOXIEBOX MUSL NEWLIB NONE PICOLIBC UCLIBC_NG" +CT_LIBC_SUPPORT_THREADS_ANY=y +CT_LIBC_SUPPORT_THREADS_NATIVE=y +CT_LIBC_SUPPORT_THREADS_POSIX=y + +# +# Common C library options +# +# CT_THREADS_NATIVE is not set +CT_THREADS_POSIX=y +# CT_CREATE_LDSO_CONF is not set +CT_LIBC_XLDD=y +# end of C-library + +# +# C compiler +# +CT_CC_CORE_NEEDED=y +CT_CC_SUPPORT_CXX=y +CT_CC_SUPPORT_FORTRAN=y +CT_CC_SUPPORT_ADA=y +CT_CC_SUPPORT_D=y +CT_CC_SUPPORT_JIT=y +CT_CC_SUPPORT_OBJC=y +CT_CC_SUPPORT_OBJCXX=y +CT_CC_SUPPORT_GOLANG=y +CT_CC_GCC=y +CT_CC="gcc" +CT_CC_CHOICE_KSYM="GCC" +CT_CC_GCC_SHOW=y + +# +# Options for gcc +# +CT_CC_GCC_PKG_KSYM="GCC" +CT_GCC_DIR_NAME="gcc" +CT_GCC_USE_GNU=y +# CT_GCC_USE_LINARO is not set +# CT_GCC_USE_ORACLE is not set +CT_GCC_USE="GCC" +CT_GCC_PKG_NAME="gcc" +CT_GCC_SRC_RELEASE=y +# CT_GCC_SRC_DEVEL is not set +# CT_GCC_SRC_CUSTOM is not set +CT_GCC_PATCH_GLOBAL=y +# CT_GCC_PATCH_BUNDLED is not set +# CT_GCC_PATCH_LOCAL is not set +# CT_GCC_PATCH_BUNDLED_LOCAL is not set +# CT_GCC_PATCH_LOCAL_BUNDLED is not set +# CT_GCC_PATCH_NONE is not set +CT_GCC_PATCH_ORDER="global" +CT_GCC_V_13=y +# CT_GCC_V_12 is not set +# CT_GCC_V_11 is not set +# CT_GCC_V_10 is not set +# CT_GCC_V_9 is not set +# CT_GCC_V_8 is not set +# CT_GCC_V_7 is not set +# CT_GCC_V_6 is not set +# CT_GCC_V_5 is not set +# CT_GCC_V_4_9 is not set +CT_GCC_VERSION="13.1.0" +CT_GCC_MIRRORS="$(CT_Mirrors GNU gcc/gcc-${CT_GCC_VERSION}) $(CT_Mirrors sourceware gcc/releases/gcc-${CT_GCC_VERSION})" +CT_GCC_ARCHIVE_FILENAME="@{pkg_name}-@{version}" +CT_GCC_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" +CT_GCC_ARCHIVE_FORMATS=".tar.xz .tar.gz" +CT_GCC_SIGNATURE_FORMAT="" +CT_GCC_later_than_13=y +CT_GCC_13_or_later=y +CT_GCC_later_than_12=y +CT_GCC_12_or_later=y +CT_GCC_later_than_11=y +CT_GCC_11_or_later=y +CT_GCC_later_than_10=y +CT_GCC_10_or_later=y +CT_GCC_later_than_9=y +CT_GCC_9_or_later=y +CT_GCC_later_than_8=y +CT_GCC_8_or_later=y +CT_GCC_later_than_7=y +CT_GCC_7_or_later=y +CT_GCC_later_than_6=y +CT_GCC_6_or_later=y +CT_GCC_later_than_5=y +CT_GCC_5_or_later=y +CT_GCC_later_than_4_9=y +CT_GCC_4_9_or_later=y +CT_CC_GCC_ENABLE_PLUGINS=y +CT_CC_GCC_HAS_LIBMPX=y +CT_CC_GCC_ENABLE_CXX_FLAGS="" +CT_CC_GCC_CORE_EXTRA_CONFIG_ARRAY="--enable-default-ssp" +CT_CC_GCC_EXTRA_CONFIG_ARRAY="--enable-default-ssp --with-build-config=bootstrap-lto-lean --enable-link-serialization=2" +CT_CC_GCC_STATIC_LIBSTDCXX=y +CT_CC_GCC_SYSTEM_ZLIB=y +CT_CC_GCC_CONFIG_TLS=m + +# +# Optimisation features +# +CT_CC_GCC_USE_GRAPHITE=y +CT_CC_GCC_USE_LTO=y +CT_CC_GCC_LTO_ZSTD=m + +# +# Settings for libraries running on target +# +# CT_CC_GCC_ENABLE_TARGET_OPTSPACE is not set +# CT_CC_GCC_LIBMUDFLAP is not set +CT_CC_GCC_LIBGOMP=y +CT_CC_GCC_LIBSSP=m +# CT_CC_GCC_LIBQUADMATH is not set +# CT_CC_GCC_LIBSTDCXX_VERBOSE is not set + +# +# Misc. obscure options. +# +CT_CC_CXA_ATEXIT=y +CT_CC_GCC_TM_CLONE_REGISTRY=m +# CT_CC_GCC_DISABLE_PCH is not set +CT_CC_GCC_SJLJ_EXCEPTIONS=m +CT_CC_GCC_LDBL_128=m +# CT_CC_GCC_BUILD_ID is not set +CT_CC_GCC_LNK_HASH_STYLE_DEFAULT=y +# CT_CC_GCC_LNK_HASH_STYLE_SYSV is not set +# CT_CC_GCC_LNK_HASH_STYLE_GNU is not set +# CT_CC_GCC_LNK_HASH_STYLE_BOTH is not set +CT_CC_GCC_LNK_HASH_STYLE="" +CT_CC_GCC_DEC_FLOATS_AUTO=y +# CT_CC_GCC_DEC_FLOATS_BID is not set +# CT_CC_GCC_DEC_FLOATS_DPD is not set +# CT_CC_GCC_DEC_FLOATS_NO is not set +CT_CC_GCC_DEC_FLOATS="" +CT_ALL_CC_CHOICES="GCC" + +# +# Additional supported languages: +# +CT_CC_LANG_CXX=y +# CT_CC_LANG_FORTRAN is not set +# CT_CC_LANG_JIT is not set +# CT_CC_LANG_ADA is not set +# CT_CC_LANG_D is not set +# CT_CC_LANG_OBJC is not set +# CT_CC_LANG_OBJCXX is not set +# CT_CC_LANG_GOLANG is not set +CT_CC_LANG_OTHERS="" +# end of C compiler + +# +# Debug facilities +# +# CT_DEBUG_DUMA is not set +# CT_DEBUG_GDB is not set +# CT_DEBUG_LTRACE is not set +# CT_DEBUG_STRACE is not set +CT_ALL_DEBUG_CHOICES="DUMA GDB LTRACE STRACE" +# end of Debug facilities + +# +# Companion libraries +# +# CT_COMPLIBS_CHECK is not set +# CT_COMP_LIBS_CLOOG is not set +# CT_COMP_LIBS_EXPAT is not set +CT_COMP_LIBS_GETTEXT=y +CT_COMP_LIBS_GETTEXT_PKG_KSYM="GETTEXT" +CT_GETTEXT_DIR_NAME="gettext" +CT_GETTEXT_PKG_NAME="gettext" +CT_GETTEXT_SRC_RELEASE=y +# CT_GETTEXT_SRC_DEVEL is not set +# CT_GETTEXT_SRC_CUSTOM is not set +CT_GETTEXT_PATCH_GLOBAL=y +# CT_GETTEXT_PATCH_BUNDLED is not set +# CT_GETTEXT_PATCH_LOCAL is not set +# CT_GETTEXT_PATCH_BUNDLED_LOCAL is not set +# CT_GETTEXT_PATCH_LOCAL_BUNDLED is not set +# CT_GETTEXT_PATCH_NONE is not set +CT_GETTEXT_PATCH_ORDER="global" +CT_GETTEXT_V_0_21=y +# CT_GETTEXT_V_0_20_1 is not set +# CT_GETTEXT_V_0_19_8_1 is not set +CT_GETTEXT_VERSION="0.21" +CT_GETTEXT_MIRRORS="$(CT_Mirrors GNU gettext)" +CT_GETTEXT_ARCHIVE_FILENAME="@{pkg_name}-@{version}" +CT_GETTEXT_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" +CT_GETTEXT_ARCHIVE_FORMATS=".tar.xz .tar.gz" +CT_GETTEXT_SIGNATURE_FORMAT="packed/.sig" +CT_GETTEXT_0_21_or_later=y +CT_GETTEXT_0_21_or_older=y +CT_GETTEXT_INCOMPATIBLE_WITH_UCLIBC_NG=y + +# +# This version of gettext is not compatible with uClibc-NG. Select +# + +# +# a different version if uClibc-NG is used on the target or (in a +# + +# +# Canadian cross build) on the host. +# +CT_COMP_LIBS_GMP=y +CT_COMP_LIBS_GMP_PKG_KSYM="GMP" +CT_GMP_DIR_NAME="gmp" +CT_GMP_PKG_NAME="gmp" +CT_GMP_SRC_RELEASE=y +# CT_GMP_SRC_DEVEL is not set +# CT_GMP_SRC_CUSTOM is not set +CT_GMP_PATCH_GLOBAL=y +# CT_GMP_PATCH_BUNDLED is not set +# CT_GMP_PATCH_LOCAL is not set +# CT_GMP_PATCH_BUNDLED_LOCAL is not set +# CT_GMP_PATCH_LOCAL_BUNDLED is not set +# CT_GMP_PATCH_NONE is not set +CT_GMP_PATCH_ORDER="global" +CT_GMP_V_6_2=y +# CT_GMP_V_6_1 is not set +CT_GMP_VERSION="6.2.1" +CT_GMP_MIRRORS="https://gmplib.org/download/gmp https://gmplib.org/download/gmp/archive $(CT_Mirrors GNU gmp)" +CT_GMP_ARCHIVE_FILENAME="@{pkg_name}-@{version}" +CT_GMP_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" +CT_GMP_ARCHIVE_FORMATS=".tar.xz .tar.lz .tar.bz2" +CT_GMP_SIGNATURE_FORMAT="packed/.sig" +CT_COMP_LIBS_ISL=y +CT_COMP_LIBS_ISL_PKG_KSYM="ISL" +CT_ISL_DIR_NAME="isl" +CT_ISL_PKG_NAME="isl" +CT_ISL_SRC_RELEASE=y +# CT_ISL_SRC_DEVEL is not set +# CT_ISL_SRC_CUSTOM is not set +CT_ISL_PATCH_GLOBAL=y +# CT_ISL_PATCH_BUNDLED is not set +# CT_ISL_PATCH_LOCAL is not set +# CT_ISL_PATCH_BUNDLED_LOCAL is not set +# CT_ISL_PATCH_LOCAL_BUNDLED is not set +# CT_ISL_PATCH_NONE is not set +CT_ISL_PATCH_ORDER="global" +CT_ISL_V_0_26=y +# CT_ISL_V_0_25 is not set +# CT_ISL_V_0_24 is not set +# CT_ISL_V_0_23 is not set +# CT_ISL_V_0_22 is not set +# CT_ISL_V_0_21 is not set +# CT_ISL_V_0_20 is not set +# CT_ISL_V_0_19 is not set +# CT_ISL_V_0_18 is not set +# CT_ISL_V_0_17 is not set +# CT_ISL_V_0_16 is not set +# CT_ISL_V_0_15 is not set +CT_ISL_VERSION="0.26" +CT_ISL_MIRRORS="https://libisl.sourceforge.io" +CT_ISL_ARCHIVE_FILENAME="@{pkg_name}-@{version}" +CT_ISL_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" +CT_ISL_ARCHIVE_FORMATS=".tar.xz .tar.bz2 .tar.gz" +CT_ISL_SIGNATURE_FORMAT="" +CT_ISL_later_than_0_18=y +CT_ISL_0_18_or_later=y +CT_ISL_later_than_0_15=y +CT_ISL_0_15_or_later=y +# CT_COMP_LIBS_LIBELF is not set +# CT_COMP_LIBS_LIBICONV is not set +CT_COMP_LIBS_MPC=y +CT_COMP_LIBS_MPC_PKG_KSYM="MPC" +CT_MPC_DIR_NAME="mpc" +CT_MPC_PKG_NAME="mpc" +CT_MPC_SRC_RELEASE=y +# CT_MPC_SRC_DEVEL is not set +# CT_MPC_SRC_CUSTOM is not set +CT_MPC_PATCH_GLOBAL=y +# CT_MPC_PATCH_BUNDLED is not set +# CT_MPC_PATCH_LOCAL is not set +# CT_MPC_PATCH_BUNDLED_LOCAL is not set +# CT_MPC_PATCH_LOCAL_BUNDLED is not set +# CT_MPC_PATCH_NONE is not set +CT_MPC_PATCH_ORDER="global" +CT_MPC_V_1_2=y +# CT_MPC_V_1_1 is not set +# CT_MPC_V_1_0 is not set +CT_MPC_VERSION="1.2.1" +CT_MPC_MIRRORS="http://www.multiprecision.org/downloads $(CT_Mirrors GNU mpc)" +CT_MPC_ARCHIVE_FILENAME="@{pkg_name}-@{version}" +CT_MPC_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" +CT_MPC_ARCHIVE_FORMATS=".tar.gz" +CT_MPC_SIGNATURE_FORMAT="packed/.sig" +CT_MPC_later_than_1_1_0=y +CT_MPC_1_1_0_or_later=y +CT_COMP_LIBS_MPFR=y +CT_COMP_LIBS_MPFR_PKG_KSYM="MPFR" +CT_MPFR_DIR_NAME="mpfr" +CT_MPFR_PKG_NAME="mpfr" +CT_MPFR_SRC_RELEASE=y +# CT_MPFR_SRC_DEVEL is not set +# CT_MPFR_SRC_CUSTOM is not set +CT_MPFR_PATCH_GLOBAL=y +# CT_MPFR_PATCH_BUNDLED is not set +# CT_MPFR_PATCH_LOCAL is not set +# CT_MPFR_PATCH_BUNDLED_LOCAL is not set +# CT_MPFR_PATCH_LOCAL_BUNDLED is not set +# CT_MPFR_PATCH_NONE is not set +CT_MPFR_PATCH_ORDER="global" +CT_MPFR_V_4_1=y +# CT_MPFR_V_4_0 is not set +# CT_MPFR_V_3_1 is not set +CT_MPFR_VERSION="4.1.0" +CT_MPFR_MIRRORS="http://www.mpfr.org/mpfr-${CT_MPFR_VERSION} $(CT_Mirrors GNU mpfr)" +CT_MPFR_ARCHIVE_FILENAME="@{pkg_name}-@{version}" +CT_MPFR_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" +CT_MPFR_ARCHIVE_FORMATS=".tar.xz .tar.bz2 .tar.gz .zip" +CT_MPFR_SIGNATURE_FORMAT="packed/.asc" +CT_MPFR_later_than_4_0_0=y +CT_MPFR_4_0_0_or_later=y +# CT_COMP_LIBS_NCURSES is not set +CT_COMP_LIBS_ZLIB=y +CT_COMP_LIBS_ZLIB_PKG_KSYM="ZLIB" +CT_ZLIB_DIR_NAME="zlib" +CT_ZLIB_PKG_NAME="zlib" +CT_ZLIB_SRC_RELEASE=y +# CT_ZLIB_SRC_DEVEL is not set +# CT_ZLIB_SRC_CUSTOM is not set +CT_ZLIB_PATCH_GLOBAL=y +# CT_ZLIB_PATCH_BUNDLED is not set +# CT_ZLIB_PATCH_LOCAL is not set +# CT_ZLIB_PATCH_BUNDLED_LOCAL is not set +# CT_ZLIB_PATCH_LOCAL_BUNDLED is not set +# CT_ZLIB_PATCH_NONE is not set +CT_ZLIB_PATCH_ORDER="global" +CT_ZLIB_V_1_2_13=y +CT_ZLIB_VERSION="1.2.13" +CT_ZLIB_MIRRORS="https://github.com/madler/zlib/releases/download/v${CT_ZLIB_VERSION} https://www.zlib.net/" +CT_ZLIB_ARCHIVE_FILENAME="@{pkg_name}-@{version}" +CT_ZLIB_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" +CT_ZLIB_ARCHIVE_FORMATS=".tar.xz .tar.gz" +CT_ZLIB_SIGNATURE_FORMAT="packed/.asc" +CT_COMP_LIBS_ZSTD=y +CT_COMP_LIBS_ZSTD_PKG_KSYM="ZSTD" +CT_ZSTD_DIR_NAME="zstd" +CT_ZSTD_PKG_NAME="zstd" +CT_ZSTD_SRC_RELEASE=y +# CT_ZSTD_SRC_DEVEL is not set +# CT_ZSTD_SRC_CUSTOM is not set +CT_ZSTD_PATCH_GLOBAL=y +# CT_ZSTD_PATCH_BUNDLED is not set +# CT_ZSTD_PATCH_LOCAL is not set +# CT_ZSTD_PATCH_BUNDLED_LOCAL is not set +# CT_ZSTD_PATCH_LOCAL_BUNDLED is not set +# CT_ZSTD_PATCH_NONE is not set +CT_ZSTD_PATCH_ORDER="global" +CT_ZSTD_V_1_5_5=y +# CT_ZSTD_V_1_5_2 is not set +CT_ZSTD_VERSION="1.5.5" +CT_ZSTD_MIRRORS="https://github.com/facebook/zstd/releases/download/v${CT_ZSTD_VERSION} https://www.zstd.net/" +CT_ZSTD_ARCHIVE_FILENAME="@{pkg_name}-@{version}" +CT_ZSTD_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" +CT_ZSTD_ARCHIVE_FORMATS=".tar.gz" +CT_ZSTD_SIGNATURE_FORMAT="packed/.sig" +CT_ALL_COMP_LIBS_CHOICES="CLOOG EXPAT GETTEXT GMP GNUPRUMCU ISL LIBELF LIBICONV MPC MPFR NCURSES NEWLIB_NANO PICOLIBC ZLIB ZSTD" +# CT_LIBICONV_NEEDED is not set +# CT_GETTEXT_NEEDED is not set +CT_GMP_NEEDED=y +CT_MPFR_NEEDED=y +CT_ISL_NEEDED=y +CT_MPC_NEEDED=y +CT_ZLIB_NEEDED=y +CT_ZSTD_NEEDED=y +CT_GMP=y +CT_MPFR=y +CT_ISL=y +CT_MPC=y +CT_ZLIB=y +CT_ZSTD=y +# end of Companion libraries + +# +# Companion tools +# +# CT_COMP_TOOLS_FOR_HOST is not set +# CT_COMP_TOOLS_AUTOCONF is not set +# CT_COMP_TOOLS_AUTOMAKE is not set +# CT_COMP_TOOLS_BISON is not set +# CT_COMP_TOOLS_DTC is not set +# CT_COMP_TOOLS_LIBTOOL is not set +# CT_COMP_TOOLS_M4 is not set +# CT_COMP_TOOLS_MAKE is not set +CT_ALL_COMP_TOOLS_CHOICES="AUTOCONF AUTOMAKE BISON DTC LIBTOOL M4 MAKE" +# end of Companion tools + +# +# Test suite +# +# CT_TEST_SUITE_GCC is not set +# end of Test suite diff --git a/images/base-win32/toolchain.cmake b/images/base-win32/toolchain.cmake index 526610e..4ef5d4c 100644 --- a/images/base-win32/toolchain.cmake +++ b/images/base-win32/toolchain.cmake @@ -1,12 +1,16 @@ 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(triple i686-w64-mingw32) -set(CMAKE_FIND_ROOT_PATH /usr/i686-w64-mingw32 /opt/ffbuild) +set(CMAKE_C_COMPILER ${triple}-gcc) +set(CMAKE_CXX_COMPILER ${triple}-g++) +set(CMAKE_RC_COMPILER ${triple}-windres) +set(CMAKE_RANLIB ${triple}-gcc-ranlib) +set(CMAKE_AR ${triple}-gcc-ar) + +set(CMAKE_SYSROOT /opt/ct-ng/${triple}/sysroot) +set(CMAKE_FIND_ROOT_PATH /opt/ct-ng /opt/ct-ng/${triple}/sysroot /opt/ffbuild) set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) diff --git a/images/base-win64/Dockerfile b/images/base-win64/Dockerfile index 75c6ae3..5966a0c 100644 --- a/images/base-win64/Dockerfile +++ b/images/base-win64/Dockerfile @@ -1,15 +1,22 @@ -ARG GH_REPO=btbn/ffmpeg-builds -FROM ghcr.io/$GH_REPO/base:latest +ARG GH_REPO=ghcr.io/btbn/ffmpeg-builds +FROM $GH_REPO/base:latest -ENV DEBIAN_FRONTEND noninteractive +RUN --mount=src=ct-ng-config,dst=/.config \ + git clone --filter=blob:none https://github.com/crosstool-ng/crosstool-ng.git /ct-ng && cd /ct-ng && \ + ./bootstrap && \ + ./configure --enable-local && \ + make -j$(nproc) && \ + cp /.config .config && \ + ./ct-ng build && \ + cd / && \ + rm -rf ct-ng +# Prepare "cross" environment to heavily favour static builds RUN \ - apt-get -y install binutils-mingw-w64-x86-64 gcc-mingw-w64-x86-64 g++-mingw-w64-x86-64 gfortran-mingw-w64-x86-64 && \ - 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 && \ + find /opt/ct-ng \ + -name "*.dll" \ + -or -name "*.dll.a" \ + -delete && \ mkdir /opt/ffbuild RUN rustup target add x86_64-pc-windows-gnu @@ -17,17 +24,24 @@ RUN rustup target add x86_64-pc-windows-gnu ADD toolchain.cmake /toolchain.cmake ADD cross.meson /cross.meson -ENV FFBUILD_TARGET_FLAGS="--pkg-config=pkg-config --cross-prefix=x86_64-w64-mingw32- --arch=x86_64 --target-os=mingw32" \ - FFBUILD_TOOLCHAIN=x86_64-w64-mingw32 \ - FFBUILD_CROSS_PREFIX=x86_64-w64-mingw32- \ +ENV FFBUILD_TOOLCHAIN=x86_64-w64-mingw32 +ENV PATH="/opt/ct-ng/bin:${PATH}" \ + FFBUILD_TARGET_FLAGS="--pkg-config=pkg-config --cross-prefix=${FFBUILD_TOOLCHAIN}- --arch=x86_64 --target-os=mingw32" \ + FFBUILD_CROSS_PREFIX=${FFBUILD_TOOLCHAIN}- \ FFBUILD_RUST_TARGET=x86_64-pc-windows-gnu \ FFBUILD_PREFIX=/opt/ffbuild \ FFBUILD_CMAKE_TOOLCHAIN=/toolchain.cmake \ PKG_CONFIG=pkg-config \ PKG_CONFIG_LIBDIR=/opt/ffbuild/lib/pkgconfig:/opt/ffbuild/share/pkgconfig \ + CC="${FFBUILD_TOOLCHAIN}-gcc" \ + CXX="${FFBUILD_TOOLCHAIN}-g++" \ + LD="${FFBUILD_TOOLCHAIN}-ld" \ + AR="${FFBUILD_TOOLCHAIN}-gcc-ar" \ + RANLIB="${FFBUILD_TOOLCHAIN}-gcc-ranlib" \ + NM="${FFBUILD_TOOLCHAIN}-gcc-nm" \ + DLLTOOL="${FFBUILD_TOOLCHAIN}-dlltool" \ 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" \ - DLLTOOL="x86_64-w64-mingw32-dlltool" \ STAGE_CFLAGS="-fno-semantic-interposition" \ STAGE_CXXFLAGS="-fno-semantic-interposition" diff --git a/images/base-win64/cross.meson b/images/base-win64/cross.meson index f5743f0..0b5513c 100644 --- a/images/base-win64/cross.meson +++ b/images/base-win64/cross.meson @@ -1,9 +1,11 @@ [binaries] c = 'x86_64-w64-mingw32-gcc' cpp = 'x86_64-w64-mingw32-g++' -ar = 'x86_64-w64-mingw32-ar' +ar = 'x86_64-w64-mingw32-gcc-ar' +ranlib = 'x86_64-w64-mingw32-gcc-ranlib' strip = 'x86_64-w64-mingw32-strip' windres = 'x86_64-w64-mingw32-windres' +dlltool = 'x86_64-w64-mingw32-dlltool' exe_wrapper = ['wine'] [properties] diff --git a/images/base-win64/ct-ng-config b/images/base-win64/ct-ng-config new file mode 100644 index 0000000..340cccd --- /dev/null +++ b/images/base-win64/ct-ng-config @@ -0,0 +1,784 @@ +# +# Automatically generated file; DO NOT EDIT. +# crosstool-NG 1.25.0.196_227d99d Configuration +# +CT_CONFIGURE_has_static_link=y +CT_CONFIGURE_has_cxx11=y +CT_CONFIGURE_has_wget=y +CT_CONFIGURE_has_curl=y +CT_CONFIGURE_has_meson=y +CT_CONFIGURE_has_ninja=y +CT_CONFIGURE_has_rsync=y +CT_CONFIGURE_has_make_3_81_or_newer=y +CT_CONFIGURE_has_make_4_0_or_newer=y +CT_CONFIGURE_has_libtool_2_4_or_newer=y +CT_CONFIGURE_has_libtoolize_2_4_or_newer=y +CT_CONFIGURE_has_autoconf_2_71_or_newer=y +CT_CONFIGURE_has_autoreconf_2_71_or_newer=y +CT_CONFIGURE_has_automake_1_16_or_newer=y +CT_CONFIGURE_has_gnu_m4_1_4_12_or_newer=y +CT_CONFIGURE_has_python_3_4_or_newer=y +CT_CONFIGURE_has_bison_2_7_or_newer=y +CT_CONFIGURE_has_bison_3_0_4_or_newer=y +CT_CONFIGURE_has_python=y +CT_CONFIGURE_has_svn=y +CT_CONFIGURE_has_git=y +CT_CONFIGURE_has_md5sum=y +CT_CONFIGURE_has_sha1sum=y +CT_CONFIGURE_has_sha256sum=y +CT_CONFIGURE_has_sha512sum=y +CT_CONFIGURE_has_install_with_strip_program=y +CT_VERSION="1.25.0.196_227d99d" +CT_VCHECK="" +CT_CONFIG_VERSION_ENV="4" +CT_CONFIG_VERSION_CURRENT="4" +CT_CONFIG_VERSION="4" +CT_MODULES=y + +# +# Paths and misc options +# + +# +# crosstool-NG behavior +# +# CT_OBSOLETE is not set +CT_EXPERIMENTAL=y +CT_ALLOW_BUILD_AS_ROOT=y +CT_ALLOW_BUILD_AS_ROOT_SURE=y +# CT_ENABLE_EXPERIMENTAL_BUNDLED_PATCHES is not set +# CT_DEBUG_CT is not set + +# +# Paths +# +CT_LOCAL_TARBALLS_DIR="${HOME}/src" +# CT_SAVE_TARBALLS is not set +# CT_TARBALLS_BUILDROOT_LAYOUT is not set +CT_WORK_DIR="${CT_TOP_DIR}/build" +CT_BUILD_TOP_DIR="${CT_WORK_DIR:-${CT_TOP_DIR}/.build}/${CT_HOST:+HOST-${CT_HOST}/}${CT_TARGET}" +CT_BUILD_DIR="${CT_BUILD_TOP_DIR}/build" +CT_PREFIX_DIR="/opt/ct-ng" +CT_RM_RF_PREFIX_DIR=y +CT_REMOVE_DOCS=y +# CT_INSTALL_LICENSES is not set +# CT_PREFIX_DIR_RO is not set +CT_STRIP_HOST_TOOLCHAIN_EXECUTABLES=y +CT_STRIP_TARGET_TOOLCHAIN_EXECUTABLES=y +# CT_TARBALL_RESULT is not set + +# +# Downloading +# +CT_DOWNLOAD_AGENT_WGET=y +# CT_DOWNLOAD_AGENT_CURL is not set +# CT_DOWNLOAD_AGENT_NONE is not set +# CT_FORBID_DOWNLOAD is not set +# CT_FORCE_DOWNLOAD is not set +CT_CONNECT_TIMEOUT=10 +CT_DOWNLOAD_WGET_OPTIONS="--passive-ftp --tries=3 -nc --progress=dot:binary" +# CT_ONLY_DOWNLOAD is not set +# CT_USE_MIRROR is not set +CT_VERIFY_DOWNLOAD_DIGEST=y +CT_VERIFY_DOWNLOAD_DIGEST_SHA512=y +# CT_VERIFY_DOWNLOAD_DIGEST_SHA256 is not set +# CT_VERIFY_DOWNLOAD_DIGEST_SHA1 is not set +# CT_VERIFY_DOWNLOAD_DIGEST_MD5 is not set +CT_VERIFY_DOWNLOAD_DIGEST_ALG="sha512" +# CT_VERIFY_DOWNLOAD_SIGNATURE is not set + +# +# Extracting +# +# CT_FORCE_EXTRACT is not set +CT_OVERRIDE_CONFIG_GUESS_SUB=y +# CT_ONLY_EXTRACT is not set +CT_PATCH_BUNDLED=y +# CT_PATCH_LOCAL is not set +# CT_PATCH_BUNDLED_LOCAL is not set +# CT_PATCH_LOCAL_BUNDLED is not set +# CT_PATCH_NONE is not set +CT_PATCH_ORDER="bundled" + +# +# Build behavior +# +CT_PARALLEL_JOBS=0 +CT_LOAD="" +CT_USE_PIPES=y +CT_EXTRA_CFLAGS_FOR_BUILD="" +CT_EXTRA_CXXFLAGS_FOR_BUILD="" +CT_EXTRA_LDFLAGS_FOR_BUILD="" +CT_EXTRA_CFLAGS_FOR_HOST="" +CT_EXTRA_LDFLAGS_FOR_HOST="" +# CT_CONFIG_SHELL_SH is not set +# CT_CONFIG_SHELL_ASH is not set +CT_CONFIG_SHELL_BASH=y +# CT_CONFIG_SHELL_CUSTOM is not set +CT_CONFIG_SHELL="${bash}" + +# +# Logging +# +# CT_LOG_ERROR is not set +# CT_LOG_WARN is not set +# CT_LOG_INFO is not set +# CT_LOG_EXTRA is not set +# CT_LOG_ALL is not set +CT_LOG_DEBUG=y +CT_LOG_LEVEL_MAX="DEBUG" +# CT_LOG_SEE_TOOLS_WARN is not set +# CT_LOG_TO_FILE is not set +# end of Paths and misc options + +# +# Target options +# +# CT_ARCH_ALPHA is not set +# CT_ARCH_ARC is not set +# CT_ARCH_ARM is not set +# CT_ARCH_AVR is not set +# CT_ARCH_BPF is not set +# CT_ARCH_C6X is not set +# CT_ARCH_LOONGARCH is not set +# CT_ARCH_M68K is not set +# CT_ARCH_MICROBLAZE is not set +# CT_ARCH_MIPS is not set +# CT_ARCH_MOXIE is not set +# CT_ARCH_MSP430 is not set +# CT_ARCH_NIOS2 is not set +# CT_ARCH_POWERPC is not set +# CT_ARCH_PRU is not set +# CT_ARCH_RISCV is not set +# CT_ARCH_S390 is not set +# CT_ARCH_SH is not set +# CT_ARCH_SPARC is not set +CT_ARCH_X86=y +# CT_ARCH_XTENSA is not set +CT_ARCH="x86" +CT_ARCH_CHOICE_KSYM="X86" +CT_ARCH_CPU="" +CT_ARCH_TUNE="" +CT_ARCH_X86_SHOW=y + +# +# Options for x86 +# +CT_ARCH_X86_PKG_KSYM="" +CT_ALL_ARCH_CHOICES="ALPHA ARC ARM AVR BPF C6X LOONGARCH M68K MICROBLAZE MIPS MOXIE MSP430 NIOS2 POWERPC PRU RISCV S390 SH SPARC X86 XTENSA" +CT_ARCH_SUFFIX="" +# CT_OMIT_TARGET_VENDOR is not set + +# +# Generic target options +# +# CT_MULTILIB is not set +CT_DEMULTILIB=y +CT_ARCH_USE_MMU=y +CT_ARCH_SUPPORTS_LIBSANITIZER=y +CT_ARCH_SUPPORTS_32=y +CT_ARCH_SUPPORTS_64=y +CT_ARCH_DEFAULT_32=y +CT_ARCH_BITNESS=64 +# CT_ARCH_32 is not set +CT_ARCH_64=y +CT_ARCH_SUPPORTS_WITH_32_64=y + +# +# Target optimisations +# +CT_ARCH_SUPPORTS_WITH_ARCH=y +CT_ARCH_SUPPORTS_WITH_CPU=y +CT_ARCH_SUPPORTS_WITH_TUNE=y +CT_ARCH_ARCH="" +CT_TARGET_CFLAGS="" +CT_TARGET_LDFLAGS="" +# end of Target options + +# +# Toolchain options +# + +# +# General toolchain options +# +CT_FORCE_SYSROOT=y +CT_USE_SYSROOT=y +CT_SYSROOT_NAME="sysroot" +CT_SYSROOT_DIR_PREFIX="" +CT_WANTS_STATIC_LINK=y +CT_WANTS_STATIC_LINK_CXX=y +# CT_STATIC_TOOLCHAIN is not set +CT_SHOW_CT_VERSION=y +CT_TOOLCHAIN_PKGVERSION="" +CT_TOOLCHAIN_BUGURL="" + +# +# Tuple completion and aliasing +# +CT_TARGET_VENDOR="w64" +CT_TARGET_ALIAS_SED_EXPR="" +CT_TARGET_ALIAS="" + +# +# Toolchain type +# +# CT_NATIVE is not set +CT_CROSS=y +# CT_CROSS_NATIVE is not set +# CT_CANADIAN is not set +CT_TOOLCHAIN_TYPE="cross" + +# +# Build system +# +CT_BUILD="" +CT_BUILD_PREFIX="" +CT_BUILD_SUFFIX="" + +# +# Misc options +# +# CT_TOOLCHAIN_ENABLE_NLS is not set +# end of Toolchain options + +# +# Operating System +# +CT_WINDOWS=y +CT_KERNEL_SUPPORTS_SHARED_LIBS=y +# CT_KERNEL_BARE_METAL is not set +# CT_KERNEL_LINUX is not set +CT_KERNEL_WINDOWS=y +CT_KERNEL="windows" +CT_KERNEL_CHOICE_KSYM="WINDOWS" +CT_KERNEL_WINDOWS_SHOW=y + +# +# Options for windows +# +CT_KERNEL_WINDOWS_PKG_KSYM="" +CT_ALL_KERNEL_CHOICES="BARE_METAL LINUX WINDOWS" + +# +# Common kernel options +# +CT_SHARED_LIBS=y +# end of Operating System + +# +# Binary utilities +# +CT_ARCH_BINFMT_ELF=y +CT_BINUTILS_BINUTILS=y +CT_BINUTILS="binutils" +CT_BINUTILS_CHOICE_KSYM="BINUTILS" +CT_BINUTILS_BINUTILS_SHOW=y + +# +# Options for binutils +# +CT_BINUTILS_BINUTILS_PKG_KSYM="BINUTILS" +CT_BINUTILS_DIR_NAME="binutils" +CT_BINUTILS_USE_GNU=y +# CT_BINUTILS_USE_LINARO is not set +# CT_BINUTILS_USE_ORACLE is not set +CT_BINUTILS_USE="BINUTILS" +CT_BINUTILS_PKG_NAME="binutils" +CT_BINUTILS_SRC_RELEASE=y +# CT_BINUTILS_SRC_DEVEL is not set +# CT_BINUTILS_SRC_CUSTOM is not set +CT_BINUTILS_PATCH_GLOBAL=y +# CT_BINUTILS_PATCH_BUNDLED is not set +# CT_BINUTILS_PATCH_LOCAL is not set +# CT_BINUTILS_PATCH_BUNDLED_LOCAL is not set +# CT_BINUTILS_PATCH_LOCAL_BUNDLED is not set +# CT_BINUTILS_PATCH_NONE is not set +CT_BINUTILS_PATCH_ORDER="global" +CT_BINUTILS_V_2_40=y +# CT_BINUTILS_V_2_39 is not set +# CT_BINUTILS_V_2_38 is not set +# CT_BINUTILS_V_2_37 is not set +# CT_BINUTILS_V_2_36 is not set +# CT_BINUTILS_V_2_35 is not set +# CT_BINUTILS_V_2_34 is not set +# CT_BINUTILS_V_2_33 is not set +# CT_BINUTILS_V_2_32 is not set +# CT_BINUTILS_V_2_31 is not set +# CT_BINUTILS_V_2_30 is not set +# CT_BINUTILS_V_2_29 is not set +# CT_BINUTILS_V_2_28 is not set +# CT_BINUTILS_V_2_27 is not set +# CT_BINUTILS_V_2_26 is not set +CT_BINUTILS_VERSION="2.40" +CT_BINUTILS_MIRRORS="$(CT_Mirrors GNU binutils) $(CT_Mirrors sourceware binutils/releases)" +CT_BINUTILS_ARCHIVE_FILENAME="@{pkg_name}-@{version}" +CT_BINUTILS_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" +CT_BINUTILS_ARCHIVE_FORMATS=".tar.xz .tar.bz2 .tar.gz" +CT_BINUTILS_SIGNATURE_FORMAT="packed/.sig" +CT_BINUTILS_later_than_2_39=y +CT_BINUTILS_2_39_or_later=y +CT_BINUTILS_later_than_2_30=y +CT_BINUTILS_2_30_or_later=y +CT_BINUTILS_later_than_2_27=y +CT_BINUTILS_2_27_or_later=y +CT_BINUTILS_later_than_2_26=y +CT_BINUTILS_2_26_or_later=y + +# +# GNU binutils +# +CT_BINUTILS_GOLD_SUPPORTS_ARCH=y +CT_BINUTILS_GOLD_SUPPORT=y +CT_BINUTILS_FORCE_LD_BFD_DEFAULT=y +CT_BINUTILS_LINKER_LD=y +# CT_BINUTILS_LINKER_LD_GOLD is not set +CT_BINUTILS_LINKERS_LIST="ld" +CT_BINUTILS_LINKER_DEFAULT="bfd" +CT_BINUTILS_PLUGINS=y +CT_BINUTILS_RELRO=m +CT_BINUTILS_DETERMINISTIC_ARCHIVES=y +CT_BINUTILS_EXTRA_CONFIG_ARRAY="" +# CT_BINUTILS_FOR_TARGET is not set +CT_ALL_BINUTILS_CHOICES="BINUTILS" +# end of Binary utilities + +# +# C-library +# +CT_LIBC_MINGW_W64=y +CT_LIBC="mingw-w64" +CT_LIBC_CHOICE_KSYM="MINGW_W64" +CT_THREADS="posix" +CT_LIBC_MINGW_W64_SHOW=y + +# +# Options for mingw-w64 +# +CT_LIBC_MINGW_W64_PKG_KSYM="MINGW_W64" +CT_MINGW_W64_DIR_NAME="mingw-w64" +CT_MINGW_W64_PKG_NAME="mingw-w64" +CT_MINGW_W64_SRC_RELEASE=y +# CT_MINGW_W64_SRC_DEVEL is not set +# CT_MINGW_W64_SRC_CUSTOM is not set +CT_MINGW_W64_PATCH_GLOBAL=y +# CT_MINGW_W64_PATCH_BUNDLED is not set +# CT_MINGW_W64_PATCH_LOCAL is not set +# CT_MINGW_W64_PATCH_BUNDLED_LOCAL is not set +# CT_MINGW_W64_PATCH_LOCAL_BUNDLED is not set +# CT_MINGW_W64_PATCH_NONE is not set +CT_MINGW_W64_PATCH_ORDER="global" +CT_MINGW_W64_V_V10_0=y +# CT_MINGW_W64_V_V9_0 is not set +# CT_MINGW_W64_V_V8_0 is not set +# CT_MINGW_W64_V_V7_0 is not set +# CT_MINGW_W64_V_V6_0 is not set +# CT_MINGW_W64_V_V5_0 is not set +# CT_MINGW_W64_V_V4_0 is not set +CT_MINGW_W64_VERSION="v10.0.0" +CT_MINGW_W64_MIRRORS="http://downloads.sourceforge.net/sourceforge/mingw-w64 https://downloads.sourceforge.net/project/mingw-w64/mingw-w64/mingw-w64-release/" +CT_MINGW_W64_ARCHIVE_FILENAME="@{pkg_name}-@{version}" +CT_MINGW_W64_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" +CT_MINGW_W64_ARCHIVE_FORMATS=".tar.bz2 .zip" +CT_MINGW_W64_SIGNATURE_FORMAT="packed/.sig" +CT_MINGW_SECURE_API=y +# CT_MINGW_DEFAULT_MSVCRT_DEFAULT is not set +# CT_MINGW_DEFAULT_MSVCRT_MSVCRT is not set +CT_MINGW_DEFAULT_MSVCRT_UCRT=y +# CT_MINGW_DEFAULT_MSVCRT_CUSTOM is not set +CT_MINGW_DIRECTX=y +CT_MINGW_DDK=y +CT_MINGW_TOOLS=y +CT_MINGW_TOOL_LIST_ARRAY="gendef genidl genlib genpeimg widl" +CT_ALL_LIBC_CHOICES="AVR_LIBC GLIBC MINGW_W64 MOXIEBOX MUSL NEWLIB NONE PICOLIBC UCLIBC_NG" +CT_LIBC_SUPPORT_THREADS_ANY=y +CT_LIBC_SUPPORT_THREADS_NATIVE=y +CT_LIBC_SUPPORT_THREADS_POSIX=y + +# +# Common C library options +# +# CT_THREADS_NATIVE is not set +CT_THREADS_POSIX=y +# CT_CREATE_LDSO_CONF is not set +CT_LIBC_XLDD=y +# end of C-library + +# +# C compiler +# +CT_CC_CORE_NEEDED=y +CT_CC_SUPPORT_CXX=y +CT_CC_SUPPORT_FORTRAN=y +CT_CC_SUPPORT_ADA=y +CT_CC_SUPPORT_D=y +CT_CC_SUPPORT_JIT=y +CT_CC_SUPPORT_OBJC=y +CT_CC_SUPPORT_OBJCXX=y +CT_CC_SUPPORT_GOLANG=y +CT_CC_GCC=y +CT_CC="gcc" +CT_CC_CHOICE_KSYM="GCC" +CT_CC_GCC_SHOW=y + +# +# Options for gcc +# +CT_CC_GCC_PKG_KSYM="GCC" +CT_GCC_DIR_NAME="gcc" +CT_GCC_USE_GNU=y +# CT_GCC_USE_LINARO is not set +# CT_GCC_USE_ORACLE is not set +CT_GCC_USE="GCC" +CT_GCC_PKG_NAME="gcc" +CT_GCC_SRC_RELEASE=y +# CT_GCC_SRC_DEVEL is not set +# CT_GCC_SRC_CUSTOM is not set +CT_GCC_PATCH_GLOBAL=y +# CT_GCC_PATCH_BUNDLED is not set +# CT_GCC_PATCH_LOCAL is not set +# CT_GCC_PATCH_BUNDLED_LOCAL is not set +# CT_GCC_PATCH_LOCAL_BUNDLED is not set +# CT_GCC_PATCH_NONE is not set +CT_GCC_PATCH_ORDER="global" +CT_GCC_V_13=y +# CT_GCC_V_12 is not set +# CT_GCC_V_11 is not set +# CT_GCC_V_10 is not set +# CT_GCC_V_9 is not set +# CT_GCC_V_8 is not set +# CT_GCC_V_7 is not set +# CT_GCC_V_6 is not set +# CT_GCC_V_5 is not set +# CT_GCC_V_4_9 is not set +CT_GCC_VERSION="13.1.0" +CT_GCC_MIRRORS="$(CT_Mirrors GNU gcc/gcc-${CT_GCC_VERSION}) $(CT_Mirrors sourceware gcc/releases/gcc-${CT_GCC_VERSION})" +CT_GCC_ARCHIVE_FILENAME="@{pkg_name}-@{version}" +CT_GCC_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" +CT_GCC_ARCHIVE_FORMATS=".tar.xz .tar.gz" +CT_GCC_SIGNATURE_FORMAT="" +CT_GCC_later_than_13=y +CT_GCC_13_or_later=y +CT_GCC_later_than_12=y +CT_GCC_12_or_later=y +CT_GCC_later_than_11=y +CT_GCC_11_or_later=y +CT_GCC_later_than_10=y +CT_GCC_10_or_later=y +CT_GCC_later_than_9=y +CT_GCC_9_or_later=y +CT_GCC_later_than_8=y +CT_GCC_8_or_later=y +CT_GCC_later_than_7=y +CT_GCC_7_or_later=y +CT_GCC_later_than_6=y +CT_GCC_6_or_later=y +CT_GCC_later_than_5=y +CT_GCC_5_or_later=y +CT_GCC_later_than_4_9=y +CT_GCC_4_9_or_later=y +CT_CC_GCC_ENABLE_PLUGINS=y +CT_CC_GCC_HAS_LIBMPX=y +CT_CC_GCC_ENABLE_CXX_FLAGS="" +CT_CC_GCC_CORE_EXTRA_CONFIG_ARRAY="--enable-default-ssp" +CT_CC_GCC_EXTRA_CONFIG_ARRAY="--enable-default-ssp --with-build-config=bootstrap-lto-lean --enable-link-serialization=2" +CT_CC_GCC_STATIC_LIBSTDCXX=y +CT_CC_GCC_SYSTEM_ZLIB=y +CT_CC_GCC_CONFIG_TLS=m + +# +# Optimisation features +# +CT_CC_GCC_USE_GRAPHITE=y +CT_CC_GCC_USE_LTO=y +CT_CC_GCC_LTO_ZSTD=m + +# +# Settings for libraries running on target +# +# CT_CC_GCC_ENABLE_TARGET_OPTSPACE is not set +# CT_CC_GCC_LIBMUDFLAP is not set +CT_CC_GCC_LIBGOMP=y +CT_CC_GCC_LIBSSP=m +# CT_CC_GCC_LIBQUADMATH is not set +# CT_CC_GCC_LIBSTDCXX_VERBOSE is not set + +# +# Misc. obscure options. +# +CT_CC_CXA_ATEXIT=y +CT_CC_GCC_TM_CLONE_REGISTRY=m +# CT_CC_GCC_DISABLE_PCH is not set +CT_CC_GCC_SJLJ_EXCEPTIONS=m +CT_CC_GCC_LDBL_128=m +# CT_CC_GCC_BUILD_ID is not set +CT_CC_GCC_LNK_HASH_STYLE_DEFAULT=y +# CT_CC_GCC_LNK_HASH_STYLE_SYSV is not set +# CT_CC_GCC_LNK_HASH_STYLE_GNU is not set +# CT_CC_GCC_LNK_HASH_STYLE_BOTH is not set +CT_CC_GCC_LNK_HASH_STYLE="" +CT_CC_GCC_DEC_FLOATS_AUTO=y +# CT_CC_GCC_DEC_FLOATS_BID is not set +# CT_CC_GCC_DEC_FLOATS_DPD is not set +# CT_CC_GCC_DEC_FLOATS_NO is not set +CT_CC_GCC_DEC_FLOATS="" +CT_ALL_CC_CHOICES="GCC" + +# +# Additional supported languages: +# +CT_CC_LANG_CXX=y +# CT_CC_LANG_FORTRAN is not set +# CT_CC_LANG_JIT is not set +# CT_CC_LANG_ADA is not set +# CT_CC_LANG_D is not set +# CT_CC_LANG_OBJC is not set +# CT_CC_LANG_OBJCXX is not set +# CT_CC_LANG_GOLANG is not set +CT_CC_LANG_OTHERS="" +# end of C compiler + +# +# Debug facilities +# +# CT_DEBUG_DUMA is not set +# CT_DEBUG_GDB is not set +# CT_DEBUG_LTRACE is not set +# CT_DEBUG_STRACE is not set +CT_ALL_DEBUG_CHOICES="DUMA GDB LTRACE STRACE" +# end of Debug facilities + +# +# Companion libraries +# +# CT_COMPLIBS_CHECK is not set +# CT_COMP_LIBS_CLOOG is not set +# CT_COMP_LIBS_EXPAT is not set +CT_COMP_LIBS_GETTEXT=y +CT_COMP_LIBS_GETTEXT_PKG_KSYM="GETTEXT" +CT_GETTEXT_DIR_NAME="gettext" +CT_GETTEXT_PKG_NAME="gettext" +CT_GETTEXT_SRC_RELEASE=y +# CT_GETTEXT_SRC_DEVEL is not set +# CT_GETTEXT_SRC_CUSTOM is not set +CT_GETTEXT_PATCH_GLOBAL=y +# CT_GETTEXT_PATCH_BUNDLED is not set +# CT_GETTEXT_PATCH_LOCAL is not set +# CT_GETTEXT_PATCH_BUNDLED_LOCAL is not set +# CT_GETTEXT_PATCH_LOCAL_BUNDLED is not set +# CT_GETTEXT_PATCH_NONE is not set +CT_GETTEXT_PATCH_ORDER="global" +CT_GETTEXT_V_0_21=y +# CT_GETTEXT_V_0_20_1 is not set +# CT_GETTEXT_V_0_19_8_1 is not set +CT_GETTEXT_VERSION="0.21" +CT_GETTEXT_MIRRORS="$(CT_Mirrors GNU gettext)" +CT_GETTEXT_ARCHIVE_FILENAME="@{pkg_name}-@{version}" +CT_GETTEXT_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" +CT_GETTEXT_ARCHIVE_FORMATS=".tar.xz .tar.gz" +CT_GETTEXT_SIGNATURE_FORMAT="packed/.sig" +CT_GETTEXT_0_21_or_later=y +CT_GETTEXT_0_21_or_older=y +CT_GETTEXT_INCOMPATIBLE_WITH_UCLIBC_NG=y + +# +# This version of gettext is not compatible with uClibc-NG. Select +# + +# +# a different version if uClibc-NG is used on the target or (in a +# + +# +# Canadian cross build) on the host. +# +CT_COMP_LIBS_GMP=y +CT_COMP_LIBS_GMP_PKG_KSYM="GMP" +CT_GMP_DIR_NAME="gmp" +CT_GMP_PKG_NAME="gmp" +CT_GMP_SRC_RELEASE=y +# CT_GMP_SRC_DEVEL is not set +# CT_GMP_SRC_CUSTOM is not set +CT_GMP_PATCH_GLOBAL=y +# CT_GMP_PATCH_BUNDLED is not set +# CT_GMP_PATCH_LOCAL is not set +# CT_GMP_PATCH_BUNDLED_LOCAL is not set +# CT_GMP_PATCH_LOCAL_BUNDLED is not set +# CT_GMP_PATCH_NONE is not set +CT_GMP_PATCH_ORDER="global" +CT_GMP_V_6_2=y +# CT_GMP_V_6_1 is not set +CT_GMP_VERSION="6.2.1" +CT_GMP_MIRRORS="https://gmplib.org/download/gmp https://gmplib.org/download/gmp/archive $(CT_Mirrors GNU gmp)" +CT_GMP_ARCHIVE_FILENAME="@{pkg_name}-@{version}" +CT_GMP_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" +CT_GMP_ARCHIVE_FORMATS=".tar.xz .tar.lz .tar.bz2" +CT_GMP_SIGNATURE_FORMAT="packed/.sig" +CT_COMP_LIBS_ISL=y +CT_COMP_LIBS_ISL_PKG_KSYM="ISL" +CT_ISL_DIR_NAME="isl" +CT_ISL_PKG_NAME="isl" +CT_ISL_SRC_RELEASE=y +# CT_ISL_SRC_DEVEL is not set +# CT_ISL_SRC_CUSTOM is not set +CT_ISL_PATCH_GLOBAL=y +# CT_ISL_PATCH_BUNDLED is not set +# CT_ISL_PATCH_LOCAL is not set +# CT_ISL_PATCH_BUNDLED_LOCAL is not set +# CT_ISL_PATCH_LOCAL_BUNDLED is not set +# CT_ISL_PATCH_NONE is not set +CT_ISL_PATCH_ORDER="global" +CT_ISL_V_0_26=y +# CT_ISL_V_0_25 is not set +# CT_ISL_V_0_24 is not set +# CT_ISL_V_0_23 is not set +# CT_ISL_V_0_22 is not set +# CT_ISL_V_0_21 is not set +# CT_ISL_V_0_20 is not set +# CT_ISL_V_0_19 is not set +# CT_ISL_V_0_18 is not set +# CT_ISL_V_0_17 is not set +# CT_ISL_V_0_16 is not set +# CT_ISL_V_0_15 is not set +CT_ISL_VERSION="0.26" +CT_ISL_MIRRORS="https://libisl.sourceforge.io" +CT_ISL_ARCHIVE_FILENAME="@{pkg_name}-@{version}" +CT_ISL_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" +CT_ISL_ARCHIVE_FORMATS=".tar.xz .tar.bz2 .tar.gz" +CT_ISL_SIGNATURE_FORMAT="" +CT_ISL_later_than_0_18=y +CT_ISL_0_18_or_later=y +CT_ISL_later_than_0_15=y +CT_ISL_0_15_or_later=y +# CT_COMP_LIBS_LIBELF is not set +# CT_COMP_LIBS_LIBICONV is not set +CT_COMP_LIBS_MPC=y +CT_COMP_LIBS_MPC_PKG_KSYM="MPC" +CT_MPC_DIR_NAME="mpc" +CT_MPC_PKG_NAME="mpc" +CT_MPC_SRC_RELEASE=y +# CT_MPC_SRC_DEVEL is not set +# CT_MPC_SRC_CUSTOM is not set +CT_MPC_PATCH_GLOBAL=y +# CT_MPC_PATCH_BUNDLED is not set +# CT_MPC_PATCH_LOCAL is not set +# CT_MPC_PATCH_BUNDLED_LOCAL is not set +# CT_MPC_PATCH_LOCAL_BUNDLED is not set +# CT_MPC_PATCH_NONE is not set +CT_MPC_PATCH_ORDER="global" +CT_MPC_V_1_2=y +# CT_MPC_V_1_1 is not set +# CT_MPC_V_1_0 is not set +CT_MPC_VERSION="1.2.1" +CT_MPC_MIRRORS="http://www.multiprecision.org/downloads $(CT_Mirrors GNU mpc)" +CT_MPC_ARCHIVE_FILENAME="@{pkg_name}-@{version}" +CT_MPC_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" +CT_MPC_ARCHIVE_FORMATS=".tar.gz" +CT_MPC_SIGNATURE_FORMAT="packed/.sig" +CT_MPC_later_than_1_1_0=y +CT_MPC_1_1_0_or_later=y +CT_COMP_LIBS_MPFR=y +CT_COMP_LIBS_MPFR_PKG_KSYM="MPFR" +CT_MPFR_DIR_NAME="mpfr" +CT_MPFR_PKG_NAME="mpfr" +CT_MPFR_SRC_RELEASE=y +# CT_MPFR_SRC_DEVEL is not set +# CT_MPFR_SRC_CUSTOM is not set +CT_MPFR_PATCH_GLOBAL=y +# CT_MPFR_PATCH_BUNDLED is not set +# CT_MPFR_PATCH_LOCAL is not set +# CT_MPFR_PATCH_BUNDLED_LOCAL is not set +# CT_MPFR_PATCH_LOCAL_BUNDLED is not set +# CT_MPFR_PATCH_NONE is not set +CT_MPFR_PATCH_ORDER="global" +CT_MPFR_V_4_1=y +# CT_MPFR_V_4_0 is not set +# CT_MPFR_V_3_1 is not set +CT_MPFR_VERSION="4.1.0" +CT_MPFR_MIRRORS="http://www.mpfr.org/mpfr-${CT_MPFR_VERSION} $(CT_Mirrors GNU mpfr)" +CT_MPFR_ARCHIVE_FILENAME="@{pkg_name}-@{version}" +CT_MPFR_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" +CT_MPFR_ARCHIVE_FORMATS=".tar.xz .tar.bz2 .tar.gz .zip" +CT_MPFR_SIGNATURE_FORMAT="packed/.asc" +CT_MPFR_later_than_4_0_0=y +CT_MPFR_4_0_0_or_later=y +# CT_COMP_LIBS_NCURSES is not set +CT_COMP_LIBS_ZLIB=y +CT_COMP_LIBS_ZLIB_PKG_KSYM="ZLIB" +CT_ZLIB_DIR_NAME="zlib" +CT_ZLIB_PKG_NAME="zlib" +CT_ZLIB_SRC_RELEASE=y +# CT_ZLIB_SRC_DEVEL is not set +# CT_ZLIB_SRC_CUSTOM is not set +CT_ZLIB_PATCH_GLOBAL=y +# CT_ZLIB_PATCH_BUNDLED is not set +# CT_ZLIB_PATCH_LOCAL is not set +# CT_ZLIB_PATCH_BUNDLED_LOCAL is not set +# CT_ZLIB_PATCH_LOCAL_BUNDLED is not set +# CT_ZLIB_PATCH_NONE is not set +CT_ZLIB_PATCH_ORDER="global" +CT_ZLIB_V_1_2_13=y +CT_ZLIB_VERSION="1.2.13" +CT_ZLIB_MIRRORS="https://github.com/madler/zlib/releases/download/v${CT_ZLIB_VERSION} https://www.zlib.net/" +CT_ZLIB_ARCHIVE_FILENAME="@{pkg_name}-@{version}" +CT_ZLIB_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" +CT_ZLIB_ARCHIVE_FORMATS=".tar.xz .tar.gz" +CT_ZLIB_SIGNATURE_FORMAT="packed/.asc" +CT_COMP_LIBS_ZSTD=y +CT_COMP_LIBS_ZSTD_PKG_KSYM="ZSTD" +CT_ZSTD_DIR_NAME="zstd" +CT_ZSTD_PKG_NAME="zstd" +CT_ZSTD_SRC_RELEASE=y +# CT_ZSTD_SRC_DEVEL is not set +# CT_ZSTD_SRC_CUSTOM is not set +CT_ZSTD_PATCH_GLOBAL=y +# CT_ZSTD_PATCH_BUNDLED is not set +# CT_ZSTD_PATCH_LOCAL is not set +# CT_ZSTD_PATCH_BUNDLED_LOCAL is not set +# CT_ZSTD_PATCH_LOCAL_BUNDLED is not set +# CT_ZSTD_PATCH_NONE is not set +CT_ZSTD_PATCH_ORDER="global" +CT_ZSTD_V_1_5_5=y +# CT_ZSTD_V_1_5_2 is not set +CT_ZSTD_VERSION="1.5.5" +CT_ZSTD_MIRRORS="https://github.com/facebook/zstd/releases/download/v${CT_ZSTD_VERSION} https://www.zstd.net/" +CT_ZSTD_ARCHIVE_FILENAME="@{pkg_name}-@{version}" +CT_ZSTD_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" +CT_ZSTD_ARCHIVE_FORMATS=".tar.gz" +CT_ZSTD_SIGNATURE_FORMAT="packed/.sig" +CT_ALL_COMP_LIBS_CHOICES="CLOOG EXPAT GETTEXT GMP GNUPRUMCU ISL LIBELF LIBICONV MPC MPFR NCURSES NEWLIB_NANO PICOLIBC ZLIB ZSTD" +# CT_LIBICONV_NEEDED is not set +# CT_GETTEXT_NEEDED is not set +CT_GMP_NEEDED=y +CT_MPFR_NEEDED=y +CT_ISL_NEEDED=y +CT_MPC_NEEDED=y +CT_ZLIB_NEEDED=y +CT_ZSTD_NEEDED=y +CT_GMP=y +CT_MPFR=y +CT_ISL=y +CT_MPC=y +CT_ZLIB=y +CT_ZSTD=y +# end of Companion libraries + +# +# Companion tools +# +# CT_COMP_TOOLS_FOR_HOST is not set +# CT_COMP_TOOLS_AUTOCONF is not set +# CT_COMP_TOOLS_AUTOMAKE is not set +# CT_COMP_TOOLS_BISON is not set +# CT_COMP_TOOLS_DTC is not set +# CT_COMP_TOOLS_LIBTOOL is not set +# CT_COMP_TOOLS_M4 is not set +# CT_COMP_TOOLS_MAKE is not set +CT_ALL_COMP_TOOLS_CHOICES="AUTOCONF AUTOMAKE BISON DTC LIBTOOL M4 MAKE" +# end of Companion tools + +# +# Test suite +# +# CT_TEST_SUITE_GCC is not set +# end of Test suite diff --git a/images/base-win64/toolchain.cmake b/images/base-win64/toolchain.cmake index 72e09eb..7b21acb 100644 --- a/images/base-win64/toolchain.cmake +++ b/images/base-win64/toolchain.cmake @@ -1,12 +1,16 @@ set(CMAKE_SYSTEM_NAME Windows) set(CMAKE_SYSTEM_PROCESSOR x86_64) -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(triple x86_64-w64-mingw32) -set(CMAKE_FIND_ROOT_PATH /usr/x86_64-w64-mingw32 /opt/ffbuild) +set(CMAKE_C_COMPILER ${triple}-gcc) +set(CMAKE_CXX_COMPILER ${triple}-g++) +set(CMAKE_RC_COMPILER ${triple}-windres) +set(CMAKE_RANLIB ${triple}-gcc-ranlib) +set(CMAKE_AR ${triple}-gcc-ar) + +set(CMAKE_SYSROOT /opt/ct-ng/${triple}/sysroot) +set(CMAKE_FIND_ROOT_PATH /opt/ct-ng /opt/ct-ng/${triple}/sysroot /opt/ffbuild) set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) diff --git a/images/base/Dockerfile b/images/base/Dockerfile index 54dedec..9725cf4 100644 --- a/images/base/Dockerfile +++ b/images/base/Dockerfile @@ -1,10 +1,20 @@ -FROM ubuntu:21.10 +FROM ubuntu:23.04 + +ENV FFBUILD_DLDIR="/opt/ffdl" ENV DEBIAN_FRONTEND noninteractive RUN \ + mkdir -p "$FFBUILD_DLDIR" && \ apt-get -y update && \ apt-get -y dist-upgrade && \ - apt-get -y install build-essential yasm nasm xxd pkgconf git curl wget unzip subversion autoconf automake libtool libtool-bin autopoint cmake clang texinfo texi2html help2man flex bison gperf gettext itstool ragel libc6-dev libssl-dev gtk-doc-tools gobject-introspection gawk meson ninja-build p7zip-full python3-distutils python3-apt python-is-python3 && \ + apt-get -y install build-essential yasm nasm \ + xxd pkgconf curl wget unzip zip git subversion mercurial \ + autoconf automake libtool libtool-bin autopoint gettext cmake clang meson ninja-build \ + texinfo texi2html help2man flex bison groff \ + gperf itstool ragel libc6-dev libssl-dev \ + gtk-doc-tools gobject-introspection gawk \ + ocaml ocamlbuild libnum-ocaml-dev indent p7zip-full \ + python3-distutils python3-jinja2 python3-jsonschema python3-apt python-is-python3 && \ apt-get -y clean && \ git config --global user.email "builder@localhost" && \ git config --global user.name "Builder" && \ diff --git a/images/base/git-mini-clone.sh b/images/base/git-mini-clone.sh index 29ff3a8..e483802 100755 --- a/images/base/git-mini-clone.sh +++ b/images/base/git-mini-clone.sh @@ -5,6 +5,8 @@ REF="$2" DEST="$3" git init "$DEST" git -C "$DEST" remote add origin "$REPO" -git -C "$DEST" fetch --depth=1 origin "$REF" + +retry-tool git -C "$DEST" fetch --depth=1 origin "$REF" + git -C "$DEST" config advice.detachedHead false git -C "$DEST" checkout FETCH_HEAD diff --git a/images/base/retry-tool.sh b/images/base/retry-tool.sh new file mode 100755 index 0000000..75c8b8d --- /dev/null +++ b/images/base/retry-tool.sh @@ -0,0 +1,16 @@ +#!/bin/bash +set -xe + +RETRY_COUNTER=0 +MAX_RETRY=10 +CUR_TIMEOUT=120 +while [[ $RETRY_COUNTER -lt $MAX_RETRY ]]; do + timeout $CUR_TIMEOUT "$@" && break || sleep $(shuf -i 5-90 -n 1) + RETRY_COUNTER=$(( $RETRY_COUNTER + 1 )) + CUR_TIMEOUT=$(( $CUR_TIMEOUT + 60 )) + echo "Retry $RETRY_COUNTER..." +done +if [[ $RETRY_COUNTER -ge $MAX_RETRY ]]; then + echo "Max retry count exceeded." + exit 1 +fi diff --git a/images/base/run_stage.sh b/images/base/run_stage.sh index 83a3ef7..baf52b1 100755 --- a/images/base/run_stage.sh +++ b/images/base/run_stage.sh @@ -1,6 +1,9 @@ #!/bin/bash set -xe +export RAW_CFLAGS="$CFLAGS" +export RAW_CXXFLAGS="$CXXFLAGS" +export RAW_LDFLAGS="$LDFLAGS" [[ -n "$STAGE_CFLAGS" ]] && export CFLAGS="$CFLAGS $STAGE_CFLAGS" [[ -n "$STAGE_CXXFLAGS" ]] && export CXXFLAGS="$CXXFLAGS $STAGE_CXXFLAGS" [[ -n "$STAGE_LDFLAGS" ]] && export LDFLAGS="$LDFLAGS $STAGE_LDFLAGS" @@ -8,5 +11,12 @@ set -xe mkdir -p /stage source "$1" cd /stage -ffbuild_dockerbuild +if [[ -n "$3" ]]; then + cd "$3" +fi +if [[ -z "$2" ]]; then + ffbuild_dockerbuild +else + "$2" +fi rm -rf /stage "$FFBUILD_PREFIX"/bin diff --git a/makeimage.sh b/makeimage.sh index 5fe9ebf..2e63a43 100755 --- a/makeimage.sh +++ b/makeimage.sh @@ -3,16 +3,65 @@ set -xe cd "$(dirname "$0")" source util/vars.sh -export DOCKER_BUILDKIT=1 +TMPCFG="$(mktemp --suffix=.toml)" +cat <"$TMPCFG" +[worker.oci] + max-parallelism = 4 +EOF +trap "rm -f '$TMPCFG'" EXIT + +docker buildx inspect ffbuilder &>/dev/null || docker buildx create \ + --bootstrap \ + --name ffbuilder \ + --config "$TMPCFG" \ + --driver-opt network=host \ + --driver-opt env.BUILDKIT_STEP_LOG_MAX_SIZE=-1 \ + --driver-opt env.BUILDKIT_STEP_LOG_MAX_SPEED=-1 + +docker container inspect ffbuildreg &>/dev/null || \ + docker run --rm -d -p 127.0.0.1:64647:5000 --name ffbuildreg registry:2 +LOCAL_REG_PORT="$(docker container inspect --format='{{range $p, $conf := .NetworkSettings.Ports}}{{(index $conf 0).HostPort}}{{end}}' ffbuildreg)" +LOCAL_ROOT="127.0.0.1:${LOCAL_REG_PORT}/local" + +export REGISTRY_OVERRIDE_DL="127.0.0.1:${LOCAL_REG_PORT}" GITHUB_REPOSITORY_DL="local" if [[ -z "$QUICKBUILD" ]]; then if grep "FROM.*base.*" "images/base-${TARGET}/Dockerfile" >/dev/null 2>&1; then - docker build --tag "$BASE_IMAGE" images/base + docker buildx --builder ffbuilder build \ + --cache-from=type=local,src=.cache/"${BASE_IMAGE/:/_}" \ + --cache-to=type=local,mode=max,dest=.cache/"${BASE_IMAGE/:/_}" \ + --push --tag "${LOCAL_ROOT}/base:latest" images/base fi - docker build --build-arg GH_REPO="$REPO" --tag "$TARGET_IMAGE" "images/base-${TARGET}" + docker buildx --builder ffbuilder build \ + --cache-from=type=local,src=.cache/"${TARGET_IMAGE/:/_}" \ + --cache-to=type=local,mode=max,dest=.cache/"${TARGET_IMAGE/:/_}" \ + --push --tag "${LOCAL_ROOT}/base-${TARGET}:latest" \ + --build-arg GH_REPO="$LOCAL_ROOT" "images/base-${TARGET}" + + export REGISTRY_OVERRIDE="$REGISTRY_OVERRIDE_DL" GITHUB_REPOSITORY="$GITHUB_REPOSITORY_DL" fi ./generate.sh "$TARGET" "$VARIANT" "${ADDINS[@]}" +DL_CACHE_TAG="$(./util/get_dl_cache_tag.sh)" +DL_IMAGE="${DL_IMAGE_RAW}:${DL_CACHE_TAG}" -exec docker build --tag "$IMAGE" . +if docker pull "${DL_IMAGE}"; then + export REGISTRY_OVERRIDE_DL="$REGISTRY" GITHUB_REPOSITORY_DL="$REPO" + ./generate.sh "$TARGET" "$VARIANT" "${ADDINS[@]}" +else + DL_IMAGE="${LOCAL_ROOT}/dl_cache:${DL_CACHE_TAG}" + docker manifest inspect --insecure "${DL_IMAGE}" >/dev/null || + docker buildx --builder ffbuilder build -f Dockerfile.dl \ + --cache-from=type=local,src=.cache/dl_image_cache \ + --cache-to=type=local,mode=max,dest=.cache/dl_image_cache \ + --push --tag "${DL_IMAGE}" . +fi + +docker buildx --builder ffbuilder build \ + --cache-from=type=local,src=.cache/"${IMAGE/:/_}" \ + --cache-to=type=local,mode=max,dest=.cache/"${IMAGE/:/_}" \ + --load --tag "$IMAGE" . + +docker container stop ffbuildreg +docker buildx rm -f ffbuilder diff --git a/patches/aribb24/12.patch b/patches/aribb24/12.patch new file mode 100644 index 0000000..c55bf23 --- /dev/null +++ b/patches/aribb24/12.patch @@ -0,0 +1,31 @@ +From a5bcc6d17c20e18bdeec295089cc0cdfac9d35c8 Mon Sep 17 00:00:00 2001 +From: xtne6f +Date: Thu, 7 Feb 2019 20:11:13 +0900 +Subject: [PATCH] Fix default macros + +--- + src/decoder_macro.h | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/decoder_macro.h b/src/decoder_macro.h +index 86edee4..513b81e 100644 +--- a/src/decoder_macro.h ++++ b/src/decoder_macro.h +@@ -30,7 +30,7 @@ static const unsigned char decoder_default_macro_1[] = { + 0x1B,0x24,0x39,0x1B,0x29,0x31,0x1B,0x2A,0x30,0x1B,0x2B,0x20,0x70,0x0F,0x1B,0x7D + }; + static const unsigned char decoder_default_macro_2[] = { +- 0x1B,0x24,0x39,0x1B,0x29,0x20,0x40,0x1B,0x2A,0x30,0x1B,0x2B,0x20,0x70,0x0F,0x1B,0x7D ++ 0x1B,0x24,0x39,0x1B,0x29,0x20,0x41,0x1B,0x2A,0x30,0x1B,0x2B,0x20,0x70,0x0F,0x1B,0x7D + }; + static const unsigned char decoder_default_macro_3[] = { + 0x1B,0x28,0x32,0x1B,0x29,0x34,0x1B,0x2A,0x35,0x1B,0x2B,0x20,0x70,0x0F,0x1B,0x7D +@@ -39,7 +39,7 @@ static const unsigned char decoder_default_macro_4[] = { + 0x1B,0x28,0x32,0x1B,0x29,0x33,0x1B,0x2A,0x35,0x1B,0x2B,0x20,0x70,0x0F,0x1B,0x7D + }; + static const unsigned char decoder_default_macro_5[] = { +- 0x1B,0x28,0x32,0x1B,0x29,0x20,0x40,0x1B,0x2A,0x35,0x1B,0x2B,0x20,0x70,0x0F,0x1B,0x7D ++ 0x1B,0x28,0x32,0x1B,0x29,0x20,0x41,0x1B,0x2A,0x35,0x1B,0x2B,0x20,0x70,0x0F,0x1B,0x7D + }; + static const unsigned char decoder_default_macro_6[] = { + 0x1B,0x28,0x20,0x41,0x1B,0x29,0x20,0x42,0x1B,0x2A,0x20,0x43,0x1B,0x2B,0x20,0x70,0x0F,0x1B,0x7D diff --git a/patches/aribb24/13.patch b/patches/aribb24/13.patch new file mode 100644 index 0000000..30d17ba --- /dev/null +++ b/patches/aribb24/13.patch @@ -0,0 +1,23 @@ +From facc51923d43f26dec09a9391566de7cba29f8db Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Jan=20Ekstr=C3=B6m?= +Date: Sun, 17 Feb 2019 22:42:31 +0200 +Subject: [PATCH] decoder: reset control_time when finalizing decoder + +This way finalize_decoder() can properly be utilized as a flush +function. +--- + src/decoder.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/decoder.c b/src/decoder.c +index 2b77f38..24c0f06 100644 +--- a/src/decoder.c ++++ b/src/decoder.c +@@ -1506,6 +1506,7 @@ void arib_finalize_decoder( arib_decoder_t* decoder ) + free( p_region ); + } + decoder->p_region = NULL; ++ decoder->i_control_time = 0; + } + + size_t arib_decode_buffer( arib_decoder_t* decoder, diff --git a/patches/aribb24/17.patch b/patches/aribb24/17.patch new file mode 100644 index 0000000..5961b2e --- /dev/null +++ b/patches/aribb24/17.patch @@ -0,0 +1,151 @@ +From 58a34b8fabf4d0e9e1984fb603a97f52fb934a09 Mon Sep 17 00:00:00 2001 +From: scimmia9286 +Date: Thu, 22 Apr 2021 20:26:45 +0900 +Subject: [PATCH] Fixed DRCS parser bug + +--- + src/decoder.c | 3 ++- + src/drcs.c | 12 ++++++++---- + src/drcs.h | 2 +- + src/parser.c | 25 +++++++++++++++++++++---- + 4 files changed, 32 insertions(+), 10 deletions(-) + +diff --git a/src/decoder.c b/src/decoder.c +index 2b77f38..c9d6ac3 100644 +--- a/src/decoder.c ++++ b/src/decoder.c +@@ -1139,9 +1139,10 @@ static int decoder_handle_time( arib_decoder_t *decoder ) + return 1; + break; + default: +- if( i_mode == 1 && c >= 0x40 && c <= 0x7F ) ++ if( i_mode == 1 && c >= 0x40 && c <= 0x7F ) { + decoder->i_control_time += c & 0x3f; + return 1; ++ } + return 0; + } + if( i_mode == 0 ) +diff --git a/src/drcs.c b/src/drcs.c +index 114d846..8ff8d4f 100644 +--- a/src/drcs.c ++++ b/src/drcs.c +@@ -406,15 +406,19 @@ static void save_drcs_pattern_data_image( + void save_drcs_pattern( + arib_instance_t *p_instance, + int i_width, int i_height, +- int i_depth, const int8_t* p_patternData ) ++ int i_depth, const int8_t* p_patternData, ++ int16_t i_CharacterCode ) + { ++// int i_drcsPage = (i_CharacterCode >> 16) & 0xff; ++ int i_code = (i_CharacterCode & 0xff) - 0x20; + char* psz_hash = get_drcs_pattern_data_hash( p_instance, + i_width, i_height, i_depth, p_patternData ); + +- strncpy( p_instance->p->drcs_hash_table[p_instance->p->i_drcs_num], psz_hash, 32 ); +- p_instance->p->drcs_hash_table[p_instance->p->i_drcs_num][32] = '\0'; ++ strncpy( p_instance->p->drcs_hash_table[i_code-1], psz_hash, 32 ); ++ p_instance->p->drcs_hash_table[i_code-1][32] = '\0'; + +- p_instance->p->i_drcs_num++; ++ p_instance->p->i_drcs_num = i_code > p_instance->p->i_drcs_num ? ++ i_code : p_instance->p->i_drcs_num; + + save_drcs_pattern_data_image( p_instance, psz_hash, + i_width, i_height, i_depth, p_patternData ); +diff --git a/src/drcs.h b/src/drcs.h +index 274ff44..9c1533e 100644 +--- a/src/drcs.h ++++ b/src/drcs.h +@@ -77,6 +77,6 @@ typedef struct drcs_data_s + + bool apply_drcs_conversion_table( arib_instance_t * ); + bool load_drcs_conversion_table( arib_instance_t * ); +-void save_drcs_pattern( arib_instance_t *, int, int, int, const int8_t* ); ++void save_drcs_pattern( arib_instance_t *, int, int, int, const int8_t*, int16_t ); + + #endif +diff --git a/src/parser.c b/src/parser.c +index 1403dd6..6db27ae 100644 +--- a/src/parser.c ++++ b/src/parser.c +@@ -79,7 +79,6 @@ static void parse_data_unit_DRCS( arib_parser_t *p_parser, bs_t *p_bs, + uint8_t i_data_unit_parameter, + uint32_t i_data_unit_size ) + { +- p_parser->p_instance->p->i_drcs_num = 0; + #ifdef ARIBSUB_GEN_DRCS_DATA + if( p_parser->p_drcs_data != NULL ) + { +@@ -119,7 +118,7 @@ static void parse_data_unit_DRCS( arib_parser_t *p_parser, bs_t *p_bs, + + for( int i = 0; i < i_NumberOfCode; i++ ) + { +- bs_skip( p_bs, 16 ); /* i_character_code */ ++ int16_t i_CharacterCode = bs_read( p_bs, 16 ); /* i_character_code */ + p_parser->i_data_unit_size += 2; + uint8_t i_NumberOfFont = bs_read( p_bs, 8 ); + p_parser->i_data_unit_size += 1; +@@ -139,7 +138,11 @@ static void parse_data_unit_DRCS( arib_parser_t *p_parser, bs_t *p_bs, + + for( int j = 0; j < i_NumberOfFont; j++ ) + { ++#ifdef ARIBSUB_GEN_DRCS_DATA ++ int8_t i_fontId = bs_read( p_bs, 4 ); /* i_fontID */ ++#else + bs_skip( p_bs, 4 ); /* i_fontID */ ++#endif //ARIBSUB_GEN_DRCS_DATA + uint8_t i_mode = bs_read( p_bs, 4 ); + p_parser->i_data_unit_size += 1; + +@@ -206,18 +209,26 @@ static void parse_data_unit_DRCS( arib_parser_t *p_parser, bs_t *p_bs, + + #ifdef ARIBSUB_GEN_DRCS_DATA + save_drcs_pattern( p_parser->p_instance, i_width, i_height, i_depth + 2, +- p_drcs_pattern_data->p_patternData ); ++ p_drcs_pattern_data->p_patternData, i_CharacterCode ); + #else + save_drcs_pattern( p_parser->p_instance, i_width, i_height, i_depth + 2, +- p_patternData ); ++ p_patternData, i_CharacterCode); + free( p_patternData ); + #endif //ARIBSUB_GEN_DRCS_DATA + } + else + { ++#ifdef ARIBSUB_GEN_DRCS_DATA ++ int8_t i_regionX = bs_read( p_bs, 8 ); /* i_regionX */ ++#else + bs_skip( p_bs, 8 ); /* i_regionX */ ++#endif //ARIBSUB_GEN_DRCS_DATA + p_parser->i_data_unit_size += 1; ++#ifdef ARIBSUB_GEN_DRCS_DATA ++ int8_t i_regionY = bs_read( p_bs, 8 ); /* i_regionY */ ++#else + bs_skip( p_bs, 8 ); /* i_regionY */ ++#endif //ARIBSUB_GEN_DRCS_DATA + p_parser->i_data_unit_size += 1; + uint16_t i_geometricData_length = bs_read( p_bs, 16 ); + p_parser->i_data_unit_size += 2; +@@ -245,7 +256,11 @@ static void parse_data_unit_DRCS( arib_parser_t *p_parser, bs_t *p_bs, + + for( int k = 0; k < i_geometricData_length ; k++ ) + { ++#ifdef ARIBSUB_GEN_DRCS_DATA ++ int8_t i_geometricData = bs_read( p_bs, 8 ); /* i_geometric_data */ ++#else + bs_skip( p_bs, 8 ); /* i_geometric_data */ ++#endif //ARIBSUB_GEN_DRCS_DATA + p_parser->i_data_unit_size += 1; + + #ifdef ARIBSUB_GEN_DRCS_DATA +@@ -344,6 +359,8 @@ static void parse_caption_management_data( arib_parser_t *p_parser, bs_t *p_bs ) + p_parser->i_data_unit_size = 0; + p_parser->i_subtitle_data_size = 0; + p_parser->psz_subtitle_data = NULL; ++ p_parser->p_instance->p->i_drcs_num = 0; ++ memset(p_parser->p_instance->p->drcs_hash_table, 0, sizeof(p_parser->p_instance->p->drcs_hash_table)); + if( i_data_unit_loop_length > 0 ) + { + p_parser->psz_subtitle_data = (unsigned char*) calloc( diff --git a/scripts.d/10-mingw-std-threads.sh b/scripts.d/10-mingw-std-threads.sh new file mode 100755 index 0000000..d1ced26 --- /dev/null +++ b/scripts.d/10-mingw-std-threads.sh @@ -0,0 +1,16 @@ +#!/bin/bash + +SCRIPT_REPO="https://github.com/meganz/mingw-std-threads.git" +SCRIPT_COMMIT="6c2061b7da41d6aa1b2162ff4383ec3ece864bc6" + +ffbuild_enabled() { + [[ $TARGET == win* ]] || return -1 + return 0 +} + +ffbuild_dockerbuild() { + cd "$FFBUILD_DLDIR/$SELF" + + mkdir -p "$FFBUILD_PREFIX"/include + cp *.h "$FFBUILD_PREFIX"/include +} diff --git a/scripts.d/10-mingw.sh b/scripts.d/10-mingw.sh index c7d5821..d0a6546 100755 --- a/scripts.d/10-mingw.sh +++ b/scripts.d/10-mingw.sh @@ -1,7 +1,7 @@ #!/bin/bash -MINGW_REPO="https://github.com/mirror/mingw-w64.git" -MINGW_COMMIT="a2eb3ea3aaa7c780c4b4ab30d71169f442788864" +SCRIPT_REPO="https://git.code.sf.net/p/mingw-w64/mingw-w64.git" +SCRIPT_COMMIT="3638d5e9a6f28354bc3e18f04ba0d97e2cc3b44c" ffbuild_enabled() { [[ $TARGET == win* ]] || return -1 @@ -17,9 +17,12 @@ ffbuild_dockerfinal() { to_df "COPY --from=${PREVLAYER} /opt/mingw/. /" } +ffbuild_dockerdl() { + to_df "RUN retry-tool sh -c \"rm -rf mingw && git clone '$SCRIPT_REPO' mingw\" && cd mingw && git checkout \"$SCRIPT_COMMIT\"" +} + ffbuild_dockerbuild() { - git-mini-clone "$MINGW_REPO" "$MINGW_COMMIT" mingw - cd mingw + cd "$FFBUILD_DLDIR/mingw" cd mingw-w64-headers @@ -28,10 +31,13 @@ ffbuild_dockerbuild() { unset LDFLAGS unset PKG_CONFIG_LIBDIR + GCC_SYSROOT="$(${FFBUILD_CROSS_PREFIX}gcc -print-sysroot)" + local myconf=( - --prefix="/usr/$FFBUILD_TOOLCHAIN" + --prefix="$GCC_SYSROOT/usr/$FFBUILD_TOOLCHAIN" --host="$FFBUILD_TOOLCHAIN" --with-default-win32-winnt="0x601" + --with-default-msvcrt=ucrt --enable-idl ) @@ -42,7 +48,7 @@ ffbuild_dockerbuild() { cd ../mingw-w64-libraries/winpthreads local myconf=( - --prefix="/usr/$FFBUILD_TOOLCHAIN" + --prefix="$GCC_SYSROOT/usr/$FFBUILD_TOOLCHAIN" --host="$FFBUILD_TOOLCHAIN" --with-pic --disable-shared diff --git a/scripts.d/10-xorg-macros.sh b/scripts.d/10-xorg-macros.sh index 328b9e5..d336ff1 100755 --- a/scripts.d/10-xorg-macros.sh +++ b/scripts.d/10-xorg-macros.sh @@ -1,7 +1,7 @@ #!/bin/bash -XORGMACROS_REPO="https://gitlab.freedesktop.org/xorg/util/macros.git" -XORGMACROS_COMMIT="b8766308d2f78bc572abe5198007cf7aeec9b761" +SCRIPT_REPO="https://gitlab.freedesktop.org/xorg/util/macros.git" +SCRIPT_COMMIT="cb147377e9341af05232f95814022abdecf14024" ffbuild_enabled() { [[ $TARGET != linux* ]] && return -1 @@ -14,8 +14,7 @@ ffbuild_dockerlayer() { } ffbuild_dockerbuild() { - git-mini-clone "$XORGMACROS_REPO" "$XORGMACROS_COMMIT" xorg-macros - cd xorg-macros + cd "$FFBUILD_DLDIR/$SELF" autoreconf -i ./configure --prefix="$FFBUILD_PREFIX" diff --git a/scripts.d/20-libiconv.sh b/scripts.d/20-libiconv.sh index 1263beb..6303f14 100755 --- a/scripts.d/20-libiconv.sh +++ b/scripts.d/20-libiconv.sh @@ -1,17 +1,21 @@ #!/bin/bash -# https://ftp.gnu.org/gnu/libiconv/ -ICONV_SRC="https://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.16.tar.gz" +SCRIPT_REPO="https://git.savannah.gnu.org/git/libiconv.git" +SCRIPT_COMMIT="6e2b31f6d66739c5abd850338ea68c6bd2012812" ffbuild_enabled() { return 0 } +ffbuild_dockerdl() { + to_df "RUN retry-tool sh -c \"rm -rf $SELF && git clone '$SCRIPT_REPO' $SELF\" && git -C $SELF checkout \"$SCRIPT_COMMIT\"" + to_df "RUN cd $SELF && retry-tool ./autopull.sh --one-time" +} + ffbuild_dockerbuild() { - wget -O iconv.tar.gz "$ICONV_SRC" - tar xaf iconv.tar.gz - rm iconv.tar.gz - cd libiconv* + cd "$FFBUILD_DLDIR/$SELF" + + (unset CC CFLAGS GMAKE && ./autogen.sh) local myconf=( --prefix="$FFBUILD_PREFIX" diff --git a/scripts.d/20-libxml2.sh b/scripts.d/20-libxml2.sh index d40b99c..40dfe1b 100755 --- a/scripts.d/20-libxml2.sh +++ b/scripts.d/20-libxml2.sh @@ -1,15 +1,14 @@ #!/bin/bash -LIBXML2_REPO="https://gitlab.gnome.org/GNOME/libxml2.git" -LIBXML2_COMMIT="dea91c97debeac7c1aaf9c19f79029809e23a353" +SCRIPT_REPO="https://gitlab.gnome.org/GNOME/libxml2.git" +SCRIPT_COMMIT="884474477284474e0151280aaa275a18e3d7a036" ffbuild_enabled() { return 0 } ffbuild_dockerbuild() { - git-mini-clone "$LIBXML2_REPO" "$LIBXML2_COMMIT" libxml2 - cd libxml2 + cd "$FFBUILD_DLDIR/$SELF" local myconf=( --prefix="$FFBUILD_PREFIX" diff --git a/scripts.d/20-zlib.sh b/scripts.d/20-zlib.sh index 84c073e..b9f4d5c 100755 --- a/scripts.d/20-zlib.sh +++ b/scripts.d/20-zlib.sh @@ -1,19 +1,14 @@ #!/bin/bash -ZLIB_SRC="https://zlib.net/zlib-1.2.11.tar.gz" +SCRIPT_REPO="https://github.com/madler/zlib.git" +SCRIPT_COMMIT="04f42ceca40f73e2978b50e93806c2a18c1281fc" ffbuild_enabled() { return 0 } ffbuild_dockerbuild() { - mkdir zlib - cd zlib - - wget "$ZLIB_SRC" -O zlib.tar.gz - tar xaf zlib.tar.gz - rm zlib.tar.gz - cd zlib* + cd "$FFBUILD_DLDIR/$SELF" local myconf=( --prefix="$FFBUILD_PREFIX" diff --git a/scripts.d/25-fftw3.sh b/scripts.d/25-fftw3.sh index 87b3366..ede5622 100755 --- a/scripts.d/25-fftw3.sh +++ b/scripts.d/25-fftw3.sh @@ -1,38 +1,36 @@ #!/bin/bash -# http://fftw.org/download.html -FFTW3_SRC="https://fftw.org/fftw-3.3.10.tar.gz" -FFTW3_SHA512="2d34b5ccac7b08740dbdacc6ebe451d8a34cf9d9bfec85a5e776e87adf94abfd803c222412d8e10fbaa4ed46f504aa87180396af1b108666cde4314a55610b40" +SCRIPT_REPO="https://github.com/FFTW/fftw3.git" +SCRIPT_COMMIT="69f6c1a6ebd7ac5af33e7074134fb79fbc729c3d" ffbuild_enabled() { - # Dependency of GPL-Only librubberband - [[ $VARIANT == lgpl* ]] && return -1 return 0 } ffbuild_dockerbuild() { - mkdir fftw3 - cd fftw3 - - check-wget fftw3.tar.gz "$FFTW3_SRC" "$FFTW3_SHA512" - tar xaf fftw3.tar.gz - rm fftw3.tar.gz - cd fftw* + cd "$FFBUILD_DLDIR/$SELF" local myconf=( --prefix="$FFBUILD_PREFIX" + --enable-maintainer-mode --disable-shared --enable-static + --disable-fortran --disable-doc --with-our-malloc --enable-threads --with-combined-threads --with-incoming-stack-boundary=2 - --enable-sse2 - --enable-avx - --enable-avx2 ) + if [[ $TARGET != *arm64 ]]; then + myconf+=( + --enable-sse2 + --enable-avx + --enable-avx2 + ) + fi + if [[ $TARGET == win* || $TARGET == linux* ]]; then myconf+=( --host="$FFBUILD_TOOLCHAIN" @@ -42,7 +40,7 @@ ffbuild_dockerbuild() { return -1 fi - ./configure "${myconf[@]}" + ./bootstrap.sh "${myconf[@]}" make -j$(nproc) make install } diff --git a/scripts.d/25-freetype.sh b/scripts.d/25-freetype.sh index 6189c89..bcb52ed 100755 --- a/scripts.d/25-freetype.sh +++ b/scripts.d/25-freetype.sh @@ -1,19 +1,16 @@ #!/bin/bash -# https://sourceforge.net/projects/freetype/files/freetype2/ -FREETYPE_SRC="https://sourceforge.net/projects/freetype/files/freetype2/2.11.0/freetype-2.11.0.tar.xz/download" +SCRIPT_REPO="https://gitlab.freedesktop.org/freetype/freetype.git" +SCRIPT_COMMIT="dec2743e6a2a40cddfc8a9892895cb4f861e1eeb" ffbuild_enabled() { return 0 } ffbuild_dockerbuild() { - mkdir ft - cd ft - wget -O ft.tar.gz "$FREETYPE_SRC" - tar xaf ft.tar.gz - rm ft.tar.gz - cd freetype* + cd "$FFBUILD_DLDIR/$SELF" + + ./autogen.sh local myconf=( --prefix="$FFBUILD_PREFIX" diff --git a/scripts.d/25-fribidi.sh b/scripts.d/25-fribidi.sh index d4c715b..b9d824a 100755 --- a/scripts.d/25-fribidi.sh +++ b/scripts.d/25-fribidi.sh @@ -1,15 +1,14 @@ #!/bin/bash -FRIBIDI_REPO="https://github.com/fribidi/fribidi.git" -FRIBIDI_COMMIT="9ca69d112678832f3b734cc8e399583bb12de02d" +SCRIPT_REPO="https://github.com/fribidi/fribidi.git" +SCRIPT_COMMIT="b54871c339dabb7434718da3fed2fa63320997e5" ffbuild_enabled() { return 0 } ffbuild_dockerbuild() { - git-mini-clone "$FRIBIDI_REPO" "$FRIBIDI_COMMIT" fribidi - cd fribidi + cd "$FFBUILD_DLDIR/$SELF" mkdir build && cd build diff --git a/scripts.d/25-gmp.sh b/scripts.d/25-gmp.sh index a586c34..3884ce6 100755 --- a/scripts.d/25-gmp.sh +++ b/scripts.d/25-gmp.sh @@ -1,23 +1,23 @@ #!/bin/bash -GMP_SRC="https://ftp.gnu.org/gnu/gmp/gmp-6.2.1.tar.xz" +SCRIPT_REPO="https://github.com/BtbN/gmplib.git" +SCRIPT_COMMIT="1d7f62515fc8f5109fabace9592d863417f17c37" ffbuild_enabled() { return 0 } ffbuild_dockerbuild() { - wget "$GMP_SRC" -O gmp.tar.xz - tar xaf gmp.tar.xz - rm gmp.tar.xz - cd gmp* + cd "$FFBUILD_DLDIR/$SELF" - autoreconf -i + ./.bootstrap local myconf=( --prefix="$FFBUILD_PREFIX" + --enable-maintainer-mode --disable-shared --enable-static + --with-pic ) if [[ $TARGET == win* || $TARGET == linux* ]]; then diff --git a/scripts.d/25-libogg.sh b/scripts.d/25-libogg.sh index aee3dfc..066f8fa 100755 --- a/scripts.d/25-libogg.sh +++ b/scripts.d/25-libogg.sh @@ -1,15 +1,14 @@ #!/bin/bash -OGG_REPO="https://github.com/xiph/ogg.git" -OGG_COMMIT="3069cc2bb44160982cdb21b2b8f0660c76b17572" +SCRIPT_REPO="https://github.com/xiph/ogg.git" +SCRIPT_COMMIT="db5c7a49ce7ebda47b15b78471e78fb7f2483e22" ffbuild_enabled() { return 0 } ffbuild_dockerbuild() { - git-mini-clone "$OGG_REPO" "$OGG_COMMIT" ogg - cd ogg + cd "$FFBUILD_DLDIR/$SELF" ./autogen.sh diff --git a/scripts.d/25-openssl.sh b/scripts.d/25-openssl.sh index 7400c96..63131eb 100755 --- a/scripts.d/25-openssl.sh +++ b/scripts.d/25-openssl.sh @@ -1,15 +1,20 @@ #!/bin/bash -OPENSSL_REPO="https://github.com/openssl/openssl.git" -OPENSSL_COMMIT="OpenSSL_1_1_1l" +SCRIPT_REPO="https://github.com/openssl/openssl.git" +SCRIPT_COMMIT="openssl-3.0.9" +SCRIPT_TAGFILTER="openssl-3.0.*" ffbuild_enabled() { return 0 } +ffbuild_dockerdl() { + default_dl "$SELF" + to_df "RUN git -C \"$SELF\" submodule update --init --recursive --depth=1" +} + ffbuild_dockerbuild() { - git-mini-clone "$OPENSSL_REPO" "$OPENSSL_COMMIT" openssl - cd openssl + cd "$FFBUILD_DLDIR/$SELF" local myconf=( threads @@ -19,6 +24,7 @@ ffbuild_dockerbuild() { enable-ec enable-srp --prefix="$FFBUILD_PREFIX" + --libdir=lib ) if [[ $TARGET == win64 ]]; then @@ -36,15 +42,34 @@ ffbuild_dockerbuild() { --cross-compile-prefix="$FFBUILD_CROSS_PREFIX" linux-x86_64 ) + elif [[ $TARGET == linuxarm64 ]]; then + myconf+=( + --cross-compile-prefix="$FFBUILD_CROSS_PREFIX" + linux-aarch64 + ) else echo "Unknown target" return -1 fi + export CFLAGS="$CFLAGS -fno-strict-aliasing" + export CXXFLAGS="$CXXFLAGS -fno-strict-aliasing" + + # OpenSSL build system prepends the cross prefix itself + export CC="${CC/${FFBUILD_CROSS_PREFIX}/}" + export CXX="${CXX/${FFBUILD_CROSS_PREFIX}/}" + export AR="${AR/${FFBUILD_CROSS_PREFIX}/}" + export RANLIB="${RANLIB/${FFBUILD_CROSS_PREFIX}/}" + ./Configure "${myconf[@]}" sed -i -e "/^CFLAGS=/s|=.*|=${CFLAGS}|" -e "/^LDFLAGS=/s|=[[:space:]]*$|=${LDFLAGS}|" Makefile - make -j$(nproc) + make -j$(nproc) build_sw make install_sw } + +ffbuild_configure() { + [[ $TARGET == win* ]] && return 0 + echo --enable-openssl +} diff --git a/scripts.d/25-xz.sh b/scripts.d/25-xz.sh index 62c13f2..4d9581b 100755 --- a/scripts.d/25-xz.sh +++ b/scripts.d/25-xz.sh @@ -1,22 +1,20 @@ #!/bin/bash -XZ_SRC="https://sourceforge.net/projects/lzmautils/files/xz-5.2.5.tar.xz/download" +SCRIPT_REPO="https://github.com/xz-mirror/xz.git" +SCRIPT_COMMIT="66bdcfa85fef2911cc80f5f30fed3f9610faccb4" ffbuild_enabled() { return 0 } ffbuild_dockerbuild() { - mkdir xz - cd xz + cd "$FFBUILD_DLDIR/$SELF" - wget "$XZ_SRC" -O xz.tar.xz - tar xaf xz.tar.xz - rm xz.tar.xz - cd xz* + ./autogen.sh --no-po4a --no-doxygen local myconf=( --prefix="$FFBUILD_PREFIX" + --disable-symbol-versions --disable-shared --enable-static --with-pic diff --git a/scripts.d/35-fontconfig.sh b/scripts.d/35-fontconfig.sh index 1a15464..aba3f20 100755 --- a/scripts.d/35-fontconfig.sh +++ b/scripts.d/35-fontconfig.sh @@ -1,19 +1,16 @@ #!/bin/bash -FONTCONFIG_SRC="https://www.freedesktop.org/software/fontconfig/release/fontconfig-2.13.94.tar.xz" +SCRIPT_REPO="https://gitlab.freedesktop.org/fontconfig/fontconfig.git" +SCRIPT_COMMIT="7e2a1b2577e8d90ea5be3f14091e809ac7742438" ffbuild_enabled() { return 0 } ffbuild_dockerbuild() { - mkdir fc - cd fc + cd "$FFBUILD_DLDIR/$SELF" - wget "$FONTCONFIG_SRC" -O fc.tar.gz - tar xaf fc.tar.gz - rm fc.tar.gz - cd fontconfig* + ./autogen.sh --noconf local myconf=( --prefix="$FFBUILD_PREFIX" @@ -24,7 +21,13 @@ ffbuild_dockerbuild() { --enable-static ) - if [[ $TARGET == win* || $TARGET == linux* ]]; then + if [[ $TARGET == linux* ]]; then + myconf+=( + --sysconfdir=/etc + --localstatedir=/var + --host="$FFBUILD_TOOLCHAIN" + ) + elif [[ $TARGET == win* ]]; then myconf+=( --host="$FFBUILD_TOOLCHAIN" ) diff --git a/scripts.d/45-harfbuzz.sh b/scripts.d/45-harfbuzz.sh index 7c640b8..65c2f38 100755 --- a/scripts.d/45-harfbuzz.sh +++ b/scripts.d/45-harfbuzz.sh @@ -1,15 +1,14 @@ #!/bin/bash -HARFBUZZ_REPO="https://github.com/harfbuzz/harfbuzz.git" -HARFBUZZ_COMMIT="85deddb16ee6b00b0c921998e1d93c84002f5a42" +SCRIPT_REPO="https://github.com/harfbuzz/harfbuzz.git" +SCRIPT_COMMIT="73ee9c346f3acccbe14a4caf258b636de7c459be" ffbuild_enabled() { return 0 } ffbuild_dockerbuild() { - git-mini-clone "$HARFBUZZ_REPO" "$HARFBUZZ_COMMIT" harfbuzz - cd harfbuzz + cd "$FFBUILD_DLDIR/$SELF" local myconf=( --prefix="$FFBUILD_PREFIX" diff --git a/scripts.d/45-libsamplerate.sh b/scripts.d/45-libsamplerate.sh index 10608ec..701f294 100755 --- a/scripts.d/45-libsamplerate.sh +++ b/scripts.d/45-libsamplerate.sh @@ -1,17 +1,14 @@ #!/bin/bash -LIBSR_REPO="https://github.com/libsndfile/libsamplerate.git" -LIBSR_COMMIT="c96f5e3de9c4488f4e6c97f59f5245f22fda22f7" +SCRIPT_REPO="https://github.com/libsndfile/libsamplerate.git" +SCRIPT_COMMIT="22bd06eb114850ebe31981eb794d150a95439fef" ffbuild_enabled() { - # Dependency of GPL-Only librubberband - [[ $VARIANT == lgpl* ]] && return -1 return 0 } ffbuild_dockerbuild() { - git-mini-clone "$LIBSR_REPO" "$LIBSR_COMMIT" libsr - cd libsr + cd "$FFBUILD_DLDIR/$SELF" mkdir build cd build diff --git a/scripts.d/45-libudfread.sh b/scripts.d/45-libudfread.sh index 346a4b0..58b5780 100755 --- a/scripts.d/45-libudfread.sh +++ b/scripts.d/45-libudfread.sh @@ -1,15 +1,14 @@ #!/bin/bash -LIBUDFREAD_REPO="https://code.videolan.org/videolan/libudfread.git" -LIBUDFREAD_COMMIT="b3e6936a23f8af30a0be63d88f4695bdc0ea26e1" +SCRIPT_REPO="https://code.videolan.org/videolan/libudfread.git" +SCRIPT_COMMIT="b3e6936a23f8af30a0be63d88f4695bdc0ea26e1" ffbuild_enabled() { return 0 } ffbuild_dockerbuild() { - git-mini-clone "$LIBUDFREAD_REPO" "$LIBUDFREAD_COMMIT" libudfread - cd libudfread + cd "$FFBUILD_DLDIR/$SELF" ./bootstrap diff --git a/scripts.d/45-libvorbis.sh b/scripts.d/45-libvorbis.sh index d40b622..4b5cde8 100755 --- a/scripts.d/45-libvorbis.sh +++ b/scripts.d/45-libvorbis.sh @@ -1,15 +1,14 @@ #!/bin/bash -VORBIS_REPO="https://github.com/xiph/vorbis.git" -VORBIS_COMMIT="84c023699cdf023a32fa4ded32019f194afcdad0" +SCRIPT_REPO="https://github.com/xiph/vorbis.git" +SCRIPT_COMMIT="84c023699cdf023a32fa4ded32019f194afcdad0" ffbuild_enabled() { return 0 } ffbuild_dockerbuild() { - git-mini-clone "$VORBIS_REPO" "$VORBIS_COMMIT" vorbis - cd vorbis + cd "$FFBUILD_DLDIR/$SELF" ./autogen.sh diff --git a/scripts.d/45-opencl.sh b/scripts.d/45-opencl.sh index e02c267..dfbda16 100755 --- a/scripts.d/45-opencl.sh +++ b/scripts.d/45-opencl.sh @@ -1,28 +1,33 @@ #!/bin/bash -HEADERS_REPO="https://github.com/KhronosGroup/OpenCL-Headers.git" -HEADERS_COMMIT="447efd3be3169fa0ef37fa481241d7b261a02412" +SCRIPT_REPO="https://github.com/KhronosGroup/OpenCL-Headers.git" +SCRIPT_COMMIT="e049b16b5f157e2f28e7b5c301e71e1ccb3fe288" -LOADER_REPO="https://github.com/KhronosGroup/OpenCL-ICD-Loader.git" -LOADER_COMMIT="4e65bd5db0a0a87637fddc081a70d537fc2a9e70" +SCRIPT_REPO2="https://github.com/KhronosGroup/OpenCL-ICD-Loader.git" +SCRIPT_COMMIT2="229410f86a8c8c9e0f86f195409e5481a2bae067" ffbuild_enabled() { return 0 } -ffbuild_dockerbuild() { - mkdir opencl && cd opencl +ffbuild_dockerdl() { + default_dl opencl/headers + to_df "RUN git-mini-clone \"$SCRIPT_REPO2\" \"$SCRIPT_COMMIT2\" opencl/loader" +} + +ffbuild_dockerbuild() { + cd "$FFBUILD_DLDIR"/opencl - git-mini-clone "$HEADERS_REPO" "$HEADERS_COMMIT" headers mkdir -p "$FFBUILD_PREFIX"/include/CL cp -r headers/CL/* "$FFBUILD_PREFIX"/include/CL/. - git-mini-clone "$LOADER_REPO" "$LOADER_COMMIT" loader cd loader - mkdir build && cd build - cmake -DCMAKE_TOOLCHAIN_FILE="$FFBUILD_CMAKE_TOOLCHAIN" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="$FFBUILD_PREFIX" -DOPENCL_ICD_LOADER_HEADERS_DIR="$FFBUILD_PREFIX"/include -DBUILD_SHARED_LIBS=OFF -DOPENCL_ICD_LOADER_DISABLE_OPENCLON12=ON -DOPENCL_ICD_LOADER_PIC=ON -DOPENCL_ICD_LOADER_BUILD_TESTING=OFF .. + cmake -DCMAKE_TOOLCHAIN_FILE="$FFBUILD_CMAKE_TOOLCHAIN" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="$FFBUILD_PREFIX" \ + -DOPENCL_ICD_LOADER_HEADERS_DIR="$FFBUILD_PREFIX"/include -DOPENCL_ICD_LOADER_BUILD_SHARED_LIBS=OFF \ + -DOPENCL_ICD_LOADER_DISABLE_OPENCLON12=ON -DOPENCL_ICD_LOADER_PIC=ON \ + -DOPENCL_ICD_LOADER_BUILD_TESTING=OFF -DBUILD_TESTING=OFF .. make -j$(nproc) make install @@ -34,12 +39,13 @@ ffbuild_dockerbuild() { echo "Name: OpenCL" >> OpenCL.pc echo "Description: OpenCL ICD Loader" >> OpenCL.pc echo "Version: 9999" >> OpenCL.pc - echo "Libs: -L\${libdir} -lOpenCL" >> OpenCL.pc echo "Cflags: -I\${includedir}" >> OpenCL.pc if [[ $TARGET == linux* ]]; then + echo "Libs: -L\${libdir} -lOpenCL" >> OpenCL.pc echo "Libs.private: -ldl" >> OpenCL.pc elif [[ $TARGET == win* ]]; then + echo "Libs: -L\${libdir} -l:OpenCL.a" >> OpenCL.pc echo "Libs.private: -lole32 -lshlwapi -lcfgmgr32" >> OpenCL.pc fi diff --git a/scripts.d/45-pulseaudio.sh b/scripts.d/45-pulseaudio.sh new file mode 100755 index 0000000..356b6be --- /dev/null +++ b/scripts.d/45-pulseaudio.sh @@ -0,0 +1,66 @@ +#!/bin/bash + +SCRIPT_REPO="https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git" +SCRIPT_COMMIT="e96d278bfc514f290b60c9e924fabc1c772e1689" + +ffbuild_enabled() { + [[ $TARGET == linux* ]] || return 1 + return 0 +} + +ffbuild_dockerdl() { + to_df "RUN git clone --filter=blob:none \"$SCRIPT_REPO\" \"$SELF\" && git -C \"$SELF\" checkout \"$SCRIPT_COMMIT\"" +} + +ffbuild_dockerbuild() { + cd "$FFBUILD_DLDIR/$SELF" + + # Kill build of utils and their sndfile dep + echo > src/utils/meson.build + echo > src/pulsecore/sndfile-util.c + echo > src/pulsecore/sndfile-util.h + sed -ri -e 's/(sndfile_dep = .*)\)/\1, required : false)/' meson.build + sed -ri -e 's/shared_library/library/g' src/meson.build src/pulse/meson.build + + mkdir build && cd build + + local myconf=( + --prefix="$FFBUILD_PREFIX" + --buildtype=release + --default-library=static + -Ddaemon=false + -Dclient=true + -Ddoxygen=false + -Dgcov=false + -Dman=false + -Dtests=false + -Dipv6=true + -Dopenssl=enabled + ) + + if [[ $TARGET == linux* ]]; then + myconf+=( + --cross-file=/cross.meson + ) + else + echo "Unknown target" + return -1 + fi + + meson "${myconf[@]}" .. + ninja -j"$(nproc)" + ninja install + + rm -r "$FFBUILD_PREFIX"/share + + echo "Libs.private: -ldl -lrt" >> "$FFBUILD_PREFIX"/lib/pkgconfig/libpulse.pc + echo "Libs.private: -ldl -lrt" >> "$FFBUILD_PREFIX"/lib/pkgconfig/libpulse-simple.pc +} + +ffbuild_configure() { + echo --enable-libpulse +} + +ffbuild_unconfigure() { + echo --disable-libpulse +} diff --git a/scripts.d/45-vmaf.sh b/scripts.d/45-vmaf.sh index 95d2f28..1ad7bac 100755 --- a/scripts.d/45-vmaf.sh +++ b/scripts.d/45-vmaf.sh @@ -1,15 +1,14 @@ #!/bin/bash -VMAF_REPO="https://github.com/Netflix/vmaf.git" -VMAF_COMMIT="8f24c9ec82f9bb82d7f4eff22b290ab48f3e210f" +SCRIPT_REPO="https://github.com/Netflix/vmaf.git" +SCRIPT_COMMIT="98bdd77b296da207ab42c3113ec8f30de58db197" ffbuild_enabled() { return 0 } ffbuild_dockerbuild() { - git-mini-clone "$VMAF_REPO" "$VMAF_COMMIT" vmaf - cd vmaf + cd "$FFBUILD_DLDIR/$SELF" # Kill build of unused and broken tools echo > libvmaf/tools/meson.build diff --git a/scripts.d/45-x11/10-xcbproto.sh b/scripts.d/45-x11/10-xcbproto.sh index 4e3c1a3..75dfd3d 100755 --- a/scripts.d/45-x11/10-xcbproto.sh +++ b/scripts.d/45-x11/10-xcbproto.sh @@ -1,7 +1,7 @@ #!/bin/bash -XCBPROTO_REPO="https://gitlab.freedesktop.org/xorg/proto/xcbproto.git" -XCBPROTO_COMMIT="c9be9015959f3d3830d847db44d39c5d21ba55b6" +SCRIPT_REPO="https://gitlab.freedesktop.org/xorg/proto/xcbproto.git" +SCRIPT_COMMIT="91178913c25b19e0457cdf6d21e00e6a613823e2" ffbuild_enabled() { [[ $TARGET != linux* ]] && return -1 @@ -9,8 +9,7 @@ ffbuild_enabled() { } ffbuild_dockerbuild() { - git-mini-clone "$XCBPROTO_REPO" "$XCBPROTO_COMMIT" xcbproto - cd xcbproto + cd "$FFBUILD_DLDIR/$SELF" autoreconf -i diff --git a/scripts.d/45-x11/10-xproto.sh b/scripts.d/45-x11/10-xproto.sh index 34799a3..e0e1428 100755 --- a/scripts.d/45-x11/10-xproto.sh +++ b/scripts.d/45-x11/10-xproto.sh @@ -1,7 +1,7 @@ #!/bin/bash -XPROTO_REPO="https://gitlab.freedesktop.org/xorg/proto/xorgproto.git" -XPROTO_COMMIT="57acac1d4c7967f4661fb1c9f86f48f34a46c48d" +SCRIPT_REPO="https://gitlab.freedesktop.org/xorg/proto/xorgproto.git" +SCRIPT_COMMIT="766967322209f2dcb72e6a8edea0c651f586201d" ffbuild_enabled() { [[ $TARGET != linux* ]] && return -1 @@ -9,8 +9,7 @@ ffbuild_enabled() { } ffbuild_dockerbuild() { - git-mini-clone "$XPROTO_REPO" "$XPROTO_COMMIT" xproto - cd xproto + cd "$FFBUILD_DLDIR/$SELF" autoreconf -i diff --git a/scripts.d/45-x11/10-xtrans.sh b/scripts.d/45-x11/10-xtrans.sh index bb72f3f..3f582b9 100755 --- a/scripts.d/45-x11/10-xtrans.sh +++ b/scripts.d/45-x11/10-xtrans.sh @@ -1,7 +1,7 @@ #!/bin/bash -LIBXTRANS_REPO="https://gitlab.freedesktop.org/xorg/lib/libxtrans.git" -LIBXTRANS_COMMIT="3b5df889f58a99980a35a7b4a18eb4e7d2abeac4" +SCRIPT_REPO="https://gitlab.freedesktop.org/xorg/lib/libxtrans.git" +SCRIPT_COMMIT="3b3a3bd75d86aec78f6ef893b198c3efc378bc64" ffbuild_enabled() { [[ $TARGET != linux* ]] && return -1 @@ -9,8 +9,7 @@ ffbuild_enabled() { } ffbuild_dockerbuild() { - git-mini-clone "$LIBXTRANS_REPO" "$LIBXTRANS_COMMIT" libxtrans - cd libxtrans + cd "$FFBUILD_DLDIR/$SELF" autoreconf -i diff --git a/scripts.d/45-x11/20-libxau.sh b/scripts.d/45-x11/20-libxau.sh index 8d75b7a..19d9fde 100755 --- a/scripts.d/45-x11/20-libxau.sh +++ b/scripts.d/45-x11/20-libxau.sh @@ -1,7 +1,7 @@ #!/bin/bash -LIBXAU_REPO="https://gitlab.freedesktop.org/xorg/lib/libxau.git" -LIBXAU_COMMIT="d9443b2c57b512cfb250b35707378654d86c7dea" +SCRIPT_REPO="https://gitlab.freedesktop.org/xorg/lib/libxau.git" +SCRIPT_COMMIT="df1bf4fe528a5a9eef420f78efb225e4696ac467" ffbuild_enabled() { [[ $TARGET != linux* ]] && return -1 @@ -9,15 +9,14 @@ ffbuild_enabled() { } ffbuild_dockerbuild() { - git-mini-clone "$LIBXAU_REPO" "$LIBXAU_COMMIT" libxau - cd libxau + cd "$FFBUILD_DLDIR/$SELF" autoreconf -i local myconf=( --prefix="$FFBUILD_PREFIX" - --disable-shared - --enable-static + --enable-shared + --disable-static --with-pic ) @@ -30,7 +29,13 @@ ffbuild_dockerbuild() { return -1 fi + export CFLAGS="$RAW_CFLAGS" + export LDFLAFS="$RAW_LDFLAGS" + ./configure "${myconf[@]}" make -j$(nproc) make install + + gen-implib "$FFBUILD_PREFIX"/lib/{libXau.so.6,libXau.a} + rm "$FFBUILD_PREFIX"/lib/libXau{.so*,.la} } diff --git a/scripts.d/45-x11/30-libxcb.sh b/scripts.d/45-x11/30-libxcb.sh index 917693c..588568d 100755 --- a/scripts.d/45-x11/30-libxcb.sh +++ b/scripts.d/45-x11/30-libxcb.sh @@ -1,7 +1,7 @@ #!/bin/bash -LIBXCB_REPO="https://gitlab.freedesktop.org/xorg/lib/libxcb.git" -LIBXCB_COMMIT="233d7b7f1f03ef18bf3955eb1f20421e745d22f0" +SCRIPT_REPO="https://gitlab.freedesktop.org/xorg/lib/libxcb.git" +SCRIPT_COMMIT="8935793f1f3751a6aa9d78955c7d6236177986de" ffbuild_enabled() { [[ $TARGET != linux* ]] && return -1 @@ -9,15 +9,14 @@ ffbuild_enabled() { } ffbuild_dockerbuild() { - git-mini-clone "$LIBXCB_REPO" "$LIBXCB_COMMIT" libxcb - cd libxcb + cd "$FFBUILD_DLDIR/$SELF" autoreconf -i local myconf=( --prefix="$FFBUILD_PREFIX" - --disable-shared - --enable-static + --enable-shared + --disable-static --with-pic --disable-devel-docs ) @@ -31,9 +30,17 @@ ffbuild_dockerbuild() { return -1 fi + export CFLAGS="$RAW_CFLAGS" + export LDFLAFS="$RAW_LDFLAGS" + ./configure "${myconf[@]}" make -j$(nproc) make install + + for LIBNAME in "$FFBUILD_PREFIX"/lib/libxcb*.so.?; do + gen-implib "$LIBNAME" "${LIBNAME%%.*}.a" + rm "${LIBNAME%%.*}"{.so*,.la} + done } ffbuild_configure() { diff --git a/scripts.d/45-x11/40-libx11.sh b/scripts.d/45-x11/40-libx11.sh index 20e89bb..8d90f37 100755 --- a/scripts.d/45-x11/40-libx11.sh +++ b/scripts.d/45-x11/40-libx11.sh @@ -1,7 +1,7 @@ #!/bin/bash -LIBX11_REPO="https://gitlab.freedesktop.org/xorg/lib/libx11.git" -LIBX11_COMMIT="2356e59ff24f8d1b25cdc4dffc5171c65dc2b86e" +SCRIPT_REPO="https://gitlab.freedesktop.org/xorg/lib/libx11.git" +SCRIPT_COMMIT="af2b6dfab1616dc85be9c9b196e4c56d00447851" ffbuild_enabled() { [[ $TARGET != linux* ]] && return -1 @@ -9,15 +9,14 @@ ffbuild_enabled() { } ffbuild_dockerbuild() { - git-mini-clone "$LIBX11_REPO" "$LIBX11_COMMIT" libx11 - cd libx11 + cd "$FFBUILD_DLDIR/$SELF" autoreconf -i local myconf=( --prefix="$FFBUILD_PREFIX" - --disable-shared - --enable-static + --enable-shared + --disable-static --with-pic --without-xmlto --without-fop @@ -27,6 +26,12 @@ ffbuild_dockerbuild() { --enable-ipv6 ) + if [[ $TARGET == linuxarm64 ]]; then + myconf+=( + --disable-malloc0returnsnull + ) + fi + if [[ $TARGET == linux* ]]; then myconf+=( --host="$FFBUILD_TOOLCHAIN" @@ -36,9 +41,16 @@ ffbuild_dockerbuild() { return -1 fi + export CFLAGS="$RAW_CFLAGS" + export LDFLAFS="$RAW_LDFLAGS" + ./configure "${myconf[@]}" make -j$(nproc) make install - echo "Libs.private: -ldl" >> "$FFBUILD_PREFIX"/lib/pkgconfig/x11.pc + echo "Libs: -ldl" >> "$FFBUILD_PREFIX"/lib/pkgconfig/x11.pc + + gen-implib "$FFBUILD_PREFIX"/lib/{libX11-xcb.so.1,libX11-xcb.a} + gen-implib "$FFBUILD_PREFIX"/lib/{libX11.so.6,libX11.a} + rm "$FFBUILD_PREFIX"/lib/libX11{,-xcb}{.so*,.la} } diff --git a/scripts.d/45-x11/50-libxext.sh b/scripts.d/45-x11/50-libxext.sh index fdbed2f..2e73d25 100755 --- a/scripts.d/45-x11/50-libxext.sh +++ b/scripts.d/45-x11/50-libxext.sh @@ -1,7 +1,7 @@ #!/bin/bash -LIBXEXT_REPO="https://gitlab.freedesktop.org/xorg/lib/libxext.git" -LIBXEXT_COMMIT="47904063048fa6ef6e8e16219ddef4d14d5d9a4b" +SCRIPT_REPO="https://gitlab.freedesktop.org/xorg/lib/libxext.git" +SCRIPT_COMMIT="de2ebd62c1eb8fe16c11aceac4a6981bda124cf4" ffbuild_enabled() { [[ $TARGET != linux* ]] && return -1 @@ -9,15 +9,14 @@ ffbuild_enabled() { } ffbuild_dockerbuild() { - git-mini-clone "$LIBXEXT_REPO" "$LIBXEXT_COMMIT" libxext - cd libxext + cd "$FFBUILD_DLDIR/$SELF" autoreconf -i local myconf=( --prefix="$FFBUILD_PREFIX" - --disable-shared - --enable-static + --enable-shared + --disable-static --with-pic --without-xmlto --without-fop @@ -25,6 +24,12 @@ ffbuild_dockerbuild() { --without-lint ) + if [[ $TARGET == linuxarm64 ]]; then + myconf+=( + --disable-malloc0returnsnull + ) + fi + if [[ $TARGET == linux* ]]; then myconf+=( --host="$FFBUILD_TOOLCHAIN" @@ -34,7 +39,13 @@ ffbuild_dockerbuild() { return -1 fi + export CFLAGS="$RAW_CFLAGS -D_GNU_SOURCE" + export LDFLAFS="$RAW_LDFLAGS" + ./configure "${myconf[@]}" make -j$(nproc) make install + + gen-implib "$FFBUILD_PREFIX"/lib/{libXext.so.6,libXext.a} + rm "$FFBUILD_PREFIX"/lib/libXext{.so*,.la} } diff --git a/scripts.d/45-x11/50-libxfixes.sh b/scripts.d/45-x11/50-libxfixes.sh index a7236e4..80fa4dd 100755 --- a/scripts.d/45-x11/50-libxfixes.sh +++ b/scripts.d/45-x11/50-libxfixes.sh @@ -1,7 +1,7 @@ #!/bin/bash -LIBXFIXES_REPO="https://gitlab.freedesktop.org/xorg/lib/libxfixes.git" -LIBXFIXES_COMMIT="6fe3bd64dd82f704ed91478acb4c99ab5c00be16" +SCRIPT_REPO="https://gitlab.freedesktop.org/xorg/lib/libxfixes.git" +SCRIPT_COMMIT="c1cab28e27dd1c5a81394965248b57e490ccf2ca" ffbuild_enabled() { [[ $TARGET != linux* ]] && return -1 @@ -9,15 +9,14 @@ ffbuild_enabled() { } ffbuild_dockerbuild() { - git-mini-clone "$LIBXFIXES_REPO" "$LIBXFIXES_COMMIT" libxfixes - cd libxfixes + cd "$FFBUILD_DLDIR/$SELF" autoreconf -i local myconf=( --prefix="$FFBUILD_PREFIX" - --disable-shared - --enable-static + --enable-shared + --disable-static --with-pic ) @@ -30,7 +29,13 @@ ffbuild_dockerbuild() { return -1 fi + export CFLAGS="$RAW_CFLAGS" + export LDFLAFS="$RAW_LDFLAGS" + ./configure "${myconf[@]}" make -j$(nproc) make install + + gen-implib "$FFBUILD_PREFIX"/lib/{libXfixes.so.3,libXfixes.a} + rm "$FFBUILD_PREFIX"/lib/libXfixes{.so*,.la} } diff --git a/scripts.d/45-x11/50-libxi.sh b/scripts.d/45-x11/50-libxi.sh new file mode 100755 index 0000000..f979476 --- /dev/null +++ b/scripts.d/45-x11/50-libxi.sh @@ -0,0 +1,47 @@ +#!/bin/bash + +SCRIPT_REPO="https://gitlab.freedesktop.org/xorg/lib/libxi.git" +SCRIPT_COMMIT="3a7503ec7703f10de17c622ea22b7bff736cea74" + +ffbuild_enabled() { + [[ $TARGET != linux* ]] && return -1 + return 0 +} + +ffbuild_dockerbuild() { + cd "$FFBUILD_DLDIR/$SELF" + + autoreconf -i + + local myconf=( + --prefix="$FFBUILD_PREFIX" + --enable-shared + --disable-static + --with-pic + ) + + if [[ $TARGET == linuxarm64 ]]; then + myconf+=( + --disable-malloc0returnsnull + ) + fi + + if [[ $TARGET == linux* ]]; then + myconf+=( + --host="$FFBUILD_TOOLCHAIN" + ) + else + echo "Unknown target" + return -1 + fi + + export CFLAGS="$RAW_CFLAGS" + export LDFLAFS="$RAW_LDFLAGS" + + ./configure "${myconf[@]}" + make -j$(nproc) + make install + + gen-implib "$FFBUILD_PREFIX"/lib/{libXi.so.6,libXi.a} + rm "$FFBUILD_PREFIX"/lib/libXi{.so*,.la} +} diff --git a/scripts.d/45-x11/50-libxinerama.sh b/scripts.d/45-x11/50-libxinerama.sh new file mode 100755 index 0000000..6f24a94 --- /dev/null +++ b/scripts.d/45-x11/50-libxinerama.sh @@ -0,0 +1,47 @@ +#!/bin/bash + +SCRIPT_REPO="https://gitlab.freedesktop.org/xorg/lib/libxinerama.git" +SCRIPT_COMMIT="51c28095951676a5896437c4c3aa40fb1972bad2" + +ffbuild_enabled() { + [[ $TARGET != linux* ]] && return -1 + return 0 +} + +ffbuild_dockerbuild() { + cd "$FFBUILD_DLDIR/$SELF" + + autoreconf -i + + local myconf=( + --prefix="$FFBUILD_PREFIX" + --enable-shared + --disable-static + --with-pic + ) + + if [[ $TARGET == linuxarm64 ]]; then + myconf+=( + --disable-malloc0returnsnull + ) + fi + + if [[ $TARGET == linux* ]]; then + myconf+=( + --host="$FFBUILD_TOOLCHAIN" + ) + else + echo "Unknown target" + return -1 + fi + + export CFLAGS="$RAW_CFLAGS" + export LDFLAFS="$RAW_LDFLAGS" + + ./configure "${myconf[@]}" + make -j$(nproc) + make install + + gen-implib "$FFBUILD_PREFIX"/lib/{libXinerama.so.1,libXinerama.a} + rm "$FFBUILD_PREFIX"/lib/libXinerama{.so*,.la} +} diff --git a/scripts.d/45-x11/50-libxrender.sh b/scripts.d/45-x11/50-libxrender.sh new file mode 100755 index 0000000..4f5566f --- /dev/null +++ b/scripts.d/45-x11/50-libxrender.sh @@ -0,0 +1,47 @@ +#!/bin/bash + +SCRIPT_REPO="https://gitlab.freedesktop.org/xorg/lib/libxrender.git" +SCRIPT_COMMIT="07efd80468f6b595e6432edd28b8560ca7695ba0" + +ffbuild_enabled() { + [[ $TARGET != linux* ]] && return -1 + return 0 +} + +ffbuild_dockerbuild() { + cd "$FFBUILD_DLDIR/$SELF" + + autoreconf -i + + local myconf=( + --prefix="$FFBUILD_PREFIX" + --enable-shared + --disable-static + --with-pic + ) + + if [[ $TARGET == linuxarm64 ]]; then + myconf+=( + --disable-malloc0returnsnull + ) + fi + + if [[ $TARGET == linux* ]]; then + myconf+=( + --host="$FFBUILD_TOOLCHAIN" + ) + else + echo "Unknown target" + return -1 + fi + + export CFLAGS="$RAW_CFLAGS" + export LDFLAFS="$RAW_LDFLAGS" + + ./configure "${myconf[@]}" + make -j$(nproc) + make install + + gen-implib "$FFBUILD_PREFIX"/lib/{libXrender.so.1,libXrender.a} + rm "$FFBUILD_PREFIX"/lib/libXrender{.so*,.la} +} diff --git a/scripts.d/45-x11/50-libxscrnsaver.sh b/scripts.d/45-x11/50-libxscrnsaver.sh new file mode 100755 index 0000000..fec2cab --- /dev/null +++ b/scripts.d/45-x11/50-libxscrnsaver.sh @@ -0,0 +1,47 @@ +#!/bin/bash + +SCRIPT_REPO="https://gitlab.freedesktop.org/xorg/lib/libxscrnsaver.git" +SCRIPT_COMMIT="9b4e000c6c4ae213a3e52345751d885543f17929" + +ffbuild_enabled() { + [[ $TARGET != linux* ]] && return -1 + return 0 +} + +ffbuild_dockerbuild() { + cd "$FFBUILD_DLDIR/$SELF" + + autoreconf -i + + local myconf=( + --prefix="$FFBUILD_PREFIX" + --enable-shared + --disable-static + --with-pic + ) + + if [[ $TARGET == linuxarm64 ]]; then + myconf+=( + --disable-malloc0returnsnull + ) + fi + + if [[ $TARGET == linux* ]]; then + myconf+=( + --host="$FFBUILD_TOOLCHAIN" + ) + else + echo "Unknown target" + return -1 + fi + + export CFLAGS="$RAW_CFLAGS" + export LDFLAFS="$RAW_LDFLAGS" + + ./configure "${myconf[@]}" + make -j$(nproc) + make install + + gen-implib "$FFBUILD_PREFIX"/lib/{libXss.so.1,libXss.a} + rm "$FFBUILD_PREFIX"/lib/libXss{.so*,.la} +} diff --git a/scripts.d/45-x11/50-libxxf86vm.sh b/scripts.d/45-x11/50-libxxf86vm.sh new file mode 100755 index 0000000..72dd8fa --- /dev/null +++ b/scripts.d/45-x11/50-libxxf86vm.sh @@ -0,0 +1,47 @@ +#!/bin/bash + +SCRIPT_REPO="https://gitlab.freedesktop.org/xorg/lib/libxxf86vm.git" +SCRIPT_COMMIT="cfda59347e3a04415340a99f925a9cd85c0531b2" + +ffbuild_enabled() { + [[ $TARGET != linux* ]] && return -1 + return 0 +} + +ffbuild_dockerbuild() { + cd "$FFBUILD_DLDIR/$SELF" + + autoreconf -i + + local myconf=( + --prefix="$FFBUILD_PREFIX" + --enable-shared + --disable-static + --with-pic + ) + + if [[ $TARGET == linuxarm64 ]]; then + myconf+=( + --disable-malloc0returnsnull + ) + fi + + if [[ $TARGET == linux* ]]; then + myconf+=( + --host="$FFBUILD_TOOLCHAIN" + ) + else + echo "Unknown target" + return -1 + fi + + export CFLAGS="$RAW_CFLAGS" + export LDFLAFS="$RAW_LDFLAGS" + + ./configure "${myconf[@]}" + make -j$(nproc) + make install + + gen-implib "$FFBUILD_PREFIX"/lib/{libXxf86vm.so.1,libXxf86vm.a} + rm "$FFBUILD_PREFIX"/lib/libXxf86vm{.so*,.la} +} diff --git a/scripts.d/45-x11/60-libglvnd.sh b/scripts.d/45-x11/60-libglvnd.sh new file mode 100755 index 0000000..15c439f --- /dev/null +++ b/scripts.d/45-x11/60-libglvnd.sh @@ -0,0 +1,41 @@ +#!/bin/bash + +SCRIPT_REPO="https://gitlab.freedesktop.org/glvnd/libglvnd.git" +SCRIPT_COMMIT="179d7278d7485ceea2d440807be9d677d32aedc4" + +ffbuild_enabled() { + [[ $TARGET != linux* ]] && return -1 + return 0 +} + +ffbuild_dockerbuild() { + cd "$FFBUILD_DLDIR/$SELF" + + mkdir build && cd build + + local myconf=( + --prefix="$FFBUILD_PREFIX" + --buildtype=release + --default-library=static + -Dasm=enabled + -Dx11=enabled + -Degl=true + -Dglx=enabled + -Dgles1=true + -Dgles2=true + -Dheaders=true + ) + + if [[ $TARGET == linux* ]]; then + myconf+=( + --cross-file=/cross.meson + ) + else + echo "Unknown target" + return -1 + fi + + meson "${myconf[@]}" .. + ninja -j"$(nproc)" + ninja install +} diff --git a/scripts.d/45-x11/60-libxcursor.sh b/scripts.d/45-x11/60-libxcursor.sh new file mode 100755 index 0000000..eaa36f8 --- /dev/null +++ b/scripts.d/45-x11/60-libxcursor.sh @@ -0,0 +1,41 @@ +#!/bin/bash + +SCRIPT_REPO="https://gitlab.freedesktop.org/xorg/lib/libxcursor.git" +SCRIPT_COMMIT="a353f02a7ac4504ad5edb5407278c7a03c507aef" + +ffbuild_enabled() { + [[ $TARGET != linux* ]] && return -1 + return 0 +} + +ffbuild_dockerbuild() { + cd "$FFBUILD_DLDIR/$SELF" + + autoreconf -i + + local myconf=( + --prefix="$FFBUILD_PREFIX" + --enable-shared + --disable-static + --with-pic + ) + + if [[ $TARGET == linux* ]]; then + myconf+=( + --host="$FFBUILD_TOOLCHAIN" + ) + else + echo "Unknown target" + return -1 + fi + + export CFLAGS="$RAW_CFLAGS" + export LDFLAFS="$RAW_LDFLAGS" + + ./configure "${myconf[@]}" + make -j$(nproc) + make install + + gen-implib "$FFBUILD_PREFIX"/lib/{libXcursor.so.1,libXcursor.a} + rm "$FFBUILD_PREFIX"/lib/libXcursor{.so*,.la} +} diff --git a/scripts.d/45-x11/60-libxrandr.sh b/scripts.d/45-x11/60-libxrandr.sh new file mode 100755 index 0000000..ab1cdbc --- /dev/null +++ b/scripts.d/45-x11/60-libxrandr.sh @@ -0,0 +1,47 @@ +#!/bin/bash + +SCRIPT_REPO="https://gitlab.freedesktop.org/xorg/lib/libxrandr.git" +SCRIPT_COMMIT="5b96863cf2a34ee9e72ffc4ec6415bc59b6121fc" + +ffbuild_enabled() { + [[ $TARGET != linux* ]] && return -1 + return 0 +} + +ffbuild_dockerbuild() { + cd "$FFBUILD_DLDIR/$SELF" + + autoreconf -i + + local myconf=( + --prefix="$FFBUILD_PREFIX" + --enable-shared + --disable-static + --with-pic + ) + + if [[ $TARGET == linuxarm64 ]]; then + myconf+=( + --disable-malloc0returnsnull + ) + fi + + if [[ $TARGET == linux* ]]; then + myconf+=( + --host="$FFBUILD_TOOLCHAIN" + ) + else + echo "Unknown target" + return -1 + fi + + export CFLAGS="$RAW_CFLAGS" + export LDFLAFS="$RAW_LDFLAGS" + + ./configure "${myconf[@]}" + make -j$(nproc) + make install + + gen-implib "$FFBUILD_PREFIX"/lib/{libXrandr.so.2,libXrandr.a} + rm "$FFBUILD_PREFIX"/lib/libXrandr{.so*,.la} +} diff --git a/scripts.d/45-x11/60-libxv.sh b/scripts.d/45-x11/60-libxv.sh index 05f0dab..980490e 100755 --- a/scripts.d/45-x11/60-libxv.sh +++ b/scripts.d/45-x11/60-libxv.sh @@ -1,7 +1,7 @@ #!/bin/bash -LIBXV_REPO="https://gitlab.freedesktop.org/xorg/lib/libxv.git" -LIBXV_COMMIT="03a6f599d060591a9a7cd8558bd2143a1c7c70d7" +SCRIPT_REPO="https://gitlab.freedesktop.org/xorg/lib/libxv.git" +SCRIPT_COMMIT="b022c9cf7004fe6f794c4c00dd519a2e4c74eca0" ffbuild_enabled() { [[ $TARGET != linux* ]] && return -1 @@ -10,19 +10,24 @@ ffbuild_enabled() { } ffbuild_dockerbuild() { - git-mini-clone "$LIBXV_REPO" "$LIBXV_COMMIT" libxv - cd libxv + cd "$FFBUILD_DLDIR/$SELF" autoreconf -i local myconf=( --prefix="$FFBUILD_PREFIX" - --disable-shared - --enable-static + --enable-shared + --disable-static --with-pic --without-lint ) + if [[ $TARGET == linuxarm64 ]]; then + myconf+=( + --disable-malloc0returnsnull + ) + fi + if [[ $TARGET == linux* ]]; then myconf+=( --host="$FFBUILD_TOOLCHAIN" @@ -32,9 +37,15 @@ ffbuild_dockerbuild() { return -1 fi + export CFLAGS="$RAW_CFLAGS" + export LDFLAFS="$RAW_LDFLAGS" + ./configure "${myconf[@]}" make -j$(nproc) make install + + gen-implib "$FFBUILD_PREFIX"/lib/{libXv.so.1,libXv.a} + rm "$FFBUILD_PREFIX"/lib/libXv{.so*,.la} } ffbuild_configure() { diff --git a/scripts.d/45-x11/99-finalize.sh b/scripts.d/45-x11/99-finalize.sh index 88e31ea..c63652b 100755 --- a/scripts.d/45-x11/99-finalize.sh +++ b/scripts.d/45-x11/99-finalize.sh @@ -1,5 +1,7 @@ #!/bin/bash +SCRIPT_SKIP="1" + ffbuild_enabled() { [[ $TARGET != linux* ]] && return -1 return 0 @@ -10,6 +12,15 @@ ffbuild_dockerlayer() { to_df "COPY --from=${SELFLAYER} \$FFBUILD_PREFIX/share/aclocal/. /usr/share/aclocal" } -ffbuild_dockerbuild() { - true +ffbuild_dockerdl() { + return 0 +} + +ffbuild_dockerbuild() { + rm "$FFBUILD_PREFIX"/lib/lib*.so* || true + rm "$FFBUILD_PREFIX"/lib/*.la || true +} + +ffbuild_libs() { + echo -ldl } diff --git a/scripts.d/50-amf.sh b/scripts.d/50-amf.sh index 30c5db3..73ed13c 100755 --- a/scripts.d/50-amf.sh +++ b/scripts.d/50-amf.sh @@ -1,15 +1,14 @@ #!/bin/bash -AMF_REPO="https://github.com/GPUOpen-LibrariesAndSDKs/AMF.git" -AMF_COMMIT="5359f7dba51107da19b7650e5d8a40a0f04ea6d9" +SCRIPT_REPO="https://github.com/GPUOpen-LibrariesAndSDKs/AMF.git" +SCRIPT_COMMIT="68f2396f1a55a5b12767f5433411bb4093ea65ed" ffbuild_enabled() { return 0 } ffbuild_dockerbuild() { - git-mini-clone "$AMF_REPO" "$AMF_COMMIT" amf - cd amf + cd "$FFBUILD_DLDIR/$SELF" mkdir -p "$FFBUILD_PREFIX"/include mv amf/public/include "$FFBUILD_PREFIX"/include/AMF diff --git a/scripts.d/50-aom.sh b/scripts.d/50-aom.sh index 87c5db4..89b526e 100755 --- a/scripts.d/50-aom.sh +++ b/scripts.d/50-aom.sh @@ -1,19 +1,18 @@ #!/bin/bash -AOM_REPO="https://aomedia.googlesource.com/aom" -AOM_COMMIT="feb75d0bb2df222b9e23b8012e3f193aff7e1377" +SCRIPT_REPO="https://aomedia.googlesource.com/aom" +SCRIPT_COMMIT="83ccc009eade321c8723ae0da8655fc68ce6a128" ffbuild_enabled() { return 0 } ffbuild_dockerstage() { - to_df "RUN --mount=src=${SELF},dst=/stage.sh --mount=src=patches/aom,dst=/patches run_stage /stage.sh" + to_df "RUN --mount=src=${SELF},dst=/stage.sh --mount=src=/,dst=\$FFBUILD_DLDIR,from=${DL_IMAGE},rw --mount=src=patches/aom,dst=/patches run_stage /stage.sh" } ffbuild_dockerbuild() { - git-mini-clone "$AOM_REPO" "$AOM_COMMIT" aom - cd aom + cd "$FFBUILD_DLDIR/$SELF" for patch in /patches/*.patch; do echo "Applying $patch" diff --git a/scripts.d/50-mfx.sh b/scripts.d/50-aribb24/25-libpng.sh similarity index 64% rename from scripts.d/50-mfx.sh rename to scripts.d/50-aribb24/25-libpng.sh index 04cdf4d..e7aa9ff 100755 --- a/scripts.d/50-mfx.sh +++ b/scripts.d/50-aribb24/25-libpng.sh @@ -1,15 +1,14 @@ #!/bin/bash -MFX_REPO="https://github.com/lu-zero/mfx_dispatch.git" -MFX_COMMIT="7e4d221c36c630c1250b23a5dfa15657bc04c10c" +SCRIPT_REPO="https://github.com/glennrp/libpng.git" +SCRIPT_COMMIT="82414985c1085737bccd3eedb0aaa997451f5d32" ffbuild_enabled() { return 0 } ffbuild_dockerbuild() { - git-mini-clone "$MFX_REPO" "$MFX_COMMIT" mfx - cd mfx + cd "$FFBUILD_DLDIR/$SELF" autoreconf -i @@ -29,15 +28,9 @@ ffbuild_dockerbuild() { return -1 fi + export CPPFLAGS="$CPPFLAGS -I$FFBUILD_PREFIX/include" + ./configure "${myconf[@]}" make -j$(nproc) make install } - -ffbuild_configure() { - echo --enable-libmfx -} - -ffbuild_unconfigure() { - echo --disable-libmfx -} diff --git a/scripts.d/50-aribb24/50-libaribb24.sh b/scripts.d/50-aribb24/50-libaribb24.sh new file mode 100755 index 0000000..c032178 --- /dev/null +++ b/scripts.d/50-aribb24/50-libaribb24.sh @@ -0,0 +1,55 @@ +#!/bin/bash + +SCRIPT_REPO="https://github.com/nkoriyama/aribb24.git" +SCRIPT_COMMIT="5e9be272f96e00f15a2f3c5f8ba7e124862aec38" + +ffbuild_enabled() { + return 0 +} + +ffbuild_dockerstage() { + to_df "RUN --mount=src=${SELF},dst=/stage.sh --mount=src=/,dst=\$FFBUILD_DLDIR,from=${DL_IMAGE},rw --mount=src=patches/aribb24,dst=/patches run_stage /stage.sh" +} + +ffbuild_dockerbuild() { + cd "$FFBUILD_DLDIR/$SELF" + + for patch in /patches/*.patch; do + echo "Applying $patch" + git am < "$patch" + done + + # Library switched to LGPL on master, but didn't bump version since. + # FFmpeg checks for >1.0.3 to allow LGPL builds. + sed -i 's/1.0.3/1.0.4/' configure.ac + + autoreconf -i + + local myconf=( + --prefix="$FFBUILD_PREFIX" + --disable-shared + --enable-static + --with-pic + ) + + if [[ $TARGET == win* || $TARGET == linux* ]]; then + myconf+=( + --host="$FFBUILD_TOOLCHAIN" + ) + else + echo "Unknown target" + return -1 + fi + + ./configure "${myconf[@]}" + make -j$(nproc) + make install +} + +ffbuild_configure() { + echo --enable-libaribb24 +} + +ffbuild_unconfigure() { + echo --disable-libaribb24 +} diff --git a/scripts.d/50-avisynth.sh b/scripts.d/50-avisynth.sh index ed8418d..4978378 100755 --- a/scripts.d/50-avisynth.sh +++ b/scripts.d/50-avisynth.sh @@ -1,7 +1,7 @@ #!/bin/bash -AVISYNTH_REPO="https://github.com/AviSynth/AviSynthPlus.git" -AVISYNTH_COMMIT="babdbc0d7b39d775e5a847c74c345dfae9844338" +SCRIPT_REPO="https://github.com/AviSynth/AviSynthPlus.git" +SCRIPT_COMMIT="fc5b9bc41fd47001b7da39ea777d29c0ede2a2a7" ffbuild_enabled() { [[ $VARIANT == lgpl* ]] && return -1 @@ -9,14 +9,16 @@ ffbuild_enabled() { } ffbuild_dockerbuild() { - git-mini-clone "$AVISYNTH_REPO" "$AVISYNTH_COMMIT" avisynth - cd avisynth + cd "$FFBUILD_DLDIR/$SELF" + + # their version check is insistant on a tag to exist, so make one + git tag -a ffbuild -m "FFbuild Version" mkdir build && cd build cmake -DCMAKE_TOOLCHAIN_FILE="$FFBUILD_CMAKE_TOOLCHAIN" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="$FFBUILD_PREFIX" -DHEADERS_ONLY=ON .. make -j$(nproc) - make install + make VersionGen install } ffbuild_configure() { diff --git a/scripts.d/50-chromaprint.sh b/scripts.d/50-chromaprint.sh new file mode 100755 index 0000000..cdec6d4 --- /dev/null +++ b/scripts.d/50-chromaprint.sh @@ -0,0 +1,33 @@ +#!/bin/bash + +SCRIPT_REPO="https://github.com/acoustid/chromaprint.git" +SCRIPT_COMMIT="aa67c95b9e486884a6d3ee8b0c91207d8c2b0551" + +ffbuild_enabled() { + # pkg-config check is currently only available in master + [[ $ADDINS_STR == *4.4* ]] && return -1 + [[ $ADDINS_STR == *5.0* ]] && return -1 + [[ $ADDINS_STR == *5.1* ]] && return -1 + return 0 +} + +ffbuild_dockerbuild() { + cd "$FFBUILD_DLDIR/$SELF" + + mkdir build && cd build + + cmake -DCMAKE_TOOLCHAIN_FILE="$FFBUILD_CMAKE_TOOLCHAIN" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="$FFBUILD_PREFIX" -DBUILD_SHARED_LIBS=OFF -DBUILD_TOOLS=OFF -DBUILD_TESTS=OFF -DFFT_LIB=fftw3 .. + make -j$(nproc) + make install + + echo "Libs.private: -lfftw3 -lstdc++" >> "$FFBUILD_PREFIX"/lib/pkgconfig/libchromaprint.pc + echo "Cflags.private: -DCHROMAPRINT_NODLL" >> "$FFBUILD_PREFIX"/lib/pkgconfig/libchromaprint.pc +} + +ffbuild_configure() { + echo --enable-chromaprint +} + +ffbuild_unconfigure() { + echo --disable-chromaprint +} diff --git a/scripts.d/50-dav1d.sh b/scripts.d/50-dav1d.sh index 58c9ada..ca12597 100755 --- a/scripts.d/50-dav1d.sh +++ b/scripts.d/50-dav1d.sh @@ -1,15 +1,14 @@ #!/bin/bash -DAV1D_REPO="https://code.videolan.org/videolan/dav1d.git" -DAV1D_COMMIT="a55ff11da2430ae7057862f6565ce3b5a222afdc" +SCRIPT_REPO="https://code.videolan.org/videolan/dav1d.git" +SCRIPT_COMMIT="a7e12b628472516718d37108fde7d438b14a0372" ffbuild_enabled() { return 0 } ffbuild_dockerbuild() { - git-mini-clone "$DAV1D_REPO" "$DAV1D_COMMIT" dav1d - cd dav1d + cd "$FFBUILD_DLDIR/$SELF" mkdir build && cd build diff --git a/scripts.d/50-davs2.sh b/scripts.d/50-davs2.sh index 64b84a3..1e4cd15 100755 --- a/scripts.d/50-davs2.sh +++ b/scripts.d/50-davs2.sh @@ -1,18 +1,22 @@ #!/bin/bash -DAVS2_REPO="https://github.com/pkuvcl/davs2.git" -DAVS2_COMMIT="b06d7585620f4e90a6d19a2926bb4e59793b8942" +SCRIPT_REPO="https://github.com/pkuvcl/davs2.git" +SCRIPT_COMMIT="b41cf117452e2d73d827f02d3e30aa20f1c721ac" ffbuild_enabled() { [[ $VARIANT == lgpl* ]] && return -1 [[ $TARGET == win32 ]] && return -1 + # davs2 aarch64 support is broken + [[ $TARGET == linuxarm64 ]] && return -1 return 0 } +ffbuild_dockerdl() { + to_df "RUN git clone \"$SCRIPT_REPO\" \"$SELF\" && git -C \"$SELF\" checkout \"$SCRIPT_COMMIT\"" +} + ffbuild_dockerbuild() { - git clone "$DAVS2_REPO" davs2 - cd davs2 - git checkout "$DAVS2_COMMIT" + cd "$FFBUILD_DLDIR/$SELF" cd build/linux local myconf=( @@ -31,6 +35,10 @@ ffbuild_dockerbuild() { return -1 fi + # Work around configure endian check failing on modern gcc/binutils. + # Assumes all supported archs are little endian. + sed -i -e 's/EGIB/bss/g' -e 's/naidnePF/bss/g' configure + ./configure "${myconf[@]}" make -j$(nproc) make install diff --git a/scripts.d/50-fdk-aac.sh b/scripts.d/50-fdk-aac.sh index 4a0f48a..e5f69b6 100755 --- a/scripts.d/50-fdk-aac.sh +++ b/scripts.d/50-fdk-aac.sh @@ -1,7 +1,7 @@ #!/bin/bash -FDK_REPO="https://github.com/mstorsjo/fdk-aac.git" -FDK_COMMIT="573e93e4d0d08127dd3b2297a0ce52221527d90a" +SCRIPT_REPO="https://github.com/mstorsjo/fdk-aac.git" +SCRIPT_COMMIT="3f864cce9736cc8e9312835465fae18428d76295" ffbuild_enabled() { [[ $VARIANT == nonfree* ]] || return -1 @@ -9,8 +9,7 @@ ffbuild_enabled() { } ffbuild_dockerbuild() { - git-mini-clone "$FDK_REPO" "$FDK_COMMIT" fdk - cd fdk + cd "$FFBUILD_DLDIR/$SELF" ./autogen.sh diff --git a/scripts.d/50-ffnvcodec.sh b/scripts.d/50-ffnvcodec.sh index 0591f87..63862b5 100755 --- a/scripts.d/50-ffnvcodec.sh +++ b/scripts.d/50-ffnvcodec.sh @@ -1,15 +1,27 @@ #!/bin/bash -FFNVCODEC_REPO="https://github.com/FFmpeg/nv-codec-headers.git" -FFNVCODEC_COMMIT="b641a195edbe3ac9788e681e22c2e2fad8aacddb" +SCRIPT_REPO="https://github.com/FFmpeg/nv-codec-headers.git" +SCRIPT_COMMIT="855f8263d97bbdcaeabaaaa2997e1ccad7c52dc3" + +SCRIPT_REPO2="https://github.com/FFmpeg/nv-codec-headers.git" +SCRIPT_COMMIT2="dc3e4484dc83485734e503991fe5ed3bdf256fba" +SCRIPT_BRANCH2="sdk/11.1" ffbuild_enabled() { return 0 } +ffbuild_dockerdl() { + default_dl ffnvcodec + to_df "RUN git-mini-clone \"$SCRIPT_REPO2\" \"$SCRIPT_COMMIT2\" ffnvcodec2" +} + ffbuild_dockerbuild() { - git-mini-clone "$FFNVCODEC_REPO" "$FFNVCODEC_COMMIT" ffnvcodec - cd ffnvcodec + if [[ $ADDINS_STR == *4.4* || $ADDINS_STR == *5.0* || $ADDINS_STR == *5.1* ]]; then + cd "$FFBUILD_DLDIR"/ffnvcodec2 + else + cd "$FFBUILD_DLDIR"/ffnvcodec + fi make PREFIX="$FFBUILD_PREFIX" install } diff --git a/scripts.d/50-frei0r.sh b/scripts.d/50-frei0r.sh index 832be9e..ae465f4 100755 --- a/scripts.d/50-frei0r.sh +++ b/scripts.d/50-frei0r.sh @@ -1,7 +1,7 @@ #!/bin/bash -FREI0R_REPO="https://github.com/dyne/frei0r.git" -FREI0R_COMMIT="700564265acdb94497c22d5c703dc38ed9d1b649" +SCRIPT_REPO="https://github.com/dyne/frei0r.git" +SCRIPT_COMMIT="c3f987c4cc8c1a7f6928e574f4cb272a7770ca6f" ffbuild_enabled() { [[ $VARIANT == lgpl* ]] && return -1 @@ -10,32 +10,19 @@ ffbuild_enabled() { } ffbuild_dockerbuild() { - git-mini-clone "$FREI0R_REPO" "$FREI0R_COMMIT" frei0r - cd frei0r + cd "$FFBUILD_DLDIR/$SELF" - ./autogen.sh + mkdir build && cd build - local myconf=( - --prefix="$FFBUILD_PREFIX" - --disable-shared - --enable-static - --with-pic - --enable-cpuflags - ) + cmake -DCMAKE_TOOLCHAIN_FILE="$FFBUILD_CMAKE_TOOLCHAIN" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="$FFBUILD_PREFIX" .. - if [[ $TARGET == win* || $TARGET == linux* ]]; then - myconf+=( - --host="$FFBUILD_TOOLCHAIN" - ) - else - echo "Unknown target" - return -1 - fi + mkdir -p "$FFBUILD_PREFIX"/lib/pkgconfig + cp frei0r.pc "$FFBUILD_PREFIX"/lib/pkgconfig - ./configure "${myconf[@]}" - make -C include -j$(nproc) - make -C include install - make install-pkgconfigDATA + mkdir -p "$FFBUILD_PREFIX"/include + cp ../include/frei0r.h "$FFBUILD_PREFIX"/include + + cat frei0r.pc } ffbuild_configure() { diff --git a/scripts.d/50-gme.sh b/scripts.d/50-gme.sh index 5a7a0c7..e580cd4 100755 --- a/scripts.d/50-gme.sh +++ b/scripts.d/50-gme.sh @@ -1,16 +1,18 @@ #!/bin/bash -GME_REPO="https://bitbucket.org/mpyne/game-music-emu.git" -GME_COMMIT="b3d158a30492181fd7c38ef795c8d4dcfd77eaa9" +SCRIPT_REPO="https://bitbucket.org/mpyne/game-music-emu.git" +SCRIPT_COMMIT="6cd4bdb69be304f58c9253fb08b8362f541b3b4b" ffbuild_enabled() { return 0 } +ffbuild_dockerdl() { + to_df "RUN git clone \"$SCRIPT_REPO\" \"$SELF\" && git -C \"$SELF\" checkout \"$SCRIPT_COMMIT\"" +} + ffbuild_dockerbuild() { - git clone "$GME_REPO" gme - cd gme - git checkout "$GME_COMMIT" + cd "$FFBUILD_DLDIR/$SELF" mkdir build && cd build diff --git a/scripts.d/50-kvazaar.sh b/scripts.d/50-kvazaar.sh new file mode 100755 index 0000000..2ee1b5d --- /dev/null +++ b/scripts.d/50-kvazaar.sh @@ -0,0 +1,44 @@ +#!/bin/bash + +SCRIPT_REPO="https://github.com/ultravideo/kvazaar.git" +SCRIPT_COMMIT="aaae5b0f4926065136f287876c6bc41631bae692" + +ffbuild_enabled() { + return 0 +} + +ffbuild_dockerbuild() { + cd "$FFBUILD_DLDIR/$SELF" + + ./autogen.sh + + local myconf=( + --prefix="$FFBUILD_PREFIX" + --disable-shared + --enable-static + --with-pic + ) + + if [[ $TARGET == win* || $TARGET == linux* ]]; then + myconf+=( + --host="$FFBUILD_TOOLCHAIN" + ) + else + echo "Unknown target" + return -1 + fi + + ./configure "${myconf[@]}" + make -j$(nproc) + make install + + echo "Cflags.private: -DKVZ_STATIC_LIB" >> "$FFBUILD_PREFIX"/lib/pkgconfig/kvazaar.pc +} + +ffbuild_configure() { + echo --enable-libkvazaar +} + +ffbuild_unconfigure() { + echo --disable-libkvazaar +} diff --git a/scripts.d/50-libass.sh b/scripts.d/50-libass.sh index 8907444..e418f67 100755 --- a/scripts.d/50-libass.sh +++ b/scripts.d/50-libass.sh @@ -1,15 +1,14 @@ #!/bin/bash -ASS_REPO="https://github.com/libass/libass.git" -ASS_COMMIT="ac2ddef8841aa2ff37ca9b83f19f15092d0cacc6" +SCRIPT_REPO="https://github.com/libass/libass.git" +SCRIPT_COMMIT="1a599b1db748dfc07df98cd37d8603edb87da2fd" ffbuild_enabled() { return 0 } ffbuild_dockerbuild() { - git-mini-clone "$ASS_REPO" "$ASS_COMMIT" ass - cd ass + cd "$FFBUILD_DLDIR/$SELF" ./autogen.sh @@ -29,6 +28,8 @@ ffbuild_dockerbuild() { return -1 fi + export CFLAGS="$CFLAGS -Dread_file=libass_internal_read_file" + ./configure "${myconf[@]}" make -j$(nproc) make install diff --git a/scripts.d/50-libbluray.sh b/scripts.d/50-libbluray.sh index eff4446..8d23987 100755 --- a/scripts.d/50-libbluray.sh +++ b/scripts.d/50-libbluray.sh @@ -1,15 +1,14 @@ #!/bin/bash -LIBBLURAY_REPO="https://code.videolan.org/videolan/libbluray.git" -LIBBLURAY_COMMIT="060d8f055f2ed1b4752340be5d16403bad5ccdc0" +SCRIPT_REPO="https://code.videolan.org/videolan/libbluray.git" +SCRIPT_COMMIT="bb5bc108ec695889855f06df338958004ff289ef" ffbuild_enabled() { return 0 } ffbuild_dockerbuild() { - git-mini-clone "$LIBBLURAY_REPO" "$LIBBLURAY_COMMIT" libbluray - cd libbluray + cd "$FFBUILD_DLDIR/$SELF" ./bootstrap diff --git a/scripts.d/50-libjxl/45-brotli.sh b/scripts.d/50-libjxl/45-brotli.sh new file mode 100755 index 0000000..717e814 --- /dev/null +++ b/scripts.d/50-libjxl/45-brotli.sh @@ -0,0 +1,19 @@ +#!/bin/bash + +SCRIPT_REPO="https://github.com/google/brotli.git" +SCRIPT_COMMIT="413b098564a90a2e6cae192d30642d33a9197a39" + +ffbuild_enabled() { + return 0 +} + +ffbuild_dockerbuild() { + cd "$FFBUILD_DLDIR/$SELF" + + mkdir build && cd build + + cmake -G Ninja -DCMAKE_TOOLCHAIN_FILE="$FFBUILD_CMAKE_TOOLCHAIN" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="$FFBUILD_PREFIX" \ + -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DBUILD_SHARED_LIBS=OFF .. + ninja -j$(nproc) + ninja install +} diff --git a/scripts.d/50-libjxl/50-libjxl.sh b/scripts.d/50-libjxl/50-libjxl.sh new file mode 100755 index 0000000..adbcf6a --- /dev/null +++ b/scripts.d/50-libjxl/50-libjxl.sh @@ -0,0 +1,60 @@ +#!/bin/bash + +SCRIPT_REPO="https://github.com/libjxl/libjxl.git" +SCRIPT_COMMIT="c3a4f9ca89ae59c6265a2f1bf2a6d2a87a71fc16" + +ffbuild_enabled() { + [[ $ADDINS_STR == *4.4* ]] && return -1 + [[ $ADDINS_STR == *5.0* ]] && return -1 + [[ $ADDINS_STR == *5.1* ]] && return -1 + [[ $ADDINS_STR == *6.0* ]] && return -1 + return 0 +} + +ffbuild_dockerdl() { + default_dl "$SELF" + to_df "RUN git -C \"$SELF\" submodule update --init --recursive --depth 1 --recommend-shallow third_party/highway third_party/skcms" +} + +ffbuild_dockerbuild() { + cd "$FFBUILD_DLDIR/$SELF" + + mkdir build && cd build + + if [[ $TARGET == linux* ]]; then + # our glibc is too old(<2.25), and their detection fails for some reason + export CXXFLAGS="$CXXFLAGS -DVQSORT_GETRANDOM=0 -DVQSORT_SECURE_SEED=0" + elif [[ $TARGET == win* ]]; then + # Fix AVX2 related crash due to unaligned stack memory + export CXXFLAGS="$CXXFLAGS -Wa,-muse-unaligned-vector-move" + export CFLAGS="$CFLAGS -Wa,-muse-unaligned-vector-move" + fi + + cmake -G Ninja -DCMAKE_TOOLCHAIN_FILE="$FFBUILD_CMAKE_TOOLCHAIN" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="$FFBUILD_PREFIX" -DCMAKE_POSITION_INDEPENDENT_CODE=ON \ + -DBUILD_SHARED_LIBS=OFF -DJPEGXL_STATIC=OFF -DJPEGXL_ENABLE_TOOLS=OFF -DJPEGXL_ENABLE_VIEWERS=OFF -DJPEGXL_EMSCRIPTEN=OFF -DJPEGXL_ENABLE_DOXYGEN=OFF \ + -DJPEGXL_ENABLE_JPEGLI=OFF -DBUILD_TESTING=OFF -DJPEGXL_ENABLE_EXAMPLES=OFF -DJPEGXL_ENABLE_MANPAGES=OFF -DJPEGXL_ENABLE_JNI=OFF -DJPEGXL_ENABLE_PLUGINS=OFF \ + -DJPEGXL_ENABLE_DEVTOOLS=OFF -DJPEGXL_ENABLE_BENCHMARK=OFF -DJPEGXL_BUNDLE_LIBPNG=OFF -DJPEGXL_ENABLE_SJPEG=OFF -DJPEGXL_FORCE_SYSTEM_BROTLI=ON .. + ninja -j$(nproc) + ninja install + + echo "Cflags.private: -DJXL_STATIC_DEFINE=1" >> "${FFBUILD_PREFIX}"/lib/pkgconfig/libjxl.pc + echo "Libs.private: -lstdc++" >> "${FFBUILD_PREFIX}"/lib/pkgconfig/libjxl.pc + + echo "Cflags.private: -DJXL_STATIC_DEFINE=1" >> "${FFBUILD_PREFIX}"/lib/pkgconfig/libjxl_threads.pc + echo "Libs.private: -lstdc++" >> "${FFBUILD_PREFIX}"/lib/pkgconfig/libjxl_threads.pc + + if [[ $TARGET == win* ]]; then + echo "Libs.private: -ladvapi32" >> "${FFBUILD_PREFIX}"/lib/pkgconfig/libjxl.pc + echo "Libs.private: -ladvapi32" >> "${FFBUILD_PREFIX}"/lib/pkgconfig/libjxl_threads.pc + fi +} + +ffbuild_configure() { + echo --enable-libjxl +} + +ffbuild_unconfigure() { + [[ $ADDINS_STR == *4.4* ]] && return 0 + [[ $ADDINS_STR == *5.0* ]] && return 0 + echo --disable-libjxl +} diff --git a/scripts.d/50-libmp3lame.sh b/scripts.d/50-libmp3lame.sh index eb6a4b7..352e3f2 100755 --- a/scripts.d/50-libmp3lame.sh +++ b/scripts.d/50-libmp3lame.sh @@ -1,18 +1,20 @@ #!/bin/bash -LAME_SRC="https://sourceforge.net/projects/lame/files/lame/3.100/lame-3.100.tar.gz/download" +SCRIPT_REPO="https://svn.code.sf.net/p/lame/svn/trunk/lame" +SCRIPT_REV="6507" ffbuild_enabled() { return 0 } +ffbuild_dockerdl() { + to_df "RUN retry-tool sh -c \"rm -rf lame && svn checkout '${SCRIPT_REPO}@${SCRIPT_REV}' lame\"" +} + ffbuild_dockerbuild() { - mkdir lame - cd lame - wget -O lame.tar.gz "$LAME_SRC" - tar xaf lame.tar.gz - rm lame.tar.gz - cd lame* + cd "$FFBUILD_DLDIR"/lame + + autoreconf -i local myconf=( --prefix="$FFBUILD_PREFIX" @@ -22,6 +24,7 @@ ffbuild_dockerbuild() { --disable-gtktest --disable-cpml --disable-frontend + --disable-decoder ) if [[ $TARGET == win* || $TARGET == linux* ]]; then @@ -33,6 +36,8 @@ ffbuild_dockerbuild() { return -1 fi + export CFLAGS="$CFLAGS -DNDEBUG" + ./configure "${myconf[@]}" make -j$(nproc) make install diff --git a/scripts.d/50-libopus.sh b/scripts.d/50-libopus.sh index a046a30..e69f098 100755 --- a/scripts.d/50-libopus.sh +++ b/scripts.d/50-libopus.sh @@ -1,15 +1,14 @@ #!/bin/bash -OPUS_REPO="https://github.com/xiph/opus.git" -OPUS_COMMIT="a8e6a77c5fe0c37aa6788f939f24f8cd22ae2652" +SCRIPT_REPO="https://github.com/xiph/opus.git" +SCRIPT_COMMIT="9fc8fc4cf432640f284113ba502ee027268b0d9f" ffbuild_enabled() { return 0 } ffbuild_dockerbuild() { - git-mini-clone "$OPUS_REPO" "$OPUS_COMMIT" opus - cd opus + cd "$FFBUILD_DLDIR/$SELF" ./autogen.sh diff --git a/scripts.d/50-librist/40-mbedtls.sh b/scripts.d/50-librist/40-mbedtls.sh index 5ee6bed..404abda 100755 --- a/scripts.d/50-librist/40-mbedtls.sh +++ b/scripts.d/50-librist/40-mbedtls.sh @@ -1,28 +1,22 @@ #!/bin/bash -MBEDTLS_REPO="https://github.com/ARMmbed/mbedtls.git" -# HEAD of development_2.x -MBEDTLS_COMMIT="1d7f7a7c6e625e48a4996bc751c39fb16a8be868" +SCRIPT_REPO="https://github.com/ARMmbed/mbedtls.git" +SCRIPT_COMMIT="v3.4.0" +SCRIPT_TAGFILTER="v3.*" ffbuild_enabled() { return 0 } ffbuild_dockerbuild() { - git-mini-clone "$MBEDTLS_REPO" "$MBEDTLS_COMMIT" mbedtls - cd mbedtls + cd "$FFBUILD_DLDIR/$SELF" mkdir build && cd build cmake -DCMAKE_TOOLCHAIN_FILE="$FFBUILD_CMAKE_TOOLCHAIN" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="$FFBUILD_PREFIX" \ - -DENABLE_PROGRAMS=OFF -DENABLE_TESTING=OFF \ + -DENABLE_PROGRAMS=OFF -DENABLE_TESTING=OFF -DGEN_FILES=ON \ -DUSE_STATIC_MBEDTLS_LIBRARY=ON -DUSE_SHARED_MBEDTLS_LIBRARY=OFF -DINSTALL_MBEDTLS_HEADERS=ON \ .. make -j$(nproc) make install } - -ffbuild_configure() { - [[ $TARGET == win* ]] && return -1 - echo --enable-mbedtls -} diff --git a/scripts.d/50-librist/50-librist.sh b/scripts.d/50-librist/50-librist.sh index eb3bc8b..0b648ba 100755 --- a/scripts.d/50-librist/50-librist.sh +++ b/scripts.d/50-librist/50-librist.sh @@ -1,15 +1,14 @@ #!/bin/bash -LIBRIST_REPO="https://code.videolan.org/rist/librist.git" -LIBRIST_COMMIT="0b1aaf995c4cad83d562ec7887180cc6ee132c84" +SCRIPT_REPO="https://code.videolan.org/rist/librist.git" +SCRIPT_COMMIT="04ba78abb6f8f673da0cc75056df876178e504fb" ffbuild_enabled() { return 0 } ffbuild_dockerbuild() { - git-mini-clone "$LIBRIST_REPO" "$LIBRIST_COMMIT" librist - cd librist + cd "$FFBUILD_DLDIR/$SELF" mkdir build && cd build diff --git a/scripts.d/50-libssh.sh b/scripts.d/50-libssh.sh new file mode 100755 index 0000000..9f4b611 --- /dev/null +++ b/scripts.d/50-libssh.sh @@ -0,0 +1,35 @@ +#!/bin/bash + +SCRIPT_REPO="https://git.libssh.org/projects/libssh.git" +SCRIPT_COMMIT="a7f85944c8c04cd1aba1a122b766f5d04db51050" + +ffbuild_enabled() { + return 0 +} + +ffbuild_dockerbuild() { + cd "$FFBUILD_DLDIR/$SELF" + + mkdir build && cd build + + cmake -GNinja -DCMAKE_TOOLCHAIN_FILE="$FFBUILD_CMAKE_TOOLCHAIN" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="$FFBUILD_PREFIX" \ + -DBUILD_SHARED_LIBS=OFF \ + -DWITH_EXAMPLES=OFF -DWITH_SERVER=OFF \ + -DWITH_SFTP=ON -DWITH_ZLIB=ON .. + + ninja -j$(nproc) + ninja install + + { + echo "Requires.private: libssl libcrypto zlib" + echo "Cflags.private: -DLIBSSH_STATIC" + } >> "$FFBUILD_PREFIX"/lib/pkgconfig/libssh.pc +} + +ffbuild_configure() { + echo --enable-libssh +} + +ffbuild_unconfigure() { + echo --disable-libssh +} diff --git a/scripts.d/50-libtheora.sh b/scripts.d/50-libtheora.sh index d922288..79b7603 100755 --- a/scripts.d/50-libtheora.sh +++ b/scripts.d/50-libtheora.sh @@ -1,15 +1,14 @@ #!/bin/bash -THEORA_REPO="https://github.com/xiph/theora.git" -THEORA_COMMIT="7180717276af1ebc7da15c83162d6c5d6203aabf" +SCRIPT_REPO="https://github.com/xiph/theora.git" +SCRIPT_COMMIT="7180717276af1ebc7da15c83162d6c5d6203aabf" ffbuild_enabled() { return 0 } ffbuild_dockerbuild() { - git-mini-clone "$THEORA_REPO" "$THEORA_COMMIT" theora - cd theora + cd "$FFBUILD_DLDIR/$SELF" ./autogen.sh diff --git a/scripts.d/50-libvpx.sh b/scripts.d/50-libvpx.sh index 3aeef12..f16cc1e 100755 --- a/scripts.d/50-libvpx.sh +++ b/scripts.d/50-libvpx.sh @@ -1,15 +1,14 @@ #!/bin/bash -LIBVPX_REPO="https://chromium.googlesource.com/webm/libvpx" -LIBVPX_COMMIT="c56ab7d0c6f3fb215d571db3dacc0cc908c1b53c" +SCRIPT_REPO="https://chromium.googlesource.com/webm/libvpx" +SCRIPT_COMMIT="b2c2955c8200ff434f178009df41a1e1e1623156" ffbuild_enabled() { return 0 } ffbuild_dockerbuild() { - git-mini-clone "$LIBVPX_REPO" "$LIBVPX_COMMIT" libvpx - cd libvpx + cd "$FFBUILD_DLDIR/$SELF" local myconf=( --disable-shared @@ -18,6 +17,7 @@ ffbuild_dockerbuild() { --disable-examples --disable-tools --disable-docs + --disable-unit-tests --enable-vp9-highbitdepth --prefix="$FFBUILD_PREFIX" ) @@ -32,11 +32,16 @@ ffbuild_dockerbuild() { --target=x86-win32-gcc ) export CROSS="$FFBUILD_CROSS_PREFIX" - elif [[ $TARGET == linux* ]]; then + elif [[ $TARGET == linux64 ]]; then myconf+=( --target=x86_64-linux-gcc ) export CROSS="$FFBUILD_CROSS_PREFIX" + elif [[ $TARGET == linuxarm64 ]]; then + myconf+=( + --target=arm64-linux-gcc + ) + export CROSS="$FFBUILD_CROSS_PREFIX" else echo "Unknown target" return -1 @@ -45,6 +50,9 @@ ffbuild_dockerbuild() { ./configure "${myconf[@]}" make -j$(nproc) make install + + # Work around strip breaking LTO symbol index + "$RANLIB" "$FFBUILD_PREFIX"/lib/libvpx.a } ffbuild_configure() { diff --git a/scripts.d/50-libwebp.sh b/scripts.d/50-libwebp.sh index f9ad283..2579d7e 100755 --- a/scripts.d/50-libwebp.sh +++ b/scripts.d/50-libwebp.sh @@ -1,15 +1,14 @@ #!/bin/bash -WEBP_REPO="https://chromium.googlesource.com/webm/libwebp" -WEBP_COMMIT="35b7436a216857eabf4773681fecd8fd52bcc3e7" +SCRIPT_REPO="https://chromium.googlesource.com/webm/libwebp" +SCRIPT_COMMIT="eac3bd5c53da8bec55a635c6f4234c9cd5753820" ffbuild_enabled() { return 0 } ffbuild_dockerbuild() { - git-mini-clone "$WEBP_REPO" "$WEBP_COMMIT" webp - cd webp + cd "$FFBUILD_DLDIR/$SELF" ./autogen.sh diff --git a/scripts.d/50-lilv/96-lv2.sh b/scripts.d/50-lilv/96-lv2.sh index d8d43d7..7a14ca7 100755 --- a/scripts.d/50-lilv/96-lv2.sh +++ b/scripts.d/50-lilv/96-lv2.sh @@ -1,24 +1,37 @@ #!/bin/bash -LV2_REPO="https://github.com/lv2/lv2.git" -LV2_COMMIT="6cefc7df1a6158c79d23029df183c09b10b88cad" +SCRIPT_REPO="https://github.com/lv2/lv2.git" +SCRIPT_COMMIT="bb6a2103c7adf3c1339728915d7f1497ee98dcbf" ffbuild_enabled() { return 0 } ffbuild_dockerbuild() { - git-mini-clone "$LV2_REPO" "$LV2_COMMIT" lv2 - cd lv2 - git submodule update --init --recursive --depth 1 + cd "$FFBUILD_DLDIR/$SELF" - local mywaf=( + mkdir build && cd build + + local myconf=( --prefix="$FFBUILD_PREFIX" - --no-plugins - --no-coverage + --buildtype=release + --default-library=static + -Ddocs=disabled + -Dplugins=disabled + -Dtests=disabled + -Donline_docs=false ) - CC="${FFBUILD_CROSS_PREFIX}gcc" CXX="${FFBUILD_CROSS_PREFIX}g++" ./waf configure "${mywaf[@]}" - ./waf -j$(nproc) - ./waf install + if [[ $TARGET == win* || $TARGET == linux* ]]; then + myconf+=( + --cross-file=/cross.meson + ) + else + echo "Unknown target" + return -1 + fi + + meson "${myconf[@]}" .. + ninja -j"$(nproc)" + ninja install } diff --git a/scripts.d/50-lilv/96-serd.sh b/scripts.d/50-lilv/96-serd.sh index a84d358..3a5cbcb 100755 --- a/scripts.d/50-lilv/96-serd.sh +++ b/scripts.d/50-lilv/96-serd.sh @@ -1,29 +1,36 @@ #!/bin/bash -SERD_REPO="https://github.com/drobilla/serd.git" -SERD_COMMIT="c05fdaa19be53ef618435d3629122a4ebdc7cb63" +SCRIPT_REPO="https://github.com/drobilla/serd.git" +SCRIPT_COMMIT="dbf48d099a78d2075e224549a28e690d56a6d503" ffbuild_enabled() { return 0 } ffbuild_dockerbuild() { - git-mini-clone "$SERD_REPO" "$SERD_COMMIT" serd - cd serd - git submodule update --init --recursive --depth 1 + cd "$FFBUILD_DLDIR/$SELF" - local mywaf=( + mkdir build && cd build + + local myconf=( --prefix="$FFBUILD_PREFIX" - --no-utils - --static - --no-shared - --largefile - --stack-check + --buildtype=release + --default-library=static + -Ddocs=disabled + -Dtools=disabled + -Dtests=disabled ) - CC="${FFBUILD_CROSS_PREFIX}gcc" CXX="${FFBUILD_CROSS_PREFIX}g++" ./waf configure "${mywaf[@]}" - ./waf -j$(nproc) - ./waf install + if [[ $TARGET == win* || $TARGET == linux* ]]; then + myconf+=( + --cross-file=/cross.meson + ) + else + echo "Unknown target" + return -1 + fi - sed -i 's/Cflags:/Cflags: -DSERD_STATIC/' "$FFBUILD_PREFIX"/lib/pkgconfig/serd-0.pc + meson "${myconf[@]}" .. + ninja -j"$(nproc)" + ninja install } diff --git a/scripts.d/50-lilv/96-zix.sh b/scripts.d/50-lilv/96-zix.sh new file mode 100755 index 0000000..534e224 --- /dev/null +++ b/scripts.d/50-lilv/96-zix.sh @@ -0,0 +1,37 @@ +#!/bin/bash + +SCRIPT_REPO="https://github.com/drobilla/zix.git" +SCRIPT_COMMIT="a5c18d52a5351430d370084f25aaf7d166f7afd5" + +ffbuild_enabled() { + return 0 +} + +ffbuild_dockerbuild() { + cd "$FFBUILD_DLDIR/$SELF" + + mkdir build && cd build + + local myconf=( + --prefix="$FFBUILD_PREFIX" + --buildtype=release + --default-library=static + -Ddocs=disabled + -Dbenchmarks=disabled + -Dtests=disabled + -Dtests_cpp=disabled + ) + + if [[ $TARGET == win* || $TARGET == linux* ]]; then + myconf+=( + --cross-file=/cross.meson + ) + else + echo "Unknown target" + return -1 + fi + + meson "${myconf[@]}" .. + ninja -j"$(nproc)" + ninja install +} diff --git a/scripts.d/50-lilv/97-sord.sh b/scripts.d/50-lilv/97-sord.sh index 0930117..cce7dda 100755 --- a/scripts.d/50-lilv/97-sord.sh +++ b/scripts.d/50-lilv/97-sord.sh @@ -1,27 +1,36 @@ #!/bin/bash -SORD_REPO="https://github.com/drobilla/sord.git" -SORD_COMMIT="d2efdb2d026216449599350b55c2c85c0d3efb89" +SCRIPT_REPO="https://github.com/drobilla/sord.git" +SCRIPT_COMMIT="46f4bcbe04330645a11d00e56a7754cc1386bc45" ffbuild_enabled() { return 0 } ffbuild_dockerbuild() { - git-mini-clone "$SORD_REPO" "$SORD_COMMIT" sord - cd sord - git submodule update --init --recursive --depth 1 + cd "$FFBUILD_DLDIR/$SELF" - local mywaf=( + mkdir build && cd build + + local myconf=( --prefix="$FFBUILD_PREFIX" - --no-utils - --static - --no-shared + --buildtype=release + --default-library=static + -Ddocs=disabled + -Dtools=disabled + -Dtests=disabled ) - CC="${FFBUILD_CROSS_PREFIX}gcc" CXX="${FFBUILD_CROSS_PREFIX}g++" ./waf configure "${mywaf[@]}" - ./waf -j$(nproc) - ./waf install + if [[ $TARGET == win* || $TARGET == linux* ]]; then + myconf+=( + --cross-file=/cross.meson + ) + else + echo "Unknown target" + return -1 + fi - sed -i 's/Cflags:/Cflags: -DSORD_STATIC/' "$FFBUILD_PREFIX"/lib/pkgconfig/sord-0.pc + meson "${myconf[@]}" .. + ninja -j"$(nproc)" + ninja install } diff --git a/scripts.d/50-lilv/98-sratom.sh b/scripts.d/50-lilv/98-sratom.sh index b325e2f..d32e200 100755 --- a/scripts.d/50-lilv/98-sratom.sh +++ b/scripts.d/50-lilv/98-sratom.sh @@ -1,26 +1,35 @@ #!/bin/bash -SRATOM_REPO="https://github.com/lv2/sratom.git" -SRATOM_COMMIT="c46452c83d442de137fa6470ba544e3ba142e923" +SCRIPT_REPO="https://github.com/lv2/sratom.git" +SCRIPT_COMMIT="b97b447d77fbf172260b4b40f184959f59c3623e" ffbuild_enabled() { return 0 } ffbuild_dockerbuild() { - git-mini-clone "$SRATOM_REPO" "$SRATOM_COMMIT" sratom - cd sratom - git submodule update --init --recursive --depth 1 + cd "$FFBUILD_DLDIR/$SELF" - local mywaf=( + mkdir build && cd build + + local myconf=( --prefix="$FFBUILD_PREFIX" - --static - --no-shared + --buildtype=release + --default-library=static + -Ddocs=disabled + -Dtests=disabled ) - CC="${FFBUILD_CROSS_PREFIX}gcc" CXX="${FFBUILD_CROSS_PREFIX}g++" ./waf configure "${mywaf[@]}" - ./waf -j$(nproc) - ./waf install + if [[ $TARGET == win* || $TARGET == linux* ]]; then + myconf+=( + --cross-file=/cross.meson + ) + else + echo "Unknown target" + return -1 + fi - sed -i 's/Cflags:/Cflags: -DSRATOM_STATIC/' "$FFBUILD_PREFIX"/lib/pkgconfig/sratom-0.pc + meson "${myconf[@]}" .. + ninja -j"$(nproc)" + ninja install } diff --git a/scripts.d/50-lilv/99-lilv.sh b/scripts.d/50-lilv/99-lilv.sh index 5a15b13..d026da6 100755 --- a/scripts.d/50-lilv/99-lilv.sh +++ b/scripts.d/50-lilv/99-lilv.sh @@ -1,31 +1,39 @@ #!/bin/bash -LILV_REPO="https://github.com/lv2/lilv.git" -LILV_COMMIT="71a2ff5170caaa052814cce19b3de927d10d0e24" +SCRIPT_REPO="https://github.com/lv2/lilv.git" +SCRIPT_COMMIT="54b32c1949d60225602a7161d5d6c4853230307a" ffbuild_enabled() { return 0 } ffbuild_dockerbuild() { - git-mini-clone "$LILV_REPO" "$LILV_COMMIT" lilv - cd lilv - git submodule update --init --recursive --depth 1 + cd "$FFBUILD_DLDIR/$SELF" - local mywaf=( + mkdir build && cd build + + local myconf=( --prefix="$FFBUILD_PREFIX" - --static - --no-shared - --no-bindings - --no-utils - --no-bash-completion + --buildtype=release + --default-library=static + -Ddocs=disabled + -Dtools=disabled + -Dtests=disabled + -Dbindings_py=disabled ) - CC="${FFBUILD_CROSS_PREFIX}gcc" CXX="${FFBUILD_CROSS_PREFIX}g++" ./waf configure "${mywaf[@]}" - ./waf -j$(nproc) - ./waf install + if [[ $TARGET == win* || $TARGET == linux* ]]; then + myconf+=( + --cross-file=/cross.meson + ) + else + echo "Unknown target" + return -1 + fi - sed -i 's/Cflags:/Cflags: -DLILV_STATIC/' "$FFBUILD_PREFIX"/lib/pkgconfig/lilv-0.pc + meson "${myconf[@]}" .. + ninja -j"$(nproc)" + ninja install } ffbuild_configure() { diff --git a/scripts.d/50-onevpl.sh b/scripts.d/50-onevpl.sh new file mode 100755 index 0000000..1e6aee5 --- /dev/null +++ b/scripts.d/50-onevpl.sh @@ -0,0 +1,41 @@ +#!/bin/bash + +SCRIPT_REPO="https://github.com/oneapi-src/oneVPL.git" +SCRIPT_COMMIT="e12ace9761bb52786409e830f619916b86e87fc5" + +ffbuild_enabled() { + [[ $TARGET == *arm64 ]] && return -1 + [[ $ADDINS_STR == *4.4* ]] && return -1 + [[ $ADDINS_STR == *5.0* ]] && return -1 + [[ $ADDINS_STR == *5.1* ]] && return -1 + return 0 +} + +ffbuild_dockerbuild() { + cd "$FFBUILD_DLDIR/$SELF" + + mkdir build && cd build + + cmake -GNinja -DCMAKE_TOOLCHAIN_FILE="$FFBUILD_CMAKE_TOOLCHAIN" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="$FFBUILD_PREFIX" \ + -DCMAKE_INSTALL_BINDIR="$FFBUILD_PREFIX"/bin -DCMAKE_INSTALL_LIBDIR="$FFBUILD_PREFIX"/lib \ + -DBUILD_DISPATCHER=ON -DBUILD_DEV=ON \ + -DBUILD_PREVIEW=OFF -DBUILD_TOOLS=OFF -DBUILD_TOOLS_ONEVPL_EXPERIMENTAL=OFF -DINSTALL_EXAMPLE_CODE=OFF \ + -DBUILD_SHARED_LIBS=OFF -DBUILD_TESTS=OFF .. + + ninja -j$(nproc) + ninja install + + rm -rf "$FFBUILD_PREFIX"/{etc,share} +} + +ffbuild_configure() { + echo --enable-libvpl +} + +ffbuild_unconfigure() { + [[ $ADDINS_STR == *4.4* ]] && return 0 + [[ $ADDINS_STR == *5.0* ]] && return 0 + [[ $ADDINS_STR == *5.1* ]] && return 0 + + echo --disable-libvpl +} diff --git a/scripts.d/50-openal.sh b/scripts.d/50-openal.sh new file mode 100755 index 0000000..7da1fa1 --- /dev/null +++ b/scripts.d/50-openal.sh @@ -0,0 +1,36 @@ +#!/bin/bash + +SCRIPT_REPO="https://github.com/kcat/openal-soft.git" +SCRIPT_COMMIT="05f9ce8b978239cebecef1a60f0d451a118fa3df" + +ffbuild_enabled() { + [[ $ADDINS_STR == *4.4* ]] && return -1 + [[ $ADDINS_STR == *5.0* ]] && return -1 + [[ $ADDINS_STR == *5.1* ]] && return -1 + return 0 +} + +ffbuild_dockerbuild() { + cd "$FFBUILD_DLDIR/$SELF" + + mkdir cm_build && cd cm_build + + cmake -DCMAKE_TOOLCHAIN_FILE="$FFBUILD_CMAKE_TOOLCHAIN" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="$FFBUILD_PREFIX" \ + -DLIBTYPE=STATIC -DALSOFT_UTILS=OFF -DALSOFT_EXAMPLES=OFF .. + make -j$(nproc) + make install + + echo "Libs.private: -lstdc++" >> "$FFBUILD_PREFIX"/lib/pkgconfig/openal.pc + + if [[ $TARGET == win* ]]; then + echo "Libs.private: -lole32" >> "$FFBUILD_PREFIX"/lib/pkgconfig/openal.pc + fi +} + +ffbuild_configure() { + echo --enable-openal +} + +ffbuild_unconfigure() { + echo --disable-openal +} diff --git a/scripts.d/50-opencore-amr.sh b/scripts.d/50-opencore-amr.sh index b55bd22..02309a4 100755 --- a/scripts.d/50-opencore-amr.sh +++ b/scripts.d/50-opencore-amr.sh @@ -1,18 +1,14 @@ #!/bin/bash -OAMR_SRC="https://sourceforge.net/projects/opencore-amr/files/opencore-amr/opencore-amr-0.1.5.tar.gz/download" +SCRIPT_REPO="https://git.code.sf.net/p/opencore-amr/code" +SCRIPT_COMMIT="7dba8c32238418ce0b316a852b2224df586ca896" ffbuild_enabled() { return 0 } ffbuild_dockerbuild() { - mkdir opencore - cd opencore - wget -O opencore.tar.gz "$OAMR_SRC" - tar xaf opencore.tar.gz - rm opencore.tar.gz - cd opencore* + cd "$FFBUILD_DLDIR/$SELF" autoreconf -i diff --git a/scripts.d/50-openh264.sh b/scripts.d/50-openh264.sh index 0aec784..476489c 100755 --- a/scripts.d/50-openh264.sh +++ b/scripts.d/50-openh264.sh @@ -1,18 +1,18 @@ #!/bin/bash -OPENH264_REPO="https://github.com/cisco/openh264.git" -OPENH264_COMMIT="40913c2a3a10fa3b8dc9e7685214ba1bf19fd11b" +SCRIPT_REPO="https://github.com/cisco/openh264.git" +SCRIPT_COMMIT="986606644aca8f795fc04f76dcc758d88378e4a0" ffbuild_enabled() { return 0 } ffbuild_dockerbuild() { - git-mini-clone "$OPENH264_REPO" "$OPENH264_COMMIT" openh264 - cd openh264 + cd "$FFBUILD_DLDIR/$SELF" local myconf=( PREFIX="$FFBUILD_PREFIX" + INCLUDE_PREFIX="$FFBUILD_PREFIX"/include/wels BUILDTYPE=Release DEBUGSYMBOLS=False LIBDIR_NAME=lib @@ -36,6 +36,11 @@ ffbuild_dockerbuild() { OS=linux ARCH=x86_64 ) + elif [[ $TARGET == linuxarm64 ]]; then + myconf+=( + OS=linux + ARCH=aarch64 + ) else echo "Unknown target" return -1 diff --git a/scripts.d/50-openjpeg.sh b/scripts.d/50-openjpeg.sh index e45a69b..1a8fd49 100755 --- a/scripts.d/50-openjpeg.sh +++ b/scripts.d/50-openjpeg.sh @@ -1,15 +1,14 @@ #!/bin/bash -OPENJPEG_REPO="https://github.com/uclouvain/openjpeg.git" -OPENJPEG_COMMIT="90481203a28d4d18052a07711d6d890ed1ab8c8a" +SCRIPT_REPO="https://github.com/uclouvain/openjpeg.git" +SCRIPT_COMMIT="1ee6d115e80036d1d38bad7f95a680bfc612c1bf" ffbuild_enabled() { return 0 } ffbuild_dockerbuild() { - git-mini-clone "$OPENJPEG_REPO" "$OPENJPEG_COMMIT" openjpeg - cd openjpeg + cd "$FFBUILD_DLDIR/$SELF" mkdir build && cd build diff --git a/scripts.d/50-openmpt.sh b/scripts.d/50-openmpt.sh new file mode 100755 index 0000000..b3803f6 --- /dev/null +++ b/scripts.d/50-openmpt.sh @@ -0,0 +1,72 @@ +#!/bin/bash + +SCRIPT_REPO="https://source.openmpt.org/svn/openmpt/trunk/OpenMPT" +SCRIPT_REV="19445" + +ffbuild_enabled() { + return 0 +} + +ffbuild_dockerdl() { + to_df "RUN retry-tool sh -c \"rm -rf openmpt && svn checkout '${SCRIPT_REPO}@${SCRIPT_REV}' openmpt\"" +} + +ffbuild_dockerbuild() { + cd "$FFBUILD_DLDIR"/openmpt + + local myconf=( + PREFIX="$FFBUILD_PREFIX" + CXXSTDLIB_PCLIBSPRIVATE="-lstdc++" + VERBOSE=2 + STATIC_LIB=1 + SHARED_LIB=0 + DYNLINK=0 + EXAMPLES=0 + OPENMPT123=0 + IN_OPENMPT=0 + XMP_OPENMPT=0 + DEBUG=0 + OPTIMIZE=1 + TEST=0 + MODERN=1 + FORCE_DEPS=1 + NO_MINIMP3=0 + NO_ZLIB=0 + NO_OGG=0 + NO_VORBIS=0 + NO_VORBISFILE=0 + NO_MPG123=1 + NO_SDL2=1 + NO_PULSEAUDIO=1 + NO_SNDFILE=1 + NO_PORTAUDIO=1 + NO_PORTAUDIOCPP=1 + NO_FLAC=1 + ) + + if [[ $TARGET == win* ]]; then + myconf+=( + CONFIG=mingw64-"$TARGET" + ) + export CPPFLAGS="$CPPFLAGS -DMPT_WITH_MINGWSTDTHREADS" + elif [[ $TARGET == linux* ]]; then + myconf+=( + CONFIG=gcc + TOOLCHAIN_PREFIX="$FFBUILD_CROSS_PREFIX" + ) + else + echo "Unknown target" + return -1 + fi + + make -j$(nproc) "${myconf[@]}" all install + rm -r "$FFBUILD_PREFIX"/share/doc/libopenmpt +} + +ffbuild_configure() { + echo --enable-libopenmpt +} + +ffbuild_unconfigure() { + echo --disable-libopenmpt +} diff --git a/scripts.d/50-rav1e.sh b/scripts.d/50-rav1e.sh index 1aaddc4..eb8c37c 100755 --- a/scripts.d/50-rav1e.sh +++ b/scripts.d/50-rav1e.sh @@ -1,7 +1,7 @@ #!/bin/bash -RAV1E_REPO="https://github.com/xiph/rav1e.git" -RAV1E_COMMIT="9417a4df1069cc066d499e04b9130ffd32019ed1" +SCRIPT_REPO="https://github.com/xiph/rav1e.git" +SCRIPT_COMMIT="5ec4f95d9fe1a9295fe8239e2860c8f84e5e2336" ffbuild_enabled() { [[ $TARGET == win32 ]] && return -1 @@ -9,23 +9,41 @@ ffbuild_enabled() { } ffbuild_dockerbuild() { - git-mini-clone "$RAV1E_REPO" "$RAV1E_COMMIT" rav1e - cd rav1e + cd "$FFBUILD_DLDIR/$SELF" local myconf=( - --prefix="$FFBUILD_PREFIX" \ - --library-type=staticlib \ - --crt-static \ + --prefix="$FFBUILD_PREFIX" + --library-type=staticlib + --crt-static --release ) if [[ -n "$FFBUILD_RUST_TARGET" ]]; then + unset PKG_CONFIG_LIBDIR + + export CC="gcc" + export CXX="g++" + export TARGET_CC="${FFBUILD_CROSS_PREFIX}gcc" + export TARGET_CXX="${FFBUILD_CROSS_PREFIX}g++" + export CROSS_COMPILE=1 + export TARGET_CFLAGS="$CFLAGS" + export TARGET_CXXFLAGS="$CFLAGS" + unset CFLAGS + unset CXXFLAGS + myconf+=( --target="$FFBUILD_RUST_TARGET" ) + cat <$CARGO_HOME/config.toml +[target.$FFBUILD_RUST_TARGET] +linker = "${FFBUILD_CROSS_PREFIX}gcc" +ar = "${FFBUILD_CROSS_PREFIX}ar" +EOF fi - cargo cinstall "${myconf[@]}" + cargo cinstall -v "${myconf[@]}" + + chmod 644 "${FFBUILD_PREFIX}"/lib/*rav1e* } ffbuild_configure() { diff --git a/scripts.d/50-rubberband.sh b/scripts.d/50-rubberband.sh index d6c677c..e3577c4 100755 --- a/scripts.d/50-rubberband.sh +++ b/scripts.d/50-rubberband.sh @@ -1,7 +1,7 @@ #!/bin/bash -RUBBERBAND_REPO="https://github.com/breakfastquay/rubberband.git" -RUBBERBAND_COMMIT="b3c920a35ed1ea4da37ddd62a12d3a81278097d1" +SCRIPT_REPO="https://github.com/breakfastquay/rubberband.git" +SCRIPT_COMMIT="1eddafd7a7c8b64e377d64ee5e87ead881a32a48" ffbuild_enabled() { [[ $VARIANT == lgpl* ]] && return -1 @@ -9,14 +9,15 @@ ffbuild_enabled() { } ffbuild_dockerbuild() { - git-mini-clone "$RUBBERBAND_REPO" "$RUBBERBAND_COMMIT" rubberband - cd rubberband + cd "$FFBUILD_DLDIR/$SELF" mkdir build && cd build local myconf=( --prefix="$FFBUILD_PREFIX" - -Dno_shared=true + -Ddefault_library=static + -Dfft=fftw + -Dresampler=libsamplerate ) if [[ $TARGET == win* || $TARGET == linux* ]]; then @@ -31,9 +32,6 @@ ffbuild_dockerbuild() { meson "${myconf[@]}" .. ninja -j$(nproc) ninja install - - # Fix static linking - echo "Requires.private: fftw3 samplerate" >> "$FFBUILD_PREFIX"/lib/pkgconfig/rubberband.pc } ffbuild_configure() { diff --git a/scripts.d/50-schannel.sh b/scripts.d/50-schannel.sh index 873b2f9..2ea5efa 100755 --- a/scripts.d/50-schannel.sh +++ b/scripts.d/50-schannel.sh @@ -1,9 +1,15 @@ #!/bin/bash +SCRIPT_SKIP="1" + ffbuild_enabled() { [[ $TARGET == win* ]] } +ffbuild_dockerdl() { + return 0 +} + ffbuild_dockerstage() { return 0 } @@ -12,6 +18,10 @@ ffbuild_dockerbuild() { return 0 } +ffbuild_dockerlayer_dl() { + return 0 +} + ffbuild_configure() { echo --enable-schannel } diff --git a/scripts.d/50-sdl.sh b/scripts.d/50-sdl.sh index df31227..bf6b0c2 100755 --- a/scripts.d/50-sdl.sh +++ b/scripts.d/50-sdl.sh @@ -1,40 +1,60 @@ #!/bin/bash -SDL_SRC="https://libsdl.org/release/SDL2-2.0.16.tar.gz" +SCRIPT_REPO="https://github.com/libsdl-org/SDL.git" +SCRIPT_COMMIT="e16a83d393ae1784040519f42c482e2641b971a2" +SCRIPT_BRANCH="SDL2" ffbuild_enabled() { return 0 } ffbuild_dockerbuild() { - mkdir sdl - cd sdl + cd "$FFBUILD_DLDIR/$SELF" - wget "$SDL_SRC" -O SDL.tar.gz - tar xaf SDL.tar.gz - rm SDL.tar.gz - cd SDL* + mkdir build && cd build - ./autogen.sh - - local myconf=( - --prefix="$FFBUILD_PREFIX" - --disable-shared - --enable-static + local mycmake=( + -DSDL_SHARED=OFF + -DSDL_STATIC=ON + -DSDL_STATIC_PIC=ON + -DSDL_TEST=OFF ) - if [[ $TARGET == win* || $TARGET == linux* ]]; then - myconf+=( - --host="$FFBUILD_TOOLCHAIN" + if [[ $TARGET == linux* ]]; then + mycmake+=( + -DSDL_X11=ON + -DSDL_X11_SHARED=OFF + -DHAVE_XGENERICEVENT=TRUE + -DSDL_VIDEO_DRIVER_X11_HAS_XKBKEYCODETOKEYSYM=1 + + -DSDL_PULSEAUDIO=ON + -DSDL_PULSEAUDIO_SHARED=OFF ) - else - echo "Unknown target" - return -1 fi - ./configure "${myconf[@]}" - make -j$(nproc) - make install + cmake -GNinja -DCMAKE_TOOLCHAIN_FILE="$FFBUILD_CMAKE_TOOLCHAIN" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="$FFBUILD_PREFIX" "${mycmake[@]}" .. + + ninja -j$(nproc) + ninja install + + if [[ $TARGET == linux* ]]; then + sed -ri -e 's/\-Wl,\-\-no\-undefined.*//' \ + -e 's/ \-l\/.+?\.a//g' \ + "$FFBUILD_PREFIX"/lib/pkgconfig/sdl2.pc + echo 'Requires: libpulse-simple xxf86vm xscrnsaver xrandr xfixes xi xinerama xcursor' >> "$FFBUILD_PREFIX"/lib/pkgconfig/sdl2.pc + elif [[ $TARGET == win* ]]; then + sed -ri -e 's/\-Wl,\-\-no\-undefined.*//' \ + -e 's/ \-mwindows//g' \ + -e 's/ \-lSDL2main//g' \ + -e 's/ \-Dmain=SDL_main//g' \ + "$FFBUILD_PREFIX"/lib/pkgconfig/sdl2.pc + fi + + sed -ri -e 's/ -lSDL2//g' \ + -e 's/Libs: /Libs: -lSDL2 /'\ + "$FFBUILD_PREFIX"/lib/pkgconfig/sdl2.pc + + echo 'Requires: samplerate' >> "$FFBUILD_PREFIX"/lib/pkgconfig/sdl2.pc } ffbuild_configure() { @@ -44,11 +64,3 @@ ffbuild_configure() { ffbuild_unconfigure() { echo --disable-sdl2 } - -ffbuild_cflags() { - return 0 -} - -ffbuild_ldflags() { - return 0 -} diff --git a/scripts.d/50-soxr.sh b/scripts.d/50-soxr.sh index 5df1fea..f3651aa 100755 --- a/scripts.d/50-soxr.sh +++ b/scripts.d/50-soxr.sh @@ -1,16 +1,14 @@ #!/bin/bash -# https://sourceforge.net/p/soxr/code/ci/master/tree/ -SOXR_REPO="https://git.code.sf.net/p/soxr/code" -SOXR_COMMIT="945b592b70470e29f917f4de89b4281fbbd540c0" +SCRIPT_REPO="https://git.code.sf.net/p/soxr/code" +SCRIPT_COMMIT="945b592b70470e29f917f4de89b4281fbbd540c0" ffbuild_enabled() { return 0 } ffbuild_dockerbuild() { - git-mini-clone "$SOXR_REPO" "$SOXR_COMMIT" soxr - cd soxr + cd "$FFBUILD_DLDIR/$SELF" mkdir build && cd build diff --git a/scripts.d/50-srt.sh b/scripts.d/50-srt.sh index f9b4f9f..d40e9da 100755 --- a/scripts.d/50-srt.sh +++ b/scripts.d/50-srt.sh @@ -1,22 +1,23 @@ #!/bin/bash -SRT_REPO="https://github.com/Haivision/srt.git" -SRT_COMMIT="d9b7988347fdbd4c9e1ae7fdc3b0bb3080aa8ae1" +SCRIPT_REPO="https://github.com/Haivision/srt.git" +SCRIPT_COMMIT="61c7bedf27a2edbcf6e6fdc179612980bae53c6a" ffbuild_enabled() { return 0 } ffbuild_dockerbuild() { - git-mini-clone "$SRT_REPO" "$SRT_COMMIT" srt - cd srt + cd "$FFBUILD_DLDIR/$SELF" mkdir build && cd build cmake -DCMAKE_TOOLCHAIN_FILE="$FFBUILD_CMAKE_TOOLCHAIN" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="$FFBUILD_PREFIX" \ - -DENABLE_SHARED=OFF -DENABLE_STATIC=ON -DENABLE_ENCRYPTION=ON -DENABLE_APPS=OFF .. + -DENABLE_SHARED=OFF -DENABLE_STATIC=ON -DENABLE_CXX_DEPS=ON -DUSE_STATIC_LIBSTDCXX=ON -DENABLE_ENCRYPTION=ON -DENABLE_APPS=OFF .. make -j$(nproc) make install + + echo "Libs.private: -lstdc++" >> "$FFBUILD_PREFIX"/lib/pkgconfig/srt.pc } ffbuild_configure() { diff --git a/scripts.d/50-svtav1.sh b/scripts.d/50-svtav1.sh index 6f90b06..66b6600 100755 --- a/scripts.d/50-svtav1.sh +++ b/scripts.d/50-svtav1.sh @@ -1,21 +1,23 @@ #!/bin/bash -SVTAV1_REPO="https://gitlab.com/AOMediaCodec/SVT-AV1.git" -SVTAV1_COMMIT="dd68d3992622006ee1a57739001970e29966e68d" +SCRIPT_REPO="https://gitlab.com/AOMediaCodec/SVT-AV1.git" +SCRIPT_COMMIT="08c18ba0768ed3dbbff0903adc326fb3a7549bd9" ffbuild_enabled() { [[ $TARGET == win32 ]] && return -1 return 0 } +ffbuild_dockerdl() { + to_df "RUN git clone \"$SCRIPT_REPO\" \"$SELF\" && git -C \"$SELF\" checkout \"$SCRIPT_COMMIT\"" +} + ffbuild_dockerbuild() { - git clone "$SVTAV1_REPO" svtav1 - cd svtav1 - git checkout "$SVTAV1_COMMIT" + cd "$FFBUILD_DLDIR/$SELF" mkdir build && cd build - cmake -DCMAKE_TOOLCHAIN_FILE="$FFBUILD_CMAKE_TOOLCHAIN" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="$FFBUILD_PREFIX" -DBUILD_SHARED_LIBS=OFF -DBUILD_TESTING=OFF -DBUILD_APPS=OFF .. + cmake -DCMAKE_TOOLCHAIN_FILE="$FFBUILD_CMAKE_TOOLCHAIN" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="$FFBUILD_PREFIX" -DBUILD_SHARED_LIBS=OFF -DBUILD_TESTING=OFF -DBUILD_APPS=OFF -DENABLE_AVX512=ON .. make -j$(nproc) make install } diff --git a/scripts.d/50-twolame.sh b/scripts.d/50-twolame.sh index 6464678..8e8a60b 100755 --- a/scripts.d/50-twolame.sh +++ b/scripts.d/50-twolame.sh @@ -1,18 +1,17 @@ #!/bin/bash -TWOLAME_SRC="https://sourceforge.net/projects/twolame/files/twolame/0.4.0/twolame-0.4.0.tar.gz/download" +SCRIPT_REPO="https://github.com/njh/twolame.git" +SCRIPT_COMMIT="90b694b6125dbe23a346bd5607a7fb63ad2785dc" ffbuild_enabled() { return 0 } ffbuild_dockerbuild() { - mkdir twolame - cd twolame - wget -O twolame.tar.gz "$TWOLAME_SRC" - tar xaf twolame.tar.gz - rm twolame.tar.gz - cd twolame* + cd "$FFBUILD_DLDIR/$SELF" + + NOCONFIGURE=1 ./autogen.sh + touch doc/twolame.1 local myconf=( --prefix="$FFBUILD_PREFIX" diff --git a/scripts.d/50-uavs3d.sh b/scripts.d/50-uavs3d.sh index a33c661..38e56bd 100755 --- a/scripts.d/50-uavs3d.sh +++ b/scripts.d/50-uavs3d.sh @@ -1,22 +1,25 @@ #!/bin/bash -UAVS3D_REPO="https://github.com/uavs3/uavs3d.git" -UAVS3D_COMMIT="57d20183301d4197d1c938f62f8a5911e33465d7" +SCRIPT_REPO="https://github.com/uavs3/uavs3d.git" +SCRIPT_COMMIT="1fd04917cff50fac72ae23e45f82ca6fd9130bd8" ffbuild_enabled() { [[ $TARGET == win32 ]] && return -1 return 0 } +ffbuild_dockerdl() { + to_df "RUN git clone \"$SCRIPT_REPO\" \"$SELF\" && git -C \"$SELF\" checkout \"$SCRIPT_COMMIT\"" +} + ffbuild_dockerbuild() { - git clone "$UAVS3D_REPO" uavs3d - cd uavs3d - git checkout "$UAVS3D_COMMIT" + cd "$FFBUILD_DLDIR/$SELF" mkdir build/linux cd build/linux - cmake -DCMAKE_TOOLCHAIN_FILE="$FFBUILD_CMAKE_TOOLCHAIN" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="$FFBUILD_PREFIX" -DBUILD_SHARED_LIBS=NO ../.. + cmake -DCMAKE_TOOLCHAIN_FILE="$FFBUILD_CMAKE_TOOLCHAIN" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="$FFBUILD_PREFIX" \ + -DCOMPILE_10BIT=1 -DBUILD_SHARED_LIBS=NO ../.. make -j$(nproc) make install } diff --git a/scripts.d/50-vaapi/30-libpciaccess.sh b/scripts.d/50-vaapi/30-libpciaccess.sh index 346bf16..83dfbc2 100755 --- a/scripts.d/50-vaapi/30-libpciaccess.sh +++ b/scripts.d/50-vaapi/30-libpciaccess.sh @@ -1,7 +1,7 @@ #!/bin/bash -LIBPCIACCESS_REPO="https://gitlab.freedesktop.org/xorg/lib/libpciaccess.git" -LIBPCIACCESS_COMMIT="9c01fdd7c02d8b9b5003e659ebca0b3643bd47c4" +SCRIPT_REPO="https://gitlab.freedesktop.org/xorg/lib/libpciaccess.git" +SCRIPT_COMMIT="8980a39004b10298a7db1f1b0b711a19e8b73aee" ffbuild_enabled() { [[ $TARGET != linux* ]] && return -1 @@ -9,15 +9,14 @@ ffbuild_enabled() { } ffbuild_dockerbuild() { - git-mini-clone "$LIBPCIACCESS_REPO" "$LIBPCIACCESS_COMMIT" libpciaccess - cd libpciaccess + cd "$FFBUILD_DLDIR/$SELF" autoreconf -fi local myconf=( --prefix="$FFBUILD_PREFIX" - --disable-shared - --enable-static + --enable-shared + --disable-static --with-pic --with-zlib ) @@ -31,7 +30,15 @@ ffbuild_dockerbuild() { return -1 fi + export CFLAGS="$RAW_CFLAGS" + export LDFLAFS="$RAW_LDFLAGS" + ./configure "${myconf[@]}" make -j$(nproc) make install + + gen-implib "$FFBUILD_PREFIX"/lib/{libpciaccess.so.0,libpciaccess.a} + rm "$FFBUILD_PREFIX"/lib/libpciaccess{.so*,.la} + + echo "Libs: -ldl" >> "$FFBUILD_PREFIX"/lib/pkgconfig/pciaccess.pc } diff --git a/scripts.d/50-vaapi/40-libdrm.sh b/scripts.d/50-vaapi/40-libdrm.sh index 4fa6d07..f2b3d4c 100755 --- a/scripts.d/50-vaapi/40-libdrm.sh +++ b/scripts.d/50-vaapi/40-libdrm.sh @@ -1,7 +1,7 @@ #!/bin/bash -LIBDRM_REPO="https://gitlab.freedesktop.org/mesa/drm.git" -LIBDRM_COMMIT="d77ccdf3ba6f5a396049241bff18a7a9c8329659" +SCRIPT_REPO="https://gitlab.freedesktop.org/mesa/drm.git" +SCRIPT_COMMIT="7d7a9901bd67cf5b1ce07e5d237a82e13e9fb500" ffbuild_enabled() { [[ $TARGET != linux* ]] && return -1 @@ -9,26 +9,24 @@ ffbuild_enabled() { } ffbuild_dockerbuild() { - git-mini-clone "$LIBDRM_REPO" "$LIBDRM_COMMIT" libdrm - cd libdrm + cd "$FFBUILD_DLDIR/$SELF" mkdir build && cd build local myconf=( --prefix="$FFBUILD_PREFIX" - -Ddefault_library=static - -Dlibkms=false + -Ddefault_library=shared -Dudev=false - -Dcairo-tests=false - -Dvalgrind=false - -Dexynos=false - -Dfreedreno=false - -Domap=false - -Detnaviv=false - -Dintel=true - -Dnouveau=true - -Dradeon=true - -Damdgpu=true + -Dcairo-tests=disabled + -Dvalgrind=disabled + -Dexynos=disabled + -Dfreedreno=disabled + -Domap=disabled + -Detnaviv=disabled + -Dintel=enabled + -Dnouveau=enabled + -Dradeon=enabled + -Damdgpu=enabled ) if [[ $TARGET == linux* ]]; then @@ -40,9 +38,17 @@ ffbuild_dockerbuild() { return -1 fi + export CFLAGS="$RAW_CFLAGS" + export LDFLAFS="$RAW_LDFLAGS" + meson "${myconf[@]}" .. ninja -j$(nproc) ninja install + + gen-implib "$FFBUILD_PREFIX"/lib/{libdrm.so.2,libdrm.a} + rm "$FFBUILD_PREFIX"/lib/libdrm*.so* + + echo "Libs: -ldl" >> "$FFBUILD_PREFIX"/lib/pkgconfig/libdrm.pc } ffbuild_configure() { diff --git a/scripts.d/50-vaapi/50-libva.sh b/scripts.d/50-vaapi/50-libva.sh index 5bea7f6..ed3d88f 100755 --- a/scripts.d/50-vaapi/50-libva.sh +++ b/scripts.d/50-vaapi/50-libva.sh @@ -1,23 +1,23 @@ #!/bin/bash -LIBVA_REPO="https://github.com/intel/libva.git" -LIBVA_COMMIT="453002ce69779c713f6f8315bedce140d34ba805" +SCRIPT_REPO="https://github.com/intel/libva.git" +SCRIPT_COMMIT="984dfee4177021c400367f5dffc0776a6dd745dc" ffbuild_enabled() { [[ $TARGET != linux* ]] && return -1 + [[ $TARGET == linuxarm64 ]] && return -1 return 0 } ffbuild_dockerbuild() { - git-mini-clone "$LIBVA_REPO" "$LIBVA_COMMIT" libva - cd libva + cd "$FFBUILD_DLDIR/$SELF" autoreconf -i local myconf=( --prefix="$FFBUILD_PREFIX" - --disable-shared - --enable-static + --enable-shared + --disable-static --with-pic --disable-docs --enable-drm @@ -37,11 +37,19 @@ ffbuild_dockerbuild() { return -1 fi + export CFLAGS="$RAW_CFLAGS" + export LDFLAFS="$RAW_LDFLAGS" + ./configure "${myconf[@]}" make -j$(nproc) make install - echo "Libs.private: -ldl" >> "$FFBUILD_PREFIX"/lib/pkgconfig/libva.pc + gen-implib "$FFBUILD_PREFIX"/lib/{libva.so.2,libva.a} + gen-implib "$FFBUILD_PREFIX"/lib/{libva-drm.so.2,libva-drm.a} + gen-implib "$FFBUILD_PREFIX"/lib/{libva-x11.so.2,libva-x11.a} + rm "$FFBUILD_PREFIX"/lib/libva{,-drm,-x11}{.so*,.la} + + echo "Libs: -ldl" >> "$FFBUILD_PREFIX"/lib/pkgconfig/libva.pc } ffbuild_configure() { diff --git a/scripts.d/50-vaapi/99-finalize.sh b/scripts.d/50-vaapi/99-finalize.sh new file mode 100755 index 0000000..ee8a518 --- /dev/null +++ b/scripts.d/50-vaapi/99-finalize.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +SCRIPT_SKIP="1" + +ffbuild_enabled() { + [[ $TARGET != linux* ]] && return -1 + return 0 +} + +ffbuild_dockerdl() { + return 0 +} + +ffbuild_dockerbuild() { + rm "$FFBUILD_PREFIX"/lib/lib*.so* || true + rm "$FFBUILD_PREFIX"/lib/*.la || true +} diff --git a/scripts.d/50-vidstab.sh b/scripts.d/50-vidstab.sh index a52794c..c9a3b4c 100755 --- a/scripts.d/50-vidstab.sh +++ b/scripts.d/50-vidstab.sh @@ -1,8 +1,7 @@ #!/bin/bash -VIDSTAB_REPO="https://github.com/georgmartius/vid.stab.git" -# TODO: clamp to e7715fc until georgmartius/vid.stab#104 get fixed -VIDSTAB_COMMIT="e7715fcf329573cdcff5c57d0e4a25f4c3a0cb7f" +SCRIPT_REPO="https://github.com/georgmartius/vid.stab.git" +SCRIPT_COMMIT="05829db776069b7478dd2d90b6e0081668a41abc" ffbuild_enabled() { [[ $VARIANT == lgpl* ]] && return -1 @@ -10,12 +9,22 @@ ffbuild_enabled() { } ffbuild_dockerbuild() { - git-mini-clone "$VIDSTAB_REPO" "$VIDSTAB_COMMIT" vidstab - cd vidstab + cd "$FFBUILD_DLDIR/$SELF" mkdir build && cd build - cmake -DCMAKE_TOOLCHAIN_FILE="$FFBUILD_CMAKE_TOOLCHAIN" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="$FFBUILD_PREFIX" -DBUILD_SHARED_LIBS=OFF -DUSE_OMP=ON .. + local mycmake=( + -DBUILD_SHARED_LIBS=OFF + -DUSE_OMP=ON + ) + + if [[ $TARGET == *arm64 ]]; then + mycmake+=( + -DSSE2_FOUND=FALSE + ) + fi + + cmake -DCMAKE_TOOLCHAIN_FILE="$FFBUILD_CMAKE_TOOLCHAIN" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="$FFBUILD_PREFIX" "${mycmake[@]}" .. make -j$(nproc) make install diff --git a/scripts.d/50-vulkan/45-vulkan.sh b/scripts.d/50-vulkan/45-vulkan.sh index 2e531e0..c1a718b 100755 --- a/scripts.d/50-vulkan/45-vulkan.sh +++ b/scripts.d/50-vulkan/45-vulkan.sh @@ -1,7 +1,8 @@ #!/bin/bash -HEADERS_REPO="https://github.com/KhronosGroup/Vulkan-Headers.git" -HEADERS_VERSION="1.2.198" +SCRIPT_REPO="https://github.com/KhronosGroup/Vulkan-Headers.git" +SCRIPT_COMMIT="v1.3.257" +SCRIPT_TAGFILTER="v?.*.*" ffbuild_enabled() { [[ $ADDINS_STR == *4.4* ]] && return -1 @@ -9,8 +10,7 @@ ffbuild_enabled() { } ffbuild_dockerbuild() { - git-mini-clone "$HEADERS_REPO" "v$HEADERS_VERSION" vkheaders - cd vkheaders + cd "$FFBUILD_DLDIR/$SELF" mkdir build && cd build @@ -23,7 +23,7 @@ prefix=$FFBUILD_PREFIX includedir=\${prefix}/include Name: vulkan -Version: $HEADERS_VERSION +Version: ${SCRIPT_COMMIT:1} Description: Vulkan (Headers Only) Cflags: -I\${includedir} EOF diff --git a/scripts.d/50-vulkan/50-glslang.sh b/scripts.d/50-vulkan/50-glslang.sh deleted file mode 100755 index 5604bf0..0000000 --- a/scripts.d/50-vulkan/50-glslang.sh +++ /dev/null @@ -1,32 +0,0 @@ -#!/bin/bash - -GLSLANG_REPO="https://github.com/KhronosGroup/glslang.git" -GLSLANG_COMMIT="d1608ab1ef17f1488bdcbfe11f2c3c96ac482fce" - -ffbuild_enabled() { - [[ $ADDINS_STR == *4.4* ]] && return -1 - return 0 -} - -ffbuild_dockerbuild() { - git-mini-clone "$GLSLANG_REPO" "$GLSLANG_COMMIT" glslang - cd glslang - - python3 ./update_glslang_sources.py - - mkdir build && cd build - - cmake -DCMAKE_TOOLCHAIN_FILE="$FFBUILD_CMAKE_TOOLCHAIN" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="$FFBUILD_PREFIX" \ - -DBUILD_SHARED_LIBS=OFF -DBUILD_EXTERNAL=ON -DBUILD_TESTING=OFF -DENABLE_CTEST=OFF \ - -DENABLE_OPT=ON -DENABLE_HLSL=ON -DENABLE_GLSLANG_BINARIES=OFF .. - make -j$(nproc) - make install -} - -ffbuild_configure() { - echo --enable-libglslang -} - -ffbuild_unconfigure() { - echo --disable-libglslang -} diff --git a/scripts.d/50-vulkan/50-shaderc.sh b/scripts.d/50-vulkan/50-shaderc.sh new file mode 100755 index 0000000..576dc37 --- /dev/null +++ b/scripts.d/50-vulkan/50-shaderc.sh @@ -0,0 +1,53 @@ +#!/bin/bash + +SCRIPT_REPO="https://github.com/google/shaderc.git" +SCRIPT_COMMIT="e31c4c2e41544d63d90be28c46e4a4793a624240" + +ffbuild_enabled() { + [[ $ADDINS_STR == *4.4* ]] && return -1 + return 0 +} + +ffbuild_dockerdl() { + default_dl "$SELF" + to_df "RUN cd \"$SELF\" && ./utils/git-sync-deps" +} + +ffbuild_dockerbuild() { + cd "$FFBUILD_DLDIR/$SELF" + + mkdir build && cd build + + cmake -GNinja -DCMAKE_TOOLCHAIN_FILE="$FFBUILD_CMAKE_TOOLCHAIN" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="$FFBUILD_PREFIX" \ + -DSHADERC_SKIP_TESTS=ON -DSHADERC_SKIP_EXAMPLES=ON -DSHADERC_SKIP_COPYRIGHT_CHECK=ON \ + -DENABLE_EXCEPTIONS=ON -DENABLE_CTEST=OFF -DENABLE_GLSLANG_BINARIES=OFF -DSPIRV_SKIP_EXECUTABLES=ON \ + -DSPIRV_TOOLS_BUILD_STATIC=ON -DBUILD_SHARED_LIBS=OFF .. + ninja -j$(nproc) + ninja install + + # for some reason, this does not get installed... + cp libshaderc_util/libshaderc_util.a "$FFBUILD_PREFIX"/lib + + echo "Libs: -lstdc++" >> "$FFBUILD_PREFIX"/lib/pkgconfig/shaderc_combined.pc + echo "Libs: -lstdc++" >> "$FFBUILD_PREFIX"/lib/pkgconfig/shaderc_static.pc + + cp "$FFBUILD_PREFIX"/lib/pkgconfig/{shaderc_combined,shaderc}.pc + + if [[ $TARGET == win* ]]; then + rm -r "$FFBUILD_PREFIX"/bin "$FFBUILD_PREFIX"/lib/*.dll.a + elif [[ $TARGET == linux* ]]; then + rm -r "$FFBUILD_PREFIX"/bin "$FFBUILD_PREFIX"/lib/*.so* + else + echo "Unknown target" + return -1 + fi +} + +ffbuild_configure() { + echo --enable-libshaderc +} + +ffbuild_unconfigure() { + [[ $ADDINS_STR == *4.4* ]] && return 0 + echo --disable-libshaderc +} diff --git a/scripts.d/50-vulkan/55-spirv-cross.sh b/scripts.d/50-vulkan/55-spirv-cross.sh index 001a1c5..f5d189c 100755 --- a/scripts.d/50-vulkan/55-spirv-cross.sh +++ b/scripts.d/50-vulkan/55-spirv-cross.sh @@ -1,7 +1,7 @@ #!/bin/bash -SPIRV_CROSS_REPO="https://github.com/KhronosGroup/SPIRV-Cross.git" -SPIRV_CROSS_COMMIT="401296d3b8fc60193e99ccabb81eb3e4fe2dd802" +SCRIPT_REPO="https://github.com/KhronosGroup/SPIRV-Cross.git" +SCRIPT_COMMIT="b8e742c91ba47eb3238c939ee11ec9ba2ba247bf" ffbuild_enabled() { [[ $ADDINS_STR == *4.4* ]] && return -1 @@ -9,8 +9,7 @@ ffbuild_enabled() { } ffbuild_dockerbuild() { - git-mini-clone "$SPIRV_CROSS_REPO" "$SPIRV_CROSS_COMMIT" spirv-cross - cd spirv-cross + cd "$FFBUILD_DLDIR/$SELF" VER_MAJ="$(grep 'set(spirv-cross-abi-major' CMakeLists.txt | sed -re 's/.* ([0-9]+)\)/\1/')" VER_MIN="$(grep 'set(spirv-cross-abi-minor' CMakeLists.txt | sed -re 's/.* ([0-9]+)\)/\1/')" diff --git a/scripts.d/50-vulkan/60-libplacebo.sh b/scripts.d/50-vulkan/60-libplacebo.sh index 9cea772..0987426 100755 --- a/scripts.d/50-vulkan/60-libplacebo.sh +++ b/scripts.d/50-vulkan/60-libplacebo.sh @@ -1,16 +1,23 @@ #!/bin/bash -PLACEBO_REPO="https://code.videolan.org/videolan/libplacebo.git" -PLACEBO_COMMIT="72cd260ad7d5aa564ff5e68caf16ec2633f3460e" +SCRIPT_REPO="https://code.videolan.org/videolan/libplacebo.git" +SCRIPT_COMMIT="b959cab8b859dc53a6dbd26c050be0b3883114c8" ffbuild_enabled() { [[ $ADDINS_STR == *4.4* ]] && return -1 + [[ $ADDINS_STR == *5.0* ]] && return -1 + [[ $ADDINS_STR == *5.1* ]] && return -1 + [[ $ADDINS_STR == *6.0* ]] && return -1 return 0 } +ffbuild_dockerdl() { + default_dl "$SELF" + to_df "RUN git -C \"$SELF\" submodule update --init --recursive" +} + ffbuild_dockerbuild() { - git-mini-clone "$PLACEBO_REPO" "$PLACEBO_COMMIT" placebo - cd placebo + cd "$FFBUILD_DLDIR/$SELF" mkdir build && cd build @@ -19,9 +26,10 @@ ffbuild_dockerbuild() { --buildtype=release --default-library=static -Dvulkan=enabled - -Dvulkan-link=false + -Dvk-proc-addr=disabled -Dvulkan-registry="$FFBUILD_PREFIX"/share/vulkan/registry/vk.xml - -Dglslang=enabled + -Dshaderc=enabled + -Dglslang=disabled -Ddemos=false -Dtests=false -Dbench=false diff --git a/scripts.d/50-vulkan/99-enable.sh b/scripts.d/50-vulkan/99-enable.sh new file mode 100755 index 0000000..d83e3cb --- /dev/null +++ b/scripts.d/50-vulkan/99-enable.sh @@ -0,0 +1,16 @@ +#!/bin/bash + +SCRIPT_SKIP="1" + +ffbuild_enabled() { + [[ $ADDINS_STR == *4.4* ]] && return -1 + return 0 +} + +ffbuild_dockerdl() { + return 0 +} + +ffbuild_dockerbuild() { + return 0 +} diff --git a/scripts.d/50-x264.sh b/scripts.d/50-x264.sh index 8fb680b..0060cf3 100755 --- a/scripts.d/50-x264.sh +++ b/scripts.d/50-x264.sh @@ -1,7 +1,7 @@ #!/bin/bash -X264_REPO="https://github.com/mirror/x264.git" -X264_COMMIT="66a5bc1bd1563d8227d5d18440b525a09bcf17ca" +SCRIPT_REPO="https://github.com/mirror/x264.git" +SCRIPT_COMMIT="eaa68fad9e5d201d42fde51665f2d137ae96baf0" ffbuild_enabled() { [[ $VARIANT == lgpl* ]] && return -1 @@ -9,8 +9,7 @@ ffbuild_enabled() { } ffbuild_dockerbuild() { - git-mini-clone "$X264_REPO" "$X264_COMMIT" x264 - cd x264 + cd "$FFBUILD_DLDIR/$SELF" local myconf=( --disable-cli diff --git a/scripts.d/50-x265.sh b/scripts.d/50-x265.sh index 9c0085e..14bc515 100755 --- a/scripts.d/50-x265.sh +++ b/scripts.d/50-x265.sh @@ -1,17 +1,19 @@ #!/bin/bash -X265_REPO="https://bitbucket.org/multicoreware/x265_git.git" -X265_COMMIT="8003e43825ee83b8ef346c8c3562c508ab23f117" +SCRIPT_REPO="https://bitbucket.org/multicoreware/x265_git.git" +SCRIPT_COMMIT="8f18e3ad32684eee95e885e718655f93951128c3" ffbuild_enabled() { [[ $VARIANT == lgpl* ]] && return -1 return 0 } +ffbuild_dockerdl() { + to_df "RUN git clone \"$SCRIPT_REPO\" \"$SELF\" && git -C \"$SELF\" checkout \"$SCRIPT_COMMIT\"" +} + ffbuild_dockerbuild() { - git clone "$X265_REPO" x265 - cd x265 - git checkout "$X265_COMMIT" + cd "$FFBUILD_DLDIR/$SELF" local common_config=( -DCMAKE_INSTALL_PREFIX="$FFBUILD_PREFIX" @@ -61,6 +63,8 @@ EOF fi make install + + echo "Libs.private: -lstdc++" >> "$FFBUILD_PREFIX"/lib/pkgconfig/x265.pc } ffbuild_configure() { diff --git a/scripts.d/50-xavs2.sh b/scripts.d/50-xavs2.sh index 309edd9..36b1e65 100755 --- a/scripts.d/50-xavs2.sh +++ b/scripts.d/50-xavs2.sh @@ -1,18 +1,22 @@ #!/bin/bash -XAVS2_REPO="https://github.com/pkuvcl/xavs2.git" -XAVS2_COMMIT="eae1e8b9d12468059bdd7dee893508e470fa83d8" +SCRIPT_REPO="https://github.com/pkuvcl/xavs2.git" +SCRIPT_COMMIT="eae1e8b9d12468059bdd7dee893508e470fa83d8" ffbuild_enabled() { [[ $VARIANT == lgpl* ]] && return -1 [[ $TARGET == win32 ]] && return -1 + # xavs2 aarch64 support is broken + [[ $TARGET == linuxarm64 ]] && return -1 return 0 } +ffbuild_dockerdl() { + to_df "RUN git clone \"$SCRIPT_REPO\" \"$SELF\" && git -C \"$SELF\" checkout \"$SCRIPT_COMMIT\"" +} + ffbuild_dockerbuild() { - git clone "$XAVS2_REPO" xavs2 - cd xavs2 - git checkout "$XAVS2_COMMIT" + cd "$FFBUILD_DLDIR/$SELF" cd build/linux local myconf=( @@ -39,6 +43,10 @@ ffbuild_dockerbuild() { return -1 fi + # Work around configure endian check failing on modern gcc/binutils. + # Assumes all supported archs are little endian. + sed -i -e 's/EGIB/bss/g' -e 's/naidnePF/bss/g' configure + ./configure "${myconf[@]}" make -j$(nproc) make install diff --git a/scripts.d/50-xvid.sh b/scripts.d/50-xvid.sh index f6ec11a..484d2fa 100755 --- a/scripts.d/50-xvid.sh +++ b/scripts.d/50-xvid.sh @@ -1,19 +1,19 @@ #!/bin/bash -XVID_SRC="https://downloads.xvid.com/downloads/xvidcore-1.3.7.tar.gz" +SCRIPT_REPO="http://svn.xvid.org/trunk/xvidcore" +SCRIPT_REV="2198" ffbuild_enabled() { [[ $VARIANT == lgpl* ]] && return -1 return 0 } +ffbuild_dockerdl() { + to_df "RUN retry-tool sh -c \"rm -rf xvid && svn checkout --username 'anonymous' --password '' '${SCRIPT_REPO}@${SCRIPT_REV}' xvid\"" +} + ffbuild_dockerbuild() { - mkdir xvid - cd xvid - wget -O xvid.tar.gz "$XVID_SRC" - tar xaf xvid.tar.gz - rm xvid.tar.gz - cd xvid* + cd "$FFBUILD_DLDIR"/xvid cd build/generic @@ -43,8 +43,7 @@ ffbuild_dockerbuild() { make install if [[ $TARGET == win* ]]; then - rm "$FFBUILD_PREFIX"/{bin/xvidcore.dll,lib/xvidcore.dll.a} - mv "$FFBUILD_PREFIX"/lib/{,lib}xvidcore.a + rm "$FFBUILD_PREFIX"/{bin/libxvidcore.dll,lib/libxvidcore.dll.a} elif [[ $TARGET == linux* ]]; then rm "$FFBUILD_PREFIX"/lib/libxvidcore.so* fi diff --git a/scripts.d/50-zimg.sh b/scripts.d/50-zimg.sh index b42fc6d..49bc5bb 100755 --- a/scripts.d/50-zimg.sh +++ b/scripts.d/50-zimg.sh @@ -1,15 +1,19 @@ #!/bin/bash -ZIMG_REPO="https://github.com/sekrit-twc/zimg.git" -ZIMG_COMMIT="d2495cab859570112102ef40269a900b81009667" +SCRIPT_REPO="https://github.com/sekrit-twc/zimg.git" +SCRIPT_COMMIT="ec0c604a9e29dd144b0bb1fb0974ac3b398fc18b" ffbuild_enabled() { return 0 } +ffbuild_dockerdl() { + default_dl "$SELF" + to_df "RUN git -C \"$SELF\" submodule update --init --recursive --depth=1" +} + ffbuild_dockerbuild() { - git-mini-clone "$ZIMG_REPO" "$ZIMG_COMMIT" zimg - cd zimg + cd "$FFBUILD_DLDIR/$SELF" ./autogen.sh diff --git a/scripts.d/50-zvbi.sh b/scripts.d/50-zvbi.sh index f3670ce..5f7cb97 100755 --- a/scripts.d/50-zvbi.sh +++ b/scripts.d/50-zvbi.sh @@ -1,19 +1,22 @@ #!/bin/bash -ZVBI_REPO="https://svn.code.sf.net/p/zapping/svn/trunk/vbi" -ZVBI_REV="4270" +SCRIPT_REPO="https://svn.code.sf.net/p/zapping/svn/trunk/vbi" +SCRIPT_REV="4270" ffbuild_enabled() { return 0 } ffbuild_dockerstage() { - to_df "RUN --mount=src=${SELF},dst=/stage.sh --mount=src=patches/zvbi,dst=/patches run_stage /stage.sh" + to_df "RUN --mount=src=${SELF},dst=/stage.sh --mount=src=/,dst=\$FFBUILD_DLDIR,from=${DL_IMAGE},rw --mount=src=patches/zvbi,dst=/patches run_stage /stage.sh" +} + +ffbuild_dockerdl() { + to_df "RUN retry-tool sh -c \"rm -rf $SELF && svn checkout '${SCRIPT_REPO}@${SCRIPT_REV}' $SELF\"" } ffbuild_dockerbuild() { - svn checkout "${ZVBI_REPO}@${ZVBI_REV}" zvbi - cd zvbi + cd "$FFBUILD_DLDIR/$SELF" for patch in /patches/*.patch; do echo "Applying $patch" diff --git a/scripts.d/99-rpath.sh b/scripts.d/99-rpath.sh index 09b543c..be7bc33 100755 --- a/scripts.d/99-rpath.sh +++ b/scripts.d/99-rpath.sh @@ -1,5 +1,7 @@ #!/bin/bash +SCRIPT_SKIP="1" + ffbuild_enabled() { [[ $TARGET == linux* ]] } @@ -8,6 +10,10 @@ ffbuild_dockerfinal() { return 0 } +ffbuild_dockerdl() { + return 0 +} + ffbuild_dockerlayer() { return 0 } @@ -16,6 +22,10 @@ ffbuild_dockerstage() { return 0 } +ffbuild_dockerlayer_dl() { + return 0 +} + ffbuild_dockerbuild() { return 0 } diff --git a/util/get_dl_cache_tag.sh b/util/get_dl_cache_tag.sh new file mode 100755 index 0000000..4ca3a36 --- /dev/null +++ b/util/get_dl_cache_tag.sh @@ -0,0 +1,4 @@ +#!/bin/bash +set -eo pipefail +printf dlcache_ +tail -n+3 Dockerfile.dl | sha256sum | cut -d' ' -f1 diff --git a/util/prunetags.sh b/util/prunetags.sh index 991199e..ebe3d67 100755 --- a/util/prunetags.sh +++ b/util/prunetags.sh @@ -4,7 +4,7 @@ git fetch --tags TAGS=( $(git tag -l "autobuild-*" | sort -r) ) KEEP_LATEST=14 -KEEP_MONTHLY=12 +KEEP_MONTHLY=24 LATEST_TAGS=() MONTHLY_TAGS=() diff --git a/util/repack_latest.sh b/util/repack_latest.sh new file mode 100755 index 0000000..df3c587 --- /dev/null +++ b/util/repack_latest.sh @@ -0,0 +1,72 @@ +#!/bin/bash +set -e + +if [[ $# -lt 2 ]]; then + echo "Missing arguments" + exit -1 +fi + +RELEASE_DIR="$(realpath "$1")" +shift +mkdir -p "$RELEASE_DIR" + +rm -rf repack_dir +mkdir repack_dir +trap "rm -rf repack_dir" EXIT + +while [[ $# -gt 0 ]]; do + INPUT="$1" + shift + + ( + set -e + REPACK_DIR="repack_dir/$BASHPID" + rm -rf "$REPACK_DIR" + mkdir "$REPACK_DIR" + + if [[ $INPUT == *.zip ]]; then + unzip "$INPUT" -d "$REPACK_DIR" + elif [[ $INPUT == *.tar.xz ]]; then + tar xvaf "$INPUT" -C "$REPACK_DIR" + else + echo "Unknown input file type: $INPUT" + exit 1 + fi + + cd "$REPACK_DIR" + + INAME="$(echo ffmpeg-*)" + TAGNAME="$(cut -d- -f2 <<<"$INAME")" + + if [[ $TAGNAME == N ]]; then + TAGNAME="master" + elif [[ $TAGNAME == n* ]]; then + TAGNAME="$(sed -re 's/([0-9]+\.[0-9]+).*/\1/' <<<"$TAGNAME")" + fi + + if [[ "$INAME" =~ -[0-9]+-g ]]; then + ONAME="ffmpeg-$TAGNAME-latest-$(cut -d- -f5- <<<"$INAME")" + else + ONAME="ffmpeg-$TAGNAME-latest-$(cut -d- -f3- <<<"$INAME")" + fi + + mv "$INAME" "$ONAME" + + if [[ $INPUT == *.zip ]]; then + zip -9 -r "$RELEASE_DIR/$ONAME.zip" "$ONAME" + elif [[ $INPUT == *.tar.xz ]]; then + tar cvJf "$RELEASE_DIR/$ONAME.tar.xz" "$ONAME" + fi + + rm -rf "$REPACK_DIR" + ) & + + while [[ $(jobs | wc -l) -gt 3 ]]; do + wait %1 + done +done + +while [[ $(jobs | wc -l) -gt 0 ]]; do + wait %1 +done +rm -rf repack_dir diff --git a/util/update_scripts.sh b/util/update_scripts.sh new file mode 100755 index 0000000..73c9daf --- /dev/null +++ b/util/update_scripts.sh @@ -0,0 +1,91 @@ +#!/bin/bash +set -eo pipefail +shopt -s globstar +export LC_ALL=C + +cd "$(dirname "$0")"/.. + +for scr in scripts.d/**/*.sh; do +echo "Processing ${scr}" +( + source "$scr" + + if [[ -n "$SCRIPT_SKIP" ]]; then + exit 0 + fi + + for i in "" $(seq 2 9); do + REPO_VAR="SCRIPT_REPO$i" + COMMIT_VAR="SCRIPT_COMMIT$i" + REV_VAR="SCRIPT_REV$i" + HGREV_VAR="SCRIPT_HGREV$i" + BRANCH_VAR="SCRIPT_BRANCH$i" + TAGFILTER_VAR="SCRIPT_TAGFILTER$i" + + CUR_REPO="${!REPO_VAR}" + CUR_COMMIT="${!COMMIT_VAR}" + CUR_REV="${!REV_VAR}" + CUR_HGREV="${!HGREV_VAR}" + CUR_BRANCH="${!BRANCH_VAR}" + CUR_TAGFILTER="${!TAGFILTER_VAR}" + + if [[ -z "${CUR_REPO}" ]]; then + if [[ -z "$i" ]]; then + # Mark scripts without repo source for manual check + echo "xxx_CHECKME_xxx" >> "$scr" + echo "Needs manual check." + fi + break + fi + + if [[ -n "${CUR_REV}" ]]; then # SVN + echo "Checking svn rev for ${CUR_REPO}..." + NEW_REV="$(svn info --password="" "${CUR_REPO}" | grep ^Revision: | cut -d" " -f2 | xargs)" + echo "Got ${NEW_REV} (current: ${CUR_REV})" + + if [[ "${NEW_REV}" != "${CUR_REV}" ]]; then + echo "Updating ${scr}" + sed -i "s/^${REV_VAR}=.*/${REV_VAR}=\"${NEW_REV}\"/" "${scr}" + fi + elif [[ -n "${CUR_HGREV}" ]]; then # HG + hg init tmphgrepo + trap "rm -rf tmphgrepo" EXIT + cd tmphgrepo + NEW_HGREV="$(hg in -f -n -l 1 "${CUR_REPO}" | grep changeset | cut -d: -f3 | xargs)" + cd .. + rm -rf tmphgrepo + + echo "Got ${NEW_HGREV} (current: ${CUR_HGREV})" + + if [[ "${NEW_HGREV}" != "${CUR_HGREV}" ]]; then + echo "Updating ${scr}" + sed -i "s/^${HGREV_VAR}=.*/${HGREV_VAR}=\"${NEW_HGREV}\"/" "${scr}" + fi + elif [[ -n "${CUR_COMMIT}" ]]; then # GIT + if [[ -n "${CUR_TAGFILTER}" ]]; then + NEW_COMMIT="$(git -c 'versionsort.suffix=-' ls-remote --exit-code --tags --refs --sort "v:refname" "${CUR_REPO}" "refs/tags/${CUR_TAGFILTER}" | tail -n1 | cut -d/ -f3- | xargs)" + else + if [[ -z "${CUR_BRANCH}" ]]; then + # Fetch default branch name + CUR_BRANCH="$(git remote show "${CUR_REPO}" | grep "HEAD branch:" | cut -d":" -f2 | xargs)" + echo "Found default branch ${CUR_BRANCH}" + fi + NEW_COMMIT="$(git ls-remote --exit-code --heads --refs "${CUR_REPO}" refs/heads/"${CUR_BRANCH}" | cut -f1)" + fi + + echo "Got ${NEW_COMMIT} (current: ${CUR_COMMIT})" + + if [[ "${NEW_COMMIT}" != "${CUR_COMMIT}" ]]; then + echo "Updating ${scr}" + sed -i "s/^${COMMIT_VAR}=.*/${COMMIT_VAR}=\"${NEW_COMMIT}\"/" "${scr}" + fi + else + # Mark scripts with unknown layout for manual check + echo "xxx_CHECKME_UNKNOWN_xxx" >> "$scr" + echo "Unknown layout. Needs manual check." + break + fi + done +) +echo +done diff --git a/util/vars.sh b/util/vars.sh index f3002a2..0fd91ef 100644 --- a/util/vars.sh +++ b/util/vars.sh @@ -32,13 +32,28 @@ done REPO="${GITHUB_REPOSITORY:-btbn/ffmpeg-builds}" REPO="${REPO,,}" -REGISTRY="ghcr.io" +REGISTRY="${REGISTRY_OVERRIDE:-ghcr.io}" BASE_IMAGE="${REGISTRY}/${REPO}/base:latest" TARGET_IMAGE="${REGISTRY}/${REPO}/base-${TARGET}:latest" IMAGE="${REGISTRY}/${REPO}/${TARGET}-${VARIANT}${ADDINS_STR:+-}${ADDINS_STR}:latest" +DL_IMAGE_RAW="${REGISTRY}/${REPO}/dl_cache" +if [[ -n "$REGISTRY_OVERRIDE_DL" && -n "$GITHUB_REPOSITORY_DL" ]]; then + DL_IMAGE_RAW="${REGISTRY_OVERRIDE_DL}/${GITHUB_REPOSITORY_DL}/dl_cache" + DL_IMAGE_RAW="${DL_IMAGE_RAW,,}" +fi +DL_IMAGE="${DL_IMAGE_RAW}:unset" + +ffbuild_dockerdl() { + default_dl "$SELF" +} + +ffbuild_dockerlayer_dl() { + to_df "COPY --from=${SELFLAYER} \$FFBUILD_DLDIR/. \$FFBUILD_DLDIR" +} + ffbuild_dockerstage() { - to_df "RUN --mount=src=${SELF},dst=/stage.sh run_stage /stage.sh" + to_df "RUN --mount=src=${SELF},dst=/stage.sh --mount=src=/,dst=\$FFBUILD_DLDIR,from=${DL_IMAGE},rw run_stage /stage.sh" } ffbuild_dockerlayer() { diff --git a/variants/dl-only.sh b/variants/dl-only.sh new file mode 100644 index 0000000..a9bf588 --- /dev/null +++ b/variants/dl-only.sh @@ -0,0 +1 @@ +#!/bin/bash diff --git a/variants/linux-install-shared.sh b/variants/linux-install-shared.sh index d8ac92e..5507cb6 100644 --- a/variants/linux-install-shared.sh +++ b/variants/linux-install-shared.sh @@ -10,9 +10,20 @@ package_variant() { mkdir -p "$OUT"/lib cp -a "$IN"/lib/*.so* "$OUT"/lib + mkdir -p "$OUT"/lib/pkgconfig + cp -a "$IN"/lib/pkgconfig/*.pc "$OUT"/lib/pkgconfig + sed -i \ + -e 's|^prefix=.*|prefix=${pcfiledir}/../..|' \ + -e 's|/ffbuild/prefix|${prefix}|' \ + -e '/Libs.private:/d' \ + "$OUT"/lib/pkgconfig/*.pc + mkdir -p "$OUT"/include cp -r "$IN"/include/* "$OUT"/include mkdir -p "$OUT"/doc cp -r "$IN"/share/doc/ffmpeg/* "$OUT"/doc + + mkdir -p "$OUT/man" + cp -r "$IN"/share/man/* "$OUT"/man } diff --git a/variants/linux-install-static.sh b/variants/linux-install-static.sh new file mode 100644 index 0000000..6c6a4e6 --- /dev/null +++ b/variants/linux-install-static.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +package_variant() { + IN="$1" + OUT="$2" + + mkdir -p "$OUT"/bin + cp "$IN"/bin/* "$OUT"/bin + + mkdir -p "$OUT/doc" + cp -r "$IN"/share/doc/ffmpeg/* "$OUT"/doc + + mkdir -p "$OUT/man" + cp -r "$IN"/share/man/* "$OUT"/man +} diff --git a/variants/linux64-gpl.sh b/variants/linux64-gpl.sh index b3003a4..bd5fc12 100644 --- a/variants/linux64-gpl.sh +++ b/variants/linux64-gpl.sh @@ -1,3 +1,3 @@ #!/bin/bash -source "$(dirname "$BASH_SOURCE")"/default-install.sh +source "$(dirname "$BASH_SOURCE")"/linux-install-static.sh source "$(dirname "$BASH_SOURCE")"/defaults-gpl.sh diff --git a/variants/linux64-lgpl.sh b/variants/linux64-lgpl.sh index f000a33..da1f9b7 100644 --- a/variants/linux64-lgpl.sh +++ b/variants/linux64-lgpl.sh @@ -1,3 +1,3 @@ #!/bin/bash -source "$(dirname "$BASH_SOURCE")"/default-install.sh +source "$(dirname "$BASH_SOURCE")"/linux-install-static.sh source "$(dirname "$BASH_SOURCE")"/defaults-lgpl.sh diff --git a/variants/linuxarm64-gpl-shared.sh b/variants/linuxarm64-gpl-shared.sh new file mode 100644 index 0000000..ca8fbb2 --- /dev/null +++ b/variants/linuxarm64-gpl-shared.sh @@ -0,0 +1,3 @@ +#!/bin/bash +source "$(dirname "$BASH_SOURCE")"/linux-install-shared.sh +source "$(dirname "$BASH_SOURCE")"/defaults-gpl-shared.sh diff --git a/variants/linuxarm64-gpl.sh b/variants/linuxarm64-gpl.sh new file mode 100644 index 0000000..bd5fc12 --- /dev/null +++ b/variants/linuxarm64-gpl.sh @@ -0,0 +1,3 @@ +#!/bin/bash +source "$(dirname "$BASH_SOURCE")"/linux-install-static.sh +source "$(dirname "$BASH_SOURCE")"/defaults-gpl.sh diff --git a/variants/linuxarm64-lgpl-shared.sh b/variants/linuxarm64-lgpl-shared.sh new file mode 100644 index 0000000..33244aa --- /dev/null +++ b/variants/linuxarm64-lgpl-shared.sh @@ -0,0 +1,3 @@ +#!/bin/bash +source "$(dirname "$BASH_SOURCE")"/linux-install-shared.sh +source "$(dirname "$BASH_SOURCE")"/defaults-lgpl-shared.sh diff --git a/variants/linuxarm64-lgpl.sh b/variants/linuxarm64-lgpl.sh new file mode 100644 index 0000000..da1f9b7 --- /dev/null +++ b/variants/linuxarm64-lgpl.sh @@ -0,0 +1,3 @@ +#!/bin/bash +source "$(dirname "$BASH_SOURCE")"/linux-install-static.sh +source "$(dirname "$BASH_SOURCE")"/defaults-lgpl.sh diff --git a/variants/linuxarm64-nonfree-shared.sh b/variants/linuxarm64-nonfree-shared.sh new file mode 100644 index 0000000..ec9e7f4 --- /dev/null +++ b/variants/linuxarm64-nonfree-shared.sh @@ -0,0 +1,3 @@ +#!/bin/bash +source "$(dirname "$BASH_SOURCE")"/linuxarm64-gpl-shared.sh +FF_CONFIGURE="--enable-nonfree $FF_CONFIGURE" diff --git a/variants/linuxarm64-nonfree.sh b/variants/linuxarm64-nonfree.sh new file mode 100644 index 0000000..d6bd88b --- /dev/null +++ b/variants/linuxarm64-nonfree.sh @@ -0,0 +1,4 @@ +#!/bin/bash +source "$(dirname "$BASH_SOURCE")"/linuxarm64-gpl.sh +FF_CONFIGURE="--enable-nonfree $FF_CONFIGURE" +LICENSE_FILE="" diff --git a/variants/win32-gpl.sh b/variants/win32-gpl.sh index b3003a4..d629915 100644 --- a/variants/win32-gpl.sh +++ b/variants/win32-gpl.sh @@ -1,3 +1,3 @@ #!/bin/bash -source "$(dirname "$BASH_SOURCE")"/default-install.sh +source "$(dirname "$BASH_SOURCE")"/windows-install-static.sh source "$(dirname "$BASH_SOURCE")"/defaults-gpl.sh diff --git a/variants/win32-lgpl.sh b/variants/win32-lgpl.sh index f000a33..f360d75 100644 --- a/variants/win32-lgpl.sh +++ b/variants/win32-lgpl.sh @@ -1,3 +1,3 @@ #!/bin/bash -source "$(dirname "$BASH_SOURCE")"/default-install.sh +source "$(dirname "$BASH_SOURCE")"/windows-install-static.sh source "$(dirname "$BASH_SOURCE")"/defaults-lgpl.sh diff --git a/variants/win64-gpl.sh b/variants/win64-gpl.sh index b3003a4..d629915 100644 --- a/variants/win64-gpl.sh +++ b/variants/win64-gpl.sh @@ -1,3 +1,3 @@ #!/bin/bash -source "$(dirname "$BASH_SOURCE")"/default-install.sh +source "$(dirname "$BASH_SOURCE")"/windows-install-static.sh source "$(dirname "$BASH_SOURCE")"/defaults-gpl.sh diff --git a/variants/win64-lgpl.sh b/variants/win64-lgpl.sh index f000a33..f360d75 100644 --- a/variants/win64-lgpl.sh +++ b/variants/win64-lgpl.sh @@ -1,3 +1,3 @@ #!/bin/bash -source "$(dirname "$BASH_SOURCE")"/default-install.sh +source "$(dirname "$BASH_SOURCE")"/windows-install-static.sh source "$(dirname "$BASH_SOURCE")"/defaults-lgpl.sh diff --git a/variants/windows-install-shared.sh b/variants/windows-install-shared.sh index d44677b..a7e7539 100644 --- a/variants/windows-install-shared.sh +++ b/variants/windows-install-shared.sh @@ -11,6 +11,14 @@ package_variant() { cp "$IN"/bin/*.lib "$OUT"/lib cp "$IN"/lib/*.{def,dll.a} "$OUT"/lib + mkdir -p "$OUT"/lib/pkgconfig + cp -a "$IN"/lib/pkgconfig/*.pc "$OUT"/lib/pkgconfig + sed -i \ + -e 's|^prefix=.*|prefix=${pcfiledir}/../..|' \ + -e 's|/ffbuild/prefix|${prefix}|' \ + -e '/Libs.private:/d' \ + "$OUT"/lib/pkgconfig/*.pc + mkdir -p "$OUT"/include cp -r "$IN"/include/* "$OUT"/include diff --git a/variants/default-install.sh b/variants/windows-install-static.sh similarity index 100% rename from variants/default-install.sh rename to variants/windows-install-static.sh