Skip to content

Commit 5ec44fb

Browse files
bobbymcrmiloyip
authored andcommitted
Add RAPIDJSON_BUILD_CXX20 option
The travis/appveyor files are updated to reference this option, but it is not yet enabled in any of the build configurations.
1 parent 676d99d commit 5ec44fb

File tree

3 files changed

+45
-24
lines changed

3 files changed

+45
-24
lines changed

.travis.yml

+24-23
Original file line numberDiff line numberDiff line change
@@ -28,69 +28,69 @@ env:
2828
matrix:
2929
include:
3030
# gcc
31-
- env: CONF=release ARCH=x86 CXX11=ON CXX17=OFF MEMBERSMAP=OFF
31+
- env: CONF=release ARCH=x86 CXX11=ON CXX17=OFF CXX20=OFF MEMBERSMAP=OFF
3232
compiler: gcc
3333
arch: amd64
34-
- env: CONF=release ARCH=x86_64 CXX11=ON CXX17=OFF MEMBERSMAP=OFF
34+
- env: CONF=release ARCH=x86_64 CXX11=ON CXX17=OFF CXX20=OFF MEMBERSMAP=OFF
3535
compiler: gcc
3636
arch: amd64
37-
- env: CONF=release ARCH=x86_64 CXX11=ON CXX17=OFF MEMBERSMAP=ON
37+
- env: CONF=release ARCH=x86_64 CXX11=ON CXX17=OFF CXX20=OFF MEMBERSMAP=ON
3838
compiler: gcc
3939
arch: amd64
40-
- env: CONF=debug ARCH=x86 CXX11=OFF CXX17=OFF MEMBERSMAP=OFF
40+
- env: CONF=debug ARCH=x86 CXX11=OFF CXX17=OFF CXX20=OFF MEMBERSMAP=OFF
4141
compiler: gcc
4242
arch: amd64
43-
- env: CONF=debug ARCH=x86_64 CXX11=OFF CXX17=OFF MEMBERSMAP=OFF
43+
- env: CONF=debug ARCH=x86_64 CXX11=OFF CXX17=OFF CXX20=OFF MEMBERSMAP=OFF
4444
compiler: gcc
4545
arch: amd64
46-
- env: CONF=debug ARCH=x86 CXX11=OFF CXX17=ON MEMBERSMAP=ON CXX_FLAGS='-D_GLIBCXX_DEBUG'
46+
- env: CONF=debug ARCH=x86 CXX11=OFF CXX17=ON CXX20=OFF MEMBERSMAP=ON CXX_FLAGS='-D_GLIBCXX_DEBUG'
4747
compiler: gcc
4848
arch: amd64
49-
- env: CONF=debug ARCH=x86_64 CXX11=OFF CXX17=ON MEMBERSMAP=ON CXX_FLAGS='-D_GLIBCXX_DEBUG'
49+
- env: CONF=debug ARCH=x86_64 CXX11=OFF CXX17=ON CXX20=OFF MEMBERSMAP=ON CXX_FLAGS='-D_GLIBCXX_DEBUG'
5050
compiler: gcc
5151
arch: amd64
52-
- env: CONF=release ARCH=aarch64 CXX11=ON CXX17=OFF MEMBERSMAP=OFF
52+
- env: CONF=release ARCH=aarch64 CXX11=ON CXX17=OFF CXX20=OFF MEMBERSMAP=OFF
5353
compiler: gcc
5454
arch: arm64
55-
- env: CONF=release ARCH=aarch64 CXX11=OFF CXX17=OFF MEMBERSMAP=OFF
55+
- env: CONF=release ARCH=aarch64 CXX11=OFF CXX17=OFF CXX20=OFF MEMBERSMAP=OFF
5656
compiler: gcc
5757
arch: arm64
58-
- env: CONF=release ARCH=aarch64 CXX11=OFF CXX17=ON MEMBERSMAP=ON
58+
- env: CONF=release ARCH=aarch64 CXX11=OFF CXX17=ON CXX20=OFF MEMBERSMAP=ON
5959
compiler: gcc
6060
arch: arm64
6161
# clang
62-
- env: CONF=release ARCH=x86 CXX11=ON CXX17=OFF MEMBERSMAP=ON CCACHE_CPP2=yes
62+
- env: CONF=release ARCH=x86 CXX11=ON CXX17=OFF CXX20=OFF MEMBERSMAP=ON CCACHE_CPP2=yes
6363
compiler: clang
6464
arch: amd64
65-
- env: CONF=release ARCH=x86_64 CXX11=ON CXX17=OFF MEMBERSMAP=ON CCACHE_CPP2=yes
65+
- env: CONF=release ARCH=x86_64 CXX11=ON CXX17=OFF CXX20=OFF MEMBERSMAP=ON CCACHE_CPP2=yes
6666
compiler: clang
6767
arch: amd64
68-
- env: CONF=release ARCH=x86_64 CXX11=ON CXX17=OFF MEMBERSMAP=OFF CCACHE_CPP2=yes
68+
- env: CONF=release ARCH=x86_64 CXX11=ON CXX17=OFF CXX20=OFF MEMBERSMAP=OFF CCACHE_CPP2=yes
6969
compiler: clang
7070
arch: amd64
71-
- env: CONF=debug ARCH=x86 CXX11=OFF CXX17=OFF MEMBERSMAP=ON CCACHE_CPP2=yes
71+
- env: CONF=debug ARCH=x86 CXX11=OFF CXX17=OFF CXX20=OFF MEMBERSMAP=ON CCACHE_CPP2=yes
7272
compiler: clang
7373
arch: amd64
74-
- env: CONF=debug ARCH=x86_64 CXX11=OFF CXX17=OFF MEMBERSMAP=ON CCACHE_CPP2=yes
74+
- env: CONF=debug ARCH=x86_64 CXX11=OFF CXX17=OFF CXX20=OFF MEMBERSMAP=ON CCACHE_CPP2=yes
7575
compiler: clang
7676
arch: amd64
77-
- env: CONF=debug ARCH=x86 CXX11=OFF CXX17=ON MEMBERSMAP=OFF CCACHE_CPP2=yes
77+
- env: CONF=debug ARCH=x86 CXX11=OFF CXX17=ON CXX20=OFF MEMBERSMAP=OFF CCACHE_CPP2=yes
7878
compiler: clang
7979
arch: amd64
80-
- env: CONF=debug ARCH=x86_64 CXX11=OFF CXX17=ON MEMBERSMAP=OFF CCACHE_CPP2=yes
80+
- env: CONF=debug ARCH=x86_64 CXX11=OFF CXX17=ON CXX20=OFF MEMBERSMAP=OFF CCACHE_CPP2=yes
8181
compiler: clang
8282
arch: amd64
83-
- env: CONF=debug ARCH=aarch64 CXX11=ON CXX17=OFF MEMBERSMAP=ON CCACHE_CPP2=yes
83+
- env: CONF=debug ARCH=aarch64 CXX11=ON CXX17=OFF CXX20=OFF MEMBERSMAP=ON CCACHE_CPP2=yes
8484
compiler: clang
8585
arch: arm64
86-
- env: CONF=debug ARCH=aarch64 CXX11=OFF CXX17=OFF MEMBERSMAP=ON CCACHE_CPP2=yes
86+
- env: CONF=debug ARCH=aarch64 CXX11=OFF CXX17=OFF CXX20=OFF MEMBERSMAP=ON CCACHE_CPP2=yes
8787
compiler: clang
8888
arch: arm64
89-
- env: CONF=debug ARCH=aarch64 CXX11=OFF CXX17=ON MEMBERSMAP=OFF CCACHE_CPP2=yes
89+
- env: CONF=debug ARCH=aarch64 CXX11=OFF CXX17=ON CXX20=OFF MEMBERSMAP=OFF CCACHE_CPP2=yes
9090
compiler: clang
9191
arch: arm64
9292
# coverage report
93-
- env: CONF=debug ARCH=x86 GCOV_FLAGS='--coverage' CXX_FLAGS='-O0' CXX11=OFF CXX17=OFF
93+
- env: CONF=debug ARCH=x86 GCOV_FLAGS='--coverage' CXX_FLAGS='-O0' CXX11=OFF CXX17=OFF CXX20=OFF
9494
compiler: gcc
9595
arch: amd64
9696
cache:
@@ -99,7 +99,7 @@ matrix:
9999
after_success:
100100
- pip install --user cpp-coveralls
101101
- coveralls -r .. --gcov-options '\-lp' -e thirdparty -e example -e test -e build/CMakeFiles -e include/rapidjson/msinttypes -e include/rapidjson/internal/meta.h -e include/rapidjson/error/en.h
102-
- env: CONF=debug ARCH=x86_64 GCOV_FLAGS='--coverage' CXX_FLAGS='-O0' CXX11=ON CXX17=OFF MEMBERSMAP=ON
102+
- env: CONF=debug ARCH=x86_64 GCOV_FLAGS='--coverage' CXX_FLAGS='-O0' CXX11=ON CXX17=OFF CXX20=OFF MEMBERSMAP=ON
103103
compiler: gcc
104104
arch: amd64
105105
cache:
@@ -108,7 +108,7 @@ matrix:
108108
after_success:
109109
- pip install --user cpp-coveralls
110110
- coveralls -r .. --gcov-options '\-lp' -e thirdparty -e example -e test -e build/CMakeFiles -e include/rapidjson/msinttypes -e include/rapidjson/internal/meta.h -e include/rapidjson/error/en.h
111-
- env: CONF=debug ARCH=aarch64 GCOV_FLAGS='--coverage' CXX_FLAGS='-O0' CXX11=OFF CXX17=ON
111+
- env: CONF=debug ARCH=aarch64 GCOV_FLAGS='--coverage' CXX_FLAGS='-O0' CXX11=OFF CXX17=ON CXX20=OFF
112112
compiler: gcc
113113
arch: arm64
114114
cache:
@@ -155,6 +155,7 @@ script:
155155
-DRAPIDJSON_USE_MEMBERSMAP=$MEMBERSMAP
156156
-DRAPIDJSON_BUILD_CXX11=$CXX11
157157
-DRAPIDJSON_BUILD_CXX17=$CXX17
158+
-DRAPIDJSON_BUILD_CXX20=$CXX20
158159
-DCMAKE_VERBOSE_MAKEFILE=ON
159160
-DCMAKE_BUILD_TYPE=$CONF
160161
-DCMAKE_CXX_FLAGS="$ARCH_FLAGS $GCOV_FLAGS $CXX_FLAGS"

