Skip to content

Commit

Permalink
Build against multiple compilers in CI (#19)
Browse files Browse the repository at this point in the history
  • Loading branch information
lelandjansen committed Dec 5, 2017
1 parent 69f5a40 commit 7fbe371
Show file tree
Hide file tree
Showing 6 changed files with 85 additions and 56 deletions.
58 changes: 39 additions & 19 deletions .circleci/config.yml
Expand Up @@ -2,30 +2,51 @@ version: 2
jobs:
check-code-style:
docker:
- image: lelandjansen/speed-of-sound-toolchain:0.0.2
- image: lelandjansen/speed-of-sound-toolchain:1.0.0
steps:
- checkout
- run:
name: Check code style
command: ./check-code-style
build-release:
build-release-clang:
docker:
- image: lelandjansen/speed-of-sound-toolchain:0.0.2
- image: lelandjansen/speed-of-sound-toolchain:1.0.0
steps:
- checkout
- run:
name: Git submodules
command: git submodule update --init --recursive
- run: git submodule update --init --recursive
- run:
name: Build with clang (release)
command: |
CC=clang-5.0 CXX=clang++-5.0 \
cmake . -DCMAKE_BUILD_TYPE=RELEASE -DBUILD_TESTS=TRUE
cmake --build . -- -j2
build-release-gcc:
docker:
- image: lelandjansen/speed-of-sound-toolchain:1.0.0
steps:
- checkout
- run: git submodule update --init --recursive
- run:
name: Build with gcc (release)
command: |
CC=gcc CXX=g++ \
cmake . -DCMAKE_BUILD_TYPE=RELEASE -DBUILD_TESTS=TRUE
cmake --build . -- -j2
build-release-avr-gcc:
docker:
- image: lelandjansen/speed-of-sound-toolchain:1.0.0
steps:
- checkout
- run: git submodule update --init --recursive
- run:
name: Build (release)
name: Build with avr-gcc (release)
command: |
cmake \
-DCMAKE_BUILD_TYPE=RELEASE \
.
CC=avr-gcc CXX=avr-g++ \
cmake . -DCMAKE_BUILD_TYPE=RELEASE -DBUILD_TESTS=FALSE
cmake --build . -- -j2
build-debug-and-test:
build-debug-test-coverage:
docker:
- image: lelandjansen/speed-of-sound-toolchain:0.0.2
- image: lelandjansen/speed-of-sound-toolchain:1.0.0
environment:
COVERALLS_REPO_TOKEN: Ny1fDedTzf5EuoygukebX5x28beAqhHD9
steps:
Expand All @@ -36,22 +57,21 @@ jobs:
- run:
name: Build (debug)
command: |
cmake \
-DCMAKE_BUILD_TYPE=DEBUG \
.
cmake . -DCMAKE_BUILD_TYPE=DEBUG -DBUILD_TESTS=TRUE
cmake --build . -- -j2
- run:
name: Run unit tests
command: ./unit_tests
- run:
name: Coveralls
name: Test coverage with Coveralls
when: on_success
command: coveralls --include src
workflows:
version: 2
build_and_test:
jobs:
- check-code-style
- build-release
- build-debug-and-test

- build-release-clang
- build-release-gcc
- build-release-avr-gcc
- build-debug-test-coverage
3 changes: 1 addition & 2 deletions .clang-tidy
@@ -1,7 +1,6 @@
Checks: '*,android*,-boost*'
Checks: '*,-android*,-boost*'
WarningsAsErrors: ''
HeaderFilterRegex: '*'
CheckOptions:
- key: readability-braces-around-statements.ShortStatementLines
value: 1

61 changes: 32 additions & 29 deletions CMakeLists.txt
@@ -1,4 +1,4 @@
cmake_minimum_required(VERSION 3.2 FATAL_ERROR)
cmake_minimum_required(VERSION 3.4 FATAL_ERROR)

project(speed-of-sound)

Expand All @@ -12,7 +12,9 @@ find_program(clang_tidy_executable NAMES
clang-tidy
clang-tidy-5.0)
set(clang_tidy_line_filters "[{'name': 'external/*'}]")
set(base_clang_tidy "${clang_tidy_executable};-line-filter=${clang_tidy_line_filters}")
set(base_clang_tidy
"${clang_tidy_executable};-line-filter=${clang_tidy_line_filters}")

if(CMAKE_BUILD_TYPE MATCHES DEBUG)
message("DEBUG mode")
set(build_type_flags "-g -Og --coverage -fno-exceptions")
Expand All @@ -23,8 +25,9 @@ else()
set(CMAKE_CXX_CLANG_TIDY "${base_clang_tidy};-warnings-as-errors=*")
endif()


set(CMAKE_CXX_FLAGS
"${build_type_flags}")
"${CMAKE_CXX_FLAGS} ${build_type_flags}")
include_directories(
${PROJECT_SOURCE_DIR}/src)
add_library(
Expand All @@ -33,30 +36,30 @@ add_library(
src/speed-of-sound.cc
src/speed-of-sound-theory.cc)

# Unit tests
set(GOOGLETEST_ROOT external/googletest/googletest)
include_directories(
${PROJECT_SOURCE_DIR}/${GOOGLETEST_ROOT}
${PROJECT_SOURCE_DIR}/${GOOGLETEST_ROOT}/include)
set(GOOGLETEST_SOURCES
${PROJECT_SOURCE_DIR}/${GOOGLETEST_ROOT}/src/gtest-all.cc
${PROJECT_SOURCE_DIR}/${GOOGLETEST_ROOT}/src/gtest_main.cc)
foreach(_source ${GOOGLETEST_SOURCES})
set_source_files_properties(${_source} PROPERTIES GENERATED 1)
endforeach()
add_library(googletest ${GOOGLETEST_SOURCES})
add_executable(
unit_tests
test/test.cc
test/speed-of-sound_test.cc
test/speed-of-sound-theory_test.cc)
add_dependencies(unit_tests googletest)
target_link_libraries(
unit_tests
googletest
speed_of_sound
pthread)
if(BUILD_TESTS)
set(googletest_root external/googletest/googletest)
include_directories(
${PROJECT_SOURCE_DIR}/${googletest_root}
${PROJECT_SOURCE_DIR}/${googletest_root}/include)
set(googletest_sources
${PROJECT_SOURCE_DIR}/${googletest_root}/src/gtest-all.cc
${PROJECT_SOURCE_DIR}/${googletest_root}/src/gtest_main.cc)
foreach(_source ${googletest_sources})
set_source_files_properties(${_source} PROPERTIES GENERATED 1)
endforeach()
add_library(googletest ${googletest_sources})
add_executable(unit_tests
test/test.cc
test/speed-of-sound_test.cc
test/speed-of-sound-theory_test.cc)
add_dependencies(unit_tests googletest)
target_link_libraries(
unit_tests
googletest
speed_of_sound
pthread)

include(CTest)
enable_testing()
add_test(unit ${PROJECT_BINARY_DIR}/unit_tests)
include(CTest)
enable_testing()
add_test(unit ${PROJECT_BINARY_DIR}/unit_tests)
endif()
10 changes: 8 additions & 2 deletions Dockerfile
Expand Up @@ -11,7 +11,9 @@ RUN apt-get install -y \
ca-certificates

# Our general requirements
RUN apt-get install -y \
RUN apt-get update && apt-get install -y \
wget \
bzip2 \
build-essential \
software-properties-common

Expand All @@ -36,8 +38,12 @@ RUN cd cmake-3.9.4 && \
RUN rm cmake-3.9.4.tar.gz && \
rm -rf cmake-3.9.4

# GNU AVR Embedded Toolchain
RUN apt-get install -y \
gcc-avr \
avr-libc

# Coveralls
RUN apt-get install -y python-pip
RUN pip install --upgrade pip
RUN pip install --prefix /usr/local cpp-coveralls

4 changes: 3 additions & 1 deletion src/speed-of-sound-theory.cc
@@ -1,6 +1,8 @@
#include "speed-of-sound-theory.h"

#include <cmath>
// Using math.h instead of cmath because cmath is often not available on
// embedded compilers
#include <math.h>

namespace speedofsound {

Expand Down
5 changes: 2 additions & 3 deletions test/test
Expand Up @@ -2,7 +2,6 @@
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
BUILD_DIR="$DIR/../build"
mkdir -p "$BUILD_DIR/build"
cmake -B$BUILD_DIR -H$DIR/..
make -j2 -C $BUILD_DIR
cmake -B$BUILD_DIR -H$DIR/.. -DCMAKE_BUILD_TYPE=RELEASE -DBUILD_TESTS=TRUE
cmake --build $BUILD_DIR -- -j2
$BUILD_DIR/unit_tests

0 comments on commit 7fbe371

Please sign in to comment.