mirror of
https://github.com/google/cpu_features.git
synced 2025-04-27 15:12:30 +02:00
Fix mips qemu (#61)
* Fix continuous integration for mips * Fix MSVC build * Fix MSVC build
This commit is contained in:
parent
9917e8481e
commit
53ea243a62
19
.travis.yml
19
.travis.yml
@ -94,8 +94,23 @@ matrix:
|
||||
- os: linux
|
||||
env:
|
||||
TOOLCHAIN=CODESCAPE
|
||||
TARGET=mips-mti-linux-gnu
|
||||
QEMU_ARCH=DISABLED
|
||||
TARGET=mips32
|
||||
QEMU_ARCH=mips
|
||||
- os: linux
|
||||
env:
|
||||
TOOLCHAIN=CODESCAPE
|
||||
TARGET=mips32el
|
||||
QEMU_ARCH=mipsel
|
||||
- os: linux
|
||||
env:
|
||||
TOOLCHAIN=CODESCAPE
|
||||
TARGET=mips64
|
||||
QEMU_ARCH=mips64
|
||||
- os: linux
|
||||
env:
|
||||
TOOLCHAIN=CODESCAPE
|
||||
TARGET=mips64el
|
||||
QEMU_ARCH=mips64el
|
||||
|
||||
script:
|
||||
- cmake --version
|
||||
|
@ -1,34 +0,0 @@
|
||||
set(CMAKE_SYSTEM_NAME "Linux")
|
||||
set(CMAKE_SYSTEM_PROCESSOR "mips32")
|
||||
|
||||
if (ENABLE_DSPR2 AND ENABLE_MSA)
|
||||
message(FATAL_ERROR "ENABLE_DSPR2 and ENABLE_MSA cannot be combined.")
|
||||
endif ()
|
||||
|
||||
if (ENABLE_DSPR2)
|
||||
set(HAVE_DSPR2 1 CACHE BOOL "" FORCE)
|
||||
set(MIPS_CFLAGS "-mdspr2")
|
||||
set(MIPS_CXXFLAGS "-mdspr2")
|
||||
elseif (ENABLE_MSA)
|
||||
set(HAVE_MSA 1 CACHE BOOL "" FORCE)
|
||||
set(MIPS_CFLAGS "-mmsa")
|
||||
set(MIPS_CXXFLAGS "-mmsa")
|
||||
endif ()
|
||||
|
||||
if ("${MIPS_CPU}" STREQUAL "")
|
||||
set(MIPS_CFLAGS "${MIPS_CFLAGS} -mips32r2")
|
||||
set(MIPS_CXXFLAGS "${MIPS_CXXFLAGS} -mips32r2")
|
||||
elseif ("${MIPS_CPU}" STREQUAL "p5600")
|
||||
set(P56_FLAGS "-mips32r5 -mload-store-pairs -msched-weight -mhard-float -mfp64")
|
||||
set(MIPS_CFLAGS "${MIPS_CFLAGS} ${P56_FLAGS}")
|
||||
set(MIPS_CXXFLAGS "${MIPS_CXXFLAGS} ${P56_FLAGS}")
|
||||
set(CMAKE_EXE_LINKER_FLAGS "-mfp64 ${CMAKE_EXE_LINKER_FLAGS}")
|
||||
endif ()
|
||||
|
||||
set(CMAKE_C_COMPILER ${CROSS}gcc)
|
||||
set(CMAKE_CXX_COMPILER ${CROSS}g++)
|
||||
set(AS_EXECUTABLE ${CROSS}as)
|
||||
set(CMAKE_C_COMPILER_ARG1 "-EL ${MIPS_CFLAGS}")
|
||||
set(CMAKE_CXX_COMPILER_ARG1 "-EL ${MIPS_CXXFLAGS}")
|
||||
|
||||
set(THREADS_PTHREAD_ARG "2" CACHE STRING "Forcibly set by CMakeLists.txt." FORCE)
|
@ -33,7 +33,7 @@ function unpackifnotexists() {
|
||||
|
||||
function installqemuifneeded() {
|
||||
local VERSION=${QEMU_VERSION:=2.11.1}
|
||||
local ARCHES=${QEMU_ARCHES:=arm aarch64 i386 x86_64 mips mipsel}
|
||||
local ARCHES=${QEMU_ARCHES:=arm aarch64 i386 x86_64 mips mipsel mips64 mips64el}
|
||||
local TARGETS=${QEMU_TARGETS:=$(echo "$ARCHES" | sed 's#$# #;s#\([^ ]*\) #\1-linux-user #g')}
|
||||
|
||||
if echo "${VERSION} ${TARGETS}" | cmp --silent ${QEMU_INSTALL}/.build -; then
|
||||
@ -79,17 +79,17 @@ function integrate() {
|
||||
cd "${PROJECT_FOLDER}"
|
||||
case "${OS}" in
|
||||
"Windows_NT") CMAKE_BUILD_ARGS="--config Debug --target ALL_BUILD"
|
||||
CMAKE_TEST_ARGS="--config Debug --target RUN_TESTS"
|
||||
CMAKE_TEST_FILES="${BUILD_DIR}/test/Debug/*_test.exe"
|
||||
DEMO=${BUILD_DIR}/Debug/list_cpu_features.exe
|
||||
;;
|
||||
*) CMAKE_BUILD_ARGS="--target all"
|
||||
CMAKE_TEST_ARGS="--target test"
|
||||
CMAKE_TEST_FILES="${BUILD_DIR}/test/*_test"
|
||||
DEMO=${BUILD_DIR}/list_cpu_features
|
||||
;;
|
||||
esac
|
||||
|
||||
# Generating CMake configuration
|
||||
cmake -H. -B"${BUILD_DIR}" ${DEFAULT_CMAKE_ARGS} ${CMAKE_ADDITIONAL_ARGS} -G"${CMAKE_GENERATOR:-Unix Makefiles}"
|
||||
cmake -H. -B"${BUILD_DIR}" ${DEFAULT_CMAKE_ARGS} "${CMAKE_ADDITIONAL_ARGS[@]}" -G"${CMAKE_GENERATOR:-Unix Makefiles}"
|
||||
|
||||
# Building
|
||||
cmake --build "${BUILD_DIR}" ${CMAKE_BUILD_ARGS}
|
||||
@ -101,10 +101,10 @@ function integrate() {
|
||||
RUN_CMD=""
|
||||
if [[ -n "${QEMU_ARCH}" ]]; then
|
||||
installqemuifneeded
|
||||
RUN_CMD="${QEMU_INSTALL}/bin/qemu-${QEMU_ARCH} ${QEMU_ARGS}"
|
||||
RUN_CMD="${QEMU_INSTALL}/bin/qemu-${QEMU_ARCH} ${QEMU_ARGS[@]}"
|
||||
fi
|
||||
for test_binary in ${BUILD_DIR}/test/*_test; do
|
||||
${RUN_CMD} ${test_binary} &
|
||||
for test_binary in ${CMAKE_TEST_FILES}; do
|
||||
${RUN_CMD} ${test_binary}
|
||||
done
|
||||
${RUN_CMD} ${DEMO}
|
||||
}
|
||||
@ -124,19 +124,19 @@ function expand_linaro_config() {
|
||||
local SYSROOT_FOLDER=${ARCHIVE_FOLDER}/${SYSROOT_RELATIVE_FOLDER}
|
||||
local GCC_FOLDER=${ARCHIVE_FOLDER}/${GCC_RELATIVE_FOLDER}
|
||||
|
||||
CMAKE_ADDITIONAL_ARGS+=" -DCMAKE_SYSTEM_NAME=Linux"
|
||||
CMAKE_ADDITIONAL_ARGS+=" -DCMAKE_SYSTEM_PROCESSOR=${TARGET}"
|
||||
CMAKE_ADDITIONAL_ARGS+=(-DCMAKE_SYSTEM_NAME=Linux)
|
||||
CMAKE_ADDITIONAL_ARGS+=(-DCMAKE_SYSTEM_PROCESSOR=${TARGET})
|
||||
|
||||
CMAKE_ADDITIONAL_ARGS+=" -DCMAKE_SYSROOT=${SYSROOT_FOLDER}"
|
||||
CMAKE_ADDITIONAL_ARGS+=" -DCMAKE_C_COMPILER=${GCC_FOLDER}/bin/${TARGET}-gcc"
|
||||
CMAKE_ADDITIONAL_ARGS+=" -DCMAKE_CXX_COMPILER=${GCC_FOLDER}/bin/${TARGET}-g++"
|
||||
CMAKE_ADDITIONAL_ARGS+=(-DCMAKE_SYSROOT=${SYSROOT_FOLDER})
|
||||
CMAKE_ADDITIONAL_ARGS+=(-DCMAKE_C_COMPILER=${GCC_FOLDER}/bin/${TARGET}-gcc)
|
||||
CMAKE_ADDITIONAL_ARGS+=(-DCMAKE_CXX_COMPILER=${GCC_FOLDER}/bin/${TARGET}-g++)
|
||||
|
||||
CMAKE_ADDITIONAL_ARGS+=" -DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM=NEVER"
|
||||
CMAKE_ADDITIONAL_ARGS+=" -DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=ONLY"
|
||||
CMAKE_ADDITIONAL_ARGS+=" -DCMAKE_FIND_ROOT_PATH_MODE_PACKAGE=ONLY"
|
||||
CMAKE_ADDITIONAL_ARGS+=(-DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM=NEVER)
|
||||
CMAKE_ADDITIONAL_ARGS+=(-DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=ONLY)
|
||||
CMAKE_ADDITIONAL_ARGS+=(-DCMAKE_FIND_ROOT_PATH_MODE_PACKAGE=ONLY)
|
||||
|
||||
QEMU_ARGS+=" -L ${SYSROOT_FOLDER}"
|
||||
QEMU_ARGS+=" -E LD_LIBRARY_PATH=/lib"
|
||||
QEMU_ARGS+=(-L ${SYSROOT_FOLDER})
|
||||
QEMU_ARGS+=(-E LD_LIBRARY_PATH=/lib)
|
||||
}
|
||||
|
||||
function expand_codescape_config() {
|
||||
@ -144,20 +144,36 @@ function expand_codescape_config() {
|
||||
local DATE=2017.10-08
|
||||
local CODESCAPE_URL=https://codescape.mips.com/components/toolchain/${DATE}/Codescape.GNU.Tools.Package.${DATE}.for.MIPS.MTI.Linux.CentOS-5.x86_64.tar.gz
|
||||
local GCC_URL=${CODESCAPE_URL}
|
||||
local GCC_RELATIVE_FOLDER=${TARGET}/${DATE}
|
||||
local GCC_RELATIVE_FOLDER="mips-mti-linux-gnu/${DATE}"
|
||||
unpackifnotexists "${GCC_URL}" "${GCC_RELATIVE_FOLDER}"
|
||||
|
||||
CMAKE_ADDITIONAL_ARGS+=" -DENABLE_MSA=1"
|
||||
CMAKE_ADDITIONAL_ARGS+=" -DMIPS_CPU=p5600"
|
||||
CMAKE_ADDITIONAL_ARGS+=" -DCMAKE_TOOLCHAIN_FILE=cmake/mips32-linux-gcc.cmake"
|
||||
CMAKE_ADDITIONAL_ARGS+=" -DCROSS=${TARGET}-"
|
||||
CMAKE_ADDITIONAL_ARGS+=" -DCMAKE_FIND_ROOT_PATH=${ARCHIVE_FOLDER}/${GCC_RELATIVE_FOLDER}"
|
||||
local GCC_FOLDER=${ARCHIVE_FOLDER}/${GCC_RELATIVE_FOLDER}
|
||||
CMAKE_ADDITIONAL_ARGS+=(-DCMAKE_FIND_ROOT_PATH=${GCC_FOLDER})
|
||||
|
||||
local FLAVOUR=${QEMU_ARCH}-r2-hard
|
||||
local SYSROOT_FOLDER=${ARCHIVE_FOLDER}/${GCC_RELATIVE_FOLDER}/sysroot/${FLAVOUR}
|
||||
QEMU_ARGS+=" -L ${SYSROOT_FOLDER}"
|
||||
QEMU_ARGS+=" -E LD_LIBRARY_PATH=/lib"
|
||||
QEMU_ARGS+=" -cpu P5600"
|
||||
CMAKE_ADDITIONAL_ARGS+=(-DCMAKE_SYSTEM_NAME=Linux)
|
||||
CMAKE_ADDITIONAL_ARGS+=(-DCMAKE_SYSTEM_PROCESSOR=${TARGET})
|
||||
|
||||
CMAKE_ADDITIONAL_ARGS+=(-DCMAKE_C_COMPILER=mips-mti-linux-gnu-gcc)
|
||||
CMAKE_ADDITIONAL_ARGS+=(-DCMAKE_CXX_COMPILER=mips-mti-linux-gnu-g++)
|
||||
|
||||
local MIPS_FLAGS=""
|
||||
local LIBC_FOLDER_SUFFIX=""
|
||||
local FLAVOUR=""
|
||||
case "${TARGET}" in
|
||||
"mips32") MIPS_FLAGS="-EB -mabi=32"; FLAVOUR="mips-r2-hard"; LIBC_FOLDER_SUFFIX="lib" ;;
|
||||
"mips32el") MIPS_FLAGS="-EL -mabi=32"; FLAVOUR="mipsel-r2-hard"; LIBC_FOLDER_SUFFIX="lib" ;;
|
||||
"mips64") MIPS_FLAGS="-EB -mabi=64"; FLAVOUR="mips-r2-hard"; LIBC_FOLDER_SUFFIX="lib64" ;;
|
||||
"mips64el") MIPS_FLAGS="-EL -mabi=64"; FLAVOUR="mipsel-r2-hard"; LIBC_FOLDER_SUFFIX="lib64" ;;
|
||||
*) echo 'unknown mips platform'; exit 1;;
|
||||
esac
|
||||
|
||||
CMAKE_ADDITIONAL_ARGS+=(-DCMAKE_C_COMPILER_ARG1="${MIPS_FLAGS}")
|
||||
CMAKE_ADDITIONAL_ARGS+=(-DCMAKE_CXX_COMPILER_ARG1="${MIPS_FLAGS}")
|
||||
|
||||
local SYSROOT_FOLDER=${GCC_FOLDER}/sysroot/${FLAVOUR}
|
||||
local LIBC_FOLDER=${GCC_FOLDER}/mips-mti-linux-gnu/lib/${FLAVOUR}/${LIBC_FOLDER_SUFFIX}
|
||||
QEMU_ARGS+=(-L ${SYSROOT_FOLDER})
|
||||
QEMU_ARGS+=(-E LD_PRELOAD=${LIBC_FOLDER}/libstdc++.so.6:${LIBC_FOLDER}/libgcc_s.so.1)
|
||||
}
|
||||
|
||||
function expand_environment_and_integrate() {
|
||||
@ -167,16 +183,14 @@ function expand_environment_and_integrate() {
|
||||
BUILD_DIR="${PROJECT_FOLDER}/cmake_build/${TARGET}"
|
||||
mkdir -p "${BUILD_DIR}"
|
||||
|
||||
CMAKE_ADDITIONAL_ARGS=""
|
||||
QEMU_ARGS=""
|
||||
declare -a CONFIG_NAMES=()
|
||||
declare -a QEMU_ARGS=()
|
||||
|
||||
case ${TOOLCHAIN} in
|
||||
LINARO) expand_linaro_config ;;
|
||||
CODESCAPE) expand_codescape_config ;;
|
||||
NATIVE) QEMU_ARCH="" ;;
|
||||
*)
|
||||
echo "Unknown toolchain '${TOOLCHAIN}'..."
|
||||
exit 1
|
||||
*) echo "Unknown toolchain '${TOOLCHAIN}'..."; exit 1;;
|
||||
esac
|
||||
integrate
|
||||
}
|
||||
|
@ -51,10 +51,28 @@ function set_armeb-linux-gnueabi() {
|
||||
QEMU_ARCH=DISABLED
|
||||
}
|
||||
|
||||
function set_mips() {
|
||||
function set_mips32() {
|
||||
TOOLCHAIN=CODESCAPE
|
||||
TARGET=mips-mti-linux-gnu
|
||||
QEMU_ARCH=DISABLED
|
||||
TARGET=mips32
|
||||
QEMU_ARCH=mips
|
||||
}
|
||||
|
||||
function set_mips32el() {
|
||||
TOOLCHAIN=CODESCAPE
|
||||
TARGET=mips32el
|
||||
QEMU_ARCH=mipsel
|
||||
}
|
||||
|
||||
function set_mips64() {
|
||||
TOOLCHAIN=CODESCAPE
|
||||
TARGET=mips64
|
||||
QEMU_ARCH=mips64
|
||||
}
|
||||
|
||||
function set_mips64el() {
|
||||
TOOLCHAIN=CODESCAPE
|
||||
TARGET=mips64el
|
||||
QEMU_ARCH=mips64el
|
||||
}
|
||||
|
||||
function set_native() {
|
||||
@ -71,8 +89,11 @@ ENVIRONMENTS="
|
||||
set_aarch64_be-linux-gnu
|
||||
set_armeb-linux-gnueabihf
|
||||
set_armeb-linux-gnueabi
|
||||
set_mips32
|
||||
set_mips32el
|
||||
set_mips64
|
||||
set_mips64el
|
||||
set_native
|
||||
set_mips
|
||||
"
|
||||
|
||||
set -e
|
||||
|
Loading…
x
Reference in New Issue
Block a user