Merge pull request #1868 from ylavic/cpp17_in_ci
Handle C++17 (and C++11 with MSVC) in CI.
This commit is contained in:
commit
49aa0fc15d
43
.travis.yml
43
.travis.yml
@ -28,51 +28,63 @@ env:
|
||||
matrix:
|
||||
include:
|
||||
# gcc
|
||||
- env: CONF=release ARCH=x86 CXX11=ON
|
||||
- env: CONF=release ARCH=x86 CXX11=ON CXX17=OFF
|
||||
compiler: gcc
|
||||
arch: amd64
|
||||
- env: CONF=release ARCH=x86_64 CXX11=ON
|
||||
- env: CONF=release ARCH=x86_64 CXX11=ON CXX17=OFF
|
||||
compiler: gcc
|
||||
arch: amd64
|
||||
- env: CONF=debug ARCH=x86 CXX11=OFF
|
||||
- env: CONF=debug ARCH=x86 CXX11=OFF CXX17=OFF
|
||||
compiler: gcc
|
||||
arch: amd64
|
||||
- env: CONF=debug ARCH=x86_64 CXX11=OFF
|
||||
- env: CONF=debug ARCH=x86_64 CXX11=OFF CXX17=OFF
|
||||
compiler: gcc
|
||||
arch: amd64
|
||||
- env: CONF=release ARCH=aarch64 CXX11=ON
|
||||
- env: CONF=debug ARCH=x86 CXX11=OFF CXX17=ON
|
||||
compiler: gcc
|
||||
arch: amd64
|
||||
- env: CONF=debug ARCH=x86_64 CXX11=OFF CXX17=ON
|
||||
compiler: gcc
|
||||
arch: amd64
|
||||
- env: CONF=release ARCH=aarch64 CXX11=ON CXX17=OFF
|
||||
compiler: gcc
|
||||
arch: arm64
|
||||
- env: CONF=debug ARCH=aarch64 CXX11=OFF
|
||||
- env: CONF=release ARCH=aarch64 CXX11=OFF CXX17=OFF
|
||||
compiler: gcc
|
||||
arch: arm64
|
||||
- env: CONF=release ARCH=aarch64 CXX11=OFF CXX17=ON
|
||||
compiler: gcc
|
||||
arch: arm64
|
||||
# clang
|
||||
- env: CONF=debug ARCH=x86 CXX11=ON CCACHE_CPP2=yes
|
||||
- env: CONF=release ARCH=x86 CXX11=ON CXX17=OFF CCACHE_CPP2=yes
|
||||
compiler: clang
|
||||
arch: amd64
|
||||
- env: CONF=debug ARCH=x86_64 CXX11=ON CCACHE_CPP2=yes
|
||||
- env: CONF=release ARCH=x86_64 CXX11=ON CXX17=OFF CCACHE_CPP2=yes
|
||||
compiler: clang
|
||||
arch: amd64
|
||||
- env: CONF=debug ARCH=x86 CXX11=OFF CCACHE_CPP2=yes
|
||||
- env: CONF=debug ARCH=x86 CXX11=OFF CXX17=OFF CCACHE_CPP2=yes
|
||||
compiler: clang
|
||||
arch: amd64
|
||||
- env: CONF=debug ARCH=x86_64 CXX11=OFF CCACHE_CPP2=yes
|
||||
- env: CONF=debug ARCH=x86_64 CXX11=OFF CXX17=OFF CCACHE_CPP2=yes
|
||||
compiler: clang
|
||||
arch: amd64
|
||||
- env: CONF=release ARCH=x86 CXX11=ON CCACHE_CPP2=yes
|
||||
- env: CONF=debug ARCH=x86 CXX11=OFF CXX17=ON CCACHE_CPP2=yes
|
||||
compiler: clang
|
||||
arch: amd64
|
||||
- env: CONF=release ARCH=x86_64 CXX11=ON CCACHE_CPP2=yes
|
||||
- env: CONF=debug ARCH=x86_64 CXX11=OFF CXX17=ON CCACHE_CPP2=yes
|
||||
compiler: clang
|
||||
arch: amd64
|
||||
- env: CONF=debug ARCH=aarch64 CXX11=ON CCACHE_CPP2=yes
|
||||
- env: CONF=debug ARCH=aarch64 CXX11=ON CXX17=OFF CCACHE_CPP2=yes
|
||||
compiler: clang
|
||||
arch: arm64
|
||||
- env: CONF=debug ARCH=aarch64 CXX11=OFF CCACHE_CPP2=yes
|
||||
- env: CONF=debug ARCH=aarch64 CXX11=OFF CXX17=OFF CCACHE_CPP2=yes
|
||||
compiler: clang
|
||||
arch: arm64
|
||||
- env: CONF=debug ARCH=aarch64 CXX11=OFF CXX17=ON CCACHE_CPP2=yes
|
||||
compiler: clang
|
||||
arch: arm64
|
||||
# coverage report
|
||||
- env: CONF=debug ARCH=x86 CXX11=ON GCOV_FLAGS='--coverage'
|
||||
- env: CONF=debug ARCH=x86 CXX11=ON CXX17=OFF GCOV_FLAGS='--coverage'
|
||||
compiler: gcc
|
||||
arch: amd64
|
||||
cache:
|
||||
@ -135,6 +147,7 @@ script:
|
||||
(cd build && cmake
|
||||
-DRAPIDJSON_HAS_STDSTRING=ON
|
||||
-DRAPIDJSON_BUILD_CXX11=$CXX11
|
||||
-DRAPIDJSON_BUILD_CXX17=$CXX17
|
||||
-DCMAKE_VERBOSE_MAKEFILE=ON
|
||||
-DCMAKE_BUILD_TYPE=$CONF
|
||||
-DCMAKE_CXX_FLAGS="$ARCH_FLAGS $GCOV_FLAGS"
|
||||
|
@ -35,7 +35,8 @@ option(RAPIDJSON_BUILD_TESTS "Build rapidjson perftests and unittests." ON)
|
||||
option(RAPIDJSON_BUILD_THIRDPARTY_GTEST
|
||||
"Use gtest installation in `thirdparty/gtest` by default if available" OFF)
|
||||
|
||||
option(RAPIDJSON_BUILD_CXX11 "Build rapidjson with C++11 (gcc/clang)" ON)
|
||||
option(RAPIDJSON_BUILD_CXX11 "Build rapidjson with C++11" ON)
|
||||
option(RAPIDJSON_BUILD_CXX17 "Build rapidjson with C++17" OFF)
|
||||
if(RAPIDJSON_BUILD_CXX11)
|
||||
set(CMAKE_CXX_STANDARD 11)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED TRUE)
|
||||
@ -77,6 +78,8 @@ if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
|
||||
else()
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
|
||||
endif()
|
||||
elseif (RAPIDJSON_BUILD_CXX17 AND NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS "5.0")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17")
|
||||
endif()
|
||||
if (RAPIDJSON_BUILD_ASAN)
|
||||
if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS "4.8.0")
|
||||
@ -105,6 +108,8 @@ elseif (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
|
||||
set(EXTRA_CXX_FLAGS -Weffc++ -Wswitch-default -Wfloat-equal -Wconversion -Wimplicit-fallthrough)
|
||||
if (RAPIDJSON_BUILD_CXX11 AND CMAKE_VERSION VERSION_LESS 3.1)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
|
||||
elseif (RAPIDJSON_BUILD_CXX17 AND NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS "4.0")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17")
|
||||
endif()
|
||||
if (RAPIDJSON_BUILD_ASAN)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address")
|
||||
@ -119,6 +124,18 @@ elseif (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
|
||||
elseif (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
|
||||
add_definitions(-D_CRT_SECURE_NO_WARNINGS=1)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHsc")
|
||||
# CMake >= 3.10 should handle the above CMAKE_CXX_STANDARD fine, otherwise use /std:c++XX with MSVC >= 19.10
|
||||
if (RAPIDJSON_BUILD_CXX11 AND NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS "19.10")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /std:c++11")
|
||||
elseif (RAPIDJSON_BUILD_CXX17 AND NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS "19.14")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /std:c++17")
|
||||
endif()
|
||||
# Always compile with /WX
|
||||
if(CMAKE_CXX_FLAGS MATCHES "/WX-")
|
||||
string(REGEX REPLACE "/WX-" "/WX" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
|
||||
else()
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /WX")
|
||||
endif()
|
||||
elseif (CMAKE_CXX_COMPILER_ID MATCHES "XL")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -qarch=auto")
|
||||
endif()
|
||||
|
37
appveyor.yml
37
appveyor.yml
@ -13,37 +13,72 @@ environment:
|
||||
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2013
|
||||
VS_VERSION: 10 2010
|
||||
VS_PLATFORM: win32
|
||||
CXX11: OFF
|
||||
CXX17: OFF
|
||||
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2013
|
||||
VS_VERSION: 10 2010
|
||||
VS_PLATFORM: x64
|
||||
CXX11: OFF
|
||||
CXX17: OFF
|
||||
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2013
|
||||
VS_VERSION: 11 2012
|
||||
VS_PLATFORM: win32
|
||||
CXX11: OFF
|
||||
CXX17: OFF
|
||||
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2013
|
||||
VS_VERSION: 11 2012
|
||||
VS_PLATFORM: x64
|
||||
CXX11: OFF
|
||||
CXX17: OFF
|
||||
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2013
|
||||
VS_VERSION: 12 2013
|
||||
VS_PLATFORM: win32
|
||||
CXX11: OFF
|
||||
CXX17: OFF
|
||||
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2013
|
||||
VS_VERSION: 12 2013
|
||||
VS_PLATFORM: x64
|
||||
CXX11: OFF
|
||||
CXX17: OFF
|
||||
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
|
||||
VS_VERSION: 14 2015
|
||||
VS_PLATFORM: win32
|
||||
CXX11: OFF
|
||||
CXX17: OFF
|
||||
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
|
||||
VS_VERSION: 14 2015
|
||||
VS_PLATFORM: x64
|
||||
CXX11: OFF
|
||||
CXX17: OFF
|
||||
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
|
||||
VS_VERSION: 15 2017
|
||||
VS_PLATFORM: win32
|
||||
CXX11: OFF
|
||||
CXX17: OFF
|
||||
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
|
||||
VS_VERSION: 15 2017
|
||||
VS_PLATFORM: x64
|
||||
CXX11: OFF
|
||||
CXX17: OFF
|
||||
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
|
||||
VS_VERSION: 15 2017
|
||||
VS_PLATFORM: x64
|
||||
CXX11: ON
|
||||
CXX17: OFF
|
||||
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
|
||||
VS_VERSION: 15 2017
|
||||
VS_PLATFORM: x64
|
||||
CXX11: OFF
|
||||
CXX17: ON
|
||||
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
|
||||
VS_VERSION: 16 2019
|
||||
VS_PLATFORM: x64
|
||||
CXX11: OFF
|
||||
CXX17: ON
|
||||
|
||||
before_build:
|
||||
- git submodule update --init --recursive
|
||||
- cmake -H. -BBuild/VS -G "Visual Studio %VS_VERSION%" -DCMAKE_GENERATOR_PLATFORM=%VS_PLATFORM% -DCMAKE_VERBOSE_MAKEFILE=ON -DBUILD_SHARED_LIBS=true -Wno-dev
|
||||
- cmake -H. -BBuild/VS -G "Visual Studio %VS_VERSION%" -DCMAKE_GENERATOR_PLATFORM=%VS_PLATFORM% -DCMAKE_VERBOSE_MAKEFILE=ON -DBUILD_SHARED_LIBS=true -DRAPIDJSON_BUILD_CXX11=%CXX11% -DRAPIDJSON_BUILD_CXX17=%CXX17% -Wno-dev
|
||||
|
||||
build:
|
||||
project: Build\VS\RapidJSON.sln
|
||||
|
@ -581,6 +581,7 @@ private:
|
||||
BaseAllocator baseAllocator_;
|
||||
};
|
||||
|
||||
#if !RAPIDJSON_HAS_CXX17 // std::allocator<void> deprecated in C++17
|
||||
template <typename BaseAllocator>
|
||||
class StdAllocator<void, BaseAllocator> :
|
||||
public std::allocator<void>
|
||||
@ -628,6 +629,7 @@ private:
|
||||
|
||||
BaseAllocator baseAllocator_;
|
||||
};
|
||||
#endif
|
||||
|
||||
#ifdef __GNUC__
|
||||
RAPIDJSON_DIAG_POP
|
||||
|
@ -83,8 +83,12 @@ private:
|
||||
|
||||
template <typename Allocator>
|
||||
void TestStdAllocator(const Allocator& a) {
|
||||
#if RAPIDJSON_HAS_CXX17
|
||||
typedef StdAllocator<bool, Allocator> BoolAllocator;
|
||||
#else
|
||||
typedef StdAllocator<void, Allocator> VoidAllocator;
|
||||
typedef typename VoidAllocator::template rebind<bool>::other BoolAllocator;
|
||||
#endif
|
||||
BoolAllocator ba(a), ba2(a);
|
||||
EXPECT_TRUE(ba == ba2);
|
||||
EXPECT_FALSE(ba!= ba2);
|
||||
|
Loading…
x
Reference in New Issue
Block a user