Skip to content

Commit

Permalink
CircleCI
Browse files Browse the repository at this point in the history
  • Loading branch information
lelandjansen committed Nov 4, 2017
1 parent 4c34de0 commit 0eb1c6d
Show file tree
Hide file tree
Showing 6 changed files with 125 additions and 39 deletions.
48 changes: 48 additions & 0 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
@@ -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 . -- -j3
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 . -- -j3
- 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

3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
build*/
.idea*/
*.swp

11 changes: 0 additions & 11 deletions .travis.yml

This file was deleted.

56 changes: 30 additions & 26 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,61 +2,65 @@ 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")
# set(CMAKE_CXX_CLANG_TIDY "clang-tidy-5.0")
else()
message("RELEASE mode")
set(build_type_flags "-O3 -Werror")
# set(CMAKE_CXX_CLANG_TIDY "clang-tidy-5.0;-warnings-as-errors=*")
endif()

include_directories(
${PROJECT_SOURCE_DIR}/src
)
if(CMAKE_CXX_COMPILER_ID MATCHES Clang)
message("Clang")
elseif(CMAKE_CXX_COMPILER_ID MATCHES GNU)
message("gnu")
endif()

set(CMAKE_CXX_FLAGS "\
${build_type_flags}")# \
# -Wall \
# -Wextra \
# -Wpedantic")
include_directories(
${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)

43 changes: 43 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -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

3 changes: 2 additions & 1 deletion test/test
Original file line number Diff line number Diff line change
Expand Up @@ -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 -j3 -C $BUILD_DIR
$BUILD_DIR/unit_tests

0 comments on commit 0eb1c6d

Please sign in to comment.