Include <array> head in stl_emulation.h (#7480)

* Add C++ standard builds for windows CI

* Allow C++std to be specified in cmake

* Include <array> in stl_emulation

* Add linux std CI builds
This commit is contained in:
Derek Bailey
2022-08-26 00:22:27 -07:00
committed by GitHub
parent 994502b6dd
commit e2eb5ee670
3 changed files with 51 additions and 1 deletions

View File

@@ -63,6 +63,51 @@ jobs:
id: hash-gcc id: hash-gcc
run: echo "::set-output name=hashes::$(sha256sum Linux.flatc.binary.${{ matrix.cxx }}.zip | base64 -w0)" run: echo "::set-output name=hashes::$(sha256sum Linux.flatc.binary.${{ matrix.cxx }}.zip | base64 -w0)"
build-linux-cpp-std:
name: Build Linux C++
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
std: [11, 14, 17, 20, 23]
cxx: [g++-10, clang++-12]
exclude:
# GCC 10.3.0 doesn't support std 23
- cxx: g++-10
std: 23
steps:
- uses: actions/checkout@v2
- name: cmake
run: >
CXX=${{ matrix.cxx }} cmake -G "Unix Makefiles"
-DCMAKE_BUILD_TYPE=Release -DFLATBUFFERS_STRICT_MODE=ON
-DFLATBUFFERS_CPP_STD=${{ matrix.std }}
- name: build
run: make -j
- name: test
run: ./flattests
build-windows-cpp-std:
name: Build Windows C++
runs-on: windows-2019
strategy:
matrix:
std: [11, 14, 17, 20, 23]
fail-fast: false
steps:
- uses: actions/checkout@v2
- name: Add msbuild to PATH
uses: microsoft/setup-msbuild@v1.1
- name: cmake
run: >
cmake -G "Visual Studio 16 2019" -A x64 -DCMAKE_BUILD_TYPE=Release
-DFLATBUFFERS_STRICT_MODE=ON
-DFLATBUFFERS_CPP_STD=${{ matrix.std }}
- name: build
run: msbuild.exe FlatBuffers.sln /p:Configuration=Release /p:Platform=x64
- name: test
run: Release\flattests.exe
build-windows: build-windows:
permissions: permissions:
contents: write contents: write

View File

@@ -78,6 +78,10 @@ option(FLATBUFFERS_STRICT_MODE
"Build flatbuffers with all warnings as errors (-Werror or /WX)." "Build flatbuffers with all warnings as errors (-Werror or /WX)."
OFF) OFF)
if(NOT DEFINED FLATBUFFERS_CPP_STD)
set(FLATBUFFERS_CPP_STD 11)
endif()
set(MSVC_LIKE OFF) set(MSVC_LIKE OFF)
if(MSVC OR CMAKE_CXX_COMPILER_FRONTEND_VARIANT STREQUAL "MSVC") if(MSVC OR CMAKE_CXX_COMPILER_FRONTEND_VARIANT STREQUAL "MSVC")
set(MSVC_LIKE ON) set(MSVC_LIKE ON)
@@ -334,7 +338,7 @@ include_directories(grpc)
add_library(ProjectConfig INTERFACE) add_library(ProjectConfig INTERFACE)
target_compile_features(ProjectConfig target_compile_features(ProjectConfig
INTERFACE INTERFACE
cxx_std_11 cxx_std_${FLATBUFFERS_CPP_STD}
) )
# Force the standard to be met. # Force the standard to be met.

View File

@@ -46,6 +46,7 @@
#include <span> #include <span>
#elif defined(__cpp_lib_span) && defined(__has_include) #elif defined(__cpp_lib_span) && defined(__has_include)
#if __has_include(<span>) #if __has_include(<span>)
#include <array>
#include <span> #include <span>
#define FLATBUFFERS_USE_STD_SPAN #define FLATBUFFERS_USE_STD_SPAN
#endif #endif