Skip to content

Commit 94567d0

Browse files
committed
save
1 parent ff60b8b commit 94567d0

File tree

7 files changed

+94
-7
lines changed

7 files changed

+94
-7
lines changed

Diff for: .gitmodules

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
[submodule "src"]
2+
path = src
3+
url = https://github.com/rainyl/dartcv.git

Diff for: example/dart_cli/pubspec.yaml

+7
Original file line numberDiff line numberDiff line change
@@ -16,3 +16,10 @@ dependencies:
1616
dev_dependencies:
1717
lints: ^3.0.0
1818
test: ^1.24.0
19+
20+
dependency_overrides:
21+
native_assets_cli:
22+
git:
23+
url: https://github.com/dart-lang/native.git
24+
path: pkgs/native_assets_cli
25+
ref: 3fbbf07

Diff for: hook/build.dart

+2-5
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,5 @@
1-
// Copyright (c) 2025, the Dart project authors. Please see the AUTHORS file
2-
// for details. All rights reserved. Use of this source code is governed by a
3-
// BSD-style license that can be found in the LICENSE file.
4-
5-
import 'dart:io';
1+
// Copyright (c) 2025, Rainyl. All rights reserved. Use of this source code is governed by a
2+
// Apache 2.0 license that can be found in the LICENSE file.
63

74
import 'package:dartcv4/src/hook_helpers/run_build.dart';
85
import 'package:native_assets_cli/native_assets_cli.dart';

Diff for: lib/src/hook_helpers/parse_user_defines.dart

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import 'dart:io';
2+
3+
import 'package:logging/logging.dart';
4+
import 'package:yaml/yaml.dart';
5+
6+
Future<Map<String, Object?>> parseUserDefines(File yamlFile, String pkgName, {Logger? logger}) async {
7+
final yaml = loadYaml(await yamlFile.readAsString()) as YamlMap;
8+
try {
9+
final m = yaml['hooks']['user_defines'][pkgName] as YamlMap;
10+
return Map<String, Object?>.from(m);
11+
} catch (e) {
12+
logger?.warning('No user defines found for $pkgName, error: $e\n');
13+
return {};
14+
}
15+
}

Diff for: lib/src/hook_helpers/run_build.dart

+42-2
Original file line numberDiff line numberDiff line change
@@ -6,21 +6,61 @@ import 'dart:io';
66
import 'package:logging/logging.dart';
77
import 'package:native_assets_cli/code_assets_builder.dart';
88
import 'package:native_toolchain_cmake/native_toolchain_cmake.dart';
9+
import 'package:yaml/yaml.dart';
10+
11+
import 'parse_user_defines.dart';
912

1013
Future<void> runBuild(BuildInput input, BuildOutputBuilder output, {List<String>? optionalModules}) async {
11-
final packagePath = Directory(await getPackagePath('opencv_dart'));
14+
final packagePath = Directory(await getPackagePath('dartcv4'));
1215
final logger = Logger('')
1316
..level = Level.ALL
14-
..onRecord.listen((record) => print(record.message));
17+
// ..onRecord.listen((record) => print(record.message));
18+
..onRecord.listen((record) => stderr.write(record.message));
19+
20+
// final userDefines = input.userDefines;
21+
final userDefines = await parseUserDefines(
22+
File.fromUri(packagePath.uri.resolve('pubspec.yaml')),
23+
'dartcv4',
24+
logger: logger,
25+
);
26+
logger.info(userDefines);
27+
// {include_modules: [calib3d, contrib, dnn, features2d, highgui, imgcodecs, imgproc, objdetect, photo, stitching, video, videoio]}
28+
29+
optionalModules ??= [];
30+
if (userDefines.containsKey('include_modules')) {
31+
final moduels = userDefines['include_modules'] as YamlList?;
32+
if (moduels != null) {
33+
optionalModules.addAll(moduels.cast<String>());
34+
}
35+
}
36+
37+
final moduleDefines = {
38+
'DARTCV_WITH_CALIB3D': optionalModules.contains('calib3d') ? 'ON' : 'OFF',
39+
'DARTCV_WITH_CONTRIB': optionalModules.contains('contrib') ? 'ON' : 'OFF',
40+
'DARTCV_WITH_DNN': optionalModules.contains('dnn') ? 'ON' : 'OFF',
41+
'DARTCV_WITH_FEATURES2D': optionalModules.contains('features2d') ? 'ON' : 'OFF',
42+
'DARTCV_WITH_HIGHGUI': optionalModules.contains('highgui') ? 'ON' : 'OFF',
43+
// 'DARTCV_WITH_IMGCODECS': optionalModules.contains('imgcodecs')? 'ON' : 'OFF',
44+
'DARTCV_WITH_IMGPROC': optionalModules.contains('imgproc') ? 'ON' : 'OFF',
45+
'DARTCV_WITH_OBJDETECT': optionalModules.contains('objdetect') ? 'ON' : 'OFF',
46+
'DARTCV_WITH_PHOTO': optionalModules.contains('photo') ? 'ON' : 'OFF',
47+
'DARTCV_WITH_STITCHING': optionalModules.contains('stitching') ? 'ON' : 'OFF',
48+
'DARTCV_WITH_VIDEO': optionalModules.contains('video') ? 'ON' : 'OFF',
49+
'DARTCV_WITH_VIDEOIO': optionalModules.contains('videoio') ? 'ON' : 'OFF',
50+
};
1551

1652
final builder = CMakeBuilder.create(
1753
name: input.packageName,
1854
sourceDir: packagePath.uri.resolve("src"),
1955
targets: ['install'],
56+
buildLocal: true,
2057
// Waiting for the support of user-defined variables,
2158
// which can be used to choose the components
2259
defines: {
60+
'DARTCV_ENABLE_INSTALL': 'ON',
61+
'DARTCV_WORLD': 'OFF',
2362
'CMAKE_INSTALL_PREFIX': input.outputDirectory.resolve('install/').toFilePath(),
63+
...moduleDefines,
2464
},
2565
);
2666
await builder.run(input: input, output: output, logger: logger);

Diff for: pubspec.yaml

+24
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,35 @@ dependencies:
1212
logging: ^1.2.0
1313
native_assets_cli: ^0.13.0
1414
native_toolchain_cmake: ^0.0.5
15+
yaml: ^3.1.3
1516

17+
dependency_overrides:
18+
native_assets_cli:
19+
git:
20+
url: https://github.com/dart-lang/native.git
21+
path: pkgs/native_assets_cli
22+
ref: 3fbbf07
1623
dev_dependencies:
1724
ffigen: ^16.1.0
1825
test: ^1.25.2
1926

27+
hooks:
28+
user_defines:
29+
dartcv4:
30+
include_modules:
31+
# - calib3d
32+
# - contrib
33+
- dnn
34+
# - features2d
35+
# - highgui
36+
# - imgcodecs
37+
- imgproc
38+
# - objdetect
39+
# - photo
40+
# - stitching
41+
# - video
42+
# - videoio
43+
2044
topics:
2145
- opencv
2246
- image

Diff for: src

Submodule src added at 7c0a54a

0 commit comments

Comments
 (0)