mirror of
https://github.com/boostorg/geometry.git
synced 2025-05-09 15:14:02 +00:00
Merge pull request #1302 from vissarion/cmake_ci
Update cmake scripts and add them to github actions
This commit is contained in:
commit
ad2a134a2e
104
.github/workflows/cmake.yml
vendored
Normal file
104
.github/workflows/cmake.yml
vendored
Normal file
@ -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
|
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
index/test/CMakeLists.txt
Normal file
17
index/test/CMakeLists.txt
Normal file
@ -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
index/test/algorithms/CMakeLists.txt
Normal file
19
index/test/algorithms/CMakeLists.txt
Normal file
@ -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
index/test/rtree/CMakeLists.txt
Normal file
19
index/test/rtree/CMakeLists.txt
Normal file
@ -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()
|
@ -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)
|
||||
@ -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(iterators)
|
||||
add_subdirectory(strategies)
|
||||
add_subdirectory(policies)
|
||||
add_subdirectory(geometries)
|
||||
add_subdirectory(io)
|
||||
add_subdirectory(iterators)
|
||||
add_subdirectory(policies)
|
||||
add_subdirectory(robustness)
|
||||
add_subdirectory(srs)
|
||||
add_subdirectory(strategies)
|
||||
add_subdirectory(util)
|
||||
add_subdirectory(views)
|
||||
|
22
test/cs_undefined/CMakeLists.txt
Normal file
22
test/cs_undefined/CMakeLists.txt
Normal file
@ -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
test/robustness/CMakeLists.txt
Normal file
10
test/robustness/CMakeLists.txt
Normal file
@ -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
test/robustness/convex_hull/CMakeLists.txt
Normal file
13
test/robustness/convex_hull/CMakeLists.txt
Normal file
@ -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
test/robustness/overlay/CMakeLists.txt
Normal file
10
test/robustness/overlay/CMakeLists.txt
Normal file
@ -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
test/robustness/overlay/areal_areal/CMakeLists.txt
Normal file
24
test/robustness/overlay/areal_areal/CMakeLists.txt
Normal file
@ -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
test/robustness/overlay/buffer/CMakeLists.txt
Normal file
18
test/robustness/overlay/buffer/CMakeLists.txt
Normal file
@ -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()
|
8
test/robustness/overlay/linear_areal/CMakeLists.txt
Normal file
8
test/robustness/overlay/linear_areal/CMakeLists.txt
Normal file
@ -0,0 +1,8 @@
|
||||
# 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" recursive_polygons_linear_areal)
|
Loading…
x
Reference in New Issue
Block a user