CMakeLists.txt (rapidjson-1.0.2) | : | CMakeLists.txt (rapidjson-1.1.0) | ||
---|---|---|---|---|
CMAKE_MINIMUM_REQUIRED(VERSION 2.8) | CMAKE_MINIMUM_REQUIRED(VERSION 2.8) | |||
if(POLICY CMP0025) | ||||
# detect Apple's Clang | ||||
cmake_policy(SET CMP0025 NEW) | ||||
endif() | ||||
if(POLICY CMP0054) | ||||
cmake_policy(SET CMP0054 NEW) | ||||
endif() | ||||
SET(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules) | SET(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules) | |||
PROJECT(RapidJSON CXX) | PROJECT(RapidJSON CXX) | |||
set(LIB_MAJOR_VERSION "1") | set(LIB_MAJOR_VERSION "1") | |||
set(LIB_MINOR_VERSION "0") | set(LIB_MINOR_VERSION "1") | |||
set(LIB_PATCH_VERSION "2") | set(LIB_PATCH_VERSION "0") | |||
set(LIB_VERSION_STRING "${LIB_MAJOR_VERSION}.${LIB_MINOR_VERSION}.${LIB_PATCH_VE RSION}") | set(LIB_VERSION_STRING "${LIB_MAJOR_VERSION}.${LIB_MINOR_VERSION}.${LIB_PATCH_VE RSION}") | |||
# compile in release with debug info mode by default | # compile in release with debug info mode by default | |||
SET(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING "Build Type") | if(NOT CMAKE_BUILD_TYPE) | |||
set(CMAKE_BUILD_TYPE "RelWithDebInfo" CACHE STRING "Choose the type of build | ||||
, options are: Debug Release RelWithDebInfo MinSizeRel." FORCE) | ||||
endif() | ||||
# Build all binaries in a separate directory | # Build all binaries in a separate directory | |||
SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) | SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) | |||
option(RAPIDJSON_BUILD_DOC "Build rapidjson documentation." ON) | option(RAPIDJSON_BUILD_DOC "Build rapidjson documentation." ON) | |||
option(RAPIDJSON_BUILD_EXAMPLES "Build rapidjson examples." ON) | option(RAPIDJSON_BUILD_EXAMPLES "Build rapidjson examples." ON) | |||
option(RAPIDJSON_BUILD_TESTS "Build rapidjson perftests and unittests." ON) | option(RAPIDJSON_BUILD_TESTS "Build rapidjson perftests and unittests." ON) | |||
option(RAPIDJSON_BUILD_THIRDPARTY_GTEST | option(RAPIDJSON_BUILD_THIRDPARTY_GTEST | |||
"Use gtest installation in `thirdparty/gtest` by default if available" OFF) | "Use gtest installation in `thirdparty/gtest` by default if available" OFF) | |||
option(RAPIDJSON_BUILD_CXX11 "Build rapidjson with C++11 (gcc/clang)" ON) | ||||
option(RAPIDJSON_BUILD_ASAN "Build rapidjson with address sanitizer (gcc/clang)" | ||||
OFF) | ||||
option(RAPIDJSON_BUILD_UBSAN "Build rapidjson with undefined behavior sanitizer | ||||
(gcc/clang)" OFF) | ||||
option(RAPIDJSON_HAS_STDSTRING "" OFF) | option(RAPIDJSON_HAS_STDSTRING "" OFF) | |||
if(RAPIDJSON_HAS_STDSTRING) | if(RAPIDJSON_HAS_STDSTRING) | |||
add_definitions(-DRAPIDJSON_HAS_STDSTRING) | add_definitions(-DRAPIDJSON_HAS_STDSTRING) | |||
endif() | endif() | |||
find_program(CCACHE_FOUND ccache) | ||||
if(CCACHE_FOUND) | ||||
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache) | ||||
set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ccache) | ||||
if (CMAKE_CXX_COMPILER_ID MATCHES "Clang") | ||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Qunused-arguments -fcolor-diagn | ||||
ostics") | ||||
endif() | ||||
endif(CCACHE_FOUND) | ||||
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") | if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") | |||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native -Wall -Wextra") | set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native -Wall -Wextra -Werror" | |||
) | ||||
if (RAPIDJSON_BUILD_CXX11) | ||||
if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS "4.7.0") | ||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x") | ||||
else() | ||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") | ||||
endif() | ||||
endif() | ||||
if (RAPIDJSON_BUILD_ASAN) | ||||
if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS "4.8.0") | ||||
message(FATAL_ERROR "GCC < 4.8 doesn't support the address sanitizer | ||||
") | ||||
else() | ||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address") | ||||
endif() | ||||
endif() | ||||
if (RAPIDJSON_BUILD_UBSAN) | ||||
if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS "4.9.0") | ||||
message(FATAL_ERROR "GCC < 4.9 doesn't support the undefined behavio | ||||
r sanitizer") | ||||
else() | ||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=undefined") | ||||
endif() | ||||
endif() | ||||
elseif (CMAKE_CXX_COMPILER_ID MATCHES "Clang") | elseif (CMAKE_CXX_COMPILER_ID MATCHES "Clang") | |||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native -Wall -Wextra") | set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native -Wall -Wextra -Werror | |||
-Wno-missing-field-initializers") | ||||
if (RAPIDJSON_BUILD_CXX11) | ||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") | ||||
endif() | ||||
if (RAPIDJSON_BUILD_ASAN) | ||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address") | ||||
endif() | ||||
if (RAPIDJSON_BUILD_UBSAN) | ||||
if (CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang") | ||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=undefined-trap -f | ||||
sanitize-undefined-trap-on-error") | ||||
else() | ||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=undefined") | ||||
endif() | ||||
endif() | ||||
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC") | elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC") | |||
add_definitions(-D_CRT_SECURE_NO_WARNINGS=1) | add_definitions(-D_CRT_SECURE_NO_WARNINGS=1) | |||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHsc") | ||||
endif() | endif() | |||
#add extra search paths for libraries and includes | #add extra search paths for libraries and includes | |||
SET(INCLUDE_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/include" CACHE PATH "The direct ory the headers are installed in") | SET(INCLUDE_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/include" CACHE PATH "The direct ory the headers are installed in") | |||
SET(LIB_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/lib" CACHE STRING "Directory where lib will install") | SET(LIB_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/lib" CACHE STRING "Directory where lib will install") | |||
SET(DOC_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/share/doc/${PROJECT_NAME}" CACHE PA TH "Path to the documentation") | SET(DOC_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/share/doc/${PROJECT_NAME}" CACHE PA TH "Path to the documentation") | |||
IF(UNIX OR CYGWIN) | IF(UNIX OR CYGWIN) | |||
SET(_CMAKE_INSTALL_DIR "${LIB_INSTALL_DIR}/cmake/${PROJECT_NAME}") | SET(_CMAKE_INSTALL_DIR "${LIB_INSTALL_DIR}/cmake/${PROJECT_NAME}") | |||
ELSEIF(WIN32) | ELSEIF(WIN32) | |||
End of changes. 8 change blocks. | ||||
5 lines changed or deleted | 73 lines changed or added |