Fixing mac bot by explicitly setting the objective C sysroot (#414)
diff --git a/lib/src/header_parser/parser.dart b/lib/src/header_parser/parser.dart
index 2adbb0b..837d158 100644
--- a/lib/src/header_parser/parser.dart
+++ b/lib/src/header_parser/parser.dart
@@ -3,6 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
import 'dart:ffi';
+import 'dart:io';
import 'package:ffi/ffi.dart';
import 'package:ffigen/src/code_generator.dart';
@@ -65,7 +66,10 @@
/// If the config targets Objective C, add a compiler opt for it.
if (config.language == Language.objc) {
- compilerOpts.addAll(strings.clangLangObjC);
+ compilerOpts.addAll([
+ ...strings.clangLangObjC,
+ ..._findObjectiveCSysroot(),
+ ]);
}
_logger.fine('CompilerOpts used: $compilerOpts');
@@ -119,3 +123,15 @@
clang.clang_disposeIndex(index);
return bindings.toList();
}
+
+List<String> _findObjectiveCSysroot() {
+ final result = Process.runSync('xcrun', ['--show-sdk-path']);
+ if (result.exitCode == 0) {
+ for (final line in (result.stdout as String).split('\n')) {
+ if (line.isNotEmpty) {
+ return ['-isysroot', line];
+ }
+ }
+ }
+ return [];
+}