1#
2# CircleCI 2.0 configuration. This was borrowed from NNG, but is adjusted
3# for libnanomsg.  (We don't need mbedTLS or use clang-format, for example.)
4#
5version: 2.0
6jobs:
7  "clang6 - build, test":
8    docker:
9      - image: ubuntu:16.04
10        environment:
11          CC: clang-6.0
12          CXX: clang++-6.0
13          CTEST_OUTPUT_ON_FAILURE: 1
14    steps:
15      - checkout
16      - run: apt-get update -qq
17      - run: apt-get install -y software-properties-common
18      - run: apt-add-repository "deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-6.0 main"
19      - run: apt-get update -qq
20      - run: >
21          apt-get install -y --allow-unauthenticated
22          build-essential
23          asciidoctor
24          cmake
25          ninja-build
26          clang-6.0
27      - run: ./.circleci/build-and-test.sh
28
29  "gcc8 - build, test":
30    docker:
31      - image: ubuntu:16.04
32        environment:
33          CC: gcc-8
34          CXX: g++-8
35          GCOV: gcov-8
36          CTEST_OUTPUT_ON_FAILURE: 1
37    steps:
38      - checkout
39      - run: apt-get update -qq
40      - run: apt-get install -y software-properties-common
41      - run: add-apt-repository ppa:ubuntu-toolchain-r/test
42      - run: apt-get update -qq
43      - run: >
44          apt-get install -y --allow-unauthenticated
45          build-essential
46          asciidoctor
47          cmake
48          ninja-build
49          gcc-8
50          g++-8
51      - run: ./.circleci/build-and-test.sh
52
53  "gcc - coverage":
54    docker:
55      - image: ubuntu:16.04
56        environment:
57          CC: gcc
58          CXX: g++
59          COVERAGE: "ON"
60          GCOV: gcov
61          CTEST_OUTPUT_ON_FAILURE: 1
62    steps:
63      - checkout
64      - run: apt-get update -qq
65      - run: apt-get install -y software-properties-common
66      - run: add-apt-repository ppa:ubuntu-toolchain-r/test
67      - run: apt-get update -qq
68      - run: >
69          apt-get install -y --allow-unauthenticated
70          build-essential
71          curl
72          asciidoctor
73          cmake
74          ninja-build
75      - run: ./.circleci/build-and-test.sh
76      - run: ./.circleci/codecov.sh
77
78workflows:
79  version: 2
80  build_and_test:
81    jobs:
82      - "clang6 - build, test"
83      - "gcc8 - build, test"
84      - "gcc - coverage"
85