|
@@ -0,0 +1,59 @@
|
|
|
+cmake_minimum_required(VERSION 2.8)
|
|
|
+
|
|
|
+find_package(CJSON REQUIRED) # to have CJSON_PREFIX and CJSON_INSTALL_DIR
|
|
|
+
|
|
|
+include(ExternalProject)
|
|
|
+
|
|
|
+set(CJSON_RELEASE 1.4.0)
|
|
|
+set(CJSON_COMMIT 030d0c14cc5e411758aaa4680e11ba82ebf61bc0)
|
|
|
+set(CJSON_GIT https://github.com/DaveGamble/cJSON.git)
|
|
|
+#set(CJSON_INSTALL_DIR ${CMAKE_BINARY_DIR}/downloads/install)
|
|
|
+set(CJSON_CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=${CJSON_INSTALL_DIR})
|
|
|
+set(CJSON_CMAKE_ARGS ${CJSON_CMAKE_ARGS} -DBUILD_SHARED_LIBS=OFF -DENABLE_CJSON_TEST=OFF)
|
|
|
+set(CJSON_PATCH_COMMAND "")
|
|
|
+set(CJSON_CMAKE_CACHE_ARGS "")
|
|
|
+
|
|
|
+# Pass toolchain
|
|
|
+if(NOT "${CMAKE_TOOLCHAIN_FILE}" STREQUAL "")
|
|
|
+ set(CJSON_CMAKE_CACHE_ARGS ${CJSON_CMAKE_CACHE_ARGS} -DCMAKE_TOOLCHAIN_FILE:STRING=${CMAKE_TOOLCHAIN_FILE})
|
|
|
+ set(CJSON_CMAKE_CACHE_ARGS ${CJSON_CMAKE_CACHE_ARGS} -DCMAKE_TOOLCHAIN_FILE:STRING=${CMAKE_TOOLCHAIN_FILE})
|
|
|
+endif()
|
|
|
+
|
|
|
+# Need to set the build type
|
|
|
+set(CJSON_CMAKE_CACHE_ARGS ${CJSON_CMAKE_CACHE_ARGS} -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE})
|
|
|
+
|
|
|
+# Pass any non default configuration
|
|
|
+if(CMAKE_CONFIGURATION_TYPES)
|
|
|
+ foreach(CONFIG_NAME ${CMAKE_CONFIGURATION_TYPES})
|
|
|
+ if(NOT "${CONFIG_NAME}" STREQUAL "Debug" AND
|
|
|
+ NOT "${CONFIG_NAME}" STREQUAL "Release" AND
|
|
|
+ NOT "${CONFIG_NAME}" STREQUAL "MinSizeRel" AND
|
|
|
+ NOT "${CONFIG_NAME}" STREQUAL "RelWithDebInfo")
|
|
|
+
|
|
|
+ string(TOUPPER ${CONFIG_NAME} CONFIG_NAME)
|
|
|
+ #Set the flags for this configuration
|
|
|
+ foreach(FLAGS_NAME CXX_FLAGS C_FLAGS) #Compiler flags
|
|
|
+ set(CJSON_CMAKE_CACHE_ARGS ${CJSON_CMAKE_CACHE_ARGS} -DCMAKE_${FLAGS_NAME}_${CONFIG_NAME}:STRING=${CMAKE_${FLAGS_NAME}_${CONFIG_NAME}})
|
|
|
+ endforeach()
|
|
|
+
|
|
|
+ foreach(FLAGS_NAME EXE_LINKER_FLAGS MODULE_LINKER_FLAGS SHARED_LINKER_FLAGS) #Linker flags
|
|
|
+ set(CJSON_CMAKE_CACHE_ARGS ${CJSON_CMAKE_CACHE_ARGS} -DCMAKE_${FLAGS_NAME}_${CONFIG_NAME}:STRING=${CMAKE_${FLAGS_NAME}_${CONFIG_NAME}})
|
|
|
+ endforeach()
|
|
|
+ endif()
|
|
|
+ endforeach()
|
|
|
+
|
|
|
+ set(CJSON_CMAKE_CACHE_ARGS ${CJSON_CMAKE_CACHE_ARGS} -DCMAKE_CONFIGURATION_TYPES:STRING=${CMAKE_CONFIGURATION_TYPES})
|
|
|
+endif()
|
|
|
+
|
|
|
+
|
|
|
+ExternalProject_Add(
|
|
|
+ ${CJSON_NAME}
|
|
|
+ GIT_REPOSITORY ${CJSON_GIT}
|
|
|
+ GIT_TAG ${CJSON_COMMIT}
|
|
|
+ DOWNLOAD_DIR ${CMAKE_CURRENT_BINARY_DIR}/libraries/cjson/download
|
|
|
+ SOURCE_DIR ${CMAKE_CURRENT_BINARY_DIR}/libraries/cjson/source
|
|
|
+ BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/libraries/cjson
|
|
|
+ INSTALL_DIR ${CJSON_INSTALL_DIR}
|
|
|
+ CMAKE_ARGS ${CJSON_CMAKE_ARGS}
|
|
|
+ CMAKE_CACHE_ARGS ${CJSON_CMAKE_CACHE_ARGS}
|
|
|
+)
|