From a6f99e5572d0b29bb403cf789e5454bc3074987a Mon Sep 17 00:00:00 2001 From: Vissarion Fisikopoulos Date: Sat, 10 Aug 2024 15:00:07 +0300 Subject: [PATCH] Add cmake tests on github actions and add cmake scripts for index --- .github/workflows/cmake.yml | 104 +++++++++++++++++++++++++++ CMakeLists.txt | 1 + index/test/CMakeLists.txt | 17 +++++ index/test/algorithms/CMakeLists.txt | 19 +++++ index/test/rtree/CMakeLists.txt | 19 +++++ test/CMakeLists.txt | 11 +-- 6 files changed, 166 insertions(+), 5 deletions(-) create mode 100644 .github/workflows/cmake.yml create mode 100644 index/test/CMakeLists.txt create mode 100644 index/test/algorithms/CMakeLists.txt create mode 100644 index/test/rtree/CMakeLists.txt diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml new file mode 100644 index 0000000000..223ce3efb2 --- /dev/null +++ b/.github/workflows/cmake.yml @@ -0,0 +1,104 @@ +############################################################################## +# GitHub Actions Workflow for Boost.Geometry to build tests with cmake +# +# Copyright (c) 2024 Oracle and/or its affiliates. +# Contributed and/or modified by Vissarion Fysikopoulos, on behalf of Oracle +# +# Use, modification and distribution is subject to the Boost Software License, +# Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +# http://www.boost.org/LICENSE_1_0.txt) +############################################################################## +name: cmake + +on: [push] + +jobs: + ############################################################################## + clang: + name: ${{ matrix.b2_toolset }} + runs-on: ${{ matrix.os }} + + strategy: + fail-fast: false + matrix: + b2_toolset: [ + clang-14 + ] + + include: + - b2_toolset: clang-14 + b2_cxxstd: 14,17,2a + version: "14" + os: ubuntu-22.04 + steps: + - name: Set up environment + id: setenv + run: | + if [[ "$GITHUB_REF" == *master ]]; then + echo "BOOST_BRANCH=master" >> $GITHUB_ENV + else + echo "BOOST_BRANCH=develop" >> $GITHUB_ENV + fi + echo "BOOST_SELF=$(basename $GITHUB_WORKSPACE)" >> $GITHUB_ENV + echo "BOOST_ROOT=$GITHUB_WORKSPACE/boost-root" >> $GITHUB_ENV + echo "boost_self=$(basename $GITHUB_WORKSPACE)" >> "$GITHUB_OUTPUT" + echo "boost_root=$GITHUB_WORKSPACE/boost-root" >> "$GITHUB_OUTPUT" + + - name: Clone boostorg/boost + run: | + git clone -b $BOOST_BRANCH --depth 1 https://github.com/boostorg/boost.git $BOOST_ROOT + cd $BOOST_ROOT + git submodule update -q --init libs/headers + git submodule update -q --init tools/boost_install + git submodule update -q --init tools/boostdep + git submodule update -q --init tools/build + mkdir -p libs/$BOOST_SELF + + - uses: actions/checkout@v2 + with: + path: ${{ steps.setenv.outputs.boost_root }}/libs/${{ steps.setenv.outputs.boost_self }} + + - name: Run tools/boostdep/depinst/depinst.py + run: | + cd $BOOST_ROOT + python tools/boostdep/depinst/depinst.py --include benchmark --include example --include examples --include tools $BOOST_SELF + + - name: Bootstrap boostorg/boost + run: | + gcc --version + cd $BOOST_ROOT + ./bootstrap.sh --with-toolset=gcc + ./b2 headers + test -f /usr/local/bin/b2 && rm -rf /usr/local/bin/b2 + test -f /usr/local/bin/bjam && rm -rf /usr/local/bin/bjam + sudo cp $BOOST_ROOT/b2 /usr/local/bin/ + ls -l /usr/local/bin/b2 + b2 -v + + - name: Set up clang toolset in ~/user-config.jam + run: | + export CXX_NAME=clang++-${{ matrix.version }} + echo ${CXX_NAME} + echo "# $HOME/user-config.jam" > $HOME/user-config.jam + echo "using clang : : $(which clang++-${{ matrix.version }}) ;" > ${HOME}/user-config.jam + test -f $HOME/user-config.jam && cat $HOME/user-config.jam + + - name: Build tests with cmake (c++17) + run: | + cd $BOOST_ROOT/libs/geometry + mkdir __build + cd __build + cmake -DCMAKE_CXX_STANDARD=17 -DBUILD_TESTING=ON .. + cmake --build . --target tests + + - name: Build tests with cmake + run: | + cd $BOOST_ROOT/libs/geometry/__build + rm -rf * + cmake -DBUILD_TESTING=ON .. + cmake --build . --target tests + + - name: Run tests + run: | + cd $BOOST_ROOT/libs/geometry/__build + ctest --output-on-failure --no-tests=error diff --git a/CMakeLists.txt b/CMakeLists.txt index 5da9cc9cfd..dc00602557 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -124,6 +124,7 @@ if(BUILD_TESTING AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/test/CMakeLists.txt") enable_testing() add_subdirectory(test EXCLUDE_FROM_ALL) + add_subdirectory(index/test EXCLUDE_FROM_ALL) endif() diff --git a/index/test/CMakeLists.txt b/index/test/CMakeLists.txt new file mode 100644 index 0000000000..755fcc47cc --- /dev/null +++ b/index/test/CMakeLists.txt @@ -0,0 +1,17 @@ +# Boost.Geometry +# Copyright (c) 2024, Oracle and/or its affiliates. +# Contributed and/or modified by Vissarion Fysikopoulos, on behalf of Oracle +# Use, modification and distribution is subject to the Boost Software License, +# Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +# http://www.boost.org/LICENSE_1_0.txt) + +foreach(item IN ITEMS + minmax_heap + varray_old + varray + ) + boost_geometry_add_unit_test("index" ${item}) +endforeach() + +add_subdirectory(algorithms) +add_subdirectory(rtree) \ No newline at end of file diff --git a/index/test/algorithms/CMakeLists.txt b/index/test/algorithms/CMakeLists.txt new file mode 100644 index 0000000000..15f808bb58 --- /dev/null +++ b/index/test/algorithms/CMakeLists.txt @@ -0,0 +1,19 @@ +# Boost.Geometry +# Copyright (c) 2024, Oracle and/or its affiliates. +# Contributed and/or modified by Vissarion Fysikopoulos, on behalf of Oracle +# Use, modification and distribution is subject to the Boost Software License, +# Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +# http://www.boost.org/LICENSE_1_0.txt) + +foreach(item IN ITEMS + content + intersection_content # this tests overlap() too + is_valid + margin + #minmaxdist + union_content + segment_intersection + path_intersection + ) + boost_geometry_add_unit_test("index" ${item}) +endforeach() \ No newline at end of file diff --git a/index/test/rtree/CMakeLists.txt b/index/test/rtree/CMakeLists.txt new file mode 100644 index 0000000000..0df65b6b11 --- /dev/null +++ b/index/test/rtree/CMakeLists.txt @@ -0,0 +1,19 @@ +# Boost.Geometry +# Copyright (c) 2024, Oracle and/or its affiliates. +# Contributed and/or modified by Vissarion Fysikopoulos, on behalf of Oracle +# Use, modification and distribution is subject to the Boost Software License, +# Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +# http://www.boost.org/LICENSE_1_0.txt) + +foreach(item IN ITEMS + rtree_contains_point + rtree_epsilon + rtree_insert_remove + rtree_intersects_geom + rtree_move_pack + rtree_non_cartesian + rtree_values + #compile-fail rtree_values_invalid + ) + boost_geometry_add_unit_test("index" ${item}) +endforeach() \ No newline at end of file diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index e82943b54e..1103685421 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -8,26 +8,27 @@ # It also lets running the tests much faster. if (APPLE) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ffp-contract=fast") -endif() +endif() function(boost_geometry_add_unit_test prefix item) set(unit_test_name "boost_geometry_${prefix}_${item}") add_executable(${unit_test_name} ${item}.cpp) # Add a dependendcy to Boost.Geometry - target_link_libraries(${unit_test_name} + target_link_libraries(${unit_test_name} PRIVATE Boost::geometry) # For unit tests, add a dependency to the unit test framework (in header only mode) - target_link_libraries(${unit_test_name} + target_link_libraries(${unit_test_name} PRIVATE Boost::included_unit_test_framework) - + # Include the main Geometry test folder and the current folder target_include_directories(${unit_test_name} PRIVATE - "${PROJECT_SOURCE_DIR}/test" + "${PROJECT_SOURCE_DIR}/test" + "${PROJECT_SOURCE_DIR}/index/test" .) # To compile with C++14