fix windows build

This commit is contained in:
John Smith 2022-01-29 13:53:55 -05:00
parent 172730a132
commit 32908dd719
7 changed files with 263 additions and 152 deletions

View file

@ -17,8 +17,9 @@ target_include_directories(${PLUGIN_NAME} INTERFACE
"${CMAKE_CURRENT_SOURCE_DIR}/include")
target_link_libraries(${PLUGIN_NAME} PRIVATE flutter flutter_wrapper_plugin)
include(./rust.cmake)
# List of absolute paths to libraries that should be bundled with the plugin
set(veilid_bundled_libraries
""
"$<TARGET_FILE:${CRATE_NAME}-shared>"
PARENT_SCOPE
)
)

View file

@ -0,0 +1,23 @@
# We include Corrosion inline here, but ideally in a project with
# many dependencies we would need to install Corrosion on the system.
# See instructions on https://github.com/AndrewGaspar/corrosion#cmake-install
# Once done, uncomment this line:
# find_package(Corrosion REQUIRED)
include(FetchContent)
FetchContent_Declare(
Corrosion
GIT_REPOSITORY https://github.com/AndrewGaspar/corrosion.git
GIT_TAG origin/master # Optionally specify a version tag or branch here
)
FetchContent_MakeAvailable(Corrosion)
corrosion_import_crate(MANIFEST_PATH ${CMAKE_SOURCE_DIR}/../../rust/Cargo.toml)
# Flutter-specific
set(CRATE_NAME "veilid-flutter")
target_link_libraries(${PLUGIN_NAME} PUBLIC ${CRATE_NAME})
# list(APPEND PLUGIN_BUNDLED_LIBRARIES $<TARGET_FILE:${CRATE_NAME}-shared>)

View file

@ -28,54 +28,54 @@ namespace
private:
// Called when a method is called on this plugin's channel from Dart.
void HandleMethodCall(
const flutter::MethodCall<flutter::EncodableValue> &method_call,
std::unique_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
// void HandleMethodCall(
// const flutter::MethodCall<flutter::EncodableValue> &method_call,
// std::unique_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
};
// static
void VeilidPlugin::RegisterWithRegistrar(
flutter::PluginRegistrarWindows *registrar)
{
auto channel =
std::make_unique<flutter::MethodChannel<flutter::EncodableValue>>(
registrar->messenger(), "veilid",
&flutter::StandardMethodCodec::GetInstance());
// auto channel =
// std::make_unique<flutter::MethodChannel<flutter::EncodableValue>>(
// registrar->messenger(), "veilid",
// &flutter::StandardMethodCodec::GetInstance());
auto plugin = std::make_unique<VeilidPlugin>();
// auto plugin = std::make_unique<VeilidPlugin>();
channel->SetMethodCallHandler(
[plugin_pointer = plugin.get()](const auto &call, auto result)
{
plugin_pointer->HandleMethodCall(call, std::move(result));
});
// channel->SetMethodCallHandler(
// [plugin_pointer = plugin.get()](const auto &call, auto result)
// {
// plugin_pointer->HandleMethodCall(call, std::move(result));
// });
registrar->AddPlugin(std::move(plugin));
// registrar->AddPlugin(std::move(plugin));
}
VeilidPlugin::VeilidPlugin() {}
VeilidPlugin::~VeilidPlugin() {}
void VeilidPlugin::HandleMethodCall(
const flutter::MethodCall<flutter::EncodableValue> &method_call,
std::unique_ptr<flutter::MethodResult<flutter::EncodableValue>> result)
{
// if (method_call.method_name().compare("getPlatformVersion") == 0) {
// std::ostringstream version_stream;
// version_stream << "Windows ";
// if (IsWindows10OrGreater()) {
// version_stream << "10+";
// } else if (IsWindows8OrGreater()) {
// version_stream << "8";
// } else if (IsWindows7OrGreater()) {
// version_stream << "7";
// }
// result->Success(flutter::EncodableValue(version_stream.str()));
// } else {
result->NotImplemented();
// }
}
// void VeilidPlugin::HandleMethodCall(
// const flutter::MethodCall<flutter::EncodableValue> &method_call,
// std::unique_ptr<flutter::MethodResult<flutter::EncodableValue>> result)
// {
// // if (method_call.method_name().compare("getPlatformVersion") == 0) {
// // std::ostringstream version_stream;
// // version_stream << "Windows ";
// // if (IsWindows10OrGreater()) {
// // version_stream << "10+";
// // } else if (IsWindows8OrGreater()) {
// // version_stream << "8";
// // } else if (IsWindows7OrGreater()) {
// // version_stream << "7";
// // }
// // result->Success(flutter::EncodableValue(version_stream.str()));
// // } else {
// result->NotImplemented();
// // }
// }
} // namespace