Skip to content

Commit

Permalink
add single_header CMake target
Browse files Browse the repository at this point in the history
  • Loading branch information
theodelrieu committed Dec 28, 2017
1 parent 225a479 commit 8dfc69c
Show file tree
Hide file tree
Showing 5 changed files with 19,119 additions and 27 deletions.
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -21,3 +21,6 @@ benchmarks/files/numbers/*.json
cmake-build-debug

test/test-*
amalgamate
single_include
third_party/Amalgamate
21 changes: 20 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,12 @@ cmake_minimum_required(VERSION 3.0.0)
##
project(nlohmann_json VERSION 3.0.0 LANGUAGES CXX)

##
## INCLUDE
##
##
include(ExternalProject)

##
## OPTIONS
##
Expand All @@ -15,7 +21,7 @@ option(JSON_BuildTests "Build the unit tests when BUILD_TESTING is enabled." ON)
## CONFIGURATION
##
set(NLOHMANN_JSON_TARGET_NAME ${PROJECT_NAME})
set(NLOHMANN_JSON_SOURCE_DIR "src/")
set(NLOHMANN_JSON_SOURCE_DIR "src")
set(NLOHMANN_JSON_CONFIG_INSTALL_DIR "lib/cmake/${PROJECT_NAME}")
set(NLOHMANN_JSON_INCLUDE_INSTALL_DIR "include")
set(NLOHMANN_JSON_HEADER_INSTALL_DIR "${NLOHMANN_JSON_INCLUDE_INSTALL_DIR}/nlohmann")
Expand Down Expand Up @@ -62,6 +68,19 @@ if(BUILD_TESTING AND JSON_BuildTests)
add_subdirectory(test)
endif()

ExternalProject_Add(amalgamate
GIT_REPOSITORY "https://github.com/theodelrieu/Amalgamate"
CMAKE_ARGS "-DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}"
)

# There is no way to tell amalgamate to force-write the output file even if it already exists...
add_custom_target(single_header ALL rm -f "${CMAKE_SOURCE_DIR}/single_header/json.hpp"
COMMENT "Amalgamating json.hpp..."
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/${NLOHMANN_JSON_SOURCE_DIR}
DEPENDS amalgamate
COMMAND "${CMAKE_BINARY_DIR}/bin/amalgamate" -w '*.hpp' -i . json.hpp "${CMAKE_SOURCE_DIR}/single_header/json.hpp"
)

##
## INSTALL
## install header files, generate and install cmake config files for find_package()
Expand Down
53 changes: 28 additions & 25 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,29 +1,32 @@
.PHONY: pretty clean ChangeLog.md

SRCDIR = src
SRCS = ${SRCDIR}/json.hpp \
${SRCDIR}/json_fwd.hpp \
${SRCDIR}/detail/macro_scope.hpp \
${SRCDIR}/detail/macro_unscope.hpp \
${SRCDIR}/detail/meta.hpp \
${SRCDIR}/detail/exceptions.hpp \
${SRCDIR}/detail/value_t.hpp \
${SRCDIR}/detail/conversions/from_json.hpp \
${SRCDIR}/detail/conversions/to_json.hpp \
${SRCDIR}/detail/parsing/input_adapters.hpp \
${SRCDIR}/detail/parsing/lexer.hpp \
${SRCDIR}/detail/parsing/parser.hpp \
${SRCDIR}/detail/iterators/primitive_iterator.hpp \
${SRCDIR}/detail/iterators/internal_iterator.hpp \
${SRCDIR}/detail/iterators/iter_impl.hpp \
${SRCDIR}/detail/iterators/iteration_proxy.hpp \
${SRCDIR}/detail/iterators/json_reverse_iterator.hpp \
${SRCDIR}/detail/parsing/output_adapters.hpp \
${SRCDIR}/detail/parsing/binary_reader.hpp \
${SRCDIR}/detail/parsing/binary_writer.hpp \
${SRCDIR}/detail/serializer.hpp \
${SRCDIR}/detail/json_ref.hpp \
${SRCDIR}/adl_serializer.hpp
SRCDIR = ./src
SRCS = $(SRCDIR)/json.hpp \
$(SRCDIR)/json_fwd.hpp \
$(SRCDIR)/detail/macro_scope.hpp \
$(SRCDIR)/detail/macro_unscope.hpp \
$(SRCDIR)/detail/meta.hpp \
$(SRCDIR)/detail/exceptions.hpp \
$(SRCDIR)/detail/value_t.hpp \
$(SRCDIR)/detail/conversions/from_json.hpp \
$(SRCDIR)/detail/conversions/to_json.hpp \
$(SRCDIR)/detail/parsing/input_adapters.hpp \
$(SRCDIR)/detail/parsing/lexer.hpp \
$(SRCDIR)/detail/parsing/parser.hpp \
$(SRCDIR)/detail/iterators/primitive_iterator.hpp \
$(SRCDIR)/detail/iterators/internal_iterator.hpp \
$(SRCDIR)/detail/iterators/iter_impl.hpp \
$(SRCDIR)/detail/iterators/iteration_proxy.hpp \
$(SRCDIR)/detail/iterators/json_reverse_iterator.hpp \
$(SRCDIR)/detail/parsing/output_adapters.hpp \
$(SRCDIR)/detail/parsing/binary_reader.hpp \
$(SRCDIR)/detail/parsing/binary_writer.hpp \
$(SRCDIR)/detail/serializer.hpp \
$(SRCDIR)/detail/json_ref.hpp \
$(SRCDIR)/adl_serializer.hpp

UNAME = $(shell uname)
CXX=clang++

# main target
all:
Expand All @@ -42,7 +45,6 @@ all:
@echo "pedantic_gcc - run GCC with maximal warning flags"
@echo "pretty - beautify code with Artistic Style"


##########################################################################
# unit tests
##########################################################################
Expand Down Expand Up @@ -247,6 +249,7 @@ pretty:
$(SRCS) test/src/*.cpp \
benchmarks/src/benchmarks.cpp doc/examples/*.cpp


##########################################################################
# changelog
##########################################################################
Expand Down
Loading

0 comments on commit 8dfc69c

Please sign in to comment.