freebsd-dev/contrib/libcbor/.circleci/config.yml
Ed Maste 5d3e7166f6 libcbor: update to 0.10.2
Sponsored by:	The FreeBSD Foundation
2023-04-21 16:10:03 -04:00

225 lines
6.1 KiB
YAML

version: 2.1
commands:
linux-setup:
steps:
- run: sudo apt-get update
- run: sudo apt-get install -y cmake ${TOOLCHAIN_PACKAGES}
- run: sudo apt install libcmocka-dev
build:
steps:
- run: >
cmake -DWITH_TESTS=ON \
-DCMAKE_BUILD_TYPE=Debug \
-DSANITIZE=OFF \
-DCOVERAGE="${CMAKE_COVERAGE:='OFF'}" \
.
- run: make -j 16 VERBOSE=1
build-release:
steps:
- run: >
cmake -DWITH_TESTS=ON \
-DCMAKE_BUILD_TYPE=Release \
.
- run: make -j 16 VERBOSE=1
test:
steps:
- run: ctest -VV
orbs:
codecov: codecov/codecov@3.2.2
jobs:
static-test:
machine:
image: ubuntu-2204:2022.10.2
environment:
TOOLCHAIN_PACKAGES: g++
steps:
- checkout
- linux-setup
- run: sudo apt-get install -y clang-format doxygen cppcheck
- run: cppcheck --inline-suppr --error-exitcode=1 .
- run: bash clang-format.sh --verbose
- run: >
if ! $(git diff-index --quiet HEAD); then
echo "Code formatting doesn't conform to clang-format"
echo "Please run clang-format.sh, commit the diff, and push to re-run CI"
echo "Excerpt of the diff follows"
git diff | head -n 20
fi
- run: >
if doxygen Doxyfile | grep 'warning: '; then
echo "Doxygen warning (see above) -- misformatted docs?"
exit 1
fi
- run: >
cd doc &&
pip3 install -r source/requirements.txt &&
make html
build-and-test:
machine:
image: ubuntu-2204:2022.10.2
environment:
TOOLCHAIN_PACKAGES: g++
CMAKE_COVERAGE: ON
steps:
- checkout
- linux-setup
- run: sudo apt-get install -y valgrind
- build
- test
- run: ctest -T Coverage
- codecov/upload
- run: ctest --output-on-failure -T memcheck | tee memcheck.out
- run: >
if grep -q 'Memory Leak\|IPW\|Uninitialized Memory Conditional\|Uninitialized Memory Read' memcheck.out; then
cat Testing/Temporary/MemoryChecker*
exit 1
fi;
build-and-test-clang:
machine:
image: ubuntu-2204:2022.10.2
environment:
TOOLCHAIN_PACKAGES: clang
CC: clang
CXX: clang++
steps:
- checkout
- linux-setup
- build
- test
build-and-test-32b:
machine:
image: ubuntu-2204:2022.10.2
steps:
- checkout
- run: sudo apt-get update
- run: sudo apt-get install -y cmake gcc-multilib g++-multilib libc6-dev-i386
# Make cmocka from source w/ 32b setup
- run: git clone https://git.cryptomilk.org/projects/cmocka.git ~/cmocka
- run: >
cd $(mktemp -d /tmp/build.XXXX) &&
cmake ~/cmocka -DCMAKE_TOOLCHAIN_FILE=~/cmocka/cmake/Toolchain-cross-m32.cmake &&
make &&
sudo make install
# Piggyback on the cmocka 32b toolchain
- run: >
cmake -DWITH_TESTS=ON \
-DCMAKE_BUILD_TYPE=Debug \
-DCMAKE_TOOLCHAIN_FILE=~/cmocka/cmake/Toolchain-cross-m32.cmake \
.
- run: make -j 16 VERBOSE=1
- test
build-and-test-release-clang:
machine:
image: ubuntu-2204:2022.10.2
environment:
TOOLCHAIN_PACKAGES: clang
CC: clang
CXX: clang++
steps:
- checkout
- linux-setup
- build-release
- test
llvm-coverage:
machine:
image: ubuntu-2204:2022.10.2
environment:
TOOLCHAIN_PACKAGES: clang
CC: clang
CXX: clang++
CMAKE_COVERAGE: ON
steps:
- checkout
- linux-setup
- build
- run: make llvm-coverage
build-and-test-arm:
machine:
image: ubuntu-2204:2022.10.2
environment:
TOOLCHAIN_PACKAGES: g++
resource_class: arm.medium
steps:
- checkout
- linux-setup
- build
- test
build-bazel:
machine:
image: ubuntu-2204:2022.10.2
environment:
TOOLCHAIN_PACKAGES: g++
steps:
- checkout
- linux-setup
- run: sudo apt install apt-transport-https curl gnupg
- run: curl -fsSL https://bazel.build/bazel-release.pub.gpg | gpg --dearmor > bazel.gpg
- run: sudo mv bazel.gpg /etc/apt/trusted.gpg.d/
- run: echo "deb [arch=amd64] https://storage.googleapis.com/bazel-apt stable jdk1.8" | sudo tee /etc/apt/sources.list.d/bazel.list
- run: sudo apt update
- run: sudo apt install bazel
- run: bazel --version
- run: >
pushd examples/bazel &&
bazel run -s src:hello
build-and-test-osx:
macos:
xcode: 12.5.1
steps:
- checkout
- run: bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
- run: brew install cmocka cmake
- build
- test
build-and-test-win:
resource_class: 'windows.medium'
machine:
image: 'windows-server-2022-gui:current'
shell: 'bash.exe'
steps:
- checkout
- run: choco install cmake -y
- run: git clone https://git.cryptomilk.org/projects/cmocka.git
- run: cd cmocka && git checkout tags/cmocka-1.1.5
- run: /c/Program\ Files/Cmake/bin/cmake -S cmocka -B cmocka_build
- run: /c/Program\ Files/Cmake/bin/cmake --build cmocka_build
- run: /c/Program\ Files/Cmake/bin/cmake -S . -B libcbor_build -DWITH_TESTS=ON -DCMOCKA_INCLUDE_DIR=cmocka/include -DCMOCKA_LIBRARIES=$(pwd)/cmocka_build/src/Debug/cmocka.lib
- run: /c/Program\ Files/Cmake/bin/cmake --build libcbor_build
- run: >
export PATH="$(pwd)/cmocka_build/src/Debug/:$PATH" &&
/c/Program\ Files/Cmake/bin/ctest.exe --test-dir libcbor_build --output-on-failure
workflows:
build-and-test:
jobs:
- static-test
- build-and-test
- build-and-test-clang
- build-and-test-32b
- build-and-test-release-clang
- build-and-test-arm
- build-and-test-win
- build-bazel
- llvm-coverage
# OSX builds are expensive, run only on master
- build-and-test-osx:
requires:
- build-and-test
filters:
branches:
only: [master]