Dependencies.cmake 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. # External dependencies via FetchContent
  2. include(FetchContent)
  3. cmake_policy(SET CMP0135 NEW)
  4. # cpp-httplib v0.18.3 (header-only)
  5. FetchContent_Declare(
  6. httplib
  7. URL https://github.com/yhirose/cpp-httplib/archive/refs/tags/v0.18.3.tar.gz
  8. DOWNLOAD_EXTRACT_TIMESTAMP TRUE
  9. )
  10. FetchContent_MakeAvailable(httplib)
  11. # QuickJS - using bellard's official release
  12. FetchContent_Declare(
  13. quickjs
  14. URL https://bellard.org/quickjs/quickjs-2024-01-13.tar.xz
  15. DOWNLOAD_EXTRACT_TIMESTAMP TRUE
  16. )
  17. FetchContent_MakeAvailable(quickjs)
  18. # Build QuickJS as a static library
  19. add_library(quickjs_lib STATIC
  20. ${quickjs_SOURCE_DIR}/quickjs.c
  21. ${quickjs_SOURCE_DIR}/libbf.c
  22. ${quickjs_SOURCE_DIR}/libregexp.c
  23. ${quickjs_SOURCE_DIR}/libunicode.c
  24. ${quickjs_SOURCE_DIR}/cutils.c
  25. )
  26. target_include_directories(quickjs_lib PUBLIC ${quickjs_SOURCE_DIR})
  27. target_compile_definitions(quickjs_lib PRIVATE
  28. CONFIG_VERSION="2024-01-13"
  29. CONFIG_BIGNUM
  30. )
  31. # Disable some warnings for QuickJS C code
  32. if(CMAKE_C_COMPILER_ID MATCHES "GNU|Clang")
  33. target_compile_options(quickjs_lib PRIVATE
  34. -Wno-sign-compare
  35. -Wno-unused-variable
  36. -Wno-implicit-fallthrough
  37. -Wno-missing-field-initializers
  38. )
  39. endif()
  40. # libbcrypt for password hashing - download only, don't use their CMakeLists
  41. FetchContent_Declare(
  42. bcrypt
  43. URL https://github.com/trusch/libbcrypt/archive/refs/heads/master.tar.gz
  44. DOWNLOAD_EXTRACT_TIMESTAMP TRUE
  45. )
  46. FetchContent_GetProperties(bcrypt)
  47. if(NOT bcrypt_POPULATED)
  48. FetchContent_Populate(bcrypt)
  49. endif()
  50. add_library(bcrypt_lib STATIC
  51. ${bcrypt_SOURCE_DIR}/src/bcrypt.c
  52. ${bcrypt_SOURCE_DIR}/src/crypt_blowfish.c
  53. ${bcrypt_SOURCE_DIR}/src/crypt_gensalt.c
  54. ${bcrypt_SOURCE_DIR}/src/wrapper.c
  55. )
  56. target_include_directories(bcrypt_lib PUBLIC
  57. ${bcrypt_SOURCE_DIR}/include
  58. ${bcrypt_SOURCE_DIR}/include/bcrypt
  59. )