@@ -85,42 +85,65 @@ jobs:
|
||||
|
||||
steps:
|
||||
- script: |
|
||||
sudo update-alternatives --install /usr/bin/cc cc /usr/bin/$(CC) 100
|
||||
sudo update-alternatives --set cc /usr/bin/$(CC)
|
||||
|
||||
sudo update-alternatives --install /usr/bin/c++ c++ /usr/bin/$(CXX) 100
|
||||
sudo update-alternatives --set c++ /usr/bin/$(CXX)
|
||||
|
||||
CMAKE_CXX_FLAGS="-std=c++17"
|
||||
if [[ "$CXX" == clang++* ]]; then CMAKE_CXX_FLAGS+=" -stdlib=libstdc++"; fi
|
||||
|
||||
displayName: 'Select compiler version'
|
||||
|
||||
- task: CMake@1
|
||||
displayName: 'CMake .. $(CMakeArgs) -GNinja -DCMAKE_BUILD_TYPE=$(BuildType) -DCMAKE_CXX_FLAGS="$CMAKE_CXX_FLAGS" -DSNMALLOC_CI_BUILD=On -DSNMALLOC_RUST_SUPPORT=On'
|
||||
inputs:
|
||||
cmakeArgs: '.. $(CMakeArgs) -GNinja -DCMAKE_BUILD_TYPE=$(BuildType) -DCMAKE_CXX_FLAGS="$CMAKE_CXX_FLAGS" -DSNMALLOC_CI_BUILD=On -DSNMALLOC_RUST_SUPPORT=On'
|
||||
ci/scripts/build.sh
|
||||
env:
|
||||
CC: $(CC)
|
||||
CXX: $(CXX)
|
||||
BUILD_TYPE: $(BuildType)
|
||||
CMAKE_ARGS: $(CMakeArgs)
|
||||
failOnStderr: true
|
||||
displayName: 'Build'
|
||||
|
||||
- script: |
|
||||
ninja
|
||||
|
||||
workingDirectory: build
|
||||
ci/scripts/test.sh
|
||||
env:
|
||||
SELF_HOST: $(SelfHost)
|
||||
BUILD_TYPE: $(BuildType)
|
||||
failOnStderr: true
|
||||
displayName: 'Compile'
|
||||
displayName: 'Test'
|
||||
|
||||
- job:
|
||||
displayName: 'ARM64 Linux'
|
||||
pool:
|
||||
vmImage: 'ubuntu-18.04'
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
Clang-9 Debug:
|
||||
CC: clang-9
|
||||
CXX: clang++-9
|
||||
BuildType: Debug
|
||||
SelfHost: false
|
||||
CMakeArgs: ''
|
||||
|
||||
Clang-9 Release:
|
||||
CC: clang-9
|
||||
CXX: clang++-9
|
||||
BuildType: Release
|
||||
SelfHost: false
|
||||
CMakeArgs: ''
|
||||
|
||||
steps:
|
||||
- script: |
|
||||
sudo docker run --rm --privileged multiarch/qemu-user-static:register --reset
|
||||
displayName: 'Enable QEmu'
|
||||
|
||||
- script: |
|
||||
if [ $(SelfHost) = false ]; then
|
||||
ctest -j 4 --output-on-failure -C $(BuildType)
|
||||
else
|
||||
sudo cp libsnmallocshim.so libsnmallocshim-1mib.so /usr/local/lib/
|
||||
ninja clean
|
||||
LD_PRELOAD=/usr/local/lib/libsnmallocshim.so ninja
|
||||
ninja clean
|
||||
LD_PRELOAD=/usr/local/lib/libsnmallocshim-1mib.so ninja
|
||||
fi
|
||||
sudo docker run -v $PWD:/src \
|
||||
-e CC=$(CC) \
|
||||
-e CXX=$(CXX) \
|
||||
-e BUILD_TYPE=$(BuildType) \
|
||||
-e CMAKE_ARGS=$(CMakeArgs) \
|
||||
snmallocciteam/build_linux_arm64:latest \
|
||||
ci/scripts/build.sh
|
||||
displayName: 'Build'
|
||||
|
||||
workingDirectory: build
|
||||
failOnStderr: true
|
||||
- script: |
|
||||
sudo docker run -v $PWD:/src \
|
||||
-e BUILD_TYPE=$(BuildType) \
|
||||
-e SELF_HOST=$(SelfHost) \
|
||||
snmallocciteam/build_linux_arm64:latest \
|
||||
ci/scripts/test.sh
|
||||
displayName: 'Test'
|
||||
|
||||
- job:
|
||||
|
||||
7
ci/linux_arm64
Normal file
7
ci/linux_arm64
Normal file
@@ -0,0 +1,7 @@
|
||||
FROM multiarch/ubuntu-core:arm64-bionic
|
||||
|
||||
WORKDIR /src
|
||||
|
||||
RUN apt update \
|
||||
&& apt install --no-install-recommends -y ninja-build clang++-9 cmake \
|
||||
&& apt -y clean
|
||||
20
ci/scripts/build.sh
Executable file
20
ci/scripts/build.sh
Executable file
@@ -0,0 +1,20 @@
|
||||
#!/bin/bash
|
||||
|
||||
mkdir build
|
||||
cd build
|
||||
|
||||
CMAKE_CXX_FLAGS="-std=c++17"
|
||||
if [[ "$CXX" == clang++* ]]; then
|
||||
CMAKE_CXX_FLAGS+=" -stdlib=libstdc++";
|
||||
fi
|
||||
|
||||
cmake \
|
||||
$CMAKE_ARGS \
|
||||
-GNinja \
|
||||
-DSNMALLOC_CI_BUILD=ON \
|
||||
-DSNMALLOC_RUST_SUPPORT=ON \
|
||||
-DSNMALLOC_QEMU_WORKAROUND=ON \
|
||||
-DCMAKE_BUILD_TYPE=$BUILD_TYPE \
|
||||
-DCMAKE_CXX_FLAGS="$CMAKE_CXX_FLAGS" \
|
||||
..
|
||||
ninja
|
||||
12
ci/scripts/test.sh
Executable file
12
ci/scripts/test.sh
Executable file
@@ -0,0 +1,12 @@
|
||||
#!/bin/bash
|
||||
|
||||
cd build
|
||||
if [ $SELF_HOST = false ]; then
|
||||
ctest -j 4 --output-on-failure -C $BUILD_TYPE
|
||||
else
|
||||
sudo cp libsnmallocshim.so libsnmallocshim-1mib.so /usr/local/lib/
|
||||
ninja clean
|
||||
LD_PRELOAD=/usr/local/lib/libsnmallocshim.so ninja
|
||||
ninja clean
|
||||
LD_PRELOAD=/usr/local/lib/libsnmallocshim-1mib.so ninja
|
||||
fi
|
||||
@@ -45,7 +45,7 @@ namespace snmalloc
|
||||
#ifdef _MSC_VER
|
||||
__prefetch(ptr);
|
||||
#else
|
||||
__asm__ inline("prfm pldl1keep, [%0]" : "=r"(ptr));
|
||||
__asm__ volatile("prfm pldl1keep, [%0]" : "=r"(ptr));
|
||||
#endif
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user