1# GN integration for Zircon 2 3This directory hosts generated GN files for Zircon. These files are created 4automatically as part of the build by `//build/zircon/create_gn_rules.py` and 5should never be manually edited. 6 7In order to expose a Zircon module to GN, set the `MODULE_PACKAGE` attribute in 8its `rules.mk` build file. The possible values are: 9 - `bin`: the module is exposed as a host application; 10 - `src`: the module's sources are published; 11 - `shared`: the module is exposed as a precompiled shared library; 12 - `static`: the module is exposed as a precompiled static library; 13Note that this currently only applies to `ulib` and `hostapp` modules. 14 15Libraries that expose a C++ *interface* (C++ classes, functions, etc in public headers) *must* be 16published as `src`, since there is no safe way to support a binary interface (ABI) in C++. 17 18Libraries that expose a C interface (they may be *implemented* in C++) should be exposed as 19`static` or `shared` precompiled libraries. 20 21Small helper libraries are usually exported as `static`. Larger libraries, especially ones that 22we'd expect to stabilize and be used by a wide variety of packages, generally should be shared, for 23better de-duplication during packaging and installation. 24