Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion example/android/app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ plugins {
android {
namespace = "com.gray.libtransmission.flutter_libtransmission_example"
compileSdk = flutter.compileSdkVersion
ndkVersion = "27.0.12077973"
ndkVersion = "28.2.13676358"

compileOptions {
sourceCompatibility = JavaVersion.VERSION_11
Expand Down
22 changes: 11 additions & 11 deletions example/pubspec.lock
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,10 @@ packages:
dependency: transitive
description:
name: characters
sha256: f71061c654a3380576a52b451dd5532377954cf9dbd272a78fc8479606670803
sha256: faf38497bda5ead2a8c7615f4f7939df04333478bf32e4173fcb06d428b5716b
url: "https://pub.dev"
source: hosted
version: "1.4.0"
version: "1.4.1"
clock:
dependency: transitive
description:
Expand Down Expand Up @@ -149,26 +149,26 @@ packages:
dependency: transitive
description:
name: matcher
sha256: dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2
sha256: dc0b7dc7651697ea4ff3e69ef44b0407ea32c487a39fff6a4004fa585e901861
url: "https://pub.dev"
source: hosted
version: "0.12.17"
version: "0.12.19"
material_color_utilities:
dependency: transitive
description:
name: material_color_utilities
sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec
sha256: "9c337007e82b1889149c82ed242ed1cb24a66044e30979c44912381e9be4c48b"
url: "https://pub.dev"
source: hosted
version: "0.11.1"
version: "0.13.0"
meta:
dependency: transitive
description:
name: meta
sha256: e3641ec5d63ebf0d9b41bd43201a66e3fc79a65db5f61fc181f04cd27aab950c
sha256: "23f08335362185a5ea2ad3a4e597f1375e78bce8a040df5c600c8d3552ef2394"
url: "https://pub.dev"
source: hosted
version: "1.16.0"
version: "1.17.0"
path:
dependency: transitive
description:
Expand Down Expand Up @@ -306,10 +306,10 @@ packages:
dependency: transitive
description:
name: test_api
sha256: "522f00f556e73044315fa4585ec3270f1808a4b186c936e612cab0b565ff1e00"
sha256: "8161c84903fd860b26bfdefb7963b3f0b68fee7adea0f59ef805ecca346f0c7a"
url: "https://pub.dev"
source: hosted
version: "0.7.6"
version: "0.7.10"
vector_math:
dependency: transitive
description:
Expand Down Expand Up @@ -343,5 +343,5 @@ packages:
source: hosted
version: "1.1.0"
sdks:
dart: ">=3.8.0-0 <4.0.0"
dart: ">=3.9.0-0 <4.0.0"
flutter: ">=3.24.0"
7 changes: 2 additions & 5 deletions example/vcpkg.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,3 @@
{
"dependencies": [
"curl",
"openssl"
]
}
"dependencies": ["curl", "openssl"]
}
11 changes: 7 additions & 4 deletions ios/flutter_libtransmission.podspec
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ A new Flutter FFI plugin project.
s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES', 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'i386', 'HEADER_SEARCH_PATHS' => '${PODS_TARGET_SRCROOT}/Classes' }
s.swift_version = '5.0'

s.compiler_flags = '-std=c++17'
s.compiler_flags = '-std=c++20'

s.prepare_command = <<-CMD
mkdir -p ./lib
Expand All @@ -50,23 +50,26 @@ A new Flutter FFI plugin project.
cd ../src
mkdir -p ../ios/build
mkdir -p ../ios/Classes/libtransmission
mkdir -p ../ios/Classes/fmt
cmake -B ../ios/build -G Ninja -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_TOOLCHAIN_FILE="$(pwd)/ios.toolchain.cmake"
cmake --build ../ios/build
cp -r ../ios/build/transmission-prefix/src/transmission/libtransmission/*.h ../ios/Classes/libtransmission/
cp -r ../ios/build/transmission-prefix/src/transmission/third-party/fmt/include/fmt/*.h ../ios/Classes/fmt/
cp ../ios/build/transmission-prefix/src/transmission-build/libtransmission/libtransmission.a ../ios/lib/
cp ../ios/build/transmission-prefix/src/transmission-build/third-party/crc32c.bld/pfx/lib/libcrc32c.a ../ios/lib/
cp ../ios/build/transmission-prefix/src/transmission-build/third-party/dht.bld/pfx/lib/libdht.a ../ios/lib/
cp ../ios/build/transmission-prefix/src/transmission-build/third-party/libb64.bld/src/libb64.a ../ios/lib/
cp ../ios/build/transmission-prefix/src/transmission-build/third-party/libdeflate.bld/pfx/lib/libdeflate.a ../ios/lib/
cp ../ios/build/transmission-prefix/src/transmission-build/third-party/libevent.bld/pfx/lib/libevent.a ../ios/lib/
cp ../ios/build/transmission-prefix/src/transmission-build/third-party/libevent.bld/lib/libevent_core.a ../ios/lib/
cp ../ios/build/transmission-prefix/src/transmission-build/third-party/libevent.bld/lib/libevent_extra.a ../ios/lib/
cp ../ios/build/transmission-prefix/src/transmission-build/third-party/libnatpmp.bld/pfx/lib/libnatpmp.a ../ios/lib/
cp ../ios/build/transmission-prefix/src/transmission-build/third-party/libpsl.bld/pfx/lib/libpsl.a ../ios/lib/
cp ../ios/build/transmission-prefix/src/transmission-build/third-party/libutp.bld/libutp.a ../ios/lib/
cp ../ios/build/transmission-prefix/src/transmission-build/third-party/miniupnp/miniupnpc.bld/pfx/lib/libminiupnpc.a ../ios/lib/
cp ../ios/build/transmission-prefix/src/transmission-build/third-party/wildmat/libwildmat.a ../ios/lib/
cp ../ios/build/transmission-prefix/src/transmission-build/third-party/madler-crcany/libMadlerCrcany.a ../ios/lib/
CMD

s.vendored_libraries = 'lib/libtransmission.a', 'lib/libcrc32c.a', 'lib/libdht.a', 'lib/libb64.a', 'lib/libdeflate.a', 'lib/libevent.a', 'lib/libnatpmp.a', 'lib/libpsl.a', 'lib/libutp.a', 'lib/libminiupnpc.a', 'lib/libwildmat.a', 'lib/libz.a', 'lib/libcrypto.a', 'lib/libssl.a', 'lib/libcurl.a'
s.vendored_libraries = 'lib/libtransmission.a', 'lib/libdht.a', 'lib/libb64.a', 'lib/libdeflate.a', 'lib/libevent_core.a', 'lib/libevent_extra.a', 'lib/libnatpmp.a', 'lib/libpsl.a', 'lib/libutp.a', 'lib/libminiupnpc.a', 'lib/libwildmat.a', 'lib/libMadlerCrcany.a', 'lib/libz.a', 'lib/libcrypto.a', 'lib/libssl.a', 'lib/libcurl.a'

s.frameworks = 'SystemConfiguration', 'Foundation', 'Security'
end
11 changes: 7 additions & 4 deletions macos/flutter_libtransmission.podspec
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ A new Flutter FFI plugin project.
s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES', 'HEADER_SEARCH_PATHS' => '${PODS_TARGET_SRCROOT}/Classes' }
s.swift_version = '5.0'

s.compiler_flags = '-std=c++17'
s.compiler_flags = '-std=c++20'

s.prepare_command = <<-CMD
${VCPKG_ROOT}/vcpkg install --triplet=x64-osx openssl curl
Expand All @@ -38,23 +38,26 @@ A new Flutter FFI plugin project.
cd ../src
mkdir -p ../macos/build
mkdir -p ../macos/Classes/libtransmission
mkdir -p ../macos/Classes/fmt
cmake -B ../macos/build -G Ninja -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_OSX_ARCHITECTURES='x86_64;arm64' -DCMAKE_TOOLCHAIN_FILE="$(pwd)/macos.toolchain.cmake"
cmake --build ../macos/build
cp -r ../macos/build/transmission-prefix/src/transmission/libtransmission/*.h ../macos/Classes/libtransmission
cp -r ../macos/build/transmission-prefix/src/transmission/third-party/fmt/include/fmt/*.h ../macos/Classes/fmt/
cp ../macos/build/transmission-prefix/src/transmission-build/libtransmission/libtransmission.a ../macos/lib/
cp ../macos/build/transmission-prefix/src/transmission-build/third-party/crc32c.bld/pfx/lib/libcrc32c.a ../macos/lib/
cp ../macos/build/transmission-prefix/src/transmission-build/third-party/dht.bld/pfx/lib/libdht.a ../macos/lib/
cp ../macos/build/transmission-prefix/src/transmission-build/third-party/libb64.bld/src/libb64.a ../macos/lib/
cp ../macos/build/transmission-prefix/src/transmission-build/third-party/libdeflate.bld/pfx/lib/libdeflate.a ../macos/lib/
cp ../macos/build/transmission-prefix/src/transmission-build/third-party/libevent.bld/pfx/lib/libevent.a ../macos/lib/
cp ../macos/build/transmission-prefix/src/transmission-build/third-party/libevent.bld/lib/libevent_core.a ../macos/lib/
cp ../macos/build/transmission-prefix/src/transmission-build/third-party/libevent.bld/lib/libevent_extra.a ../macos/lib/
cp ../macos/build/transmission-prefix/src/transmission-build/third-party/libnatpmp.bld/pfx/lib/libnatpmp.a ../macos/lib/
cp ../macos/build/transmission-prefix/src/transmission-build/third-party/libpsl.bld/pfx/lib/libpsl.a ../macos/lib/
cp ../macos/build/transmission-prefix/src/transmission-build/third-party/libutp.bld/libutp.a ../macos/lib/
cp ../macos/build/transmission-prefix/src/transmission-build/third-party/miniupnp/miniupnpc.bld/pfx/lib/libminiupnpc.a ../macos/lib/
cp ../macos/build/transmission-prefix/src/transmission-build/third-party/wildmat/libwildmat.a ../macos/lib/
cp ../macos/build/transmission-prefix/src/transmission-build/third-party/madler-crcany/libMadlerCrcany.a ../macos/lib/
CMD

s.vendored_libraries = 'lib/libtransmission.a', 'lib/libcrc32c.a', 'lib/libdht.a', 'lib/libb64.a', 'lib/libdeflate.a', 'lib/libevent.a', 'lib/libnatpmp.a', 'lib/libpsl.a', 'lib/libutp.a', 'lib/libminiupnpc.a', 'lib/libwildmat.a', 'lib/libz.a', 'lib/libcrypto.a', 'lib/libssl.a', 'lib/libcurl.a',
s.vendored_libraries = 'lib/libtransmission.a', 'lib/libdht.a', 'lib/libb64.a', 'lib/libdeflate.a', 'lib/libevent_core.a', 'lib/libevent_extra.a', 'lib/libnatpmp.a', 'lib/libpsl.a', 'lib/libutp.a', 'lib/libminiupnpc.a', 'lib/libwildmat.a', 'lib/libMadlerCrcany.a', 'lib/libz.a', 'lib/libcrypto.a', 'lib/libssl.a', 'lib/libcurl.a',

s.frameworks = 'SystemConfiguration', 'Foundation', 'Security'
end
30 changes: 19 additions & 11 deletions src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ include(ExternalProject)
project(flutter_libtransmission_library VERSION 0.0.1 LANGUAGES CXX)

set(CMAKE_VERBOSE_MAKEFILE ON)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD 20)

# On Windows, build will probably fail due to https://gitlab.kitware.com/cmake/cmake/-/issues/25936
# Set a custom TRANSMISSION_PREFIX env var to avoid this
Expand All @@ -24,11 +24,12 @@ SET(TRANSMISSION_BUILD_DIR "${TRANSMISSION_PREFIX}/src/transmission-build")
if(LINUX OR ANDROID OR APPLE)
SET(LIBS
${TRANSMISSION_BUILD_DIR}/libtransmission/libtransmission.a
${TRANSMISSION_BUILD_DIR}/third-party/crc32c.bld/pfx/lib/libcrc32c.a
${TRANSMISSION_BUILD_DIR}/third-party/madler-crcany/libMadlerCrcany.a
${TRANSMISSION_BUILD_DIR}/third-party/dht.bld/pfx/lib/libdht.a
${TRANSMISSION_BUILD_DIR}/third-party/libb64.bld/src/libb64.a
${TRANSMISSION_BUILD_DIR}/third-party/libdeflate.bld/pfx/lib/libdeflate.a
${TRANSMISSION_BUILD_DIR}/third-party/libevent.bld/pfx/lib/libevent.a
${TRANSMISSION_BUILD_DIR}/third-party/libevent.bld/lib/libevent_core.a
${TRANSMISSION_BUILD_DIR}/third-party/libevent.bld/lib/libevent_extra.a
${TRANSMISSION_BUILD_DIR}/third-party/libnatpmp.bld/pfx/lib/libnatpmp.a
${TRANSMISSION_BUILD_DIR}/third-party/libpsl.bld/pfx/lib/libpsl.a
${TRANSMISSION_BUILD_DIR}/third-party/libutp.bld/libutp.a
Expand All @@ -38,11 +39,12 @@ if(LINUX OR ANDROID OR APPLE)
elseif(WIN32)
SET(LIBS
${TRANSMISSION_BUILD_DIR}/libtransmission/$<CONFIG>/transmission.lib
${TRANSMISSION_BUILD_DIR}/third-party/crc32c.bld/pfx/lib/crc32c.lib
${TRANSMISSION_BUILD_DIR}/third-party/madler-crcany/$<CONFIG>/MadlerCrcany.lib
${TRANSMISSION_BUILD_DIR}/third-party/dht.bld/pfx/lib/dht.lib
${TRANSMISSION_BUILD_DIR}/third-party/libb64.bld/src/$<CONFIG>/b64.lib
${TRANSMISSION_BUILD_DIR}/third-party/libdeflate.bld/pfx/lib/deflatestatic.lib
${TRANSMISSION_BUILD_DIR}/third-party/libevent.bld/pfx/lib/event.lib
${TRANSMISSION_BUILD_DIR}/third-party/libevent.bld/lib/$<CONFIG>/event_core.lib
${TRANSMISSION_BUILD_DIR}/third-party/libevent.bld/lib/$<CONFIG>/event_extra.lib
${TRANSMISSION_BUILD_DIR}/third-party/libnatpmp.bld/pfx/lib/natpmp.lib
${TRANSMISSION_BUILD_DIR}/third-party/libpsl.bld/pfx/lib/psl.lib
${TRANSMISSION_BUILD_DIR}/third-party/libutp.bld/$<CONFIG>/utp.lib
Expand Down Expand Up @@ -93,7 +95,7 @@ endif()
ExternalProject_Add(transmission
PREFIX ${TRANSMISSION_PREFIX}
GIT_REPOSITORY https://github.com/G-Ray/transmission.git
GIT_TAG 51b63f6c3e877e0163d8886a6d796161ad5bf636 # main-pikatorrent
GIT_TAG c3ff17924bf623d2434dea585f5d0943809964ec # main-pikatorrent
INSTALL_COMMAND ""
CMAKE_ARGS
${CMAKE_ARGS}
Expand All @@ -117,15 +119,12 @@ ExternalProject_Add(transmission
"-DUSE_SYSTEM_EVENT2=OFF"
"-DUSE_SYSTEM_DEFLATE=OFF"
"-DUSE_SYSTEM_DHT=OFF"
# "-DUSE_SYSTEM_FAST_FLOAT=OFF"
# "-DUSE_SYSTEM_FMT=OFF"
"-DUSE_SYSTEM_FMT=OFF"
"-DUSE_SYSTEM_MINIUPNPC=OFF"
"-DUSE_SYSTEM_NATPMP=OFF"
"-DUSE_SYSTEM_UTP=OFF"
"-DUSE_SYSTEM_B64=OFF"
"-DUSE_SYSTEM_PSL=OFF"
# "-DUSE_SYSTEM_RAPIDJSON=OFF"
# "-DUSE_SYSTEM_UTF8CPP=OFF"
"-DRUN_CLANG_TIDY=OFF"
BUILD_BYPRODUCTS
${LIBS}
Expand All @@ -142,6 +141,7 @@ add_dependencies(flutter_libtransmission transmission)

ExternalProject_Get_property(transmission SOURCE_DIR)
include_directories("${SOURCE_DIR}/")
include_directories("${SOURCE_DIR}/third-party/fmt/include")

if(APPLE)
if(IOS)
Expand Down Expand Up @@ -188,7 +188,15 @@ set_target_properties(flutter_libtransmission PROPERTIES

target_compile_definitions(flutter_libtransmission PUBLIC DART_SHARED_LIB)

if (WIN32)
# Prevent windows.h from defining min/max macros that conflict with
# std::numeric_limits<T>::max() used in libtransmission headers.
target_compile_definitions(flutter_libtransmission PRIVATE NOMINMAX)
# fmt requires /utf-8 to compile with MSVC.
target_compile_options(flutter_libtransmission PRIVATE /utf-8)
endif()

if (ANDROID)
# Support Android 15 16k page size.
# Support Android 15 16k page size, and deterministic builds
target_link_options(flutter_libtransmission PRIVATE "-Wl,-z,max-page-size=16384,--build-id=none,--hash-style=gnu")
endif()
4 changes: 2 additions & 2 deletions src/flutter_libtransmission.cc
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ std::string configDir;


static void execute_request(callback_struct &cs) {
tr_rpc_request_exec(session, cs.request, [&cs](tr_session* session, tr_variant&& resp) {
tr_rpc_request_exec(session, cs.request, [&cs](tr_variant&& resp) {
cs.promise.set_value(tr_variant_serde::json().compact().to_string(resp));
});
}
Expand Down Expand Up @@ -59,7 +59,7 @@ FFI_PLUGIN_EXPORT char *request(char *json_string) {
thread.join();

char *response = new char[value.length() + 1];
std::strcpy(response, value.c_str());
std::memcpy(response, value.c_str(), value.length() + 1);
return response;
}

Expand Down
Loading