Skip to content

Commit 6445789

Browse files
committed
ARM compilation
1 parent f5ec3ab commit 6445789

File tree

5 files changed

+99
-203
lines changed

5 files changed

+99
-203
lines changed
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
jobs:
2+
- job: 'Linux_0'
3+
strategy:
4+
matrix:
5+
clang_4_armv7:
6+
llvm_version: '4.0'
7+
cross_compile: 1
8+
arm_arch_dir: 'arm-linux-gnueabi'
9+
arm_arch_target: 'armv7-a'
10+
clang_4_armv8:
11+
llvm_version: '4.0'
12+
cross_compile: 1
13+
arm_arch_dir: 'arm-linux-gnueabi'
14+
arm_arch_target: 'armv8-a'
15+
#clang_4_aarch64:
16+
# llvm_version: '4.0'
17+
# cross_compile: 1
18+
# arm_arch_dir: 'aarch64-linux-gnu'
19+
# arm_arch_target: 'armv8-a'
20+
clang_5:
21+
llvm_version: '5.0'
22+
clang_6:
23+
llvm_version: '6.0'
24+
clang_7:
25+
llvm_version: '7'
26+
clang_8:
27+
llvm_version: '8'
28+
clang_9:
29+
llvm_version: '9'
30+
clang_10:
31+
llvm_version: '10'
32+
pool:
33+
vmImage: ubuntu-16.04
34+
variables:
35+
CC: clang-$(llvm_version)
36+
CXX: clang++-$(llvm_version)
37+
timeoutInMinutes: 30
38+
steps:
39+
- script: |
40+
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
41+
if [[ $(llvm_version) == '4.0' || $(llvm_version) == '5.0' ]]; then
42+
sudo apt-get update
43+
sudo apt-get --no-install-suggests --no-install-recommends install clang-$(llvm_version)
44+
if [[ $(cross_compile) == 1 ]]; then
45+
if [[ $(arm_arch_dir) == 'aarch64-linux-gnu' ]]; then
46+
sudo apt-get --no-install-suggests --no-install-recommends install g++-4.9-aarch64-linux-gnu gcc-4.9-aarch64-linux-gnu
47+
else
48+
sudo apt-get --no-install-suggests --no-install-recommends install g++-4.9-arm-linux-gnueabi
49+
fi
50+
sudo apt-get --no-install-suggests --no-install-recommends install g++-4.9-multilib gcc-4.9-multilib
51+
sudo apt-get --no-install-suggests --no-install-recommends install qemu qemu-system-arm
52+
else
53+
sudo apt-get --no-install-suggests --no-install-recommends install gcc-4.9
54+
fi
55+
else
56+
LLVM_VERSION=$(llvm_version)
57+
get -O - http://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
58+
sudo add-apt-repository "deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-$LLVM_VERSION main"
59+
sudo apt-get update
60+
sudo apt-get --no-install-suggests --no-install-recommends install clang-$(llvm_version)
61+
fi
62+
displayName: Install build toolchain
63+
64+
- bash: echo "##vso[task.prependpath]$CONDA/bin"
65+
displayName: Add conda to PATH
66+
67+
- template: unix-build.yml

.azure-pipelines/unix-build.yml

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,13 @@ steps:
1919
source activate xsimd
2020
mkdir build
2121
cd build
22+
if [[ $(cross_compile) == 1 ]]; then
23+
if [[ $(arm_arch_dir) == 'aarch64-linux-gnu' ]]; then
24+
CMAKE_EXTRA_ARGS="$CMAKE_EXTRA_ARGS -DCROSS_COMPILE_ARM=ON -DARM_ARCH_DIRECTORY=$(arm_arch_dir) -DARM_GCC_VER=4.9.3 -DTARGET_ARCH=$(arm_arch_target) -DCMAKE_LINKER=/usr/bin/aarch64-linux-gnu-ld";
25+
else
26+
CMAKE_EXTRA_ARGS="$CMAKE_EXTRA_ARGS -DCROSS_COMPILE_ARM=ON -DARM_ARCH_DIRECTORY=$(arm_arch_dir) -DARM_GCC_VER=4.9.3 -DTARGET_ARCH=$(arm_arch_target)";
27+
fi
28+
fi
2229
if [[ $(enable_xtl_complex) == 1 ]]; then
2330
CMAKE_EXTRA_ARGS="$CMAKE_EXTRA_ARGS -DENABLE_XTL_COMPLEX=ON";
2431
fi
@@ -46,6 +53,14 @@ steps:
4653
source activate xsimd
4754
if [[ $(avx512) == 1 ]]; then
4855
../../sde-external-8.56.0-2020-07-05-lin/sde64 -skx -- ./test_xsimd ;
56+
elif [[ $(cross_compile) == 1 ]]; then
57+
echo $(arm_arch_dir);
58+
if [[ $(arm_arch_dir) == 'aarch64-linux-gnu' ]]; then
59+
ls /usr/aarch64-linux-gnu/ ;
60+
qemu-aarch64 -L /usr/aarch64-linux-gnu/ ./test_xsimd ;
61+
else
62+
qemu-arm -L /usr/arm-linux-gnueabi/ ./test_xsimd ;
63+
fi
4964
else
5065
./test_xsimd
5166
fi

