1# Copyright 2018 Tom Hughes
2# Distributed under the Boost Software License, Version 1.0.
3# (See accompanying file LICENSE_1_0.txt or copy at http://boost.org/LICENSE_1_0.txt)
4
5build_steps: &build_steps
6  steps:
7    - run:
8        name: Setup
9        command: |
10          PLATFORM=`uname`
11          if [ "${PLATFORM}" == "Linux" ]; then
12            sudo apt-get install -y software-properties-common apt-transport-https
13
14            # https://github.com/ilikenwf/apt-fast
15            sudo add-apt-repository -y ppa:apt-fast/stable
16            sudo apt-get update
17            sudo apt-get -y install apt-fast
18
19            sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test
20            wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key|sudo apt-key add -
21            echo "deb https://apt.llvm.org/trusty/ llvm-toolchain-trusty-4.0 main" | sudo tee -a /etc/apt/sources.list
22            echo "deb https://apt.llvm.org/trusty/ llvm-toolchain-trusty-5.0 main" | sudo tee -a /etc/apt/sources.list
23            echo "deb https://apt.llvm.org/trusty/ llvm-toolchain-trusty-6.0 main" | sudo tee -a /etc/apt/sources.list
24            sudo apt-fast update
25            sudo apt-fast install -y $COMPILER
26          fi
27    - checkout
28    - run:
29        name: Install
30        command: |
31          BOOST_BRANCH=develop && [ "$CIRCLE_BRANCH" == "master" ] && BOOST_BRANCH=master || true
32          cd ..
33          git clone -b $BOOST_BRANCH --depth 1 https://github.com/boostorg/boost.git boost-root
34          cd boost-root
35          git submodule update --init tools/build
36          git submodule update --init libs/config
37          git submodule update --init tools/boostdep
38          mkdir -p libs/thread
39          cp -r $HOME/project/* libs/thread
40          python tools/boostdep/depinst/depinst.py thread
41          ./bootstrap.sh
42          ./b2 headers
43    - run:
44        name: Build
45        command: |
46          echo "using $TOOLSET : : $COMPILER : <cxxflags>-std=$CXXSTD <cxxflags>$CXXFLAGS <cxxflags>$DEFINES ;" > ~/user-config.jam
47          cd ../boost-root
48          ./b2 -d2 -j8 -l60 libs/thread/test toolset=$TOOLSET
49
50mac_build: &mac_build
51  macos:
52    xcode: "9.2.0"
53  <<: *build_steps
54
55linux_build: &linux_build
56  docker:
57    - image: circleci/buildpack-deps:trusty
58  <<: *build_steps
59
60
61version: 2
62jobs:
63  linux-g++-c++11:
64    <<: *linux_build
65    environment:
66      - TOOLSET: "gcc"
67      - COMPILER: "g++"
68      - CXXSTD: "c++11"
69
70  linux-g++-7-c++98:
71    <<: *linux_build
72    environment:
73      - TOOLSET: "gcc"
74      - COMPILER: "g++-7"
75      - CXXSTD: "c++98"
76
77  linux-g++-7-c++11:
78    <<: *linux_build
79    environment:
80      - TOOLSET: "gcc"
81      - COMPILER: "g++-7"
82      - CXXSTD: "c++11"
83
84  linux-g++-7-c++14:
85    <<: *linux_build
86    environment:
87      - TOOLSET: "gcc"
88      - COMPILER: "g++-7"
89      - CXXSTD: "c++14"
90
91  linux-g++-7-c++1z:
92    <<: *linux_build
93    environment:
94      - TOOLSET: "gcc"
95      - COMPILER: "g++-7"
96      - CXXSTD: "c++1z"
97
98  linux-clang++-4.0-c++98:
99    <<: *linux_build
100    environment:
101      - TOOLSET: "clang"
102      - COMPILER: "clang++-4.0"
103      - CXXSTD: "c++98"
104
105  linux-clang++-4.0-c++11:
106    <<: *linux_build
107    environment:
108      - TOOLSET: "clang"
109      - COMPILER: "clang++-4.0"
110      - CXXSTD: "c++11"
111
112  linux-clang++-4.0-c++14:
113    <<: *linux_build
114    environment:
115      - TOOLSET: "clang"
116      - COMPILER: "clang++-4.0"
117      - CXXSTD: "c++14"
118
119  linux-clang++-4.0-c++1z:
120    <<: *linux_build
121    environment:
122      - TOOLSET: "clang"
123      - COMPILER: "clang++-4.0"
124      - CXXSTD: "c++1z"
125
126  mac-clang++-c++98:
127    <<: *mac_build
128    environment:
129      - TOOLSET: "clang"
130      - COMPILER: "clang++"
131      - CXXSTD: "c++98"
132      - DEFINES: "-DBOOST_THREAD_TEST_TIME_MS=100"
133
134  mac-clang++-c++11:
135    <<: *mac_build
136    environment:
137      - TOOLSET: "clang"
138      - COMPILER: "clang++"
139      - CXXSTD: "c++11"
140      - CXXFLAGS: "-Wno-unusable-partial-specialization"
141      - DEFINES: "-DBOOST_THREAD_TEST_TIME_MS=100"
142
143  mac-clang++-c++14:
144    <<: *mac_build
145    environment:
146      - TOOLSET: "clang"
147      - COMPILER: "clang++"
148      - CXXSTD: "c++14"
149      - DEFINES: "-DBOOST_THREAD_TEST_TIME_MS=100"
150
151  mac-clang++-c++1z:
152    <<: *mac_build
153    environment:
154      - TOOLSET: "clang"
155      - COMPILER: "clang++"
156      - CXXSTD: "c++1z"
157      - CXXFLAGS: "-Wno-unusable-partial-specialization"
158      - DEFINES: "-DBOOST_THREAD_TEST_TIME_MS=100"
159
160workflows:
161  version: 2
162  continous:
163    jobs:
164      - linux-g++-c++11
165      - linux-g++-7-c++98
166      - linux-g++-7-c++11
167      - linux-g++-7-c++14
168      - linux-g++-7-c++1z
169      - linux-clang++-4.0-c++98
170      - linux-clang++-4.0-c++11
171      - linux-clang++-4.0-c++14
172      - linux-clang++-4.0-c++1z
173      - mac-clang++-c++98
174      - mac-clang++-c++11
175      - mac-clang++-c++14
176      - mac-clang++-c++1z
177
178