Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Use the system version of RapidJSON if available.
Since the Ubuntu package doesn't ship with a CMake find module, one is included here. Bug: #201 Bug: #178
- Loading branch information
1 parent
6412f40
commit 047e7d5
Showing
4 changed files
with
113 additions
and
3 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,97 @@ | ||
# Copyright (c) 2011 Milo Yip (miloyip@gmail.com) | ||
# Copyright (c) 2013 Rafal Jeczalik (rjeczalik@gmail.com) | ||
# Distributed under the MIT License (see license.txt file) | ||
|
||
# ----------------------------------------------------------------------------------- | ||
# | ||
# Finds the rapidjson library | ||
# | ||
# ----------------------------------------------------------------------------------- | ||
# | ||
# Variables used by this module, they can change the default behaviour. | ||
# Those variables need to be either set before calling find_package | ||
# or exported as environment variables before running CMake: | ||
# | ||
# RAPIDJSON_INCLUDEDIR - Set custom include path, useful when rapidjson headers are | ||
# outside system paths | ||
# RAPIDJSON_USE_SSE2 - Configure rapidjson to take advantage of SSE2 capabilities | ||
# RAPIDJSON_USE_SSE42 - Configure rapidjson to take advantage of SSE4.2 capabilities | ||
# | ||
# ----------------------------------------------------------------------------------- | ||
# | ||
# Variables defined by this module: | ||
# | ||
# RAPIDJSON_FOUND - True if rapidjson was found | ||
# RAPIDJSON_INCLUDE_DIRS - Path to rapidjson include directory | ||
# RAPIDJSON_CXX_FLAGS - Extra C++ flags required for compilation with rapidjson | ||
# | ||
# ----------------------------------------------------------------------------------- | ||
# | ||
# Example usage: | ||
# | ||
# set(RAPIDJSON_USE_SSE2 ON) | ||
# set(RAPIDJSON_INCLUDEDIR "/opt/github.com/rjeczalik/rapidjson/include") | ||
# | ||
# find_package(rapidjson REQUIRED) | ||
# | ||
# include_directories("${RAPIDJSON_INCLUDE_DIRS}") | ||
# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${RAPIDJSON_CXX_FLAGS}") | ||
# add_executable(foo foo.cc) | ||
# | ||
# ----------------------------------------------------------------------------------- | ||
|
||
foreach(opt RAPIDJSON_INCLUDEDIR RAPIDJSON_USE_SSE2 RAPIDJSON_USE_SSE42) | ||
if(${opt} AND DEFINED ENV{${opt}} AND NOT ${opt} STREQUAL "$ENV{${opt}}") | ||
message(WARNING "Conflicting ${opt} values: ignoring environment variable and using CMake cache entry.") | ||
elseif(DEFINED ENV{${opt}} AND NOT ${opt}) | ||
set(${opt} "$ENV{${opt}}") | ||
endif() | ||
endforeach() | ||
|
||
find_path( | ||
RAPIDJSON_INCLUDE_DIRS | ||
NAMES rapidjson/rapidjson.h | ||
PATHS ${RAPIDJSON_INCLUDEDIR} | ||
DOC "Include directory for the rapidjson library." | ||
) | ||
|
||
mark_as_advanced(RAPIDJSON_INCLUDE_DIRS) | ||
|
||
if(RAPIDJSON_INCLUDE_DIRS) | ||
set(RAPIDJSON_FOUND TRUE) | ||
endif() | ||
|
||
mark_as_advanced(RAPIDJSON_FOUND) | ||
|
||
if(RAPIDJSON_USE_SSE42) | ||
set(RAPIDJSON_CXX_FLAGS "-DRAPIDJSON_SSE42") | ||
if(MSVC) | ||
set(RAPIDJSON_CXX_FLAGS "${RAPIDJSON_CXX_FLAGS} /arch:SSE4.2") | ||
else() | ||
set(RAPIDJSON_CXX_FLAGS "${RAPIDJSON_CXX_FLAGS} -msse4.2") | ||
endif() | ||
else() | ||
if(RAPIDJSON_USE_SSE2) | ||
set(RAPIDJSON_CXX_FLAGS "-DRAPIDJSON_SSE2") | ||
if(MSVC) | ||
set(RAPIDJSON_CXX_FLAGS "${RAPIDJSON_CXX_FLAGS} /arch:SSE2") | ||
else() | ||
set(RAPIDJSON_CXX_FLAGS "${RAPIDJSON_CXX_FLAGS} -msse2") | ||
endif() | ||
endif() | ||
endif() | ||
|
||
mark_as_advanced(RAPIDJSON_CXX_FLAGS) | ||
|
||
if(RAPIDJSON_FOUND) | ||
if(NOT rapidjson_FIND_QUIETLY) | ||
message(STATUS "Found rapidjson header files in ${RAPIDJSON_INCLUDE_DIRS}") | ||
if(DEFINED RAPIDJSON_CXX_FLAGS) | ||
message(STATUS "Found rapidjson C++ extra compilation flags: ${RAPIDJSON_CXX_FLAGS}") | ||
endif() | ||
endif() | ||
elseif(rapidjson_FIND_REQUIRED) | ||
message(FATAL_ERROR "Could not find rapidjson") | ||
else() | ||
message(STATUS "Optional package rapidjson was not found") | ||
endif() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,6 +1,16 @@ | ||
find_package( rapidjson ) | ||
if ( RAPIDJSON_FOUND ) | ||
set( _rapidjson_includedirs ${RAPIDJSON_INCLUDE_DIRS} ) | ||
else () | ||
set( _rapidjson_includedirs ${PTE_EXTERNAL_DIR}/rapidjson/include ) | ||
message( STATUS "Using rapidjson headers from ${_rapidjson_includedirs}" ) | ||
endif () | ||
|
||
add_library( rapidjson INTERFACE IMPORTED ) | ||
|
||
set_target_properties( | ||
rapidjson PROPERTIES | ||
INTERFACE_INCLUDE_DIRECTORIES ${PTE_EXTERNAL_DIR}/rapidjson/include | ||
INTERFACE_INCLUDE_DIRECTORIES ${_rapidjson_includedirs} | ||
) | ||
|
||
unset( _rapidjson_includedirs ) |