CJSON.cmake 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. cmake_minimum_required(VERSION 2.8)
  2. find_package(CJSON REQUIRED) # to have CJSON_PREFIX and CJSON_INSTALL_DIR
  3. include(ExternalProject)
  4. set(CJSON_RELEASE 1.4.0)
  5. set(CJSON_COMMIT 030d0c14cc5e411758aaa4680e11ba82ebf61bc0)
  6. set(CJSON_GIT https://github.com/DaveGamble/cJSON.git)
  7. #set(CJSON_INSTALL_DIR ${CMAKE_BINARY_DIR}/downloads/install)
  8. set(CJSON_CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=${CJSON_INSTALL_DIR})
  9. set(CJSON_CMAKE_ARGS ${CJSON_CMAKE_ARGS} -DBUILD_SHARED_LIBS=OFF -DENABLE_CJSON_TEST=OFF)
  10. set(CJSON_PATCH_COMMAND "")
  11. set(CJSON_CMAKE_CACHE_ARGS "")
  12. # Pass toolchain
  13. if(NOT "${CMAKE_TOOLCHAIN_FILE}" STREQUAL "")
  14. set(CJSON_CMAKE_CACHE_ARGS ${CJSON_CMAKE_CACHE_ARGS} -DCMAKE_TOOLCHAIN_FILE:STRING=${CMAKE_TOOLCHAIN_FILE})
  15. set(CJSON_CMAKE_CACHE_ARGS ${CJSON_CMAKE_CACHE_ARGS} -DCMAKE_TOOLCHAIN_FILE:STRING=${CMAKE_TOOLCHAIN_FILE})
  16. endif()
  17. # Need to set the build type
  18. set(CJSON_CMAKE_CACHE_ARGS ${CJSON_CMAKE_CACHE_ARGS} -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE})
  19. # Pass any non default configuration
  20. if(CMAKE_CONFIGURATION_TYPES)
  21. foreach(CONFIG_NAME ${CMAKE_CONFIGURATION_TYPES})
  22. if(NOT "${CONFIG_NAME}" STREQUAL "Debug" AND
  23. NOT "${CONFIG_NAME}" STREQUAL "Release" AND
  24. NOT "${CONFIG_NAME}" STREQUAL "MinSizeRel" AND
  25. NOT "${CONFIG_NAME}" STREQUAL "RelWithDebInfo")
  26. string(TOUPPER ${CONFIG_NAME} CONFIG_NAME)
  27. #Set the flags for this configuration
  28. foreach(FLAGS_NAME CXX_FLAGS C_FLAGS) #Compiler flags
  29. set(CJSON_CMAKE_CACHE_ARGS ${CJSON_CMAKE_CACHE_ARGS} -DCMAKE_${FLAGS_NAME}_${CONFIG_NAME}:STRING=${CMAKE_${FLAGS_NAME}_${CONFIG_NAME}})
  30. endforeach()
  31. foreach(FLAGS_NAME EXE_LINKER_FLAGS MODULE_LINKER_FLAGS SHARED_LINKER_FLAGS) #Linker flags
  32. set(CJSON_CMAKE_CACHE_ARGS ${CJSON_CMAKE_CACHE_ARGS} -DCMAKE_${FLAGS_NAME}_${CONFIG_NAME}:STRING=${CMAKE_${FLAGS_NAME}_${CONFIG_NAME}})
  33. endforeach()
  34. endif()
  35. endforeach()
  36. set(CJSON_CMAKE_CACHE_ARGS ${CJSON_CMAKE_CACHE_ARGS} -DCMAKE_CONFIGURATION_TYPES:STRING=${CMAKE_CONFIGURATION_TYPES})
  37. endif()
  38. ExternalProject_Add(
  39. ${CJSON_NAME}
  40. GIT_REPOSITORY ${CJSON_GIT}
  41. GIT_TAG ${CJSON_COMMIT}
  42. DOWNLOAD_DIR ${CMAKE_CURRENT_BINARY_DIR}/libraries/cjson/download
  43. SOURCE_DIR ${CMAKE_CURRENT_BINARY_DIR}/libraries/cjson/source
  44. BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/libraries/cjson
  45. INSTALL_DIR ${CJSON_INSTALL_DIR}
  46. CMAKE_ARGS ${CJSON_CMAKE_ARGS}
  47. CMAKE_CACHE_ARGS ${CJSON_CMAKE_CACHE_ARGS}
  48. )