On Tue, 2017-12-12 at 16:59 +0000, Bruce Richardson wrote: > 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 >
Acked-by: Luca Boccassi <bl...@debian.org> Tested with my Debian build, looks good! -- Kind regards, Luca Boccassi