# Copyright (C) 2021 Sebastian Pipping # Licensed under the MIT license name: Build and test on: pull_request: push: schedule: - cron: '0 4 * * 5' # Every Friday at 4am jobs: build_and_test: name: Build and test runs-on: ubuntu-latest steps: - uses: actions/checkout@v2.3.4 - name: Add Clang/LLVM repositories run: |- wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - sudo add-apt-repository 'deb http://apt.llvm.org/focal/ llvm-toolchain-focal-11 main' - name: Install build dependencies run: |- sudo apt-get install --yes --no-install-recommends -V \ clang-11 \ cmake \ doxygen \ graphviz \ llvm-11 \ lzip \ qhelpgenerator-qt5 \ qtchooser - name: Build, test and install run: |- sed 's,:,\n,g' <<<"${PATH}" clang --version GTEST_VERSION=1.8.1 GTEST_PREFIX=~/.local/ wget https://github.com/google/googletest/archive/release-${GTEST_VERSION}.tar.gz tar xf release-${GTEST_VERSION}.tar.gz ( cd googletest-release-${GTEST_VERSION}/ cmake \ -DBUILD_SHARED_LIBS=ON \ -DCVF_VERSION=${GTEST_VERSION} \ -DCMAKE_INSTALL_PREFIX:PATH=${GTEST_PREFIX} \ . make make install ) mkdir build pushd build compile_flags=( -pipe -O1 -g -fsanitize=address,undefined,leak -fno-sanitize-recover=all -fno-omit-frame-pointer -Wall -Wextra -pedantic ) CFLAGS="${compile_flags[*]} -std=c89" CXXFLAGS="${compile_flags[*]} -std=c++98" LDFLAGS='-g -fsanitize=address' cmake_args=( -DCMAKE_INSTALL_PREFIX:PATH=${GTEST_PREFIX} -Wdev -Werror=dev -Wdeprecated -Werror=deprecated -DCMAKE_C_COMPILER=clang-11 -DCMAKE_CXX_COMPILER=clang++-11 -DCMAKE_C_FLAGS="${CFLAGS}" -DCMAKE_CXX_FLAGS="${CXXFLAGS}" -DCMAKE_EXE_LINKER_FLAGS="${LDFLAGS}" -DCMAKE_MODULE_LINKER_FLAGS="${LDFLAGS}" -DCMAKE_SHARED_LINKER_FLAGS="${LDFLAGS}" -DURIPARSER_WARNINGS_AS_ERRORS=ON ) cmake "${cmake_args[@]}" -DCMAKE_INSTALL_INCLUDEDIR=include123 .. make VERBOSE=1 all make VERBOSE=1 test ARGS=--verbose cat Testing/Temporary/LastTest.log make install make DESTDIR="${PWD}"/ROOT/ install find ROOT | sort ./doc/release.sh popd pushd cmake/test_find_package cmake "${cmake_args[@]}" . make VERBOSE=1 ./hello popd git fetch --tags --unshallow origin # for "git describe" in make-distcheck.sh ./make-distcheck.sh -DCMAKE_INSTALL_PREFIX:PATH=${GTEST_PREFIX} # without AddressSanitizer ! git status | fgrep -A100 'Untracked files:' # works best at the very end