build: support building ABI versioned files twice
authorBruce Richardson <bruce.richardson@intel.com>
Mon, 7 Oct 2019 15:45:50 +0000 (16:45 +0100)
committerThomas Monjalon <thomas@monjalon.net>
Sun, 27 Oct 2019 11:49:28 +0000 (12:49 +0100)
commita5d4ea594307c77af393386212a434c63e9dd96b
treeaeff5da6ed24af14940f23b2a68033c510eab1f9
parentdc61aa74b7078329c09c6b748524ef17aa4299e3
build: support building ABI versioned files twice

Any file with ABI versioned functions needs different macros for shared and
static builds, so we need to accommodate that. Rather than building
everything twice, we just flag to the build system which libraries need
that handling, by setting use_function_versioning in the meson.build files.

To ensure we don't get silent errors at build time due to this meson flag
being missed, we add an explicit error to the function versioning header
file if a known C macro is not defined. Since "make" builds always only
build one of shared or static libraries, this define can be always set, and
so is added to the global CFLAGS. For meson, the build flag - and therefore
the C define - is set for the three libraries that need the function
versioning: "distributor", "lpm" and "timer".

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Stephen Hemminger <stephen@networkplumber.org>
Tested-by: Andrzej Ostruszka <amo@semihalf.com>
Reviewed-by: Andrzej Ostruszka <amo@semihalf.com>
config/rte_config.h
doc/guides/contributing/coding_style.rst
lib/librte_distributor/meson.build
lib/librte_eal/common/include/rte_function_versioning.h
lib/librte_lpm/meson.build
lib/librte_timer/meson.build
lib/meson.build
mk/target/generic/rte.vars.mk