[ffigen] Allow user compiler options to override built-in options (#495)
* Change compiler option order so that user options can override built-in options.
* Revert unnecessary order change
diff --git a/pkgs/ffigen/CHANGELOG.md b/pkgs/ffigen/CHANGELOG.md
index 40dd82e..15ed965 100644
--- a/pkgs/ffigen/CHANGELOG.md
+++ b/pkgs/ffigen/CHANGELOG.md
@@ -1,3 +1,8 @@
+# 7.2.3
+
+- Change compiler option order so that user options can override built-in
+ options.
+
# 7.2.2
- Added newer versions of LLVM, to default `linuxDylibLocations`.
diff --git a/pkgs/ffigen/lib/src/header_parser/parser.dart b/pkgs/ffigen/lib/src/header_parser/parser.dart
index 080d2f8..b45b062 100644
--- a/pkgs/ffigen/lib/src/header_parser/parser.dart
+++ b/pkgs/ffigen/lib/src/header_parser/parser.dart
@@ -56,15 +56,15 @@
final index = clang.clang_createIndex(0, 0);
Pointer<Pointer<Utf8>> clangCmdArgs = nullptr;
- final compilerOpts = List<String>.from(config.compilerOpts);
+ final compilerOpts = <String>[];
- /// Add compiler opt for comment parsing for clang based on config.
+ // Add compiler opt for comment parsing for clang based on config.
if (config.commentType.length != CommentLength.none &&
config.commentType.style == CommentStyle.any) {
compilerOpts.add(strings.fparseAllComments);
}
- /// If the config targets Objective C, add a compiler opt for it.
+ // If the config targets Objective C, add a compiler opt for it.
if (config.language == Language.objc) {
compilerOpts.addAll([
...strings.clangLangObjC,
@@ -72,6 +72,9 @@
]);
}
+ // Add the user options last so they can override any other options.
+ compilerOpts.addAll(config.compilerOpts);
+
_logger.fine('CompilerOpts used: $compilerOpts');
clangCmdArgs = createDynamicStringArray(compilerOpts);
final cmdLen = compilerOpts.length;
diff --git a/pkgs/ffigen/pubspec.yaml b/pkgs/ffigen/pubspec.yaml
index 2a94b85..4c109ec 100644
--- a/pkgs/ffigen/pubspec.yaml
+++ b/pkgs/ffigen/pubspec.yaml
@@ -3,7 +3,7 @@
# BSD-style license that can be found in the LICENSE file.
name: ffigen
-version: 7.2.2
+version: 7.2.3
description: Generator for FFI bindings, using LibClang to parse C header files.
repository: https://github.com/dart-lang/ffigen