-
Notifications
You must be signed in to change notification settings - Fork 3
/
config.yml
73 lines (70 loc) · 3.18 KB
/
config.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# Use, modification, and distribution are
# subject to the Boost Software License, Version 1.0. (See accompanying
# file LICENSE.txt)
#
# Copyright René Ferdinand Rivera Morell 2020-2021.
# Configuration for https://circleci.com/.
version: 2.1
jobs:
# This defines a common parameterized job template function. This is used
# in the workflows to stamp out the install and compile steps for each
# job variation.
linux-job:
parameters:
# The, optional, Linux OS image to run in.
image: { default: "cimg/base:stable-18.04", type: string }
# The, optional, LLVM OS to obtain clang builds for. This needs to
# match the Linux OS image.
llvm_os: { default: "", type: string }
# The version of LLVM to get the package for.
llvm_ver: { default: "", type: string }
# The compiler executable name to use. The default value of "c++" is
# only useful for system default compilers.
cxx: { default: "c++", type: string }
# Custom options to use for compiling.
cxxflags: { default: "", type: string }
# APT packages from LLVM_REPO to install for the compiler.
packages: { default: "", type: string }
docker:
- image: << parameters.image >>
environment:
LLVM_OS: << parameters.llvm_os >>
LLVM_VER: << parameters.llvm_ver >>
CXX: << parameters.cxx >>
CXXFLAGS: << parameters.cxxflags >>
PACKAGES: << parameters.packages >>
steps:
# Circle CI has a separate checkout step for the repo.
- checkout
# Install toolset from apt.
- run:
name: Install Toolset
command: |
set -e
uname -a
./.ci_playground/linux-cxx-install.sh
# Version info and test compile.
- run:
name: Compile
command: |
set -e
${CXX} --version
${CXX} src/main.cpp
# We only have one workflow in the set as we only have the single task of
# running the same install+compile job in different environments. And hence
# no need for dependency specification between jobs.
workflows:
workflow:
jobs:
# All the GCC's and Clang's available for Ubuntu Bionic.
- linux-job: { name: 'Linux GCC 9', cxx: g++-9, packages: g++-9 }
- linux-job: { name: 'Linux GCC 8', cxx: g++-8, packages: g++-8 }
- linux-job: { name: 'Linux GCC 7', cxx: g++-7, packages: g++-7 }
- linux-job: { name: 'Linux GCC 6', cxx: g++-6, packages: g++-6 }
- linux-job: { name: 'Linux GCC 5', cxx: g++-5, packages: g++-5 }
- linux-job: { name: 'Linux Clang 10', cxx: clang++-10, packages: clang-10, llvm_os: bionic, llvm_ver: '10' }
- linux-job: { name: 'Linux Clang 9', cxx: clang++-9, packages: clang-9, llvm_os: bionic, llvm_ver: '9' }
- linux-job: { name: 'Linux Clang 8', cxx: clang++-8, packages: clang-8, llvm_os: bionic, llvm_ver: '8' }
- linux-job: { name: 'Linux Clang 7', cxx: clang++-7, packages: clang-7, llvm_os: bionic, llvm_ver: '7' }
- linux-job: { name: 'Linux Clang 6.0', cxx: clang++-6.0, packages: clang-6.0, llvm_os: bionic, llvm_ver: '6.0' }
- linux-job: { name: 'Linux Clang 5.0', cxx: clang++-5.0, packages: clang-5.0, llvm_os: bionic, llvm_ver: '5.0' }