Skip to content

Commit 9ae7e1f

Browse files
Ability to disable JinjaCpp installation rules (#250)
1 parent a853f8e commit 9ae7e1f

12 files changed

+146
-149
lines changed

CMakeLists.txt

Lines changed: 51 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,9 @@
11
cmake_minimum_required(VERSION 3.23.0)
2+
3+
if(POLICY CMP0135)
4+
cmake_policy(SET CMP0135 NEW)
5+
endif()
6+
27
project(Jinja2Cpp VERSION 1.3.1)
38

49
if("${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_CURRENT_SOURCE_DIR}")
@@ -23,6 +28,7 @@ option(JINJA2CPP_STRICT_WARNINGS "Enable additional warnings and treat them as e
2328
option(JINJA2CPP_BUILD_SHARED "Build shared linkage version of Jinja2Cpp" OFF)
2429
option(JINJA2CPP_PIC "Control -fPIC option for library build" OFF)
2530
option(JINJA2CPP_VERBOSE "Add extra debug output to the build scripts" OFF)
31+
option(JINJA2CPP_INSTALL "Add installation rules for JinjaCpp targets" ${JINJA2CPP_IS_MAIN_PROJECT})
2632

2733
if (DEFINED BUILD_SHARED_LIBS)
2834
set(JINJA2CPP_BUILD_SHARED ${BUILD_SHARED_LIBS})
@@ -298,51 +304,53 @@ Jinja2CppGetTargetIncludeDir(STRING-VIEW-LITE nonstd::string-view-lite)
298304
# We can't use EXPORT feature of 'install' as is due to limitation of subproject's targets installation
299305
# So jinja2cpp-config.cmake should be written manually
300306

301-
install(
302-
TARGETS
303-
${LIB_TARGET_NAME}
304-
EXPORT
305-
InstallTargets
306-
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
307-
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
308-
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}/static
309-
FILE_SET HEADERS
310-
)
307+
if(JINJA2CPP_INSTALL)
308+
install(
309+
TARGETS
310+
${LIB_TARGET_NAME}
311+
EXPORT
312+
InstallTargets
313+
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
314+
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
315+
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}/static
316+
FILE_SET HEADERS
317+
)
311318

312-
install(
313-
FILES
314-
${CMAKE_BINARY_DIR}/jinja2cpp.pc
315-
DESTINATION
316-
${CMAKE_INSTALL_DATAROOTDIR}/pkgconfig
317-
)
319+
install(
320+
FILES
321+
${CMAKE_BINARY_DIR}/jinja2cpp.pc
322+
DESTINATION
323+
${CMAKE_INSTALL_DATAROOTDIR}/pkgconfig
324+
)
318325

319-
install(
320-
EXPORT
321-
InstallTargets
322-
FILE
323-
jinja2cpp-cfg.cmake
324-
DESTINATION
325-
${JINJA2CPP_INSTALL_CONFIG_DIR}
326-
)
326+
install(
327+
EXPORT
328+
InstallTargets
329+
FILE
330+
jinja2cpp-cfg.cmake
331+
DESTINATION
332+
${JINJA2CPP_INSTALL_CONFIG_DIR}
333+
)
327334

328-
configure_package_config_file(
329-
cmake/public/jinja2cpp-config.cmake.in
330-
${JINJA2CPP_TMP_CONFIG_PATH}/jinja2cpp-config.cmake
331-
INSTALL_DESTINATION ${JINJA2CPP_TMP_CONFIG_PATH}
332-
NO_CHECK_REQUIRED_COMPONENTS_MACRO
333-
)
335+
configure_package_config_file(
336+
cmake/public/jinja2cpp-config.cmake.in
337+
${JINJA2CPP_TMP_CONFIG_PATH}/jinja2cpp-config.cmake
338+
INSTALL_DESTINATION ${JINJA2CPP_TMP_CONFIG_PATH}
339+
NO_CHECK_REQUIRED_COMPONENTS_MACRO
340+
)
334341

