210 lines
5.1 KiB
YAML
210 lines
5.1 KiB
YAML
trigger:
|
|
- master
|
|
|
|
pr:
|
|
- master
|
|
|
|
jobs:
|
|
- job:
|
|
displayName: Linux
|
|
pool:
|
|
vmImage: 'ubuntu-16.04'
|
|
strategy:
|
|
matrix:
|
|
Clang-6 Debug:
|
|
CC: clang-6.0
|
|
CXX: clang++-6.0
|
|
BuildType: Debug
|
|
SelfHost: false
|
|
CMakeArgs: ''
|
|
|
|
Clang-6 Release:
|
|
CC: clang-6.0
|
|
CXX: clang++-6.0
|
|
BuildType: Release
|
|
SelfHost: false
|
|
CMakeArgs: ''
|
|
|
|
GCC-7 Debug:
|
|
CC: gcc-7
|
|
CXX: g++-7
|
|
BuildType: Debug
|
|
SelfHost: false
|
|
CMakeArgs: ''
|
|
|
|
GCC-7 Release:
|
|
CC: gcc-7
|
|
CXX: g++-7
|
|
BuildType: Release
|
|
SelfHost: false
|
|
CMakeArgs: ''
|
|
|
|
Self Host:
|
|
CC: clang-6.0
|
|
CXX: clang++-6.0
|
|
BuildType: Debug
|
|
SelfHost: true
|
|
CMakeArgs: ''
|
|
|
|
Cache Friendly:
|
|
CC: clang-6.0
|
|
CXX: clang++-6.0
|
|
BuildType: Debug
|
|
SelfHost: false
|
|
CMakeArgs: '-DCACHE_FRIENDLY_OFFSET=64'
|
|
|
|
steps:
|
|
- script: |
|
|
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
|
|
sudo apt-get update
|
|
sudo apt-get install -y ninja-build libc++-dev libc++abi-dev libc++abi1 libstdc++-7-dev gcc-7 g++-7
|
|
# sudo apt-get install clang-6.0 clang++-6.0
|
|
|
|
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: 'Install Build Dependencies'
|
|
|
|
- task: CMake@1
|
|
displayName: 'CMake .. $(CMakeArgs) -GNinja -DCMAKE_BUILD_TYPE=$(BuildType) -DCMAKE_CXX_FLAGS="$CMAKE_CXX_FLAGS"'
|
|
inputs:
|
|
cmakeArgs: '.. $(CMakeArgs) -GNinja -DCMAKE_BUILD_TYPE=$(BuildType) -DCMAKE_CXX_FLAGS="$CMAKE_CXX_FLAGS"'
|
|
|
|
- script: |
|
|
ninja
|
|
|
|
workingDirectory: build
|
|
failOnStderr: true
|
|
displayName: 'Compile'
|
|
|
|
- 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
|
|
|
|
workingDirectory: build
|
|
failOnStderr: true
|
|
displayName: 'Test'
|
|
|
|
- job:
|
|
displayName: Windows
|
|
pool:
|
|
vmImage: 'vs2017-win2016'
|
|
strategy:
|
|
matrix:
|
|
64-bit Debug:
|
|
BuildType: Debug
|
|
CMakeArgs: '-G"Visual Studio 15 2017 Win64"'
|
|
JFlag: -j 4
|
|
|
|
64-bit Release:
|
|
BuildType: Release
|
|
CMakeArgs: '-G"Visual Studio 15 2017 Win64"'
|
|
JFlag: '-j 4'
|
|
|
|
64-bit Release Windows8Compat:
|
|
BuildType: Release
|
|
CMakeArgs: '-G"Visual Studio 15 2017 Win64" -DWIN8COMPAT=TRUE'
|
|
JFlag: '-j 2'
|
|
|
|
32-bit Debug:
|
|
BuildType: Debug
|
|
CMakeArgs: '-G"Visual Studio 15 2017"'
|
|
JFlag: '-j 4'
|
|
|
|
32-bit Release:
|
|
BuildType: Release
|
|
CMakeArgs: '-G"Visual Studio 15 2017"'
|
|
JFlag: '-j 4'
|
|
|
|
steps:
|
|
- task: CMake@1
|
|
displayName: 'CMake .. $(CMakeArgs) -DCMAKE_BUILD_TYPE=$(BuildType)'
|
|
inputs:
|
|
cmakeArgs: '.. $(CMakeArgs) -DCMAKE_BUILD_TYPE=$(BuildType)'
|
|
|
|
- task: MSBuild@1
|
|
displayName: 'Build solution build/snmalloc.sln'
|
|
inputs:
|
|
solution: build/snmalloc.sln
|
|
msbuildArguments: '/m /p:Configuration=$(BuildType)'
|
|
|
|
- script: 'ctest $(JFlag) --interactive-debug-mode 0 --output-on-failure -C $(BuildType)'
|
|
workingDirectory: build
|
|
displayName: 'Run Ctest'
|
|
|
|
- job:
|
|
displayName: macOS
|
|
pool:
|
|
vmImage: 'macOS-10.13'
|
|
strategy:
|
|
matrix:
|
|
Debug:
|
|
BuildType: Debug
|
|
Release:
|
|
BuildType: Release
|
|
|
|
steps:
|
|
- task: CMake@1
|
|
displayName: 'CMake .. -DCMAKE_BUILD_TYPE=$(BuildType)'
|
|
inputs:
|
|
cmakeArgs: '.. -DCMAKE_BUILD_TYPE=$(BuildType)'
|
|
|
|
- script: |
|
|
make -j 4
|
|
|
|
workingDirectory: build
|
|
failOnStderr: true
|
|
displayName: 'Compile'
|
|
|
|
- script: |
|
|
ctest -j 4 --output-on-failure -C $(BuildType)
|
|
|
|
workingDirectory: build
|
|
failOnStderr: true
|
|
displayName: 'Test'
|
|
|
|
- job:
|
|
displayName: Format
|
|
pool:
|
|
vmImage: 'ubuntu-16.04'
|
|
steps:
|
|
- script: |
|
|
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
|
|
sudo add-apt-repository "deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-8 main"
|
|
sudo apt-get update
|
|
sudo apt-get install -y clang-format-8 clang-tidy-8
|
|
sudo update-alternatives --install /usr/bin/clang-format clang-format /usr/bin/clang-format-8 100
|
|
|
|
displayName: 'Install clang'
|
|
|
|
- task: CMake@1
|
|
displayName: 'CMake ..'
|
|
inputs:
|
|
cmakeArgs: '..'
|
|
|
|
- script: |
|
|
make clangformat
|
|
if [ "$(git diff $(Build.SourceVersion))" != "" ]; then exit 1; fi
|
|
|
|
workingDirectory: build
|
|
displayName: 'Clang-Format'
|
|
|
|
- script: |
|
|
clang-tidy-8 src/override/malloc.cc -header-filter="`pwd`/*" -export-fixes=tidy.fail -- -std=c++17 -mcx16
|
|
if [ -f tidy.fail ] ; then exit 1 ; fi
|
|
|
|
displayName: 'Clang-Tidy'
|