summaryrefslogtreecommitdiffstats
path: root/taskcluster/scripts/misc/wrench-macos-build.sh
blob: 43842d4510c2a0f1ea8be4cbbbf7b484813032bf (plain)
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
#!/bin/bash
set -x -e -v

source ${GECKO_PATH}/taskcluster/scripts/misc/wr-macos-cross-build-setup.sh

# The osmesa-src build which we do as part of the headless build below
# doesn't seem to always use CFLAGS/CXXFLAGS where expected. Instead we
# just squash those flags into CC/CXX and everything works out.
# Export HOST_CC and HOST_CXX without the squashed flags, so that host
# builds use them and don't see the target flags.
export HOST_CC="${CC}"
export HOST_CXX="${CXX}"
CFLAGS_VAR="CFLAGS_${TARGET_TRIPLE//-/_}"
CXXFLAGS_VAR="CXXFLAGS_${TARGET_TRIPLE//-/_}"
export CC="${CC} ${!CFLAGS_VAR}"
export ${CFLAGS_VAR}=
export CXX="${CXX} ${!CXXFLAGS_VAR}"
export ${CXXFLAGS_VAR}=

export MESON_CROSSFILE=${GECKO_PATH}/gfx/wr/ci-scripts/etc/wr-darwin.meson
export UPLOAD_DIR="${HOME}/artifacts"
mkdir -p "${UPLOAD_DIR}"

# Do a cross-build without the `headless` feature
pushd "${GECKO_PATH}/gfx/wr/wrench"
cargo build --release -vv --frozen --target=${TARGET_TRIPLE}
# Package up the resulting wrench binary
cd "../target/${TARGET_TRIPLE}"
mkdir -p wrench-macos/bin
mv release/wrench wrench-macos/bin/
tar cjf wrench-macos.tar.bz2 wrench-macos
mv wrench-macos.tar.bz2 "${UPLOAD_DIR}"
# Clean the build
cd "${GECKO_PATH}/gfx/wr"
rm -rf target
popd

# Do a cross-build with the `headless` feature
pushd "${GECKO_PATH}/gfx/wr/wrench"
cargo build --release -vv --frozen --target=${TARGET_TRIPLE} --features headless
# Package up the wrench binary and some libraries that we will need
cd "../target/${TARGET_TRIPLE}"

# Copy the native macOS libLLVM as dynamic dependency
cp "${MOZ_FETCHES_DIR}/clang-mac/clang/lib/libLLVM.dylib" release/build/osmesa-src*/out/mesa/src/gallium/targets/osmesa/

mkdir wrench-macos-headless
mv release wrench-macos-headless/
tar cjf wrench-macos-headless.tar.bz2 \
    wrench-macos-headless/release/wrench \
    wrench-macos-headless/release/build/osmesa-src*/out/mesa/src/gallium/targets/osmesa \
    wrench-macos-headless/release/build/osmesa-src*/out/mesa/src/mapi/shared-glapi
mv wrench-macos-headless.tar.bz2 "${UPLOAD_DIR}"

# Clean the build
cd "${GECKO_PATH}/gfx/wr"
rm -rf target
popd