335-
configure_package_config_file(
336-
cmake/public/jinja2cpp-config-deps-${JINJA2CPP_DEPS_MODE}.cmake.in
337-
${JINJA2CPP_TMP_CONFIG_PATH}/jinja2cpp-config-deps.cmake
338-
INSTALL_DESTINATION ${JINJA2CPP_TMP_CONFIG_PATH}
339-
NO_CHECK_REQUIRED_COMPONENTS_MACRO
340-
)
342+
configure_package_config_file(
343+
cmake/public/jinja2cpp-config-deps-${JINJA2CPP_DEPS_MODE}.cmake.in
344+
${JINJA2CPP_TMP_CONFIG_PATH}/jinja2cpp-config-deps.cmake
345+
INSTALL_DESTINATION ${JINJA2CPP_TMP_CONFIG_PATH}
346+
NO_CHECK_REQUIRED_COMPONENTS_MACRO
347+
)
341348

342-
install(
343-
FILES
344-
${CMAKE_CURRENT_BINARY_DIR}/${JINJA2CPP_TMP_CONFIG_PATH}/${LIB_TARGET_NAME}-config.cmake
345-
${CMAKE_CURRENT_BINARY_DIR}/${JINJA2CPP_TMP_CONFIG_PATH}/${LIB_TARGET_NAME}-config-deps.cmake
346-
DESTINATION
347-
${JINJA2CPP_INSTALL_CONFIG_DIR}
348-
)
349+
install(
350+
FILES
351+
${CMAKE_CURRENT_BINARY_DIR}/${JINJA2CPP_TMP_CONFIG_PATH}/${LIB_TARGET_NAME}-config.cmake
352+
${CMAKE_CURRENT_BINARY_DIR}/${JINJA2CPP_TMP_CONFIG_PATH}/${LIB_TARGET_NAME}-config-deps.cmake
353+
DESTINATION
354+
${JINJA2CPP_INSTALL_CONFIG_DIR}
355+
)
356+
endif()

cmake/coverage.cmake

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,12 @@ function(add_coverage_target _TARGET)
1515
)
1616
target_link_libraries(${_TARGET} INTERFACE gcov)
1717

18-
install(
19-
TARGETS
20-
${_TARGET}
21-
EXPORT
22-
InstallTargets
23-
)
18+
if(JINJA2CPP_INSTALL)
19+
install(
20+
TARGETS
21+
${_TARGET}
22+
EXPORT
23+
InstallTargets
24+
)
25+
endif()
2426
endfunction()

cmake/patches/0001-fix-skip-install-rules.patch

Lines changed: 0 additions & 25 deletions
This file was deleted.

cmake/public/jinja2cpp-config.cmake.in

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ if (JINJA2CPP_BUILD_SHARED)
6262
endif()
6363

6464

65-
# INTERFACE_LINK_LIBRARIES "nonstd::expected-lite;nonstd::variant-lite;nonstd::value_ptr-lite;nonstd::optional-lite;\$<LINK_ONLY:boost::variant>;\$<LINK_ONLY:boost::filesystem>;\$<LINK_ONLY:boost::algorithm>"
65+
# INTERFACE_LINK_LIBRARIES "nonstd::expected-lite;nonstd::variant-lite;nonstd::value_ptr-lite;nonstd::optional-lite;\$<LINK_ONLY:boost::variant>;\$<LINK_ONLY:boost::filesystem>;\$<LINK_ONLY:boost::numeric_conversion>;\$<LINK_ONLY:boost::algorithm>"
6666

6767
if(CMAKE_VERSION VERSION_LESS 2.8.12)
6868
message(FATAL_ERROR "This file relies on consumers using CMake 2.8.12 or greater.")

cmake/sanitizer.cmake

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,12 +30,14 @@ function(add_sanitizer_target _TARGET)
3030
${_BASE_ENABLE_SANITIZER_FLAGS}
3131
)
3232

