#!/usr/bin/env bash set -e if [ $# -lt 1 ]; then echo echo "Usage: $0 VERSION [PLATFORM]" echo "Build shared libraries for libvips and its dependencies via containers" echo echo "Please specify the libvips VERSION, e.g. 8.9.2" echo echo "Optionally build for only one PLATFORM, defaults to building for all" echo echo "Possible values for PLATFORM are:" echo "- win32-ia32" echo "- win32-x64" echo "- win32-arm64v8" echo "- linux-x64" echo "- linuxmusl-x64" echo "- linux-armv6" echo "- linux-armv7" echo "- linux-arm64v8" echo "- darwin-x64" echo exit 1 fi VERSION_VIPS="$1" PLATFORM="${2:-all}" # macOS # Note: we intentionally don't build these binaries inside a Docker container if [ $PLATFORM = "darwin-x64" ] && [ "$(uname)" == "Darwin" ]; then # Use Clang provided by XCode export CC="clang" export CXX="clang++" export VERSION_VIPS export PLATFORM # 10.9 should be a good minimal release target export MACOSX_DEPLOYMENT_TARGET="10.9" # Added -fno-stack-check to workaround a stack misalignment bug on macOS 10.15 # See: # https://forums.developer.apple.com/thread/121887 # https://trac.ffmpeg.org/ticket/8073#comment:12 export FLAGS="-O3 -fPIC -fno-stack-check" . $PWD/build/mac.sh exit 0 fi # Is podman available? if ! [ -x "$(command -v podman)" ]; then echo "Please install podman" exit 1 fi # Update base images for baseimage in centos:7 debian:buster debian:bullseye alpine:3.11; do podman pull $baseimage done # Windows # Linux (x64, ARMv6, ARMv7, ARM64v8) for flavour in linux-x64 linuxmusl-x64 linux-armv6 linux-armv7 linux-arm64v8; do if [ $PLATFORM = "all" ] || [ $PLATFORM = $flavour ]; then echo "Building $flavour..." podman build -t vips-dev-$flavour $flavour podman run --rm -e "VERSION_VIPS=${VERSION_VIPS}" -v $PWD:/packaging vips-dev-$flavour /bin/bash "/packaging/build/lin.sh" fi done # Display checksums sha256sum *.tar.{br,gz}