[dpdk-dev] [PATCH 0/6] next-build: create both static and shared libs
Bruce Richardson
bruce.richardson at intel.com
Tue Dec 12 17:59:34 CET 2017
This patchset changes the meson+ninja build system to always create both
static and shared libraries when doing a build. The applications compiled
as part of a build use either the shared or static libraries depending on
what the default_library build setting is.
NOTE:
The main difficulty with this change is adjusting the pkgconfig file so
that external apps, like the examples, can be built using either the static
or shared libraries. One of the key issues was the fact that running
"pkg-config --static --libs libdpdk" outputs first the normal libs, and
then the extra static ones. This is a problem because the driver libs are
for static only builds, but need to come before, not after the standard
DDPK libraries. It also procludes adding in the -Wl,-Bstatic flag
into the output for the standard libraries to link them statically.
There were two options considered for mananging the pkg-config settings.
1. Creating a separate .pc file for static builds with exactly the flags
needed.
2. Modifying the single .pc file so that it was "good enough" to enable
static builds without too much work.
For this version of this set, I took option #2. To link using dynamic libs,
all is as normal, to use static libs, the user needs to prepend
"-Wl,-Bstatic" before the "pkgconfig --static" library output. This can be
seen in the changes to the example application makefiles, which now support
building the examples using shared or static DPDK libs.
Bruce Richardson (6):
build: remove library special cases
eal: fix list of source files to meson build
build: build all libs and drivers as both static and shared
build: change default library type to static
build: symlink drivers to library directory
examples: enable linking examples both static and shared
app/test-pmd/meson.build | 5 +-
buildtools/symlink-drivers-solibs.sh | 16 ++++
config/meson.build | 14 ++++
doc/guides/contributing/coding_style.rst | 9 +++
drivers/meson.build | 43 +++++++---
drivers/net/e1000/base/meson.build | 2 +-
drivers/net/fm10k/base/meson.build | 2 +-
drivers/net/i40e/base/meson.build | 2 +-
drivers/net/ixgbe/base/meson.build | 2 +-
examples/bond/Makefile | 21 +++--
examples/cmdline/Makefile | 21 +++--
examples/distributor/Makefile | 21 +++--
examples/eventdev_pipeline_sw_pmd/Makefile | 21 +++--
examples/exception_path/Makefile | 21 +++--
examples/flow_classify/Makefile | 21 +++--
examples/flow_filtering/Makefile | 21 +++--
examples/helloworld/Makefile | 21 +++--
examples/ip_fragmentation/Makefile | 21 +++--
examples/ip_pipeline/Makefile | 21 +++--
examples/ip_reassembly/Makefile | 21 +++--
examples/ipsec-secgw/Makefile | 21 +++--
examples/ipv4_multicast/Makefile | 21 +++--
examples/kni/Makefile | 21 +++--
examples/l2fwd-cat/Makefile | 21 +++--
examples/l2fwd-crypto/Makefile | 21 +++--
examples/l2fwd-jobstats/Makefile | 21 +++--
examples/l2fwd-keepalive/Makefile | 21 +++--
examples/l2fwd/Makefile | 21 +++--
examples/l3fwd-acl/Makefile | 21 +++--
examples/l3fwd-power/Makefile | 21 +++--
examples/l3fwd-vf/Makefile | 21 +++--
examples/l3fwd/Makefile | 21 +++--
examples/link_status_interrupt/Makefile | 21 +++--
examples/load_balancer/Makefile | 21 +++--
examples/meson.build | 2 +-
examples/packet_ordering/Makefile | 21 +++--
examples/ptpclient/Makefile | 21 +++--
examples/qos_meter/Makefile | 21 +++--
examples/qos_sched/Makefile | 21 +++--
examples/rxtx_callbacks/Makefile | 21 +++--
examples/service_cores/Makefile | 21 +++--
examples/skeleton/Makefile | 21 +++--
examples/tep_termination/Makefile | 21 +++--
examples/timer/Makefile | 21 +++--
examples/vhost/Makefile | 21 +++--
examples/vhost_scsi/Makefile | 21 +++--
examples/vmdq/Makefile | 21 +++--
examples/vmdq_dcb/Makefile | 21 +++--
lib/librte_eal/bsdapp/eal/meson.build | 34 +-------
lib/librte_eal/bsdapp/meson.build | 55 -------------
lib/librte_eal/common/arch/meson.build | 33 --------
lib/librte_eal/common/include/arch/meson.build | 33 --------
lib/librte_eal/common/include/meson.build | 71 ----------------
lib/librte_eal/common/meson.build | 74 ++++++++++++++---
lib/librte_eal/linuxapp/eal/meson.build | 36 +--------
lib/librte_eal/linuxapp/igb_uio/meson.build | 8 +-
lib/librte_eal/linuxapp/meson.build | 42 ----------
lib/librte_eal/meson.build | 45 +++++++++--
lib/meson.build | 107 ++++++++++++++++---------
meson.build | 31 ++++---
60 files changed, 885 insertions(+), 579 deletions(-)
create mode 100644 buildtools/symlink-drivers-solibs.sh
delete mode 100644 lib/librte_eal/bsdapp/meson.build
delete mode 100644 lib/librte_eal/common/arch/meson.build
delete mode 100644 lib/librte_eal/common/include/arch/meson.build
delete mode 100644 lib/librte_eal/common/include/meson.build
delete mode 100644 lib/librte_eal/linuxapp/meson.build
--
2.14.3
More information about the dev
mailing list