CMakeLists.txt

+7
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ option(RAPIDJSON_BUILD_THIRDPARTY_GTEST
3737

3838
option(RAPIDJSON_BUILD_CXX11 "Build rapidjson with C++11" ON)
3939
option(RAPIDJSON_BUILD_CXX17 "Build rapidjson with C++17" OFF)
40+
option(RAPIDJSON_BUILD_CXX20 "Build rapidjson with C++20" OFF)
4041
if(RAPIDJSON_BUILD_CXX11)
4142
set(CMAKE_CXX_STANDARD 11)
4243
set(CMAKE_CXX_STANDARD_REQUIRED TRUE)
@@ -87,6 +88,8 @@ if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
8788
endif()
8889
elseif (RAPIDJSON_BUILD_CXX17 AND NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS "5.0")
8990
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17")
91+
elseif (RAPIDJSON_BUILD_CXX20 AND NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS "8.0")
92+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++20")
9093
endif()
9194
if (RAPIDJSON_BUILD_ASAN)
9295
if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS "4.8.0")
@@ -117,6 +120,8 @@ elseif (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
117120
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
118121
elseif (RAPIDJSON_BUILD_CXX17 AND NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS "4.0")
119122
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17")
123+
elseif (RAPIDJSON_BUILD_CXX20 AND NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS "10.0")
124+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++20")
120125
endif()
121126
if (RAPIDJSON_BUILD_ASAN)
122127
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address")
@@ -137,6 +142,8 @@ elseif (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
137142
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /std:c++11")
138143
elseif (RAPIDJSON_BUILD_CXX17 AND NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS "19.14")
139144
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /std:c++17")
145+
elseif (RAPIDJSON_BUILD_CXX20 AND NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS "19.29")
146+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /std:c++20")
140147
endif()
141148
# Always compile with /WX
142149
if(CMAKE_CXX_FLAGS MATCHES "/WX-")

appveyor.yml

+14-1
Original file line numberDiff line numberDiff line change
@@ -15,83 +15,96 @@ environment:
1515
VS_PLATFORM: win32
1616
CXX11: OFF
1717
CXX17: OFF
18+
CXX20: OFF
1819
MEMBERSMAP: OFF
1920
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2013
2021
VS_VERSION: 10 2010
2122
VS_PLATFORM: x64
2223
CXX11: OFF
2324
CXX17: OFF
25+
CXX20: OFF
2426
MEMBERSMAP: ON
2527
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2013
2628
VS_VERSION: 11 2012
2729
VS_PLATFORM: win32
2830
CXX11: OFF
2931
CXX17: OFF
32+
CXX20: OFF
3033
MEMBERSMAP: ON
3134
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2013
3235
VS_VERSION: 11 2012
3336
VS_PLATFORM: x64
3437
CXX11: OFF
3538
CXX17: OFF
39+
CXX20: OFF
3640
MEMBERSMAP: OFF
3741
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2013
3842
VS_VERSION: 12 2013
3943
VS_PLATFORM: win32
4044
CXX11: OFF
4145
CXX17: OFF
46+
CXX20: OFF
4247
MEMBERSMAP: OFF
4348
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2013
4449
VS_VERSION: 12 2013
4550
VS_PLATFORM: x64
4651
CXX11: OFF
4752
CXX17: OFF
53+
CXX20: OFF
4854
MEMBERSMAP: ON
4955
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
5056
VS_VERSION: 14 2015
5157
VS_PLATFORM: win32
5258
CXX11: OFF
5359
CXX17: OFF
60+
CXX20: OFF
5461
MEMBERSMAP: ON
5562
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
5663
VS_VERSION: 14 2015
5764
VS_PLATFORM: x64
5865
CXX11: OFF
5966
CXX17: OFF
67+
CXX20: OFF
6068
MEMBERSMAP: OFF
6169
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
6270
VS_VERSION: 15 2017
6371
VS_PLATFORM: win32
6472
CXX11: OFF
6573
CXX17: OFF
74+
CXX20: OFF
6675
MEMBERSMAP: OFF
6776
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
6877
VS_VERSION: 15 2017
6978
VS_PLATFORM: x64
7079
CXX11: OFF
7180
CXX17: OFF
81+
CXX20: OFF
7282
MEMBERSMAP: ON
7383
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
7484
VS_VERSION: 15 2017
7585
VS_PLATFORM: x64
7686
CXX11: ON
7787
CXX17: OFF
88+
CXX20: OFF
7889
MEMBERSMAP: OFF
7990
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
8091
VS_VERSION: 15 2017
8192
VS_PLATFORM: x64
8293
CXX11: OFF
8394
CXX17: ON
95+
CXX20: OFF
8496
MEMBERSMAP: OFF
8597
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
8698
VS_VERSION: 16 2019
8799
VS_PLATFORM: x64
88100
CXX11: OFF
89101
CXX17: ON
102+
CXX20: OFF
90103
MEMBERSMAP: ON
91104

92105
before_build:
93106
- git submodule update --init --recursive
94-
- 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% -DRAPIDJSON_USE_MEMBERSMAP=%MEMBERSMAP% -Wno-dev
107+
- 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% -DRAPIDJSON_BUILD_CXX20=%CXX20% -DRAPIDJSON_USE_MEMBERSMAP=%MEMBERSMAP% -Wno-dev
95108

96109
build:
97110
project: Build\VS\RapidJSON.sln

0 commit comments

Comments
 (0)