diff --git a/Makefile.toml b/Makefile.toml index 895d884aa5..873dc20d01 100644 --- a/Makefile.toml +++ b/Makefile.toml @@ -40,6 +40,7 @@ TARGET_OS = "macos" RUST_COMPILE_TARGET = "x86_64-apple-darwin" FLUTTER_OUTPUT_DIR = "Release" PRODUCT_EXT = "app" +CRATE_TYPE = "staticlib" [env.production-desktop-windows-x86] BUILD_FLAG = "release" @@ -51,6 +52,7 @@ PRODUCT_EXT = "exe" [tasks.echo_env] script = [ ''' + echo CRATE_TYPE: ${CRATE_TYPE} echo BUILD_FLAG: ${BUILD_FLAG} echo TARGET_OS: ${TARGET_OS} echo RUST_COMPILE_TARGET: ${RUST_COMPILE_TARGET} @@ -74,7 +76,7 @@ private = true script = [ """ toml = readfile ${CARGO_MAKE_WORKSPACE_WORKING_DIRECTORY}/rust-lib/${CARGO_MAKE_CRATE_NAME}/Cargo.toml - val = replace ${toml} "rlib" ${CRATE_TYPE} + val = replace ${toml} "dylib" ${CRATE_TYPE} result = writefile ${CARGO_MAKE_WORKSPACE_WORKING_DIRECTORY}/rust-lib/${CARGO_MAKE_CRATE_NAME}/Cargo.toml ${val} assert ${result} """, @@ -86,7 +88,7 @@ private = true script = [ """ toml = readfile ${CARGO_MAKE_WORKSPACE_WORKING_DIRECTORY}/rust-lib/${CARGO_MAKE_CRATE_NAME}/Cargo.toml - val = replace ${toml} ${CRATE_TYPE} "rlib" + val = replace ${toml} ${CRATE_TYPE} "dylib" result = writefile ${CARGO_MAKE_WORKSPACE_WORKING_DIRECTORY}/rust-lib/${CARGO_MAKE_CRATE_NAME}/Cargo.toml ${val} assert ${result} """, diff --git a/app_flowy/macos/Podfile.lock b/app_flowy/macos/Podfile.lock index ce4f1af669..8c1b00c55b 100644 --- a/app_flowy/macos/Podfile.lock +++ b/app_flowy/macos/Podfile.lock @@ -46,7 +46,7 @@ EXTERNAL SOURCES: SPEC CHECKSUMS: flowy_editor: 26060a984848e6afac1f6a4455511f4114119d8d flowy_infra_ui: 9d5021b1610fe0476eb1191bf7cd41c4a4138d8f - flowy_sdk: c302ac0a22dea596db0df8073b9637b2bf2ff6fd + flowy_sdk: b7efddcc3af4ea87dc2f842c22dc37283bb9e169 FlutterMacOS: 57701585bf7de1b3fc2bb61f6378d73bbdea8424 package_info_plus_macos: f010621b07802a241d96d01876d6705f15e77c1c path_provider_macos: 160cab0d5461f0c0e02995469a98f24bdb9a3f1f diff --git a/app_flowy/packages/flowy_sdk/.gitignore b/app_flowy/packages/flowy_sdk/.gitignore index 4889ceeb9a..f0e4d7d151 100644 --- a/app_flowy/packages/flowy_sdk/.gitignore +++ b/app_flowy/packages/flowy_sdk/.gitignore @@ -73,4 +73,5 @@ build/ !**/ios/**/default.pbxuser !**/ios/**/default.perspectivev3 -**/*.dylib \ No newline at end of file +**/*.dylib +**/*.a \ No newline at end of file diff --git a/app_flowy/packages/flowy_sdk/ios/flowy_sdk.podspec b/app_flowy/packages/flowy_sdk/ios/flowy_sdk.podspec index c38482c452..26b228aa62 100644 --- a/app_flowy/packages/flowy_sdk/ios/flowy_sdk.podspec +++ b/app_flowy/packages/flowy_sdk/ios/flowy_sdk.podspec @@ -20,5 +20,6 @@ A new flutter plugin project. # Flutter.framework does not contain a i386 slice. s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES', 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'i386' } s.swift_version = '5.0' - s.vendored_libraries = "libdart_ffi.dylib" + s.static_framework = true + s.vendored_libraries = "libdart_ffi.a" end diff --git a/app_flowy/packages/flowy_sdk/lib/ffi.dart b/app_flowy/packages/flowy_sdk/lib/ffi.dart index f794b4202c..214eaba233 100644 --- a/app_flowy/packages/flowy_sdk/lib/ffi.dart +++ b/app_flowy/packages/flowy_sdk/lib/ffi.dart @@ -12,15 +12,10 @@ final DynamicLibrary _dl = _open(); /// Reference to the Dynamic Library, it should be only used for low-level access final DynamicLibrary dl = _dl; DynamicLibrary _open() { - if (is_tester()) { - return DynamicLibrary.open( - '${Directory.systemTemp.path}/app_flowy/libdart_ffi.dylib'); - } else { - if (Platform.isAndroid) return DynamicLibrary.open('libdart_ffi.so'); - if (Platform.isMacOS) return DynamicLibrary.executable(); - if (Platform.isIOS) return DynamicLibrary.executable(); - throw UnsupportedError('This platform is not supported.'); - } + if (Platform.isAndroid) return DynamicLibrary.open('libdart_ffi.so'); + if (Platform.isMacOS) return DynamicLibrary.executable(); + if (Platform.isIOS) return DynamicLibrary.executable(); + throw UnsupportedError('This platform is not supported.'); } /// C function `async_command`. @@ -32,8 +27,7 @@ void async_command( _invoke_async(port, input, len); } -final _invoke_async_Dart _invoke_async = - _dl.lookupFunction<_invoke_async_C, _invoke_async_Dart>('async_command'); +final _invoke_async_Dart _invoke_async = _dl.lookupFunction<_invoke_async_C, _invoke_async_Dart>('async_command'); typedef _invoke_async_C = Void Function( Int64 port, Pointer input, @@ -53,8 +47,7 @@ Pointer sync_command( return _invoke_sync(input, len); } -final _invoke_sync_Dart _invoke_sync = - _dl.lookupFunction<_invoke_sync_C, _invoke_sync_Dart>('sync_command'); +final _invoke_sync_Dart _invoke_sync = _dl.lookupFunction<_invoke_sync_C, _invoke_sync_Dart>('sync_command'); typedef _invoke_sync_C = Pointer Function( Pointer input, Uint64 len, @@ -71,8 +64,7 @@ int init_sdk( return _init_sdk(path); } -final _init_sdk_Dart _init_sdk = - _dl.lookupFunction<_init_sdk_C, _init_sdk_Dart>('init_sdk'); +final _init_sdk_Dart _init_sdk = _dl.lookupFunction<_init_sdk_C, _init_sdk_Dart>('init_sdk'); typedef _init_sdk_C = Int64 Function( Pointer path, ); @@ -80,29 +72,28 @@ typedef _init_sdk_Dart = int Function( Pointer path, ); - /// C function `init_stream`. int set_stream_port(int port) { return _set_stream_port(port); } final _set_stream_port_Dart _set_stream_port = -_dl.lookupFunction<_set_stream_port_C, _set_stream_port_Dart>('set_stream_port'); + _dl.lookupFunction<_set_stream_port_C, _set_stream_port_Dart>('set_stream_port'); typedef _set_stream_port_C = Int32 Function( - Int64 port, - ); + Int64 port, +); typedef _set_stream_port_Dart = int Function( - int port, - ); + int port, +); /// C function `link_me_please`. void link_me_please() { _link_me_please(); } -final _link_me_please_Dart _link_me_please = _dl - .lookupFunction<_link_me_please_C, _link_me_please_Dart>('link_me_please'); +final _link_me_please_Dart _link_me_please = + _dl.lookupFunction<_link_me_please_C, _link_me_please_Dart>('link_me_please'); typedef _link_me_please_C = Void Function(); typedef _link_me_please_Dart = void Function(); @@ -113,26 +104,11 @@ void store_dart_post_cobject( _store_dart_post_cobject(ptr); } -final _store_dart_post_cobject_Dart _store_dart_post_cobject = _dl - .lookupFunction<_store_dart_post_cobject_C, _store_dart_post_cobject_Dart>( - 'store_dart_post_cobject'); +final _store_dart_post_cobject_Dart _store_dart_post_cobject = + _dl.lookupFunction<_store_dart_post_cobject_C, _store_dart_post_cobject_Dart>('store_dart_post_cobject'); typedef _store_dart_post_cobject_C = Void Function( Pointer)>> ptr, ); typedef _store_dart_post_cobject_Dart = void Function( Pointer)>> ptr, ); - -bool is_tester() { - if (Foundation.kDebugMode) { - // ignore: unnecessary_null_comparison - // if (Platform.executable.isEmpty) { - // return false; - // } else { - // return Platform.executable.contains("tester"); - // } - return false; - } else { - return false; - } -} diff --git a/app_flowy/packages/flowy_sdk/macos/flowy_sdk.podspec b/app_flowy/packages/flowy_sdk/macos/flowy_sdk.podspec index ff416e83fe..19b3c6768e 100644 --- a/app_flowy/packages/flowy_sdk/macos/flowy_sdk.podspec +++ b/app_flowy/packages/flowy_sdk/macos/flowy_sdk.podspec @@ -14,11 +14,12 @@ A new flutter plugin project. s.author = { 'Your Company' => 'email@example.com' } s.source = { :path => '.' } s.source_files = 'Classes/**/*' + s.public_header_files = 'Classes/**/*.h' s.dependency 'FlutterMacOS' s.platform = :osx, '10.11' s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES' } s.swift_version = '5.0' - # s.static_framework = true - s.vendored_libraries = "libdart_ffi.dylib" + s.static_framework = true + s.vendored_libraries = "libdart_ffi.a" end diff --git a/rust-lib/flowy-sqlite/Cargo.toml b/rust-lib/flowy-sqlite/Cargo.toml index 2bc441fffb..a5427d97d9 100644 --- a/rust-lib/flowy-sqlite/Cargo.toml +++ b/rust-lib/flowy-sqlite/Cargo.toml @@ -7,6 +7,7 @@ edition = "2018" [dependencies] r2d2 = "0.8.9" +libsqlite3-sys = {version = "0.9.1", features = ["bundled"]} diesel = {version = "1.4.7", features = ["sqlite"]} diesel_derives = {version = "1.4.1", features = ["sqlite"]} diesel_migrations = {version = "1.4.0", features = ["sqlite"]} diff --git a/scripts/makefile/desktop.toml b/scripts/makefile/desktop.toml index ffcd4570f2..150194e42d 100644 --- a/scripts/makefile/desktop.toml +++ b/scripts/makefile/desktop.toml @@ -3,10 +3,11 @@ [tasks.flowy-sdk] category = "Build" condition = { channels = ["nightly"] } -dependencies = ["echo_env", "flowy-sdk-build"] +dependencies = ["flowy-sdk-build"] run_task = { name = ["copy-to-sys-tmpdir"] } [tasks.flowy-sdk-build] +dependencies = ["echo_env"] condition = { env_set = [ "BUILD_FLAG", "RUST_COMPILE_TARGET", "CRATE_TYPE", "TARGET_OS"] } run_task = { name = ["setup-crate-type","sdk-build", "post-desktop", "restore-crate-type"] } @@ -29,12 +30,11 @@ script_runner = "@shell" [tasks.post-desktop] private = true -condition = { platforms = ["mac"] } script = [ """ echo "🚀 🚀 🚀 Flowy-SDK build success" - cp ${CARGO_MAKE_WORKSPACE_WORKING_DIRECTORY}/rust-lib/target/${RUST_COMPILE_TARGET}/${BUILD_FLAG}/lib${CARGO_MAKE_CRATE_FS_NAME}.dylib \ - ${CARGO_MAKE_WORKSPACE_WORKING_DIRECTORY}/app_flowy/packages/flowy_sdk/macos/lib${CARGO_MAKE_CRATE_FS_NAME}.dylib + cp ${CARGO_MAKE_WORKSPACE_WORKING_DIRECTORY}/rust-lib/target/${RUST_COMPILE_TARGET}/${BUILD_FLAG}/lib${CARGO_MAKE_CRATE_FS_NAME}.a \ + ${CARGO_MAKE_WORKSPACE_WORKING_DIRECTORY}/app_flowy/packages/flowy_sdk/macos/lib${CARGO_MAKE_CRATE_FS_NAME}.a """, """ cp ${CARGO_MAKE_WORKSPACE_WORKING_DIRECTORY}/rust-lib/${CARGO_MAKE_CRATE_NAME}/binding.h \