mirror of
https://github.com/cfal/shoes.git
synced 2026-11-06 08:14:11 +00:00
* Add mobile build artifacts for iOS and Android - Add GitHub Actions workflow to build XCFramework (iOS) and AAR (Android) and publish them to GitHub releases on tag pushes - Add scripts/build-ios.sh and scripts/build-android.sh for local builds - Add android/ project (Gradle library module with Kotlin JNI wrapper) - Add include/shoes.h C header for FFI consumers - Gitignore /output build directory Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com> * Fix Android JNI build: pin jni to 0.21, use --locked The committed Cargo.toml had `jni = "*"` which resolved to jni 0.22.4 in CI. jni 0.22 renamed JNIEnv to EnvUnowned, breaking the Android FFI code written for the 0.21 API. - Pin jni to "=0.21" (resolves to 0.21.1 via Cargo.lock) - Add --locked to cargo ndk to enforce the lock file in CI Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com> * Migrate Android JNI bindings to jni 0.22 jni 0.22 split JNIEnv into two types: - EnvUnowned<'local> — FFI-safe type for native method signatures - Env<'local> — high-level wrapper with get_string, new_string, etc. Changes: - Replace JNIEnv with EnvUnowned in all function signatures - Use EnvUnowned::with_env() to access the Env inside each function - Use Outcome enum (Ok/Err/Panic) from into_outcome() for error handling - Replace new_global_ref return type: GlobalRef -> Global<JObject<'static>> - Replace attach_current_thread() guard pattern with callback closure - Replace &str method names/sigs with jni_str!/jni_sig! compile-time macros Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com> * Auto-generate iOS C header with cbindgen Replace hand-written include/shoes.h with cbindgen-generated output. The header is now derived from doc comments on extern "C" functions in src/ffi/ios.rs, keeping it in sync with the Rust source. - Add cbindgen.toml (exports only ProtectSocketCallback + FFI functions) - build-ios.sh runs cbindgen before building the XCFramework - CI installs cbindgen in the iOS job Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * Fix clippy and rustfmt CI failures - Reorder jni imports in ffi/android.rs to match rustfmt order - Remove unnecessary `as usize` cast in shadow_tls_server_handler.rs - Collapse match guard in config/validate.rs (clippy::collapsible_match) Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
29 lines
696 B
TOML
29 lines
696 B
TOML
language = "C"
|
|
header = """/**
|
|
* @file shoes.h
|
|
* @brief C interface for the shoes proxy library (auto-generated by cbindgen).
|
|
*
|
|
* Provides C-compatible functions for embedding the shoes VPN/proxy engine
|
|
* into iOS applications via Swift or Objective-C.
|
|
*/"""
|
|
include_guard = "SHOES_H"
|
|
no_includes = true
|
|
sys_includes = ["stdbool.h", "stdint.h"]
|
|
|
|
[export]
|
|
include = ["ProtectSocketCallback"]
|
|
exclude = ["Address", "AddressMask", "NetLocationMask"]
|
|
item_types = ["functions", "typedefs"]
|
|
|
|
[fn]
|
|
sort_by = "None"
|
|
|
|
# Suppress internal pub const → #define leaking.
|
|
[const]
|
|
allow_static_const = false
|
|
|
|
[defines]
|
|
"target_os = \"ios\"" = ""
|
|
"target_os = \"android\"" = ""
|
|
"feature = \"ffi\"" = ""
|