From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 83B50A09D3; Thu, 12 Nov 2020 10:43:26 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 3435C6883; Thu, 12 Nov 2020 10:42:35 +0100 (CET) Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by dpdk.org (Postfix) with ESMTP id C10E6AA31 for ; Thu, 12 Nov 2020 10:42:32 +0100 (CET) IronPort-SDR: L6IlPXNEUHjlpegIujdb/7FAgtaZ/xqvOOA9VXS4mKGzaxuoR96+AuiIQryzshmVRCNIBE78YU x+3Uc6o5Ng4A== X-IronPort-AV: E=McAfee;i="6000,8403,9802"; a="166776738" X-IronPort-AV: E=Sophos;i="5.77,471,1596524400"; d="scan'208";a="166776738" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga002.jf.intel.com ([10.7.209.21]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Nov 2020 01:42:32 -0800 IronPort-SDR: VHJLCYxWpSO48ORMJXTAVAA1hh0aPpCrA3Mb5chqXnRz4R5s1BlG9kECXgsjCyhmS57T5PLN4x 79nHVfmxhDdw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.77,471,1596524400"; d="scan'208";a="339347954" Received: from silpixa00399126.ir.intel.com ([10.237.222.4]) by orsmga002.jf.intel.com with ESMTP; 12 Nov 2020 01:42:31 -0800 From: Bruce Richardson To: dev@dpdk.org Cc: david.marchand@redhat.com, Bruce Richardson Date: Thu, 12 Nov 2020 09:41:42 +0000 Message-Id: <20201112094142.1781861-5-bruce.richardson@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20201112094142.1781861-1-bruce.richardson@intel.com> References: <20201110170809.1309043-1-bruce.richardson@intel.com> <20201112094142.1781861-1-bruce.richardson@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [dpdk-dev] [PATCH v4 4/4] examples: skip installing unbuildable examples X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Rather than just installing all examples, we can use the build checks to filter out any examples that are missing dependencies or are otherwise unbuildable on the current system. Signed-off-by: Bruce Richardson --- examples/meson.build | 54 +++++++++++++++++++++++++++----------------- meson.build | 2 ++ 2 files changed, 35 insertions(+), 21 deletions(-) diff --git a/examples/meson.build b/examples/meson.build index 46ec80919..9d268c978 100644 --- a/examples/meson.build +++ b/examples/meson.build @@ -48,15 +48,11 @@ all_examples = [ 'vmdq', 'vmdq_dcb', ] -if get_option('examples') == '' - subdir_done() -endif - if get_option('examples').to_lower() == 'all' - examples = all_examples + requested_examples = all_examples allow_skips = true # don't flag an error if we can't build an app else - examples = get_option('examples').split(',') + requested_examples = get_option('examples').split(',') allow_skips = false # error out if we can't build a requested app endif default_cflags = machine_args @@ -64,7 +60,9 @@ if cc.has_argument('-Wno-format-truncation') default_cflags += '-Wno-format-truncation' endif -foreach example: examples +# iterate through all examples to see what we need to install +# only actually build requested ones +foreach example: all_examples name = example.split('/')[-1] build = true sources = [] @@ -81,22 +79,36 @@ foreach example: examples foreach d:deps var_name = get_option('default_library') + '_rte_' + d if not is_variable(var_name) - error('Missing dependency "@0@" for example "@1@"'.format(d, name)) + message('Missing dependency "@0@" for example "@1@"'.format(d, name)) + build = false + else + dep_objs += [get_variable(var_name)] endif - dep_objs += [get_variable(var_name)] endforeach - if allow_experimental_apis - cflags += '-DALLOW_EXPERIMENTAL_API' + endif # build + + if not build + # exclude based on top-level directory only + dir = example.split('/')[0] + dpdk_examples_exclude += dir + message('Excluding example directory "@0@" from install'.format(dir)) + endif + + if requested_examples.contains(example) + if build + if allow_experimental_apis + cflags += '-DALLOW_EXPERIMENTAL_API' + endif + executable('dpdk-' + name, sources, + include_directories: includes, + link_whole: link_whole_libs, + link_args: dpdk_extra_ldflags, + c_args: cflags, + dependencies: dep_objs) + elif not allow_skips + error('Cannot build requested example "' + name + '"') + else + message('Skipping example "' + name + '"') endif - executable('dpdk-' + name, sources, - include_directories: includes, - link_whole: link_whole_libs, - link_args: dpdk_extra_ldflags, - c_args: cflags, - dependencies: dep_objs) - elif not allow_skips - error('Cannot build requested example "' + name + '"') - else - message('Skipping example "' + name + '"') endif endforeach diff --git a/meson.build b/meson.build index 45d974cd2..559a9d2f1 100644 --- a/meson.build +++ b/meson.build @@ -58,9 +58,11 @@ subdir('doc') # build any examples explicitly requested - useful for developers - and # install any example code into the appropriate install path +dpdk_examples_exclude = [] subdir('examples') install_subdir('examples', install_dir: get_option('datadir') + '/dpdk', + exclude_directories: dpdk_examples_exclude, exclude_files: 'meson.build') # build kernel modules if enabled -- 2.25.1