Dependencies.cmake 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. # Smartbotic-MicroBit External Dependencies
  2. # Fetch non-apt packages via CMake FetchContent
  3. include(FetchContent)
  4. # cpp-httplib (HTTP server and client)
  5. # Header-only HTTP/HTTPS library
  6. FetchContent_Declare(
  7. httplib
  8. GIT_REPOSITORY https://github.com/yhirose/cpp-httplib.git
  9. GIT_TAG v0.18.3
  10. )
  11. # libbcrypt (Password hashing)
  12. FetchContent_Declare(
  13. libbcrypt
  14. GIT_REPOSITORY https://github.com/trusch/libbcrypt.git
  15. GIT_TAG master
  16. GIT_SHALLOW TRUE
  17. )
  18. # nlohmann_json (if not found on system)
  19. if(NOT nlohmann_json_FOUND)
  20. message(STATUS "Fetching nlohmann_json...")
  21. FetchContent_Declare(
  22. nlohmann_json
  23. GIT_REPOSITORY https://github.com/nlohmann/json.git
  24. GIT_TAG v3.11.3
  25. GIT_SHALLOW TRUE
  26. OVERRIDE_FIND_PACKAGE
  27. )
  28. set(JSON_BuildTests OFF CACHE BOOL "" FORCE)
  29. FetchContent_MakeAvailable(nlohmann_json)
  30. endif()
  31. # Make httplib available (header-only)
  32. message(STATUS "Fetching cpp-httplib...")
  33. set(HTTPLIB_REQUIRE_OPENSSL ON CACHE BOOL "" FORCE)
  34. set(HTTPLIB_USE_OPENSSL_IF_AVAILABLE ON CACHE BOOL "" FORCE)
  35. FetchContent_MakeAvailable(httplib)
  36. # Make libbcrypt available (manual build due to outdated CMakeLists.txt)
  37. message(STATUS "Fetching libbcrypt...")
  38. FetchContent_GetProperties(libbcrypt)
  39. if(NOT libbcrypt_POPULATED)
  40. FetchContent_Populate(libbcrypt)
  41. add_library(bcrypt STATIC
  42. ${libbcrypt_SOURCE_DIR}/src/bcrypt.c
  43. ${libbcrypt_SOURCE_DIR}/src/crypt_blowfish.c
  44. ${libbcrypt_SOURCE_DIR}/src/crypt_gensalt.c
  45. ${libbcrypt_SOURCE_DIR}/src/wrapper.c
  46. )
  47. target_include_directories(bcrypt PUBLIC
  48. ${libbcrypt_SOURCE_DIR}/include
  49. ${libbcrypt_SOURCE_DIR}/include/bcrypt
  50. )
  51. target_compile_options(bcrypt PRIVATE -w)
  52. set_target_properties(bcrypt PROPERTIES INTERPROCEDURAL_OPTIMIZATION OFF)
  53. endif()