diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index a9e9b7bbd..9184ab16b 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -25,7 +25,12 @@ jobs: - uses: pre-commit/action@v3.0.0 buildAndTest: - name: Build and Test + name: >- + Build & Test + (${{ matrix.os }}) + (C++ ${{ matrix.cxx-standard }}) + ${{ matrix.memory-mapped == 'OFF' && '(USE_MEMORY_MAPPED_FILE=OFF)' || '' }} + ${{ matrix.static-build == 'OFF' && '(BUILD_SHARED_LIBS=OFF)' || '' }} needs: checkSource strategy: fail-fast: false @@ -33,11 +38,20 @@ jobs: os: [macos-latest, windows-latest, ubuntu-latest] memory-mapped: ["OFF", "ON"] static-build: ["OFF", "ON"] + cxx-standard: [14] include: - os: ubuntu-latest mono: mono - os: macos-latest mono: mono + - os: macos-latest + cxx-standard: 17 + mono: mono + - os: ubuntu-latest + cxx-standard: 17 + mono: mono + - os: windows-latest + cxx-standard: 17 runs-on: ${{ matrix.os }} @@ -78,12 +92,19 @@ jobs: string: ${{ runner.os }} - name: set lower case runner os - shell: "bash" + shell: bash run: | echo "PRESET=${{ steps.lc_platform.outputs.lowercase }}-ci" >>${GITHUB_ENV} - name: Configure CMake - run: cmake -DUSE_MEMORY_MAPPED_FILE=${{ matrix.memory-mapped }} -DBUILD_SHARED_LIBS=${{ matrix.static-build }} --preset ${{ env.PRESET }} + shell: bash + run: | + cmake \ + -DBUILD_SHARED_LIBS:BOOL=${{ matrix.static-build || 'ON' }} \ + -DCMAKE_CXX_STANDARD=${{ matrix.cxx-standard || '14' }} \ + -DUSE_MEMORY_MAPPED_FILE:BOOL=${{ matrix.memory-mapped || 'ON' }} \ + -LA \ + --preset ${{ env.PRESET }} - name: Build run: cmake --build --preset ${{ env.PRESET }} diff --git a/.github/workflows/release_linux.yml b/.github/workflows/release_linux.yml index b331f54e3..4db73dc3c 100644 --- a/.github/workflows/release_linux.yml +++ b/.github/workflows/release_linux.yml @@ -40,7 +40,7 @@ jobs: libboost-regex-dev - name: Configure CMake - run: cmake --preset ${{ env.PRESET }} + run: cmake -LA --preset ${{ env.PRESET }} - name: Build run: cmake --build --preset ${{ env.PRESET }} diff --git a/CMakeLists.txt b/CMakeLists.txt index fe1243f03..ffb86d4ac 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -49,7 +49,7 @@ mapnik_option(USE_PROJ "adds proj support" ON) mapnik_option(USE_GRID_RENDERER "adds grid renderer" ON) mapnik_option(USE_SVG_RENDERER "adds svg renderer" ON) mapnik_option(USE_BIGINT "uses 64 bit instead of 32" ON) -mapnik_option(USE_BOOST_FILESYSTEM "use boost::filesytem even if `std::filesystem` is avaible (since c++17)" OFF) +mapnik_option(USE_BOOST_FILESYSTEM "use boost::filesytem even if `std::filesystem` is available (since c++17)" OFF) mapnik_option(USE_MEMORY_MAPPED_FILE "uses file cache" ON) mapnik_option(USE_MULTITHREADED "enables the multithreaded features (threadsafe)" ON) mapnik_option(USE_NO_ATEXIT "disable atexit" OFF) @@ -156,11 +156,11 @@ mapnik_find_threads() mapnik_find_package(ICU REQUIRED COMPONENTS uc i18n data) mapnik_find_package(Boost ${BOOST_MIN_VERSION} REQUIRED COMPONENTS regex) -if(CMAKE_CXX_STANDARD LESS 17) - set(USE_BOOST_FILESYSTEM ON) +if(CMAKE_CXX_STANDARD VERSION_LESS 17) + set(USE_BOOST_FILESYSTEM ON CACHE BOOL "Use boost::filesystem" FORCE) endif() if(USE_BOOST_FILESYSTEM) -mapnik_find_package(Boost ${BOOST_MIN_VERSION} REQUIRED COMPONENTS filesystem system) + mapnik_find_package(Boost ${BOOST_MIN_VERSION} REQUIRED COMPONENTS filesystem system) endif() list(APPEND MAPNIK_COMPILE_DEFS BOOST_REGEX_HAS_ICU) @@ -266,7 +266,7 @@ if(USE_BIGINT) endif() if(USE_BOOST_FILESYSTEM) - list(APPEND MAPNIK_COMPILE_DEFS USE_BOOST_FILESYSYTEM) + list(APPEND MAPNIK_COMPILE_DEFS USE_BOOST_FILESYSTEM) list(APPEND MAPNIK_OPTIONAL_LIBS Boost::filesystem) endif() diff --git a/include/mapnik/filesystem.hpp b/include/mapnik/filesystem.hpp index 09a3731e4..98ec5f8e2 100644 --- a/include/mapnik/filesystem.hpp +++ b/include/mapnik/filesystem.hpp @@ -23,20 +23,20 @@ #ifndef MAPNIK_FILESYSTEM_HPP #define MAPNIK_FILESYSTEM_HPP -#if defined(__cpp_lib_filesystem) && !defined(USE_BOOST_FILESYSTEM) -#include -#else +#ifdef USE_BOOST_FILESYSTEM #include // for absolute, exists, etc #include // for path, operator/ +#else +#include #endif namespace mapnik { -#if defined(__cpp_lib_filesystem) && !defined(USE_BOOST_FILESYSTEM) -namespace fs = std::filesystem; -using error_code = std::error_code; -#else +#ifdef USE_BOOST_FILESYSTEM namespace fs = boost::filesystem; using error_code = boost::system::error_code; +#else +namespace fs = std::filesystem; +using error_code = std::error_code; #endif } // namespace mapnik