33-
install(
34-
TARGETS
35-
${_TARGET}
36-
EXPORT
37-
InstallTargets
38-
)
33+
if(JINJA2CPP_INSTALL)
34+
install(
35+
TARGETS
36+
${_TARGET}
37+
EXPORT
38+
InstallTargets
39+
)
40+
endif()
3941
endfunction()
4042

4143

conanfile.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
[requires]
2-
boost/1.83.0
2+
boost/1.85.0
33
expected-lite/0.6.3
44
fmt/10.1.1
55
nlohmann_json/3.11.2

thirdparty/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ endif()
7171
if (NOT DEFINED JINJA2_PRIVATE_LIBS_INT)
7272
set(JINJA2CPP_PRIVATE_LIBS ${JINJA2CPP_PRIVATE_LIBS}
7373
Boost::variant Boost::filesystem Boost::algorithm Boost::lexical_cast Boost::json
74-
Boost::regex fmt RapidJson)
74+
Boost::regex Boost::numeric_conversion fmt RapidJson)
7575
else ()
7676
set (JINJA2CPP_PRIVATE_LIBS ${JINJA2_PRIVATE_LIBS_INT})
7777
endif ()

thirdparty/external_boost_deps.cmake

Lines changed: 34 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -19,45 +19,52 @@ if (MSVC)
1919
endif ()
2020
endif ()
2121

22-
find_package(boost_algorithm ${FIND_BOOST_PACKAGE_QUIET})
23-
find_package(boost_filesystem ${FIND_BOOST_PACKAGE_QUIET})
24-
find_package(boost_json ${FIND_BOOST_PACKAGE_QUIET})
25-
find_package(boost_optional ${FIND_BOOST_PACKAGE_QUIET})
26-
find_package(boost_variant ${FIND_BOOST_PACKAGE_QUIET})
27-
find_package(boost_regex ${FIND_BOOST_PACKAGE_QUIET})
22+
find_package(boost_algorithm ${FIND_BOOST_PACKAGE_QUIET})
23+
find_package(boost_filesystem ${FIND_BOOST_PACKAGE_QUIET})
24+
find_package(boost_numeric_conversion ${FIND_BOOST_PACKAGE_QUIET})
25+
find_package(boost_json ${FIND_BOOST_PACKAGE_QUIET})
26+
find_package(boost_optional ${FIND_BOOST_PACKAGE_QUIET})
27+
find_package(boost_variant ${FIND_BOOST_PACKAGE_QUIET})
28+
find_package(boost_regex ${FIND_BOOST_PACKAGE_QUIET})
2829

2930
if (boost_algorithm_FOUND AND
3031
boost_filesystem_FOUND AND
32+
boost_numeric_conversion_FOUND AND
3133
boost_json_FOUND AND
3234
boost_optional_FOUND AND
3335
boost_variant_FOUND AND boost_regex_FOUND)
34-
imported_target_alias(boost_algorithm ALIAS boost_algorithm::boost_algorithm)
35-
imported_target_alias(boost_filesystem ALIAS boost_filesystem::boost_filesystem)
36-
imported_target_alias(boost_json ALIAS boost_json::boost_json)
37-
imported_target_alias(boost_optional ALIAS boost_optional::boost_optional)
38-
imported_target_alias(boost_variant ALIAS boost_variant::boost_variant)
39-
imported_target_alias(boost_regex ALIAS boost_regex::boost_regex)
36+
imported_target_alias(boost_algorithm ALIAS boost_algorithm::boost_algorithm)
37+
imported_target_alias(boost_filesystem ALIAS boost_filesystem::boost_filesystem)
38+
imported_target_alias(boost_numeric_conversion ALIAS numeric_conversion::numeric_conversion)
39+
imported_target_alias(boost_json ALIAS boost_json::boost_json)
40+
imported_target_alias(boost_optional ALIAS boost_optional::boost_optional)
41+
imported_target_alias(boost_variant ALIAS boost_variant::boost_variant)
42+
imported_target_alias(boost_regex ALIAS boost_regex::boost_regex)
4043
else ()
41-
find_package(Boost COMPONENTS system filesystem json regex ${FIND_BOOST_PACKAGE_QUIET} REQUIRED)
44+
find_package(Boost COMPONENTS system filesystem numeric_conversion json regex ${FIND_BOOST_PACKAGE_QUIET} REQUIRED)
4245

