From ab67a575d77112ea4ddbe401fbc067c7576caf8f Mon Sep 17 00:00:00 2001 From: Prerak Mann Date: Tue, 21 Nov 2023 01:36:37 +0530 Subject: [PATCH] Add errors.md (#2) * Add errors.md * refer to errors.md * Update errors.md * Update errors.md * Update errors.md --- pkgs/ffigen/errors.md | 23 +++++++++++++++++++ pkgs/ffigen/lib/src/header_parser/parser.dart | 2 +- 2 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 pkgs/ffigen/errors.md diff --git a/pkgs/ffigen/errors.md b/pkgs/ffigen/errors.md new file mode 100644 index 000000000..b4d2157c6 --- /dev/null +++ b/pkgs/ffigen/errors.md @@ -0,0 +1,23 @@ +# Errors in ffigen + +This file documents various errors and their potential fixes related to ffigen. + +## Errors in source header files + +Under the hood ffigen uses libclang to parse header files. Any compiler warnings/errors should be logged (with SEVERE level), these should be resolved as it can potentially generate *incomplete* or *invalid* bindings that might cause silent errors at runtime. + +> You can pass in args to libclang using `compiler-opts` via cmd line or yaml config or both. + +Here we'll list some common usecases. You can find the full list of [supported args here](https://clang.llvm.org/docs/ClangCommandLineReference.html#id5). + +### Missing headers + +These are the most common source file errors. You can specify [include paths to clang](https://clang.llvm.org/docs/ClangCommandLineReference.html#id6) like this +```yaml +compiler-opts: + - "-I/path/to/folder" +``` + +### Ignoring source errors + +As a last resort, you can pass in `--ignore-source-errors` or set `ignore-source-errors: true` in yaml config. diff --git a/pkgs/ffigen/lib/src/header_parser/parser.dart b/pkgs/ffigen/lib/src/header_parser/parser.dart index 2b6b14e85..3022ae235 100644 --- a/pkgs/ffigen/lib/src/header_parser/parser.dart +++ b/pkgs/ffigen/lib/src/header_parser/parser.dart @@ -123,7 +123,7 @@ List parseToBindings(Config c) { _logger.warning("Ignored source errors. (ObjC)"); } else { _logger.severe( - "Skipped generating bindings due to errors in source files. Either resolve or ignore them (Set --ignore-source-errors on cmd or ignore-source-errors:true in config."); + "Skipped generating bindings due to errors in source files. See https://github.com/dart-lang/native/blob/main/pkgs/ffigen/errors.md."); exit(1); } }