| 1 | # SPDX-FileCopyrightText: 2017-2024 EfficiOS, Inc. |
| 2 | # SPDX-License-Identifier: MIT |
| 3 | |
| 4 | # Path to the plugins build directory. |
| 5 | PLUGINS_PATH = $(abs_top_builddir)/src/plugins |
| 6 | |
| 7 | # Takes a plugin name and outputs the needed LDFLAGS to embed it. |
| 8 | # |
| 9 | # The --whole-archive option is important here. From the GNU linker's |
| 10 | # documentation: |
| 11 | # |
| 12 | # For each archive mentioned on the command line after the |
| 13 | # --whole-archive option, include every object file in the archive in |
| 14 | # the link, rather than searching the archive for the required object |
| 15 | # files. |
| 16 | # |
| 17 | # In our case, we find the plugins thanks to special sections in the |
| 18 | # binary that are filled by plugin objects. If the linker discards those |
| 19 | # symbols because the CLI does not use them directly, the CLI reports |
| 20 | # no plugins found (plugins are effectively not embedded). |
| 21 | pluginarchive = $(LD_WHOLE_ARCHIVE)$(PLUGINS_PATH)/$(1)/.libs/babeltrace-plugin-$(1).a$(LD_NO_WHOLE_ARCHIVE) |