4346
if (Boost_FOUND)
44-
imported_target_alias(boost_algorithm ALIAS Boost::boost)
45-
imported_target_alias(boost_filesystem ALIAS Boost::filesystem)
46-
imported_target_alias(boost_json ALIAS Boost::json)
47-
imported_target_alias(boost_optional ALIAS Boost::boost)
48-
imported_target_alias(boost_variant ALIAS Boost::boost)
49-
imported_target_alias(boost_regex ALIAS Boost::regex)
47+
imported_target_alias(boost_algorithm ALIAS Boost::boost)
48+
imported_target_alias(boost_filesystem ALIAS Boost::filesystem)
49+
imported_target_alias(boost_numeric_conversion ALIAS Boost::numeric_conversion)
50+
imported_target_alias(boost_json ALIAS Boost::json)
51+
imported_target_alias(boost_optional ALIAS Boost::boost)
52+
imported_target_alias(boost_variant ALIAS Boost::boost)
53+
imported_target_alias(boost_regex ALIAS Boost::regex)
5054
endif ()
5155
endif ()
5256

5357
set(_additional_boost_install_targets)
5458
if ("${JINJA2CPP_USE_REGEX}" STREQUAL "boost")
55-
set(_additional_boost_install_targets "boost_regex")
59+
set(_additional_boost_install_targets "boost_regex")
60+
endif()
61+
62+
if(JINJA2CPP_INSTALL)
63+
install(TARGETS boost_algorithm boost_filesystem boost_numeric_conversion boost_json boost_optional boost_variant ${_additional_boost_install_targets}
64+
EXPORT InstallTargets
65+
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
66+
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
67+
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}/static
68+
PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/boost
69+
)
5670
endif()
57-
install(TARGETS boost_algorithm boost_filesystem boost_json boost_optional boost_variant ${_additional_boost_install_targets}
58-
EXPORT InstallTargets
59-
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
60-
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
61-
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}/static
62-
PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/boost
63-
)

thirdparty/internal_deps.cmake

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,37 +2,37 @@ include(FetchContent)
22

33
FetchContent_Declare(
44
expected-lite
5-
GIT_REPOSITORY https://github.com/martinmoene/expected-lite.git
6-
GIT_TAG master
5+
URL https://github.com/martinmoene/expected-lite/archive/3634b0a6d8dffcffad4d1355253d79290c0c754c.tar.gz
6+
URL_HASH SHA256=ce3bf45480d3ef5f78aa3c06cc5ddea43f5e6b864d92571b6b9838a516e1848b
77
)
88
FetchContent_MakeAvailable(expected-lite)
99

1010
FetchContent_Declare(
1111
variant-lite
12-
GIT_REPOSITORY https://github.com/martinmoene/variant-lite.git
13-
GIT_TAG master
12+
URL https://github.com/martinmoene/variant-lite/archive/5015e841cf143487f2d7e2f619b618d455658fab.tar.gz
13+
URL_HASH SHA256=d343cfa347517a2ee318864f3e2a08af8e17e699de701c69c1cdbdab79d9331f
1414
)
1515
FetchContent_MakeAvailable(variant-lite)
1616

1717
FetchContent_Declare(
1818
optional-lite
19-
GIT_REPOSITORY https://github.com/martinmoene/optional-lite.git
20-
GIT_TAG master
19+
URL https://github.com/martinmoene/optional-lite/archive/2605a4b13094b0bf7a8ecdcde6d644370105bce5.tar.gz
20+
URL_HASH SHA256=29d5ca8d24d1174bf3e933d2e5186f7d1dab3a4cfe7befbe0f0d2795e53e3e0d
2121
)
2222
FetchContent_MakeAvailable(optional-lite)
2323

