diff --git a/.travis.yml b/.travis.yml index 2738618d..e663bb8a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,27 +4,12 @@ os: - linux - osx +jobs: + include: + - os: linux + env: JOB_ARCHITECTURE=arm + - os: linux + env: JOB_ARCHITECTURE=aarch64 + script: - - export TOP=$(pwd) - - git clone https://github.com/KhronosGroup/OpenCL-Headers.git - - cd OpenCL-Headers - - ln -s CL OpenCL # For OSX builds - - cd .. - - git clone https://github.com/KhronosGroup/OpenCL-ICD-Loader.git - - cd ${TOP}/OpenCL-ICD-Loader - - mkdir build - - cd build - - cmake -DOPENCL_ICD_LOADER_HEADERS_DIR=${TOP}/OpenCL-Headers/ .. - - make - - cd ${TOP} - - git clone https://github.com/KhronosGroup/libclcxx.git - - ls -l - - mkdir build - - cd build - - cmake -DCL_INCLUDE_DIR=${TOP}/OpenCL-Headers - -DCL_LIB_DIR=${TOP}/OpenCL-ICD-Loader/build - -DCL_LIBCLCXX_DIR=${TOP}/libclcxx - -DCMAKE_RUNTIME_OUTPUT_DIRECTORY=./bin - -DOPENCL_LIBRARIES="-lOpenCL -lpthread" - .. - - make -j2 + - ./travis.sh diff --git a/CMakeLists.txt b/CMakeLists.txt index 4947ac35..01f480c1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -142,7 +142,8 @@ if(CMAKE_COMPILER_IS_GNUCC OR "${CMAKE_CXX_COMPILER_ID}" MATCHES "(Apple)?Clang" # avoiding excess precision problems that cause tests like int2float # to falsely fail. -ffloat-store also works, but WG suggested # that sse would be better. - if(${CLConform_TARGET_ARCH} EQUAL "x86_64" OR ${CLConform_TARGET_ARCH} EQUAL "x86") + if(${CLConform_TARGET_ARCH} STREQUAL "x86_64" OR ${CLConform_TARGET_ARCH} + STREQUAL "x86") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -msse -msse2 -mfpmath=sse") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse -msse2 -mfpmath=sse") endif() diff --git a/test_conformance/conversions/CMakeLists.txt b/test_conformance/conversions/CMakeLists.txt index ccbbe8d0..307993a1 100644 --- a/test_conformance/conversions/CMakeLists.txt +++ b/test_conformance/conversions/CMakeLists.txt @@ -13,7 +13,7 @@ set (${MODULE_NAME}_SOURCES Sleep.cpp test_conversions.cpp basic_test_conversions.cpp ) -if(CMAKE_COMPILER_IS_GNUCC AND ${CLConform_TARGET_ARCH} EQUAL "ARM") +if(CMAKE_COMPILER_IS_GNUCXX AND "${CLConform_TARGET_ARCH}" STREQUAL "ARM") list(APPEND ${MODULE_NAME}_SOURCES fplib.cpp) endif() diff --git a/travis.sh b/travis.sh new file mode 100755 index 00000000..9fa0f75c --- /dev/null +++ b/travis.sh @@ -0,0 +1,68 @@ +#!/usr/bin/env bash + +set -e + +export TOP=$(pwd) + +TOOLCHAIN_URL_arm="https://releases.linaro.org/components/toolchain/binaries/7.5-2019.12/arm-linux-gnueabihf/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf.tar.xz" +TOOLCHAIN_URL_aarch64="https://releases.linaro.org/components/toolchain/binaries/7.5-2019.12/aarch64-linux-gnu/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.xz" + +TOOLCHAIN_PREFIX_arm=arm-linux-gnueabihf +TOOLCHAIN_PREFIX_aarch64=aarch64-linux-gnu + +TOOLCHAIN_FILE=${TOP}/toolchain.cmake +touch ${TOOLCHAIN_FILE} + +# Prepare toolchain if needed +if [[ ${JOB_ARCHITECTURE} != "" ]]; then + TOOLCHAIN_URL_VAR=TOOLCHAIN_URL_${JOB_ARCHITECTURE} + TOOLCHAIN_URL=${!TOOLCHAIN_URL_VAR} + wget ${TOOLCHAIN_URL} + TOOLCHAIN_ARCHIVE=${TOOLCHAIN_URL##*/} + tar xf ${TOOLCHAIN_ARCHIVE} + TOOLCHAIN_DIR=${TOP}/${TOOLCHAIN_ARCHIVE%.tar.xz} + export PATH=${TOOLCHAIN_DIR}/bin:${PATH} + + TOOLCHAIN_PREFIX_VAR=TOOLCHAIN_PREFIX_${JOB_ARCHITECTURE} + TOOLCHAIN_PREFIX=${!TOOLCHAIN_PREFIX_VAR} + + echo "SET(CMAKE_SYSTEM_NAME Linux)" >> ${TOOLCHAIN_FILE} + echo "SET(CMAKE_SYSTEM_PROCESSOR ${JOB_ARCHITECTURE})" >> ${TOOLCHAIN_FILE} + echo "SET(CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}-gcc)" >> ${TOOLCHAIN_FILE} + echo "SET(CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}-g++)" >> ${TOOLCHAIN_FILE} + echo "SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)" >> ${TOOLCHAIN_FILE} + echo "SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)" >> ${TOOLCHAIN_FILE} + echo "SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)" >> ${TOOLCHAIN_FILE} +fi + +# Prepare headers +git clone https://github.com/KhronosGroup/OpenCL-Headers.git +cd OpenCL-Headers +ln -s CL OpenCL # For OSX builds +cd .. + +# Get and build loader +git clone https://github.com/KhronosGroup/OpenCL-ICD-Loader.git +cd ${TOP}/OpenCL-ICD-Loader +mkdir build +cd build +cmake -DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN_FILE} -DOPENCL_ICD_LOADER_HEADERS_DIR=${TOP}/OpenCL-Headers/ .. +make + +# Get libclcxx +cd ${TOP} +git clone https://github.com/KhronosGroup/libclcxx.git + +# Build CTS +ls -l +mkdir build +cd build +cmake -DCL_INCLUDE_DIR=${TOP}/OpenCL-Headers \ + -DCL_LIB_DIR=${TOP}/OpenCL-ICD-Loader/build \ + -DCL_LIBCLCXX_DIR=${TOP}/libclcxx \ + -DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN_FILE} \ + -DCMAKE_RUNTIME_OUTPUT_DIRECTORY=./bin \ + -DOPENCL_LIBRARIES="-lOpenCL -lpthread" \ + .. +make -j2 +