Skip to content

Commit

Permalink
Add cmake tests on github actions and add cmake scripts for index
Browse files Browse the repository at this point in the history
  • Loading branch information
vissarion committed Aug 14, 2024
1 parent 7fa4bf7 commit a6f99e5
Show file tree
Hide file tree
Showing 6 changed files with 166 additions and 5 deletions.
104 changes: 104 additions & 0 deletions .github/workflows/cmake.yml
Original file line number Diff line number Diff line change
@@ -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
1 change: 1 addition & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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()

17 changes: 17 additions & 0 deletions index/test/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -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)
19 changes: 19 additions & 0 deletions index/test/algorithms/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -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()
19 changes: 19 additions & 0 deletions index/test/rtree/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -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()
11 changes: 6 additions & 5 deletions test/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit a6f99e5

Please sign in to comment.