.travis.yml

Lines changed: 0 additions & 202 deletions
This file was deleted.

azure-pipelines.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,4 @@ trigger:
44
jobs:
55
- template: ./.azure-pipelines/azure-pipelines-win.yml
66
- template: ./.azure-pipelines/azure-pipelines-linux-gcc.yml
7+
- template: ./.azure-pipelines/azure-pipelines-linux-clang.yml

test/CMakeLists.txt

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,17 +44,32 @@ set(ARM_GCC_VER "4.7.3" CACHE STRING "ARM GCC header dir")
4444

4545
if (CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_ID MATCHES "GNU" OR CMAKE_CXX_COMPILER_ID MATCHES "Intel")
4646
if (CROSS_COMPILE_ARM)
47-
# We're cross-compiling with clang++ on Travis, this is all pretty specific and just for testing
47+
# We're cross-compiling with clang++ on Azure Pipelines, this is all pretty specific and just for testing
4848
set(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS)
4949
set(CMAKE_SHARED_LIBRARY_LINK_CXX_FLAGS)
5050
set(CMAKE_THREAD_LIBS_INIT)
5151

52+
set(CMAKE_SYSTEM_PROCESSOR arm)
53+
set(CMAKE_C_COMPILER_TARGET arm-linux-gnueabi)
54+
set(CMAKE_CXX_COMPILER_TARGET arm-linux-gnueabi)
55+
5256
include_directories(/usr/${ARM_ARCH_DIRECTORY}/include/c++/${ARM_GCC_VER}/${ARM_ARCH_DIRECTORY}/)
5357
include_directories(/usr/${ARM_ARCH_DIRECTORY}/include/c++/${ARM_GCC_VER}/)
5458
include_directories(/usr/${ARM_ARCH_DIRECTORY}/include/)
5559
if(NOT CMAKE_CXX_FLAGS MATCHES "-march")
60+
message(STATUS "SETTING ARCH TO ${TARGET_ARCH}")
5661
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=${TARGET_ARCH}")
5762
endif()
63+
if(ARM_ARCH_DIRECTORY MATCHES "arm-linux-gnueabi")
64+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mfpu=neon -mfloat-abi=softfp -target arm-linux-gnueabi")
65+
else ()
66+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -target aarch64-linux-gnueabi")
67+
set(CMAKE_CXX_LINK_FLAGS "${CMAKE_CXX_LINK_FLAGS} -maarch64linux")
68+
message(STATUS "CMAKE_CXX_LINK_FLAGS: ${CMAKE_CXX_LINK_FLAGS}")
69+
set(CMAKE_CXX_LINK_EXECUTABLE "<CMAKE_LINKER> <FLAGS> <CMAKE_CXX_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES>")
70+
endif()
71+
message(STATUS "CMAKE_CXX_FLAGS: ${CMAKE_CXX_FLAGS}")
72+
message(STATUS "CMAKE_CXX_LINK_EXECUTABLE: ${CMAKE_CXX_LINK_EXECUTABLE}")
5873
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wunused-parameter -Wextra -Wreorder -std=c++11")
5974
elseif(${CMAKE_SYSTEM_PROCESSOR} MATCHES "^ppc64")
6075
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -fPIC -mcpu=${TARGET_ARCH} -mtune=${TARGET_ARCH} -Wunused-parameter -Wextra -Wreorder -std=c++11")

0 commit comments

Comments
 (0)