1
0
mirror of https://github.com/google/cpu_features.git synced 2025-07-01 05:11:15 +02:00

Test travis cross compilation

This commit is contained in:
Guillaume Chatelet
2018-02-14 09:41:51 +01:00
parent 36df25b7bc
commit a25b5cbe7e
5 changed files with 147 additions and 10 deletions

47
scripts/run_integration.sh Executable file
View File

@ -0,0 +1,47 @@
#!/bin/bash
export BUILD_DIR=cmake_build
export CMAKE_ARGS="-DCMAKE_BUILD_TYPE=Debug -DBUILD_TESTING=ON -H. -B${BUILD_DIR}"
SCRIPT_FOLDER=$(cd -P -- "$(dirname -- "$0")" && pwd -P)
PROJECT_FOLDER=${SCRIPT_FOLDER}/..
cd ${PROJECT_FOLDER}
if [[ -n "${CROSS_COMPILE}" ]]; then
# Cross compilation
: "${TOOLCHAIN_NAME:?Need to set TOOLCHAIN_NAME non-empty}"
: "${TARGET:?Need to set TARGET non-empty}"
: "${QEMU_ARCH:?Need to set QEMU_ARCH non-empty}"
${SCRIPT_FOLDER}/setup_qemu.sh
${SCRIPT_FOLDER}/setup_toolchain.sh
export TOOLCHAIN=${HOME}/${TOOLCHAIN_NAME}
export PATH=${TOOLCHAIN}/bin:${HOME}/qemu/bin:${PATH}
export CMAKE_TOOLCHAIN_FILE=cmake/${TARGET}.cmake
if [[ ! -f ${CMAKE_TOOLCHAIN_FILE} ]]; then
echo "Missing cmake toolchain file : $CMAKE_TOOLCHAIN_FILE"
exit 1
fi
# Generate makefile
cmake ${CMAKE_ARGS} -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}
# Compile
cmake --build ${BUILD_DIR} --target all
# Run tests
export QEMU=qemu-${QEMU_ARCH}
export QEMU_LD_PREFIX=${TOOLCHAIN}/${TARGET}/libc
export LD_LIBRARY_PATH=${TOOLCHAIN}/${TARGET}/libc
for test_binary in ${BUILD_DIR}/test/*_test; do
${QEMU} ${test_binary}
done
# Run demo program
${QEMU} ${BUILD_DIR}/list_cpu_features
else
# Native compilation
# Generate makefile
cmake ${CMAKE_ARGS}
# Compile
cmake --build ${BUILD_DIR} --target all
# Run tests
CTEST_OUTPUT_ON_FAILURE=1 cmake --build ${BUILD_DIR} --target test
# Run demo program
${BUILD_DIR}/list_cpu_features
fi

40
scripts/setup_qemu.sh Executable file
View File

@ -0,0 +1,40 @@
#!/bin/bash
set -e
VERSION=${QEMU_VERSION:=2.11.0}
ARCHES=${QEMU_ARCHES:=arm aarch64 i386 x86_64 mipsel}
TARGETS=${QEMU_TARGETS:=$(echo $ARCHES | sed 's#$# #;s#\([^ ]*\) #\1-softmmu \1-linux-user #g')}
if echo "$VERSION $TARGETS" | cmp --silent $HOME/qemu/.build -; then
echo "qemu $VERSION up to date!"
exit 0
fi
echo "VERSION: $VERSION"
echo "TARGETS: $TARGETS"
cd $HOME
rm -rf qemu
# Checking for a tarball before downloading makes testing easier :-)
test -f "qemu-$VERSION.tar.xz" || wget "http://wiki.qemu-project.org/download/qemu-$VERSION.tar.xz"
tar -xJf "qemu-$VERSION.tar.xz"
cd "qemu-$VERSION"
./configure \
--prefix="$HOME/qemu" \
--target-list="$TARGETS" \
--disable-docs \
--disable-sdl \
--disable-gtk \
--disable-gnutls \
--disable-gcrypt \
--disable-nettle \
--disable-curses \
--static
make -j4
make install
echo "$VERSION $TARGETS" > $HOME/qemu/.build

20
scripts/setup_toolchain.sh Executable file
View File

@ -0,0 +1,20 @@
#!/bin/bash
set -e
: "${TOOLCHAIN_NAME:?Need to set TOOLCHAIN_NAME non-empty}"
: "${TARGET:?Need to set TARGET non-empty}"
if [[ -d "$HOME/${TOOLCHAIN_NAME}/${TARGET}" ]] ; then
echo "toolchain ${TOOLCHAIN_NAME} ${TARGET} exists!"
exit 0
fi
export ARCHIVE_NAME=${TOOLCHAIN_NAME}.tar.xz
echo "TOOLCHAIN: $TOOLCHAIN_NAME"
echo "TARGET : $TARGET"
cd $HOME
test -f "${ARCHIVE_NAME}" || wget https://releases.linaro.org/components/toolchain/binaries/latest/${TARGET}/${ARCHIVE_NAME}
tar -xJf ${ARCHIVE_NAME}