diff --git a/.circleci/config.yml b/.circleci/config.yml new file mode 100644 index 0000000..daa1bc6 --- /dev/null +++ b/.circleci/config.yml @@ -0,0 +1,48 @@ +version: 2 +jobs: + build-release: + docker: + - image: lelandjansen/speed-of-sound-toolchain:0.0.2 + steps: + - checkout + - run: + name: Git submodules + command: git submodule update --init --recursive + - run: + name: Build (release) + command: | + cmake \ + -DCMAKE_BUILD_TYPE=RELEASE \ + . + cmake --build . -- -j2 + build-debug-and-test: + docker: + - image: lelandjansen/speed-of-sound-toolchain:0.0.2 + environment: + COVERALLS_REPO_TOKEN: Ny1fDedTzf5EuoygukebX5x28beAqhHD9 + steps: + - checkout + - run: + name: Git submodules + command: git submodule update --init --recursive + - run: + name: Build (debug) + command: | + cmake \ + -DCMAKE_BUILD_TYPE=DEBUG \ + . + cmake --build . -- -j2 + - run: + name: Run unit tests + command: ./unit_tests + - run: + name: Coveralls + when: on_success + command: coveralls --include src +workflows: + version: 2 + build_and_test: + jobs: + - build-release + - build-debug-and-test + diff --git a/.gitignore b/.gitignore index a93a86f..073ff83 100755 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ build*/ -.idea*/ +*.swp + diff --git a/.travis.yml b/.travis.yml deleted file mode 100755 index c014dbc..0000000 --- a/.travis.yml +++ /dev/null @@ -1,11 +0,0 @@ -sudo: required -dist: trusty -language: c++ -matrix: - include: - - compiler: gcc - before_install: pip install --user cpp-coveralls - after_success: coveralls --include src - - compiler: clang -script: - - test/test diff --git a/CMakeLists.txt b/CMakeLists.txt index 297a4c6..cdcbb0a 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,61 +2,54 @@ cmake_minimum_required(VERSION 3.2 FATAL_ERROR) project(speed-of-sound) -enable_language(C CXX) - +set(CMAKE_SYSTEM_NAME Generic) +set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY) +set(CMAKE_EXPORT_COMPILE_COMMANDS ON) set(CMAKE_CXX_STANDARD 11) set(CMAKE_CXX_STANDARD_REQUIRED ON) -if(CMAKE_CXX_COMPILER_ID MATCHES GNU) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -O0") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --coverage") +if(CMAKE_BUILD_TYPE MATCHES DEBUG) + message("DEBUG mode") + set(build_type_flags "-g -Og --coverage") +else() + message("RELEASE mode") + set(build_type_flags "-O3 -Werror") endif() +set(CMAKE_CXX_FLAGS + "${build_type_flags}") include_directories( - ${PROJECT_SOURCE_DIR}/src -) - + ${PROJECT_SOURCE_DIR}/src) add_library( speed_of_sound src/speed_of_sound.cc - src/speed_of_sound_theory.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 -) - + ${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 -) - + ${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 -) - + test/speed_of_sound_theory_test.cc) add_dependencies(unit_tests googletest) - target_link_libraries( unit_tests googletest speed_of_sound - pthread -) + pthread) include(CTest) enable_testing() - add_test(unit ${PROJECT_BINARY_DIR}/unit_tests) + diff --git a/CONTRIBUTING b/CONTRIBUTING index b8aae67..e8f2aae 100644 --- a/CONTRIBUTING +++ b/CONTRIBUTING @@ -1,2 +1,2 @@ -Leland Jansen +Leland Jansen (lelandjansen) diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..7e4af42 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,43 @@ +FROM ubuntu:xenial + +RUN apt-get update + +# CircleCI requirements +RUN apt-get install -y \ + git \ + ssh \ + tar \ + gzip \ + ca-certificates + +# Our general requirements +RUN apt-get install -y \ + build-essential \ + software-properties-common + +# LLVM +RUN wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add - +# Fingerprint: 6084 F3CF 814B 57C1 CF12 EFD5 15CF 4D18 AF4F 7421 +RUN apt-add-repository "deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-5.0 main" +RUN apt-get update && apt-get install -y \ + clang-5.0 \ + lldb-5.0 \ + lld-5.0 \ + clang-tidy-5.0 \ + clang-format-5.0 + +# CMake +RUN wget https://cmake.org/files/v3.9/cmake-3.9.4.tar.gz +RUN tar --extract --gunzip --file cmake-3.9.4.tar.gz +RUN cd cmake-3.9.4 && \ + ./bootstrap && \ + make -j2 && \ + make install -j2 +RUN rm cmake-3.9.4.tar.gz && \ + rm -rf cmake-3.9.4 + +# Coveralls +RUN apt-get install -y python-pip +RUN pip install --upgrade pip +RUN pip install --prefix /usr/local cpp-coveralls + diff --git a/README.md b/README.md index ce4ea0f..209e95e 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,6 @@ # Speed of Sound -[![Build Status](https://travis-ci.org/lelandjansen/speed-of-sound.svg)](https://travis-ci.org/lelandjansen/speed-of-sound) +[![CircleCI](https://circleci.com/gh/lelandjansen/speed-of-sound.svg?style=svg)](https://circleci.com/gh/lelandjansen/speed-of-sound) [![Coverage Status](https://coveralls.io/repos/github/lelandjansen/speed-of-sound/badge.svg)](https://coveralls.io/github/lelandjansen/speed-of-sound) -[![Analytics](https://ga-beacon.appspot.com/UA-46915227-3/speed-of-sound?flat)](https://github.com/igrigorik/ga-beacon) **Speed of Sound** is a library to efficiently compute the speed of sound in air. It is intended for use in embedded systems that require a high-precision computation of the speed of sound in air based a variety of ambient conditions. diff --git a/test/test b/test/test index dfbe73b..ed0c6d8 100755 --- a/test/test +++ b/test/test @@ -3,5 +3,6 @@ DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" BUILD_DIR="$DIR/../build" mkdir -p "$BUILD_DIR/build" cmake -B$BUILD_DIR -H$DIR/.. -make -j -C $BUILD_DIR +make -j2 -C $BUILD_DIR $BUILD_DIR/unit_tests +