json-for-modern-cpp: new package

A json library that aims to make json feel like a first class data
type using C++11, json for modern c++ is a easy to use, flexible,
modern json library.

Design goals include:

- Intuitive syntax. In languages such as Python, JSON feels like a
  first class data type. All the operator magic of modern C++ is used
  to achieve the same feeling in c++.

- Trivial integration. The whole code consists of a single header file
  json.hpp. That's it. No library, no subproject, no dependencies, no
  complex build system. The class is written in vanilla C++11.  All in
  all, everything should require no adjustment of compiler flags or
  project settings.

- Serious testing. The class is heavily unit-tested and covers 100% of
  the code, including all exceptional behavior. Furthermore, it is
  checked with Valgrind that there are no memory leaks. To maintain
  high quality, the project is following the Core Infrastructure
  Initiative (CII) best practices.

Signed-off-by: Adam Duskett <Adamduskett@outlook.com>
[Thomas:
 - use "json-for-modern-cpp" everywhere as the name of the package
 - add <pkg>_INSTALL_TARGET = NO since it's a header only library]
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
This commit is contained in:
Adam Duskett 2017-12-30 14:24:37 -05:00 committed by Thomas Petazzoni
parent 82eec03c59
commit 8b0a90d4f1
5 changed files with 51 additions and 0 deletions

View file

@ -43,6 +43,7 @@ F: package/gstreamer1/gst1-plugins-ugly/
F: package/gstreamer1/gst1-vaapi/
F: package/imx-usb-loader/
F: package/janus-gateway/
F: package/json-for-modern-cpp/
F: package/libressl/
F: package/libselinux/
F: package/libsemanage/

View file

@ -1256,6 +1256,7 @@ menu "JSON/XML"
source "package/jose/Config.in"
source "package/jsmn/Config.in"
source "package/json-c/Config.in"
source "package/json-for-modern-cpp/Config.in"
source "package/json-glib/Config.in"
source "package/jsoncpp/Config.in"
source "package/libbson/Config.in"

View file

@ -0,0 +1,29 @@
config BR2_PACKAGE_JSON_FOR_MODERN_CPP
bool "json-for-modern-cpp"
depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C++11
depends on BR2_INSTALL_LIBSTDCPP
help
Json for modern c++ has the following desing goals in mind:
- Intuitive syntax. In languages such as Python, JSON feels
like a first class data type. All the operator magic of
modern C++ is used to achieve the same feeling in c++.
- Trivial integration. The whole code consists of a single
header file json.hpp. That's it. No library, no
subproject, no dependencies, no complex build system. The
class is written in vanilla C++11. All in all, everything
should require no adjustment of compiler flags or project
settings.
- Serious testing. The class is heavily unit-tested and
covers 100% of the code, including all exceptional
behavior. Furthermore, it is checked with Valgrind that
there are no memory leaks. To maintain high quality, the
project is following the Core Infrastructure Initiative
(CII) best practices.
https://github.com/nlohmann/json
comment "json-for-modern-cpp needs a toolchain w/ C++, gcc >= 4.9"
depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9

View file

@ -0,0 +1,3 @@
# Locally computed
sha256 402464cd6d50c81bb6a683d07c537e5a8c4684fd1186826d3aa1385ce6adac13 json-v3.0.1.tar.gz
sha256 6a6115fc4a7239a135f2dce8d33f94cb8a936b8f608ac0f6699fbac278b0dd5b LICENSE.MIT

View file

@ -0,0 +1,17 @@
################################################################################
#
# json-for-modern-cpp
#
################################################################################
JSON_FOR_MODERN_CPP_VERSION = v3.0.1
JSON_FOR_MODERN_CPP_SOURCE = json-${JSON_FOR_MODERN_CPP_VERSION}.tar.gz
JSON_FOR_MODERN_CPP_SITE = $(call github,nlohmann,json,$(JSON_FOR_MODERN_CPP_VERSION))
JSON_FOR_MODERN_CPP_LICENSE = MIT
JSON_FOR_MODERN_CPP_LICENSE_FILES = LICENSE.MIT
JSON_FOR_MODERN_CPP_INSTALL_STAGING = YES
# header only library
JSON_FOR_MODERN_CPP_INSTALL_TARGET = NO
JSON_FOR_MODERN_CPP_CONF_OPTS = -DJSON_BuildTests=OFF
$(eval $(cmake-package))