# extension/third_party — vendored native dependencies for the GDExtension. # # Phase 1 (macOS) used Homebrew for libsodium / libzstd / liblzo2. Those don't # exist on the Android NDK or iOS SDK sysroots, so the mobile bring-up (BACKLOG # F1/F2) needs them built from source as part of our own build. All three are # pinned here and produce static libs that link into libmtgodot: # # sodium <- libsodium-cmake submodule (wraps jedisct1/libsodium) # libzstd_static <- facebook/zstd submodule, its own build/cmake project # minilzo <- vendored miniLZO source (LZO1X, ~4 files) — see NOTICE # # See docs/THIRD-PARTY.md for versions / licenses. liblzo2 (and thus miniLZO) is # GPL: fine for this internal, non-published project — same footing as # libgr2/src/oodle1.c — but must be swapped or re-licensed before any release. # Everything here is archived into the SHARED libmtgodot, so it must be PIC. set(CMAKE_POSITION_INDEPENDENT_CODE ON) # --- libsodium ------------------------------------------------------------------ set(SODIUM_DISABLE_TESTS ON CACHE BOOL "" FORCE) set(SODIUM_MINIMAL OFF CACHE BOOL "" FORCE) add_subdirectory(libsodium-cmake EXCLUDE_FROM_ALL) # The wrapper's target is `sodium`; give it a namespaced alias for consumers. add_library(mt3p::sodium ALIAS sodium) # --- libzstd ------------------------------------------------------------------ set(ZSTD_BUILD_PROGRAMS OFF CACHE BOOL "" FORCE) set(ZSTD_BUILD_SHARED OFF CACHE BOOL "" FORCE) set(ZSTD_BUILD_STATIC ON CACHE BOOL "" FORCE) set(ZSTD_BUILD_TESTS OFF CACHE BOOL "" FORCE) set(ZSTD_BUILD_CONTRIB OFF CACHE BOOL "" FORCE) set(ZSTD_LEGACY_SUPPORT OFF CACHE BOOL "" FORCE) set(ZSTD_MULTITHREAD_SUPPORT OFF CACHE BOOL "" FORCE) add_subdirectory(zstd/build/cmake zstd-build EXCLUDE_FROM_ALL) add_library(mt3p::zstd ALIAS libzstd_static) # --- Crypto++ (MT_PROTOCOL=classic cipher) ---------------------------------- add_subdirectory(cryptopp EXCLUDE_FROM_ALL) # --- miniLZO ------------------------------------------------------------------ # One translation unit, an amalgamation generated from the LZO sources. Its # public API ( via the shim header) is a strict subset of full LZO. add_library(minilzo STATIC minilzo/minilzo.c) target_include_directories(minilzo PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/minilzo") set_target_properties(minilzo PROPERTIES C_STANDARD 99) add_library(mt3p::minilzo ALIAS minilzo)