Skip to content

Commit 9c1002f

Browse files
author
Steve Hanson
committed
rge branch 'master' of https://github.com/Tencent/rapidjson
2 parents dad85ca + 17aa824 commit 9c1002f

19 files changed

+1819
-177
lines changed

.travis.yml

Lines changed: 38 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -28,51 +28,69 @@ env:
2828
matrix:
2929
include:
3030
# gcc
31-
- env: CONF=release ARCH=x86 CXX11=ON
31+
- env: CONF=release ARCH=x86 CXX11=ON CXX17=OFF MEMBERSMAP=OFF
3232
compiler: gcc
3333
arch: amd64
34-
- env: CONF=release ARCH=x86_64 CXX11=ON
34+
- env: CONF=release ARCH=x86_64 CXX11=ON CXX17=OFF MEMBERSMAP=OFF
3535
compiler: gcc
3636
arch: amd64
37-
- env: CONF=debug ARCH=x86 CXX11=OFF
37+
- env: CONF=release ARCH=x86_64 CXX11=ON CXX17=OFF MEMBERSMAP=ON
3838
compiler: gcc
3939
arch: amd64
40-
- env: CONF=debug ARCH=x86_64 CXX11=OFF
40+
- env: CONF=debug ARCH=x86 CXX11=OFF CXX17=OFF MEMBERSMAP=OFF
4141
compiler: gcc
4242
arch: amd64
43-
- env: CONF=release ARCH=aarch64 CXX11=ON
43+
- env: CONF=debug ARCH=x86_64 CXX11=OFF CXX17=OFF MEMBERSMAP=OFF
44+
compiler: gcc
45+
arch: amd64
46+
- env: CONF=debug ARCH=x86 CXX11=OFF CXX17=ON MEMBERSMAP=ON CXX_FLAGS='-D_GLIBCXX_DEBUG'
47+
compiler: gcc
48+
arch: amd64
49+
- env: CONF=debug ARCH=x86_64 CXX11=OFF CXX17=ON MEMBERSMAP=ON CXX_FLAGS='-D_GLIBCXX_DEBUG'
50+
compiler: gcc
51+
arch: amd64
52+
- env: CONF=release ARCH=aarch64 CXX11=ON CXX17=OFF MEMBERSMAP=OFF
4453
compiler: gcc
4554
arch: arm64
46-
- env: CONF=debug ARCH=aarch64 CXX11=OFF
55+
- env: CONF=release ARCH=aarch64 CXX11=OFF CXX17=OFF MEMBERSMAP=OFF
56+
compiler: gcc
57+
arch: arm64
58+
- env: CONF=release ARCH=aarch64 CXX11=OFF CXX17=ON MEMBERSMAP=ON
4759
compiler: gcc
4860
arch: arm64
4961
# clang
50-
- env: CONF=debug ARCH=x86 CXX11=ON CCACHE_CPP2=yes
62+
- env: CONF=release ARCH=x86 CXX11=ON CXX17=OFF MEMBERSMAP=ON CCACHE_CPP2=yes
63+
compiler: clang
64+
arch: amd64
65+
- env: CONF=release ARCH=x86_64 CXX11=ON CXX17=OFF MEMBERSMAP=ON CCACHE_CPP2=yes
5166
compiler: clang
5267
arch: amd64
53-
- env: CONF=debug ARCH=x86_64 CXX11=ON CCACHE_CPP2=yes
68+
- env: CONF=release ARCH=x86_64 CXX11=ON CXX17=OFF MEMBERSMAP=OFF CCACHE_CPP2=yes
5469
compiler: clang
5570
arch: amd64
56-
- env: CONF=debug ARCH=x86 CXX11=OFF CCACHE_CPP2=yes
71+
- env: CONF=debug ARCH=x86 CXX11=OFF CXX17=OFF MEMBERSMAP=ON CCACHE_CPP2=yes
5772
compiler: clang
5873
arch: amd64
59-
- env: CONF=debug ARCH=x86_64 CXX11=OFF CCACHE_CPP2=yes
74+
- env: CONF=debug ARCH=x86_64 CXX11=OFF CXX17=OFF MEMBERSMAP=ON CCACHE_CPP2=yes
6075
compiler: clang
6176
arch: amd64
62-
- env: CONF=release ARCH=x86 CXX11=ON CCACHE_CPP2=yes
77+
- env: CONF=debug ARCH=x86 CXX11=OFF CXX17=ON MEMBERSMAP=OFF CCACHE_CPP2=yes
6378
compiler: clang
6479
arch: amd64
65-
- env: CONF=release ARCH=x86_64 CXX11=ON CCACHE_CPP2=yes
80+
- env: CONF=debug ARCH=x86_64 CXX11=OFF CXX17=ON MEMBERSMAP=OFF CCACHE_CPP2=yes
6681
compiler: clang
6782
arch: amd64
68-
- env: CONF=debug ARCH=aarch64 CXX11=ON CCACHE_CPP2=yes
83+
- env: CONF=debug ARCH=aarch64 CXX11=ON CXX17=OFF MEMBERSMAP=ON CCACHE_CPP2=yes
84+
compiler: clang
85+
arch: arm64
86+
- env: CONF=debug ARCH=aarch64 CXX11=OFF CXX17=OFF MEMBERSMAP=ON CCACHE_CPP2=yes
6987
compiler: clang
7088
arch: arm64
71-
- env: CONF=debug ARCH=aarch64 CXX11=OFF CCACHE_CPP2=yes
89+
- env: CONF=debug ARCH=aarch64 CXX11=OFF CXX17=ON MEMBERSMAP=OFF CCACHE_CPP2=yes
7290
compiler: clang
7391
arch: arm64
7492
# coverage report
75-
- env: CONF=debug ARCH=x86 CXX11=ON GCOV_FLAGS='--coverage'
93+
- env: CONF=debug ARCH=x86 GCOV_FLAGS='--coverage' CXX_FLAGS='-O0' CXX11=OFF CXX17=OFF
7694
compiler: gcc
7795
arch: amd64
7896
cache:
@@ -81,7 +99,7 @@ matrix:
8199
after_success:
82100
- pip install --user cpp-coveralls
83101
- 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
84-
- env: CONF=debug ARCH=x86_64 GCOV_FLAGS='--coverage'
102+
- env: CONF=debug ARCH=x86_64 GCOV_FLAGS='--coverage' CXX_FLAGS='-O0' CXX11=ON CXX17=OFF MEMBERSMAP=ON
85103
compiler: gcc
86104
arch: amd64
87105
cache:
@@ -90,7 +108,7 @@ matrix:
90108
after_success:
91109
- pip install --user cpp-coveralls
92110
- 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
93-
- env: CONF=debug ARCH=aarch64 GCOV_FLAGS='--coverage'
111+
- env: CONF=debug ARCH=aarch64 GCOV_FLAGS='--coverage' CXX_FLAGS='-O0' CXX11=OFF CXX17=ON
94112
compiler: gcc
95113
arch: arm64
96114
cache:
@@ -134,10 +152,12 @@ script:
134152
eval "ARCH_FLAGS=\${ARCH_FLAGS_${ARCH}}" ;
135153
(cd build && cmake
136154
-DRAPIDJSON_HAS_STDSTRING=ON
155+
-DRAPIDJSON_USE_MEMBERSMAP=$MEMBERSMAP
137156
-DRAPIDJSON_BUILD_CXX11=$CXX11
157+
-DRAPIDJSON_BUILD_CXX17=$CXX17
138158
-DCMAKE_VERBOSE_MAKEFILE=ON
139159
-DCMAKE_BUILD_TYPE=$CONF
140-
-DCMAKE_CXX_FLAGS="$ARCH_FLAGS $GCOV_FLAGS"
160+
-DCMAKE_CXX_FLAGS="$ARCH_FLAGS $GCOV_FLAGS $CXX_FLAGS"
141161
-DCMAKE_EXE_LINKER_FLAGS=$GCOV_FLAGS
142162
..)
143163
- cd build

