From patchwork Thu Mar 29 13:54:34 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bruce Richardson X-Patchwork-Id: 36661 X-Patchwork-Delegate: bruce.richardson@intel.com Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id D55924C70; Thu, 29 Mar 2018 15:54:56 +0200 (CEST) Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by dpdk.org (Postfix) with ESMTP id E097D31FC for ; Thu, 29 Mar 2018 15:54:50 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by orsmga105.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 29 Mar 2018 06:54:50 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.48,376,1517904000"; d="scan'208";a="32471950" Received: from silpixa00399126.ir.intel.com (HELO silpixa00399126.ger.corp.intel.com) ([10.237.223.223]) by fmsmga002.fm.intel.com with ESMTP; 29 Mar 2018 06:54:49 -0700 From: Bruce Richardson To: dev@dpdk.org Cc: hemant.agrawal@nxp.com, shreyansh.jain@nxp.com, Bruce Richardson Date: Thu, 29 Mar 2018 14:54:34 +0100 Message-Id: <20180329135436.92878-5-bruce.richardson@intel.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180329135436.92878-1-bruce.richardson@intel.com> References: <20180329135436.92878-1-bruce.richardson@intel.com> Subject: [dpdk-dev] [PATCH 4/6] examples: allow building all examples as part of meson build 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" To test building all relevant example applications as part of a build, we add support for the "all" keyword to be passed to the "examples" build option. Since not all examples can actually be built on all systems, we also add support for the "build" option inside the sub-dirs. However, in case where "all" is not used, and a particular example is requested to be built, we will error out if building the requested app is not possible. Signed-off-by: Bruce Richardson --- examples/meson.build | 45 ++++++++++++++++++++++++++++++++------------- 1 file changed, 32 insertions(+), 13 deletions(-) diff --git a/examples/meson.build b/examples/meson.build index 2c6b3f889..16c3ab005 100644 --- a/examples/meson.build +++ b/examples/meson.build @@ -7,8 +7,20 @@ if get_option('default_library') == 'static' endif execinfo = cc.find_library('execinfo', required: false) -foreach example: get_option('examples').split(',') + +allow_skips = true # don't flag an error if we can't build an app + +if get_option('examples').to_lower() == 'all' + dirs = run_command('sh', '-c', + 'cd $MESON_SOURCE_ROOT/$MESON_SUBDIR && for d in * ; do if [ -d $d ] ; then echo $d ; fi ; done') + examples = dirs.stdout().split() +else + examples = get_option('examples').split(',') + allow_skips = false # error out if we can't build a requested app +endif +foreach example: examples name = example + build = true sources = [] allow_experimental_apis = false cflags = machine_args @@ -17,17 +29,24 @@ foreach example: get_option('examples').split(',') deps = ['eal', 'mempool', 'net', 'mbuf', 'ethdev', 'cmdline'] subdir(example) - dep_objs = ext_deps - foreach d:deps - dep_objs += [get_variable(get_option('default_library') + '_rte_' + d)] - endforeach - if allow_experimental_apis - cflags += '-DALLOW_EXPERIMENTAL_API' + if build + dep_objs = ext_deps + foreach d:deps + dep_objs += [get_variable( + get_option('default_library') + '_rte_' + d)] + endforeach + if allow_experimental_apis + cflags += '-DALLOW_EXPERIMENTAL_API' + endif + executable('dpdk-' + name, sources, + include_directories: includes, + link_whole: driver_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: driver_libs, - link_args: dpdk_extra_ldflags, - c_args: cflags, - dependencies: dep_objs) endforeach