forked from kleisauke/libvips-packaging
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathbuild.sh
More file actions
executable file
·104 lines (88 loc) · 2.91 KB
/
Copy pathbuild.sh
File metadata and controls
executable file
·104 lines (88 loc) · 2.91 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
#!/usr/bin/env bash
set -e
## Copyright 2017 Lovell Fuller and others.
## SPDX-License-Identifier: Apache-2.0
# Dependency version numbers
source ./versions.properties
if [ $# -lt 1 ]; then
echo
echo "Usage: $0 PLATFORM"
echo "Build shared libraries for libvips and its dependencies"
echo
echo "Possible values for PLATFORM are:"
echo "- linux-x64"
echo "- linux-arm"
echo "- linux-arm64"
echo "- linux-musl-x64"
echo "- linux-musl-arm64"
echo "- win-x64"
echo "- win-x64.net462"
echo "- win-x86"
echo "- win-x86.net462"
echo "- win-arm64"
echo "- win-arm64.net481"
echo "- osx-x64"
echo "- osx-arm64"
echo
exit 1
fi
PLATFORM="$1"
# macOS
# Note: we intentionally don't build these binaries inside a Docker container
for flavour in osx-x64 osx-arm64; do
if [ $PLATFORM = $flavour ] && [ "$(uname)" == "Darwin" ]; then
echo "Building $flavour..."
# Use Clang provided by XCode
export CC="clang"
export CXX="clang++"
export PLATFORM
# Use pkg-config provided by Homebrew
export PKG_CONFIG="$(brew --prefix)/bin/pkg-config --static"
# Earliest supported version of macOS
if [ $PLATFORM = "osx-arm64" ]; then
export MACOSX_DEPLOYMENT_TARGET="11.0"
else
export MACOSX_DEPLOYMENT_TARGET="10.15"
fi
# 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="-fno-stack-check"
# Prevent use of API newer than the deployment target
export FLAGS+=" -Werror=unguarded-availability-new"
export MESON="--cross-file=$PWD/platforms/$PLATFORM/meson.ini"
source $PWD/versions.properties
source $PWD/build/posix.sh
exit 0
fi
done
# Is docker available?
if ! [ -x "$(command -v docker)" ]; then
echo "Please install docker"
exit 1
fi
# Windows (x64, x86 and arm64)
for flavour in win-x64 win-x64.net462 win-x86 win-x86.net462 win-arm64 win-arm64.net481; do
if [ $PLATFORM = "all" ] || [ $PLATFORM = $flavour ]; then
echo "Building $flavour..."
docker build --pull -t vips-dev-win32 platforms/win32
docker run --rm -e "PLATFORM=$flavour" -v $PWD:/packaging vips-dev-win32 sh -c "/packaging/build/win.sh"
fi
done
CACHE_ARGS=()
# Reuse BuildKit cache from previous linux-arm builds in GitHub Actions.
if [ $PLATFORM = "linux-arm" ] && [ -n "$GITHUB_ACTIONS" ]; then
CACHE_ARGS=(
--cache-from "type=gha,scope=$PLATFORM"
--cache-to "type=gha,scope=$PLATFORM,mode=max"
)
fi
# Linux (x64, ARMv7 and ARM64v8)
for flavour in linux-x64 linux-arm linux-arm64 linux-musl-x64 linux-musl-arm64; do
if [ $PLATFORM = "all" ] || [ $PLATFORM = $flavour ]; then
echo "Building $flavour..."
docker build --pull "${CACHE_ARGS[@]}" -t vips-dev-$flavour platforms/$flavour
docker run --rm -v $PWD:/packaging vips-dev-$flavour sh -c "/packaging/build/posix.sh"
fi
done