macos ffi

This commit is contained in:
ekibun
2020-09-24 10:15:45 -07:00
parent 3c41d0d250
commit 343c1ffd30
10 changed files with 37 additions and 54 deletions

View File

@@ -14,7 +14,7 @@ EXTERNAL SOURCES:
:path: Flutter/ephemeral/.symlinks/flutter/darwin-x64 :path: Flutter/ephemeral/.symlinks/flutter/darwin-x64
SPEC CHECKSUMS: SPEC CHECKSUMS:
flutter_qjs: df517bcb1e7a68d630e4fe9454db7ab15bfdf425 flutter_qjs: 5a33cf20dbbab6bc82bc454ec2db2dd8c2e50665
FlutterMacOS: 15bea8a44d2fa024068daa0140371c020b4b6ff9 FlutterMacOS: 15bea8a44d2fa024068daa0140371c020b4b6ff9
PODFILE CHECKSUM: d8ba9b3e9e93c62c74a660b46c6fcb09f03991a7 PODFILE CHECKSUM: d8ba9b3e9e93c62c74a660b46c6fcb09f03991a7

View File

@@ -1,24 +1,7 @@
cmake_minimum_required(VERSION 3.7 FATAL_ERROR) cmake_minimum_required(VERSION 3.7 FATAL_ERROR)
project(flutter_qjs LANGUAGES CXX) project(ffiquickjs LANGUAGES CXX)
include("${CMAKE_CURRENT_SOURCE_DIR}/../cxx/quickjs.cmake") include("${CMAKE_CURRENT_SOURCE_DIR}/../cxx/quickjs.cmake")
add_library(flutter_qjs SHARED ${CXX_LIB_DIR}/ffi.cpp) add_library(ffiquickjs SHARED ${CXX_LIB_DIR}/ffi.cpp)
target_link_libraries(ffiquickjs PRIVATE quickjs)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_XCODE_ATTRIBUTE_DEVELOPMENT_TEAM "6SA4A2R2GU" CACHE INTERNAL "")
target_link_libraries(flutter_qjs PRIVATE quickjs)
set_target_properties(flutter_qjs PROPERTIES
FRAMEWORK TRUE
FRAMEWORK_VERSION A
MACOSX_FRAMEWORK_IDENTIFIER soko.ekibun.flutter_qjs
# MACOSX_FRAMEWORK_INFO_PLIST Info.plist
# "current version" in semantic format in Mach-O binary file
VERSION 1.0.0
# "compatibility version" in semantic format in Mach-O binary file
SOVERSION 1.0.0
PUBLIC_HEADER ffi.h
XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "Apple Development"
# RESOURCE "${RESOURCE_FILES}"
)

View File

@@ -19,7 +19,6 @@ A new flutter plugin project.
# Flutter.framework does not contain a i386 slice. # Flutter.framework does not contain a i386 slice.
s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES', 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'i386' } s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES', 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'i386' }
s.vendored_frameworks = 'build/release-iphoneos/flutter_qjs.framework' s.vendored_libraries = 'build/Debug/libffiquickjs.dylib'
s.static_framework = false
s.swift_version = '5.0' s.swift_version = '5.0'
end end

View File

@@ -8,4 +8,4 @@
mkdir build mkdir build
cd build cd build
cmake .. -G Xcode -DCMAKE_TOOLCHAIN_FILE=../ios.toolchain.cmake -DPLATFORM=OS64COMBINED cmake .. -G Xcode -DCMAKE_TOOLCHAIN_FILE=../ios.toolchain.cmake -DPLATFORM=OS64COMBINED
cmake --build . --config Release cmake --build . --config Debug

View File

