|
|
|
name: shared_module
|
|
|
|
returns: build_tgt
|
|
|
|
since: 0.37.0
|
|
|
|
description: |
|
|
|
|
Builds a shared module with the given sources.
|
|
|
|
|
|
|
|
This is useful for building modules that will be `dlopen()`ed and
|
|
|
|
hence may contain undefined symbols that will be provided by the
|
|
|
|
library that is loading it.
|
|
|
|
|
|
|
|
If you want the shared module to be able to refer to functions and
|
|
|
|
variables defined in the [[executable]] it is loaded by,
|
|
|
|
you will need to set the `export_dynamic` argument of the executable to
|
|
|
|
`true`.
|
|
|
|
|
|
|
|
notes:
|
|
|
|
- |
|
|
|
|
*Linking to a shared module is deprecated, and will be an error in the future*.
|
|
|
|
It used to be allowed because it was the only way to have a shared-library-like target that
|
|
|
|
contained references to undefined symbols. However, since 0.40.0, the `override_options:`
|
|
|
|
[[build_target]] keyword argument can be used to create such a [[shared_library]], and shared
|
|
|
|
modules have other characteristics that make them incompatible with linking, such as a lack of
|
|
|
|
SONAME. Linking to shared modules also does not work on some platforms, such as on macOS / iOS.
|
|
|
|
|
|
|
|
posargs_inherit: _build_target_base
|
|
|
|
varargs_inherit: _build_target_base
|
|
|
|
kwargs_inherit: _build_target_base
|
|
|
|
|
|
|
|
kwargs:
|
|
|
|
vs_module_defs:
|
|
|
|
type: str | file | custom_tgt | custom_idx
|
|
|
|
since: 0.52.0
|
|
|
|
description: |
|
|
|
|
Specify a Microsoft module definition file for controlling symbol exports,
|
|
|
|
etc., on platforms where that is possible (e.g. Windows).
|