On Fri, Jan 29, 2021 at 04:04:18PM +0000, Burakov, Anatoly wrote:
> On 29-Jan-21 3:55 PM, Bruce Richardson wrote:
> > On Fri, Jan 29, 2021 at 04:47:35PM +0100, Thomas Monjalon wrote:
> > > 19/01/2021 14:03, Bruce Richardson:
> > > > Since the examples are designed to be built by end-users using Make, we
> > > > can detect and warn about broken pkg-config on the user's system as part
> > > > of the build process.
> > > >
> > > > Signed-off-by: Bruce Richardson <bruce.richard...@intel.com>
> > > > ---
> > > > examples/bbdev_app/Makefile | 8 ++++++++
> > > > examples/bond/Makefile | 8 ++++++++
> > > > examples/cmdline/Makefile | 8 ++++++++
> > > > examples/distributor/Makefile | 8 ++++++++
> > > > examples/ethtool/ethtool-app/Makefile | 8 ++++++++
> > > > examples/eventdev_pipeline/Makefile | 8 ++++++++
> > > > examples/fips_validation/Makefile | 8 ++++++++
> > > > examples/flow_classify/Makefile | 8 ++++++++
> > > > examples/flow_filtering/Makefile | 8 ++++++++
> > > > examples/helloworld/Makefile | 8 ++++++++
> > > > examples/ioat/Makefile | 8 ++++++++
> > > > examples/ip_fragmentation/Makefile | 11 ++++++++++-
> > > > examples/ip_pipeline/Makefile | 8 ++++++++
> > > > examples/ip_reassembly/Makefile | 8 ++++++++
> > > > examples/ipsec-secgw/Makefile | 8 ++++++++
> > > > examples/ipv4_multicast/Makefile | 8 ++++++++
> > > > examples/kni/Makefile | 8 ++++++++
> > > > examples/l2fwd-cat/Makefile | 8 ++++++++
> > > > examples/l2fwd-crypto/Makefile | 8 ++++++++
> > > > examples/l2fwd-event/Makefile | 8 ++++++++
> > > > examples/l2fwd-jobstats/Makefile | 8 ++++++++
> > > > examples/l2fwd-keepalive/Makefile | 8 ++++++++
> > > > examples/l2fwd-keepalive/ka-agent/Makefile | 8 ++++++++
> > > > examples/l2fwd/Makefile | 8 ++++++++
> > > > examples/l3fwd-acl/Makefile | 8 ++++++++
> > > > examples/l3fwd-graph/Makefile | 12 +++++++++++-
> > > > examples/l3fwd-power/Makefile | 8 ++++++++
> > > > examples/l3fwd/Makefile | 8 ++++++++
> > > > examples/link_status_interrupt/Makefile | 8 ++++++++
> > > > .../client_server_mp/mp_client/Makefile | 8 ++++++++
> > > > .../client_server_mp/mp_server/Makefile | 8 ++++++++
> > > > examples/multi_process/hotplug_mp/Makefile | 8 ++++++++
> > > > examples/multi_process/simple_mp/Makefile | 8 ++++++++
> > > > examples/multi_process/symmetric_mp/Makefile | 8 ++++++++
> > > > examples/ntb/Makefile | 11 ++++++++++-
> > > > examples/packet_ordering/Makefile | 8 ++++++++
> > > > examples/performance-thread/l3fwd-thread/Makefile | 8 ++++++++
> > > > examples/performance-thread/pthread_shim/Makefile | 8 ++++++++
> > > > examples/pipeline/Makefile | 8 ++++++++
> > > > examples/ptpclient/Makefile | 8 ++++++++
> > > > examples/qos_meter/Makefile | 8 ++++++++
> > > > examples/qos_sched/Makefile | 8 ++++++++
> > > > examples/rxtx_callbacks/Makefile | 8 ++++++++
> > > > examples/server_node_efd/node/Makefile | 8 ++++++++
> > > > examples/server_node_efd/server/Makefile | 8 ++++++++
> > > > examples/service_cores/Makefile | 8 ++++++++
> > > > examples/skeleton/Makefile | 8 ++++++++
> > > > examples/timer/Makefile | 8 ++++++++
> > > > examples/vdpa/Makefile | 8 ++++++++
> > > > examples/vhost/Makefile | 8 ++++++++
> > > > examples/vhost_blk/Makefile | 8 ++++++++
> > > > examples/vhost_crypto/Makefile | 8 ++++++++
> > > > examples/vm_power_manager/Makefile | 8 ++++++++
> > > > examples/vm_power_manager/guest_cli/Makefile | 8 ++++++++
> > > > examples/vmdq/Makefile | 8 ++++++++
> > > > examples/vmdq_dcb/Makefile | 8 ++++++++
> > > > 56 files changed, 455 insertions(+), 3 deletions(-)
> > >
> > > That's a lot of duplicated code that may need some extension in future.
> > > What about having a file examples/common.mk to include?
> > > With the special syntax -include there will be no error in case
> > > ../common.mk does not exist. Deal?
> > >
> > > ref: https://www.gnu.org/software/make/manual/html_node/Include.html
> > >
> >
> > Yes, and no. There is far more boilerplate already in these files which
> > needs to be consolidated, so I see little point in just trying to extract
> > this part out alone. Therefore, what I'd like to see done (if ever someone
> > has the time) is to extract all the boilerplate out to a common makefile,
> > but also add a postinstall script to flatten out the makefile on install,
> > so that each example is once again self-contained.
> >
> > I've been thinking about this for a while, just haven't got time for it.
> >
> > /Bruce
> >
>
> These makefiles are supposed to be examples. Meaning, it should be possible
> to just take the example app and compile it as is. That means we can't rely
> on external makefiles, they're supposed to be self-contained.
>
Exactly. Hence the need to "flatten" out the makefiles, by changing the
include to be the actual contents.