@@ -53,15 +53,13 @@ final DynamicLibrary qjsLib = Platform.environment['FLUTTER_TEST'] == 'true'
? (Platform.isWindows ? (Platform.isWindows
? DynamicLibrary.open("test/build/Debug/ffiquickjs.dll") ? DynamicLibrary.open("test/build/Debug/ffiquickjs.dll")
: Platform.isMacOS : Platform.isMacOS
? DynamicLibrary.open("macos/flutterqjs.framework/flutterqjs") ? DynamicLibrary.open("test/build/Debug/libffiquickjs.dylib")
: DynamicLibrary.process()) : DynamicLibrary.process())
: (Platform.isWindows : (Platform.isWindows
? DynamicLibrary.open("flutter_qjs_plugin.dll") ? DynamicLibrary.open("flutter_qjs_plugin.dll")
: Platform.isAndroid : Platform.isAndroid
? DynamicLibrary.open("libqjs.so") ? DynamicLibrary.open("libqjs.so")
: Platform.isIOS || Platform.isMacOS : DynamicLibrary.process());
? DynamicLibrary.open("flutterqjs.framework/flutterqjs")
: DynamicLibrary.process());
/// JSValue *jsThrowInternalError(JSContext *ctx, char *message) /// JSValue *jsThrowInternalError(JSContext *ctx, char *message)
final Pointer Function( final Pointer Function(

View File

@@ -1,25 +1,7 @@
cmake_minimum_required(VERSION 3.7 FATAL_ERROR) cmake_minimum_required(VERSION 3.7 FATAL_ERROR)
project(flutterqjs LANGUAGES CXX) project(ffiquickjs LANGUAGES CXX)
include("${CMAKE_CURRENT_SOURCE_DIR}/../cxx/quickjs.cmake") include("${CMAKE_CURRENT_SOURCE_DIR}/../cxx/quickjs.cmake")
add_library(flutterqjs SHARED ${CXX_LIB_DIR}/ffi.cpp) add_library(ffiquickjs SHARED ${CXX_LIB_DIR}/ffi.cpp)
target_link_libraries(ffiquickjs PRIVATE quickjs)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/output/$ENV{ABI})
set(CMAKE_XCODE_ATTRIBUTE_DEVELOPMENT_TEAM "6SA4A2R2GU" CACHE INTERNAL "")
target_link_libraries(flutterqjs PRIVATE quickjs)
set_target_properties(flutterqjs PROPERTIES
FRAMEWORK TRUE
FRAMEWORK_VERSION A
MACOSX_FRAMEWORK_IDENTIFIER soko.ekibun.flutterqjs
# MACOSX_FRAMEWORK_INFO_PLIST Info.plist
# "current version" in semantic format in Mach-O binary file
VERSION 1.0.0
# "compatibility version" in semantic format in Mach-O binary file
SOVERSION 1.0.0
PUBLIC_HEADER ffi.h
XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "Apple Development"
# RESOURCE "${RESOURCE_FILES}"
)

View File

@@ -18,7 +18,6 @@ A new flutter plugin project.
s.platform = :osx, '10.11' s.platform = :osx, '10.11'
s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES' } s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES' }
s.vendored_frameworks = 'build/Release/flutterqjs.framework' s.vendored_libraries = 'build/Debug/libffiquickjs.dylib'
s.static_framework = false
s.swift_version = '5.0' s.swift_version = '5.0'
end end

View File

@@ -8,4 +8,4 @@
mkdir build mkdir build
cd build cd build
cmake .. -G Xcode -DCMAKE_OSX_ARCHITECTURES=x86_64 cmake .. -G Xcode -DCMAKE_OSX_ARCHITECTURES=x86_64
cmake --build . --config Release cmake --build . --config Debug

View File

@@ -8,6 +8,7 @@
import 'dart:convert'; import 'dart:convert';
import 'dart:io'; import 'dart:io';
import 'package:flutter_qjs/ffi.dart';
import 'package:flutter_qjs/flutter_qjs.dart'; import 'package:flutter_qjs/flutter_qjs.dart';
import 'package:flutter_test/flutter_test.dart'; import 'package:flutter_test/flutter_test.dart';
@@ -39,6 +40,16 @@ void main() async {
stderr.write(result.stderr); stderr.write(result.stderr);
expect(result.exitCode, 0); expect(result.exitCode, 0);
}, testOn: 'windows'); }, testOn: 'windows');
test('make.macos', () async {
var result = Process.runSync(
"sh",
['./make.sh'],
workingDirectory: 'macos',
);
stdout.write(result.stdout);
stderr.write(result.stderr);
expect(result.exitCode, 0);
}, testOn: 'mac-os');
test('jsToDart', () async { test('jsToDart', () async {
final qjs = FlutterQjs(); final qjs = FlutterQjs();
qjs.setMethodHandler((method, args) { qjs.setMethodHandler((method, args) {

11
test/make.sh Normal file
View File

@@ -0,0 +1,11 @@
###
# @Description:
# @Author: ekibun
# @Date: 2020-09-24 00:50:13
# @LastEditors: ekibun
# @LastEditTime: 2020-09-24 00:51:43
###
mkdir build
cd build
cmake .. -G Xcode -DCMAKE_OSX_ARCHITECTURES=x86_64
cmake --build . --config Debug