|
| 1 | +# syntax=docker/dockerfile:1 |
| 2 | + |
| 3 | +# bump: xeve /XEVE_VERSION=([\d.]+)/ https://github.com/mpeg5/xeve.git|* |
| 4 | +# bump: xeve after ./hashupdate Dockerfile XEVE $LATEST |
| 5 | +# bump: xeve link "CHANGELOG" https://github.com/mpeg5/xeve/releases/tag/v$LATEST |
| 6 | +ARG XEVE_VERSION=0.5.1 |
| 7 | +ARG XEVE_URL="https://github.com/mpeg5/xeve/archive/refs/tags/v$XEVE_VERSION.tar.gz" |
| 8 | +ARG XEVE_SHA256=238c95ddd1a63105913d9354045eb329ad9002903a407b5cf1ab16bad324c245 |
| 9 | + |
| 10 | +# Must be specified |
| 11 | +ARG ALPINE_VERSION |
| 12 | + |
| 13 | +FROM alpine:${ALPINE_VERSION} AS base |
| 14 | + |
| 15 | +FROM base AS download |
| 16 | +ARG XEVE_URL |
| 17 | +ARG XEVE_SHA256 |
| 18 | +ARG WGET_OPTS="--retry-on-host-error --retry-on-http-error=429,500,502,503 -nv" |
| 19 | +WORKDIR /tmp |
| 20 | +RUN \ |
| 21 | + apk add --no-cache --virtual download \ |
| 22 | + coreutils wget tar && \ |
| 23 | + wget $WGET_OPTS -O xeve.tar.gz "$XEVE_URL" && \ |
| 24 | + echo "$XEVE_SHA256 xeve.tar.gz" | sha256sum --status -c - && \ |
| 25 | + mkdir xeve && \ |
| 26 | + tar xf xeve.tar.gz -C xeve --strip-components=1 && \ |
| 27 | + rm xeve.tar.gz && \ |
| 28 | + apk del download |
| 29 | + |
| 30 | +FROM base AS build |
| 31 | +COPY --from=download /tmp/xeve/ /tmp/xeve/ |
| 32 | +ARG TARGETPLATFORM |
| 33 | +ARG XEVE_VERSION |
| 34 | +WORKDIR /tmp/xeve |
| 35 | +RUN \ |
| 36 | + case ${TARGETPLATFORM} in \ |
| 37 | + linux/arm/v*) \ |
| 38 | + mkdir -p /usr/local/lib/pkgconfig /usr/local/include /usr/local/lib/xeve && \ |
| 39 | + touch /usr/local/lib/pkgconfig/xeve.pc && \ |
| 40 | + touch /usr/local/lib/libxeve.a && \ |
| 41 | + touch /usr/local/include/xeve.h && \ |
| 42 | + exit 0 \ |
| 43 | + ;; \ |
| 44 | + esac && \ |
| 45 | + apk add --no-cache --virtual build \ |
| 46 | + build-base cmake pkgconf && \ |
| 47 | + echo v$XEVE_VERSION > version.txt && \ |
| 48 | + sed -i 's/mc_filter_bilin/xevem_mc_filter_bilin/' src_main/sse/xevem_mc_sse.c && \ |
| 49 | + mkdir build && cd build && \ |
| 50 | + cmake \ |
| 51 | + -G"Unix Makefiles" \ |
| 52 | + -DARM="$(if [ $(uname -m) = aarch64 ]; then echo TRUE; else echo FALSE; fi)" \ |
| 53 | + -DCMAKE_BUILD_TYPE=Release \ |
| 54 | + .. && \ |
| 55 | + make -j$(nproc) install && \ |
| 56 | + ln -sf /usr/local/lib/xeve/libxeve.a /usr/local/lib/libxeve.a && \ |
| 57 | + pkg-config --exists --modversion --path xeve && \ |
| 58 | + ar -t /usr/local/lib/libxeve.a && \ |
| 59 | + readelf -h /usr/local/lib/libxeve.a && \ |
| 60 | + apk del build |
| 61 | + |
| 62 | +FROM scratch |
| 63 | +ARG XEVE_VERSION |
| 64 | +COPY --from=build /usr/local/lib/pkgconfig/xeve.pc /usr/local/lib/pkgconfig/xeve.pc |
| 65 | +COPY --from=build /usr/local/lib/libxeve.a /usr/local/lib/libxeve.a |
| 66 | +COPY --from=build /usr/local/include/ /usr/local/include/ |
0 commit comments