u-boot/test/stdint/test-includes.sh
Simon Glass b01495e644 test: Add a simple test to detected warnings with uint64_t, uintptr_t
These types are problematic because they are typically declared in a
non-standard way in U-Boot. For example, U-Boot uses 'long long' for
int64_t even on a 64-bit machine whereas stdint.h uses 'long'.
Similarly, U-Boot always uses 'long' for intptr_t whereas stdint.h mostly
uses 'int'.

This simple test script runs a few toolchains on a few archs to check for
warnings.

Signed-off-by: Simon Glass <sjg@chromium.org>
2014-10-27 11:04:01 -04:00

58 lines
1.3 KiB
Bash
Executable file

#!/bin/bash
# Test script to check uintptr_t and 64-bit types for warnings
#
# It builds a few boards with different toolchains. If there are no warnings
# then all is well.
#
# Usage:
#
# Make sure that your toolchains are correct at the bottom of this file
#
# Then:
# ./test/stdint/test-includes.sh
out=/tmp/test-includes.tmp
try_test() {
local board=$1
local arch=$2
local soc=$3
local gcc=$4
local flags="$5"
echo $@
if ! which ${gcc} >/dev/null 2>&1; then
echo "Not found: ${gcc}"
return
fi
rm -rf ${out}
mkdir -p ${out}
touch ${out}/config.h
mkdir -p ${out}/generated
touch ${out}/generated/generic-asm-offsets.h
mkdir -p ${out}/include/asm
ln -s $(pwd)/arch/${arch}/include/asm/arch-${soc} \
${out}/include/asm/arch
cmd="${gcc} -c -D__KERNEL__ ${flags} \
-fno-builtin -ffreestanding \
-Iarch/${arch}/include \
-Iinclude \
-I${out} -I${out}/include \
-include configs/${board}.h test/stdint/int-types.c \
-o /dev/null"
$cmd
}
# Run a test with and without CONFIG_USE_STDINT
try_both() {
try_test $@
try_test $@ -DCONFIG_USE_STDINT
}
# board arch soc path-to-gcc
try_both sandbox sandbox - gcc
try_both coreboot x86 - x86_64-linux-gnu-gcc
try_both seaboard arm tegra20 /opt/linaro/gcc-linaro-arm-linux-gnueabihf-4.8-2013.08_linux/bin/arm-linux-gnueabihf-gcc