| #!/usr/bin/env fuchsia-vendored-python |
| # |
| # Copyright 2023 The Fuchsia Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| import os |
| import sys |
| |
| # Add //build/rust to Python path so bindgen import works. |
| FUCHSIA_DIR = os.environ.get( |
| "FUCHSIA_DIR", |
| os.path.join(os.path.dirname(__file__), "..", "..", "..", ".."), |
| ) |
| sys.path.append(os.path.join(FUCHSIA_DIR, "build", "rust")) |
| |
| from bindgen import Bindgen |
| |
| bindgen = Bindgen() |
| |
| RELATIVE_SCRIPT_PATH = os.path.relpath(__file__, FUCHSIA_DIR) |
| |
| MODULE_DOC_COMMENT = f""" |
| //! WARNING - This file was auto generated by //{RELATIVE_SCRIPT_PATH}. |
| //! Do not modify this file. To re-generate, run the following command from the root of |
| //! your Fuchsia checkout: |
| //! |
| //! ./{RELATIVE_SCRIPT_PATH} |
| """ |
| |
| bindgen.raw_lines = ( |
| MODULE_DOC_COMMENT |
| + """ |
| |
| use zerocopy::{FromBytes, IntoBytes, Immutable, KnownLayout, TryFromBytes}; |
| """ |
| ) |
| |
| bindgen.std_derives = [ |
| "default", |
| ] |
| |
| bindgen.include_dirs = [ |
| "sdk/lib/zxio/include", |
| "zircon/third_party/ulib/musl/include", |
| "zircon/system/public", |
| "third_party/llvm-libc/src/include/", |
| ] |
| |
| bindgen.enable_stdlib_include_dirs = False |
| |
| bindgen.function_allowlist = ["zxio_.*"] |
| bindgen.var_allowlist = [ |
| "ZXIO_SHUTDOWN.*", |
| "ZXIO_NODE_PROTOCOL.*", |
| "ZXIO_SEEK_ORIGIN.*", |
| "ZXIO_ALLOCATE.*", |
| "ZXIO_CREATION_MODE.*", |
| "ZXIO_SOCKET_MARK_DOMAIN.*", |
| "E[A-Z]*", |
| "AF_.*", |
| "SO.*", |
| "IP.*", |
| "MSG_.*", |
| "__bindgen_missing_.*", |
| ] |
| bindgen.type_allowlist = [ |
| "cmsghdr.*", |
| "in6_.*", |
| "sockaddr.*", |
| "timespec", |
| "timeval", |
| "zxio_socket_mark", |
| ] |
| |
| # NOTE: Types are matched against the following identifiers as regexes in the order they appear. |
| bindgen.set_auto_derive_traits( |
| [ |
| (r"cmsghdr", ["FromBytes", "Immutable", "IntoBytes", "KnownLayout"]), |
| ( |
| r"in_addr", |
| [ |
| "PartialEq", |
| "Eq", |
| "IntoBytes", |
| "FromBytes", |
| "Immutable", |
| "KnownLayout", |
| ], |
| ), |
| ( |
| r"in6_addr", |
| [ |
| "IntoBytes", |
| "FromBytes", |
| "Immutable", |
| "KnownLayout", |
| ], |
| ), |
| (r"in6_pktinfo", ["IntoBytes, FromBytes", "Immutable", "KnownLayout"]), |
| ( |
| r"sockaddr_in$", |
| [ |
| "PartialEq", |
| "Eq", |
| "IntoBytes", |
| "FromBytes", |
| "Immutable", |
| "KnownLayout", |
| ], |
| ), |
| (r"sockaddr_in6", []), |
| (r"timespec", ["IntoBytes, FromBytes", "Immutable", "KnownLayout"]), |
| (r"timeval", ["IntoBytes, FromBytes", "Immutable", "KnownLayout"]), |
| ( |
| r"zxio_socket_mark", |
| ["TryFromBytes", "Immutable", "IntoBytes", "KnownLayout"], |
| ), |
| ], |
| ) |
| |
| bindgen.set_replacements( |
| [ |
| # Remove __bindgen_missing from the start of constants defined in missing_includes.h |
| (r"const __bindgen_missing_([a-zA-Z_0-9]+)", "const \\1"), |
| ], |
| ) |
| |
| bindgen.run( |
| "src/starnix/lib/syncio/wrapper.h", |
| "src/starnix/lib/syncio/src/zxio.rs", |
| ) |