CMakeLists.txt

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,8 @@ option(RAPIDJSON_BUILD_TESTS "Build rapidjson perftests and unittests." ON)
3535
option(RAPIDJSON_BUILD_THIRDPARTY_GTEST
3636
"Use gtest installation in `thirdparty/gtest` by default if available" OFF)
3737

38-
option(RAPIDJSON_BUILD_CXX11 "Build rapidjson with C++11 (gcc/clang)" ON)
38+
option(RAPIDJSON_BUILD_CXX11 "Build rapidjson with C++11" ON)
39+
option(RAPIDJSON_BUILD_CXX17 "Build rapidjson with C++17" OFF)
3940
if(RAPIDJSON_BUILD_CXX11)
4041
set(CMAKE_CXX_STANDARD 11)
4142
set(CMAKE_CXX_STANDARD_REQUIRED TRUE)
@@ -51,6 +52,11 @@ if(RAPIDJSON_HAS_STDSTRING)
5152
add_definitions(-DRAPIDJSON_HAS_STDSTRING)
5253
endif()
5354

55+
option(RAPIDJSON_USE_MEMBERSMAP "" OFF)
56+
if(RAPIDJSON_USE_MEMBERSMAP)
57+
add_definitions(-DRAPIDJSON_USE_MEMBERSMAP=1)
58+
endif()
59+
5460
find_program(CCACHE_FOUND ccache)
5561
if(CCACHE_FOUND)
5662
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache)
@@ -77,6 +83,8 @@ if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
7783
else()
7884
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
7985
endif()
86+
elseif (RAPIDJSON_BUILD_CXX17 AND NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS "5.0")
87+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17")
8088
endif()
8189
if (RAPIDJSON_BUILD_ASAN)
8290
if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS "4.8.0")
@@ -105,6 +113,8 @@ elseif (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
105113
set(EXTRA_CXX_FLAGS -Weffc++ -Wswitch-default -Wfloat-equal -Wconversion -Wimplicit-fallthrough)
106114
if (RAPIDJSON_BUILD_CXX11 AND CMAKE_VERSION VERSION_LESS 3.1)
107115
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
116+
elseif (RAPIDJSON_BUILD_CXX17 AND NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS "4.0")
117+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17")
108118
endif()
109119
if (RAPIDJSON_BUILD_ASAN)
110120
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address")
@@ -119,6 +129,18 @@ elseif (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
119129
elseif (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
120130
add_definitions(-D_CRT_SECURE_NO_WARNINGS=1)
121131
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHsc")
132+
# CMake >= 3.10 should handle the above CMAKE_CXX_STANDARD fine, otherwise use /std:c++XX with MSVC >= 19.10
133+
if (RAPIDJSON_BUILD_CXX11 AND NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS "19.10")
134+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /std:c++11")
135+
elseif (RAPIDJSON_BUILD_CXX17 AND NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS "19.14")
136+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /std:c++17")
137+
endif()
138+
# Always compile with /WX
139+
if(CMAKE_CXX_FLAGS MATCHES "/WX-")
140+
string(REGEX REPLACE "/WX-" "/WX" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
141+
else()
142+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /WX")
143+
endif()
122144
elseif (CMAKE_CXX_COMPILER_ID MATCHES "XL")
123145
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -qarch=auto")
124146
endif()

appveyor.yml

Lines changed: 49 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,37 +13,85 @@ environment:
1313
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2013
1414
VS_VERSION: 10 2010
1515
VS_PLATFORM: win32
16+
CXX11: OFF
17+
CXX17: OFF
18+
MEMBERSMAP: OFF
1619
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2013
1720
VS_VERSION: 10 2010
1821
VS_PLATFORM: x64
22+
CXX11: OFF
23+
CXX17: OFF
24+
MEMBERSMAP: ON
1925
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2013
2026
VS_VERSION: 11 2012
2127
VS_PLATFORM: win32
28+
CXX11: OFF
29+
CXX17: OFF
30+
MEMBERSMAP: ON
2231
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2013
2332
VS_VERSION: 11 2012
2433
VS_PLATFORM: x64
34+
CXX11: OFF
35+
CXX17: OFF
36+
MEMBERSMAP: OFF
2537
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2013
2638
VS_VERSION: 12 2013
2739
VS_PLATFORM: win32
40+
CXX11: OFF
41+
CXX17: OFF
42+
MEMBERSMAP: OFF
2843
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2013
2944
VS_VERSION: 12 2013
3045
VS_PLATFORM: x64
46+
CXX11: OFF
47+
CXX17: OFF
48+
MEMBERSMAP: ON
3149
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
3250
VS_VERSION: 14 2015
3351
VS_PLATFORM: win32
52+
CXX11: OFF
53+
CXX17: OFF
54+
MEMBERSMAP: ON
3455
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
3556
VS_VERSION: 14 2015
3657
VS_PLATFORM: x64
58+
CXX11: OFF
59+
CXX17: OFF
60+
MEMBERSMAP: OFF
3761
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
3862
VS_VERSION: 15 2017
3963
VS_PLATFORM: win32
64+
CXX11: OFF
65+
CXX17: OFF
66+
MEMBERSMAP: OFF
4067
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
4168
VS_VERSION: 15 2017
4269
VS_PLATFORM: x64
70+
CXX11: OFF
71+
CXX17: OFF
72+
MEMBERSMAP: ON
73+
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
74+
VS_VERSION: 15 2017
75+
VS_PLATFORM: x64
76+
CXX11: ON
77+
CXX17: OFF
78+
MEMBERSMAP: OFF
79+
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
80+
VS_VERSION: 15 2017
81+
VS_PLATFORM: x64
82+
CXX11: OFF
83+
CXX17: ON
84+
MEMBERSMAP: OFF
85+
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
86+
VS_VERSION: 16 2019
87+
VS_PLATFORM: x64
88+
CXX11: OFF
89+
CXX17: ON
90+
MEMBERSMAP: ON
4391

4492
before_build:
4593
- git submodule update --init --recursive
46-
- cmake -H. -BBuild/VS -G "Visual Studio %VS_VERSION%" -DCMAKE_GENERATOR_PLATFORM=%VS_PLATFORM% -DCMAKE_VERBOSE_MAKEFILE=ON -DBUILD_SHARED_LIBS=true -Wno-dev
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
4795

4896
build:
4997
project: Build\VS\RapidJSON.sln

0 commit comments

Comments
 (0)