1#!/bin/bash
2set -e
3
4# test locally
5TESTDIR=build_test
6rm -rf "$TESTDIR"
7# run client tests with ASAN enabled
8meson "$TESTDIR" -Db_sanitize=address
9ninja -C"$TESTDIR" test
10
11# test server
12GRADLE=${GRADLE:-./gradlew}
13$GRADLE -p server check
14
15BUILDDIR=build_release
16rm -rf "$BUILDDIR"
17meson "$BUILDDIR" --buildtype release --strip -Db_lto=true
18cd "$BUILDDIR"
19ninja
20cd -
21
22# build Windows releases
23make -f Makefile.CrossWindows
24
25# the generated server must be the same everywhere
26cmp "$BUILDDIR/server/scrcpy-server.jar" dist/scrcpy-win32/scrcpy-server.jar
27cmp "$BUILDDIR/server/scrcpy-server.jar" dist/scrcpy-win64/scrcpy-server.jar
28
29# get version name
30TAG=$(git describe --tags --always)
31
32# create release directory
33mkdir -p "release-$TAG"
34cp "$BUILDDIR/server/scrcpy-server.jar" "release-$TAG/scrcpy-server-$TAG.jar"
35cp "dist/scrcpy-win32-$TAG.zip" "release-$TAG/"
36cp "dist/scrcpy-win64-$TAG.zip" "release-$TAG/"
37
38# generate checksums
39cd "release-$TAG"
40sha256sum "scrcpy-server-$TAG.jar" \
41          "scrcpy-win32-$TAG.zip" \
42          "scrcpy-win64-$TAG.zip" > SHA256SUMS.txt
43
44echo "Release generated in release-$TAG/"
45