blob: 396ee9da9e119676b19b2f619c0ab68943b1a9e1 [file] [log] [blame]
Patrick Georgi5ac6a632020-10-28 17:29:38 +01001#!/bin/sh
2set -e
3
Nico Huber819ba502023-03-07 22:59:01 +00004TEMP_DIR=$(mktemp -d)
5trap "rm -rf ${TEMP_DIR}" EXIT
6
Nico Huber4eb97482024-04-21 21:44:33 +02007dd bs=$((128*1024)) count=1 </dev/urandom >"${TEMP_DIR}/rand"
8dd bs=$((128*1024)) count=1 </dev/urandom >"${TEMP_DIR}/rand2"
9dd bs=$((128*1024)) count=1 </dev/zero | tr '\000' '\377' >"${TEMP_DIR}/empty"
Nico Huber819ba502023-03-07 22:59:01 +000010
Nico Huber4eb97482024-04-21 21:44:33 +020011test_prog() {
12 prog="$1"
Nico Huber819ba502023-03-07 22:59:01 +000013
Nico Huber72b30a02024-04-21 21:59:19 +020014 if [ "${CROSS_COMPILE}" ]; then
15 return 0
16 fi
17
Nico Huber4eb97482024-04-21 21:44:33 +020018 "${prog}" -p dummy:emulate=M25P10.RES,image="${TEMP_DIR}/image" -w "${TEMP_DIR}/rand"
19 "${prog}" -p dummy:emulate=M25P10.RES,image="${TEMP_DIR}/image" -r "${TEMP_DIR}/bak"
20 cmp "${TEMP_DIR}/rand" "${TEMP_DIR}/bak"
Nico Huber7a480312023-04-10 14:54:22 +020021
Nico Huber4eb97482024-04-21 21:44:33 +020022 "${prog}" -p dummy:emulate=M25P10.RES,image="${TEMP_DIR}/image" -c M25P10 -w "${TEMP_DIR}/rand2"
23 "${prog}" -p dummy:emulate=M25P10.RES,image="${TEMP_DIR}/image" -c M25P10 -v "${TEMP_DIR}/rand2"
24
25 "${prog}" -p dummy:emulate=M25P10.RES,image="${TEMP_DIR}/image" -c M25P10 -E
26 "${prog}" -p dummy:emulate=M25P10.RES,image="${TEMP_DIR}/image" -c M25P10 -v "${TEMP_DIR}/empty"
27}
28
Nico Huber906f6932025-03-01 16:39:22 +010029build_and_test() {
30 if [ "${MAKECMD=make}" ]; then
31 ${MAKECMD} clean
32 eval ${MAKECMD} -j${CPUS:-$(nproc)} CC="\"${CC}\"" ${MAKEARGS-CONFIG_EVERYTHING=yes}
33 test_prog ./flashprog
Nico Huberc7b549e2023-03-19 14:27:43 +000034 fi
Nico Huber906f6932025-03-01 16:39:22 +010035
36 if [ "${MESONCMD=meson}" ]; then
37 eval CC="\"${CC}\"" ${MESONCMD} setup ${MESONARGS--D programmer=all --buildtype release} "${TEMP_DIR}/build"
38 ninja ${CPUS:+-j${CPUS}} -C "${TEMP_DIR}/build"
39 test_prog "${TEMP_DIR}/build/flashprog"
40
41 if [ "${MAKECMD}" -a ! "${CROSS_COMPILE}" ]; then
42 ./flashprog -L >"${TEMP_DIR}/flashprog.supported"
43 "${TEMP_DIR}/build/flashprog" -L >"${TEMP_DIR}/mashprog.supported"
44 diff -u "${TEMP_DIR}/flashprog.supported" "${TEMP_DIR}/mashprog.supported"
45 fi
46 fi
47}
48
49CC="${CC:-ccache cc}"
50
51build_and_test
52if [ "${CC%%*cc}" = "" ] && \
53 [ -x "$(command -v clang 2>&1)" ] && \
54 ! "${CC}" --version 2>&1 | grep -iq clang 2>&1; then
55 if [ "${CC% *cc}" != "${CC}" ]; then
56 CC="${CC% *cc} clang"
57 else
58 CC="clang"
59 fi
60 rm -rf "${TEMP_DIR}/build"
61 build_and_test
Nico Huber3d2f2122024-04-21 21:54:15 +020062fi