2424
FetchContent_Declare(
2525
string-view-lite
26-
GIT_REPOSITORY https://github.com/martinmoene/string-view-lite.git
27-
GIT_TAG master
26+
URL https://github.com/martinmoene/string-view-lite/archive/6e5e519d69b4ea99c3095d85d8e1e3ff4d54bbaa.tar.gz
27+
URL_HASH SHA256=fdcb41a43543f5970c617b4dd224b4c958316707cd61090f18e579072eb15b0e
2828
)
2929
FetchContent_MakeAvailable(string-view-lite)
3030

3131
set (FMT_INSTALL ON CACHE BOOL "" FORCE)
3232
FetchContent_Declare(
3333
fmt
34-
GIT_REPOSITORY https://github.com/fmtlib/fmt.git
35-
GIT_TAG 10.1.1
34+
URL https://github.com/fmtlib/fmt/archive/refs/tags/10.2.1.tar.gz
35+
URL_HASH SHA256=1250e4cc58bf06ee631567523f48848dc4596133e163f02615c97f78bab6c811
3636
)
3737
FetchContent_MakeAvailable(fmt)
3838

@@ -44,8 +44,8 @@ set (RAPIDJSON_ENABLE_INSTRUMENTATION_OPT OFF CACHE BOOL "" FORCE)
4444

4545
FetchContent_Declare(
4646
rapidjson
47-
GIT_REPOSITORY https://github.com/Tencent/rapidjson.git
48-
GIT_TAG 973dc9c06dcd3d035ebd039cfb9ea457721ec213
47+
URL https://github.com/Tencent/rapidjson/archive/973dc9c06dcd3d035ebd039cfb9ea457721ec213.tar.gz
48+
URL_HASH SHA256=d0c9e52823d493206eb721d38cb3a669ca0212360862bd15a3c2f7d35ea7c6f7
4949
)
5050
# GIT_TAG f9d53419e912910fd8fa57d5705fa41425428c35 - latest but broken revision
5151
FetchContent_MakeAvailable(rapidjson)
@@ -63,8 +63,8 @@ if (JINJA2CPP_BUILD_TESTS)
6363

6464
FetchContent_Declare(
6565
nlohmann_json
66-
GIT_REPOSITORY https://github.com/nlohmann/json.git
67-
GIT_TAG develop
66+
URL https://github.com/nlohmann/json/archive/8c391e04fe4195d8be862c97f38cfe10e2a3472e.tar.gz
67+
URL_HASH SHA256=8ca375182e9557612f043eaa62dfc4224b41ddf07af704577666aadb7dd99a79
6868
)
6969
FetchContent_MakeAvailable(nlohmann_json)
7070
endif()

thirdparty/thirdparty-conan-build.cmake

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@ find_package(optional-lite REQUIRED)
66
find_package(string-view-lite REQUIRED)
77
find_package(nlohmann_json REQUIRED)
88

9-
find_package(Boost COMPONENTS algorithm filesystem json optional variant regex REQUIRED)
9+
find_package(Boost COMPONENTS algorithm filesystem numeric_conversion json optional variant regex REQUIRED)
1010
find_package(fmt REQUIRED)
1111
find_package(RapidJSON REQUIRED)
1212

13-
set(JINJA2_PRIVATE_LIBS_INT Boost::headers Boost::filesystem)
13+
set(JINJA2_PRIVATE_LIBS_INT Boost::headers Boost::filesystem Boost::numeric_conversion)
1414
set(JINJA2_PUBLIC_LIBS_INT Boost::json fmt::fmt rapidjson Boost::regex
1515
nlohmann_json::nlohmann_json nonstd::expected-lite nonstd::variant-lite nonstd::optional-lite nonstd::string-view-lite)

0 commit comments

Comments
 (0)