Skip to content

Commit e1d5577

Browse files
authored
bump dups & add boost json support (#226)
addresses #223, #230 * bump deps * update boost version to 1.79.0 * update googletest to latest version * update nlohmann.json to v3.10.5 * update rapidjson to latest * update fmt to latest * add support for boost::json * fix build * fix code factor issue * add pipelines verbosity * move boost to master * update boost to 1.80.0 * fix actions for clang * replace boost submobule with fetchcontent * fix test on windows * patch boost cmake to workaround install export issue * fix path to header * disable strict warnings for linux build * try to use vs 2017 on windows 2019 * remove msvc2017 from ci build * remove comments * change to interface option
1 parent 1dacf16 commit e1d5577

28 files changed

+520
-129
lines changed

.clang-format

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ BraceWrapping:
1313
AfterStruct: true
1414
AccessModifierOffset: -4
1515
BinPackParameters: false
16+
AlignAfterOpenBracket: AlwaysBreak
1617
AlwaysBreakAfterReturnType: None
1718
AlwaysBreakAfterDefinitionReturnType: None
1819
AllowAllParametersOfDeclarationOnNextLine: false

.github/workflows/codeql-analysis.yml

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,8 @@ jobs:
5252

5353
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
5454
# If this step fails, then you should remove it and run the build manually (see below)
55-
- name: Autobuild
56-
uses: github/codeql-action/autobuild@v1
55+
# - name: Autobuild
56+
# uses: github/codeql-action/autobuild@v1
5757

5858
# ℹ️ Command-line programs to run using the OS shell.
5959
# 📚 https://git.io/JvXDl
@@ -66,5 +66,21 @@ jobs:
6666
# make bootstrap
6767
# make release
6868

69+
- name: Build
70+
run: |
71+
#!/bin/bash
72+
set -ex
73+
export BUILD_TARGET=all
74+
export CMAKE_OPTS=-DCMAKE_VERBOSE_MAKEFILE=ON
75+
export WORKSPACE=$GITHUB_WORKSPACE
76+
if [ "${INPUT_COMPILER}" == "clang-12" ] ; then
77+
export INPUT_BASE_FLAGS="-DJINJA2CPP_CXX_STANDARD=20" ;
78+
fi
79+
export EXTRA_FLAGS="${INPUT_BASE_FLAGS} ${INPUT_EXTRA_FLAGS}"
80+
mkdir $BUILD_DIRECTORY && cd $BUILD_DIRECTORY
81+
sudo chmod gou+rw -R $WORKSPACE
82+
cmake $CMAKE_OPTS -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS=$CMAKE_CXX_FLAGS -DJINJA2CPP_DEPS_MODE=internal -DJINJA2CPP_BUILD_SHARED=ON $EXTRA_FLAGS $WORKSPACE && cmake --build . --config Release --target all -- -j4
83+
84+
6985
- name: Perform CodeQL Analysis
70-
uses: github/codeql-action/analyze@v1
86+
uses: github/codeql-action/analyze@v2

.github/workflows/linux-build.yml

Lines changed: 5 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -18,15 +18,15 @@ on:
1818
- '**.md'
1919

2020
jobs:
21-
linux-gcc-build:
21+
linux-build:
2222

2323
runs-on: ubuntu-latest
2424

2525
strategy:
2626
fail-fast: false
2727
max-parallel: 8
2828
matrix:
29-
compiler: [g++-9, g++-10, g++-11]
29+
compiler: [g++-9, g++-10, g++-11, clang++-12, clang++-13, clang++-14]
3030
base-flags: ["", -DJINJA2CPP_CXX_STANDARD=17]
3131
build-config: [Release, Debug]
3232
build-shared: [TRUE, FALSE]
@@ -40,7 +40,7 @@ jobs:
4040
extra-flags: -DJINJA2CPP_STRICT_WARNINGS=OFF
4141

4242
steps:
43-
- uses: actions/checkout@v1
43+
- uses: actions/checkout@v2
4444
- name: Setup environment
4545
env:
4646
INPUT_COMPILER: ${{ matrix.compiler }}
@@ -79,76 +79,14 @@ jobs:
7979
if [[ "${INPUT_COMPILER}" != "" ]]; then export CXX=${INPUT_COMPILER}; fi
8080
export BUILD_CONFIG=${INPUT_BASE_CONFIG}
8181
$CXX --version
82+
cmake --version
8283
export EXTRA_FLAGS="${INPUT_BASE_FLAGS} ${INPUT_EXTRA_FLAGS}"
8384
mkdir -p .build && cd .build
84-
cmake $CMAKE_OPTS -DCMAKE_BUILD_TYPE=$BUILD_CONFIG -DCMAKE_CXX_FLAGS=$CMAKE_CXX_FLAGS -DJINJA2CPP_DEPS_MODE=internal -DJINJA2CPP_BUILD_SHARED=$INPUT_BUILD_SHARED $EXTRA_FLAGS .. && cmake --build . --config $BUILD_CONFIG --target all -- -j4
85+
cmake $CMAKE_OPTS -DCMAKE_BUILD_TYPE=$BUILD_CONFIG -DCMAKE_CXX_FLAGS=$CMAKE_CXX_FLAGS -DJINJA2CPP_DEPS_MODE=internal -DJINJA2CPP_STRICT_WARNINGS=OFF -DJINJA2CPP_BUILD_SHARED=$INPUT_BUILD_SHARED $EXTRA_FLAGS .. && cmake --build . --config $BUILD_CONFIG --target all -- -j4
8586
8687
- name: Test
8788
env:
8889
BUILD_CONFIG: ${{ matrix.build-config }}
8990
run: |
9091
cd .build && ctest -C $BUILD_CONFIG -V
9192
92-
linux-clang-build:
93-
94-
runs-on: ubuntu-latest
95-
container:
96-
image: ${{matrix.docker-image}}
97-
env:
98-
BUILD_DIRECTORY: /home/conan/.build
99-
HOME: /home/conan
100-
101-
strategy:
102-
fail-fast: false
103-
max-parallel: 8
104-
matrix:
105-
compiler: [10, 11, 12]
106-
base-flags: ["", -DJINJA2CPP_CXX_STANDARD=17]
107-
build-config: [Release, Debug]
108-
build-shared: [TRUE, FALSE]
109-
110-
include:
111-
- compiler: 10
112-
docker-image: conanio/clang10
113-
- compiler: 11
114-
docker-image: conanio/clang11
115-
- compiler: 12
116-
docker-image: conanio/clang12-ubuntu16.04:1.39.0
117-
118-
119-
steps:
120-
- uses: actions/checkout@v1
121-
122-
- name: Build
123-
env:
124-
INPUT_COMPILER: clang-${{ matrix.compiler }}
125-
INPUT_BASE_FLAGS: ${{ matrix.base-flags }}
126-
INPUT_BASE_CONFIG: ${{ matrix.build-config }}
127-
INPUT_EXTRA_FLAGS: ${{ matrix.extra-flags }}
128-
INPUT_BUILD_SHARED: ${{ matrix.build-shared }}
129-
HOME: /home/conan
130-
run: |
131-
#!/bin/bash
132-
set -ex
133-
export BUILD_TARGET=all
134-
export CMAKE_OPTS=-DCMAKE_VERBOSE_MAKEFILE=OFF
135-
export BUILD_CONFIG=${INPUT_BASE_CONFIG}
136-
export WORKSPACE=$GITHUB_WORKSPACE
137-
#if [ "${INPUT_COMPILER}" != "" ]; then export CXX=${INPUT_COMPILER}; fi
138-
if [ "${INPUT_COMPILER}" == "clang-12" ] ; then
139-
export INPUT_BASE_FLAGS="-DJINJA2CPP_CXX_STANDARD=20" ;
140-
fi
141-
#$CXX --version
142-
export EXTRA_FLAGS="${INPUT_BASE_FLAGS} ${INPUT_EXTRA_FLAGS}"
143-
mkdir $BUILD_DIRECTORY && cd $BUILD_DIRECTORY
144-
sudo chmod gou+rw -R $WORKSPACE
145-
cmake $CMAKE_OPTS -DCMAKE_BUILD_TYPE=$BUILD_CONFIG -DCMAKE_CXX_FLAGS=$CMAKE_CXX_FLAGS -DJINJA2CPP_DEPS_MODE=internal -DJINJA2CPP_BUILD_SHARED=$INPUT_BUILD_SHARED $EXTRA_FLAGS $WORKSPACE && cmake --build . --config $BUILD_CONFIG --target all -- -j4
146-
shell: bash
147-
148-
- name: Test
149-
env:
150-
BUILD_CONFIG: ${{ matrix.build-config }}
151-
run: |
152-
cd $BUILD_DIRECTORY
153-
ctest -C $BUILD_CONFIG -V
154-

.github/workflows/windows-build.yml

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -25,24 +25,14 @@ jobs:
2525
fail-fast: false
2626
max-parallel: 20
2727
matrix:
28-
compiler: [msvc-2019, msvc-2017]
28+
compiler: [msvc-2019]
2929
base-flags: ["", -DJINJA2CPP_CXX_STANDARD=17]
3030
build-config: [Release, Debug]
3131
build-platform: [x86, x64]
3232
build-runtime: ["", /MT, /MD]
3333
build-shared: [FALSE, TRUE]
3434

3535
include:
36-
- compiler: msvc-2017
37-
build-platform: x86
38-
run-machine: windows-2016
39-
generator: Visual Studio 15 2017
40-
vc_vars: C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Auxiliary\Build\vcvars32.bat
41-
- compiler: msvc-2017
42-
build-platform: x64
43-
run-machine: windows-2016
44-
generator: Visual Studio 15 2017 Win64
45-
vc_vars: C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Auxiliary\Build\vcvars64.bat
4636
- compiler: msvc-2019
4737
build-platform: x86
4838
run-machine: windows-2019
@@ -56,7 +46,7 @@ jobs:
5646

5747

5848
steps:
59-
- uses: actions/checkout@v1
49+
- uses: actions/checkout@v2
6050

6151
- name: Build
6252
shell: cmd
@@ -74,6 +64,7 @@ jobs:
7464
call "%VC_VARS%"
7565
mkdir -p .build
7666
cd .build
67+
cmake --version
7768
cmake .. -G "%INPUT_GENERATOR%" -DCMAKE_BUILD_TYPE=%INPUT_BUILD_CONFIG% -DJINJA2CPP_MSVC_RUNTIME_TYPE="%INPUT_BUILD_RUNTIME%" -DJINJA2CPP_DEPS_MODE=internal -DJINJA2CPP_BUILD_SHARED=%INPUT_BUILD_SHARED% %INPUT_BASE_FLAGS% %INPUT_EXTRA_FLAGS%
7869
cmake --build . --config %INPUT_BUILD_CONFIG% --verbose
7970

.gitmodules

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
[submodule "thirdparty/gtest"]
22
path = thirdparty/gtest
33
url = https://github.com/google/googletest.git
4-
[submodule "thirdparty/boost"]
5-
path = thirdparty/boost
6-
url = https://github.com/boostorg/boost.git
4+
#[submodule "thirdparty/boost"]
5+
# path = thirdparty/boost
6+
# url = https://github.com/boostorg/boost.git
77
[submodule "thirdparty/nonstd/expected-lite"]
88
path = thirdparty/nonstd/expected-lite
99
url = https://github.com/martinmoene/expected-lite.git

CMakeLists.txt

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@ endif()
1515
set(JINJA2CPP_SANITIZERS address+undefined memory)
1616
set(JINJA2CPP_WITH_SANITIZERS none CACHE STRING "Build with sanitizer")
1717
set_property(CACHE JINJA2CPP_WITH_SANITIZERS PROPERTY STRINGS ${JINJA2CPP_SANITIZERS})
18+
set(JINJA2CPP_WITH_JSON_BINDINGS boost nlohmann rapid all none)
19+
set(JINJA2CPP_WITH_JSON_BINDINGS all CACHE STRING "Build with json support")
20+
set_property(CACHE JINJA2CPP_WITH_JSON_BINDINGS PROPERTY STRINGS ${JINJA2CPP_WITH_JSON_BINDINGS})
1821
set (JINJA2CPP_DEPS_MODE "internal" CACHE STRING "Jinja2Cpp dependency management mode (internal | external | external-boost | conan-build). See documentation for details. 'interal' is default.")
1922
option(JINJA2CPP_BUILD_TESTS "Build Jinja2Cpp unit tests" ${JINJA2CPP_IS_MAIN_PROJECT})
2023
option(JINJA2CPP_STRICT_WARNINGS "Enable additional warnings and treat them as errors" ON)
@@ -263,13 +266,16 @@ macro (Jinja2CppGetTargetIncludeDir infix target)
263266
if (TARGET ${target})
264267
set (_J2CPP_VAR_NAME JINJA2CPP_${infix}_INCLUDE_DIRECTORIES)
265268
get_target_property(${_J2CPP_VAR_NAME} ${target} INTERFACE_INCLUDE_DIRECTORIES)
266-
endif ()
269+
else ()
270+
message(WARNING "No target: ${target}")
271+
endif()
272+
267273
endmacro ()
268274

269-
Jinja2CppGetTargetIncludeDir(EXPECTED-LITE expected-lite)
270-
Jinja2CppGetTargetIncludeDir(VARIANT-LITE variant-lite)
271-
Jinja2CppGetTargetIncludeDir(OPTIONAL-LITE optional-lite)
272-
Jinja2CppGetTargetIncludeDir(STRING-VIEW-LITE string-view-lite)
275+
Jinja2CppGetTargetIncludeDir(EXPECTED-LITE nonstd::expected-lite)
276+
Jinja2CppGetTargetIncludeDir(VARIANT-LITE nonstd::variant-lite)
277+
Jinja2CppGetTargetIncludeDir(OPTIONAL-LITE nonstd::optional-lite)
278+
Jinja2CppGetTargetIncludeDir(STRING-VIEW-LITE nonstd::string-view-lite)
273279

274280
# Workaround for #14444 bug of CMake (https://gitlab.kitware.com/cmake/cmake/issues/14444)
275281
# We can't use EXPORT feature of 'install' as is due to limitation of subproject's targets installation
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
From 857dc932fc32d3a1d30abac7724565812b446cd2 Mon Sep 17 00:00:00 2001
2+
From: Ruslan Morozov <ruslan.y.morozov@gmail.com>
3+
Date: Thu, 8 Dec 2022 21:11:49 +0300
4+
Subject: [PATCH] fix skip install rules
5+
6+
---
7+
include/BoostRoot.cmake | 2 +-
8+
1 file changed, 1 insertion(+), 1 deletion(-)
9+
10+
diff --git a/tools/cmake/include/BoostRoot.cmake b/tools/cmake/include/BoostRoot.cmake
11+
index f2a51e1..a37f14d 100644
12+
--- a/tools/cmake/include/BoostRoot.cmake
13+
+++ b/tools/cmake/include/BoostRoot.cmake
14+
@@ -90,7 +90,7 @@ else()
15+
endif()
16+
17+
set(BUILD_TESTING OFF)
18+
- set(CMAKE_SKIP_INSTALL_RULES ON)
19+
+ set(CMAKE_SKIP_INSTALL_RULES OFF)
20+
21+
endif()
22+
23+
--
24+
2.37.1 (Apple Git-137.1)
25+

0 commit comments

Comments
 (0)