Skip to content

Commit

Permalink
Merge pull request #1302 from vissarion/cmake_ci
Browse files Browse the repository at this point in the history
Update cmake scripts and add them to github actions
  • Loading branch information
vissarion authored Sep 13, 2024
2 parents e8d8c39 + 3dc7768 commit ad2a134
Show file tree
Hide file tree
Showing 13 changed files with 297 additions and 14 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
7 changes: 6 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ target_link_libraries(boost_geometry
Boost::concept_check
Boost::config
Boost::core
Boost::crc
Boost::function_types
Boost::iterator
Boost::lexical_cast
Expand All @@ -32,6 +33,7 @@ target_link_libraries(boost_geometry
Boost::mpl
Boost::multiprecision
Boost::numeric_conversion
Boost::program_options
Boost::qvm
Boost::range
Boost::rational
Expand Down Expand Up @@ -100,9 +102,11 @@ if(BUILD_TESTING AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/test/CMakeLists.txt")
config
algorithm
any
crc
lexical_cast
math
multiprecision
program_options
qvm
rational
serialization
Expand All @@ -123,7 +127,8 @@ if(BUILD_TESTING AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/test/CMakeLists.txt")
endif()

enable_testing()
add_subdirectory(test)
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()
40 changes: 27 additions & 13 deletions test/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,12 @@
# Boost.Geometry

# Copyright (c) 2024 Barend Gehrels, Amsterdam, the Netherlands.

# This file was modified by Oracle on 2024.
# Modifications 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)
Expand All @@ -8,55 +15,62 @@
# 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}
# Add a dependency to Boost.Geometry
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
target_compile_features(${unit_test_name} PRIVATE cxx_std_14)

# To be able to run ctest
add_test(NAME ${unit_test_name} COMMAND ${unit_test_name})
set(extra_macro_args ${ARGN})
if (NOT extra_macro_args STREQUAL "not_run")
add_test(NAME ${unit_test_name} COMMAND ${unit_test_name})
endif()

# Add a dependency to the global tests target
add_dependencies(tests ${unit_test_name})

# Inform the caller about the test name. It can then set defines, if necessary.
set(BOOST_GEOMETRY_UNIT_TEST_NAME ${unit_test_name} PARENT_SCOPE)

endfunction()

if (NOT TARGET tests)
add_custom_target(tests)
endif()

add_subdirectory(core)
add_subdirectory(concepts)
add_subdirectory(geometries)
add_subdirectory(arithmetic)
add_subdirectory(algorithms)
add_subdirectory(arithmetic)
add_subdirectory(concepts)
add_subdirectory(core)
add_subdirectory(cs_undefined)
add_subdirectory(formulas)
add_subdirectory(geometries)
add_subdirectory(io)
add_subdirectory(iterators)
add_subdirectory(strategies)
add_subdirectory(policies)
add_subdirectory(io)
add_subdirectory(robustness)
add_subdirectory(srs)
add_subdirectory(strategies)
add_subdirectory(util)
add_subdirectory(views)
22 changes: 22 additions & 0 deletions test/cs_undefined/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# 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
distance
envelope_expand
index
is
measure
other
relops1
relops2
)
boost_geometry_add_unit_test("cs_undefined" ${item})
endforeach()

boost_geometry_add_unit_test("cs_undefined" setops1 "not_run")
boost_geometry_add_unit_test("cs_undefined" setops2 "not_run")
10 changes: 10 additions & 0 deletions test/robustness/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# 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)

add_subdirectory(convex_hull)
add_subdirectory(overlay)
#add_subdirectory(within)
13 changes: 13 additions & 0 deletions test/robustness/convex_hull/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# 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)

boost_geometry_add_unit_test("robustness" random_multi_points)

target_include_directories(boost_geometry_robustness_random_multi_points
PRIVATE
"${PROJECT_SOURCE_DIR}/test/robustness"
.)
10 changes: 10 additions & 0 deletions test/robustness/overlay/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# 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)

add_subdirectory(areal_areal)
add_subdirectory(buffer)
add_subdirectory(linear_areal)
24 changes: 24 additions & 0 deletions test/robustness/overlay/areal_areal/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# 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
#general_intersection_precision
interior_triangles
intersection_pies
intersection_stars
intersects
random_ellipses_stars
recursive_polygons
star_comb
#ticket_9081
)
boost_geometry_add_unit_test("robustness" ${item})
target_include_directories(${BOOST_GEOMETRY_UNIT_TEST_NAME}
PRIVATE
"${PROJECT_SOURCE_DIR}/test/robustness"
.)
endforeach()
18 changes: 18 additions & 0 deletions test/robustness/overlay/buffer/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# 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
#many_ring_buffer
#multi_point_growth
recursive_polygons_buffer
)
boost_geometry_add_unit_test("robustness" ${item})
target_include_directories(${BOOST_GEOMETRY_UNIT_TEST_NAME}
PRIVATE
"${PROJECT_SOURCE_DIR}/test/robustness"
.)
endforeach()
Loading

0 comments on commit ad2a134

Please sign in to comment.