From patchwork Mon Aug 14 09:52:04 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bruce Richardson X-Patchwork-Id: 27571 Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [IPv6:::1]) by dpdk.org (Postfix) with ESMTP id CF9A2A0C4; Mon, 14 Aug 2017 12:04:28 +0200 (CEST) Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by dpdk.org (Postfix) with ESMTP id C3A7D99BC for ; Mon, 14 Aug 2017 12:03:54 +0200 (CEST) Received: from orsmga004.jf.intel.com ([10.7.209.38]) by orsmga101.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 14 Aug 2017 03:03:54 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.41,372,1498546800"; d="scan'208";a="118723943" Received: from silpixa00399126.ir.intel.com (HELO silpixa00399126.ger.corp.intel.com) ([10.237.223.223]) by orsmga004.jf.intel.com with ESMTP; 14 Aug 2017 03:03:53 -0700 From: Bruce Richardson To: dev@dpdk.org Cc: thomas@monjalon.net, Bruce Richardson Date: Mon, 14 Aug 2017 10:52:04 +0100 Message-Id: <20170814095208.166496-37-bruce.richardson@intel.com> X-Mailer: git-send-email 2.13.4 In-Reply-To: <20170814095208.166496-1-bruce.richardson@intel.com> References: <20170814095208.166496-1-bruce.richardson@intel.com> Subject: [dpdk-dev] [RFCv2 36/40] acl: add acl library to 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" Signed-off-by: Bruce Richardson --- lib/librte_acl/meson.build | 60 ++++++++++++++++++++++++++++++++++++++++++++++ lib/meson.build | 18 ++++++++------ 2 files changed, 71 insertions(+), 7 deletions(-) create mode 100644 lib/librte_acl/meson.build diff --git a/lib/librte_acl/meson.build b/lib/librte_acl/meson.build new file mode 100644 index 000000000..ddaf29bf5 --- /dev/null +++ b/lib/librte_acl/meson.build @@ -0,0 +1,60 @@ +# BSD LICENSE +# +# Copyright(c) 2017 Intel Corporation. All rights reserved. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Intel Corporation nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +version = 2 +sources = files('acl_bld.c', 'acl_gen.c', 'acl_run_scalar.c', + 'rte_acl.c', 'tb_mem.c') +headers = files('rte_acl.h', 'rte_acl_osdep.h') +deps += ['eal'] + +if arch_subdir == 'x86' + sources += files('acl_run_sse.c') + + # compile AVX2 version if either: + # a. we have AVX supported in minimum instruction set baseline + # b. it's not minimum instruction set, but supported by compiler + # + # in former case, just add avx2 C file to files list + # in latter case, compile c file to static lib, using correct compiler + # flags, and then have the .o file from static lib linked into main lib. + if dpdk_conf.has('RTE_MACHINE_CPUFLAG_AVX2') + sources += files('acl_run_avx2.c') + cflags += '-DCC_AVX2_SUPPORT' + elif cc.has_argument('-mavx2') + avx2_tmplib = static_library('avx2_tmp', + 'acl_run_avx2.c', + dependencies: rte_eal, + c_args: '-mavx2') + objs += avx2_tmplib.extract_objects('acl_run_avx2.c') + cflags += '-DCC_AVX2_SUPPORT' + endif + +endif diff --git a/lib/meson.build b/lib/meson.build index 92d26b8aa..54efb4ba7 100644 --- a/lib/meson.build +++ b/lib/meson.build @@ -39,28 +39,30 @@ subdir('librte_compat') # sometimes skip deps that would be implied by others, e.g. if mempool is # given as a dep, no need to mention ring. This is especially true for the # core libs which are widely reused, so their deps are kept to a minimum. -libs = ['ring', 'mempool', 'mbuf', 'net', 'ether', # core +libraries = ['ring', 'mempool', 'mbuf', 'net', 'ether', # core 'metrics', # bitrate/latency stats depends on this 'hash', # efd depends on this 'kvargs', # cryptodev depends on this - 'bitratestats', 'cfgfile', 'cmdline', 'cryptodev', 'distributor', - 'efd', 'eventdev', 'gro', 'ip_frag', 'jobstats', + 'acl', 'bitratestats', 'cfgfile', 'cmdline', 'cryptodev', + 'distributor', 'efd', 'eventdev', 'gro', 'ip_frag', 'jobstats', 'latencystats', 'lpm', 'meter', 'pdump', 'reorder', 'sched', 'timer'] -# acl - todo if host_machine.system() == 'linux' - libs += ['kni', 'power', 'vhost'] + libraries += ['kni', 'power', 'vhost'] endif # add pkt framework libs which use other libs from above, including optional # ones for linux -libs += ['port', 'table', 'pipeline'] +libraries += ['port', 'table', 'pipeline'] -foreach l:libs +foreach l:libraries version = 1 sources = [] headers = [] + cflags = [] + objs = [] # other object files to link against, used e.g. for instruction- + # optimized versions of code # use "deps" for internal DPDK dependencies, and "ext_deps" for # external package/library requirements deps = [] @@ -85,6 +87,8 @@ foreach l:libs endif lib = library(libname, sources, + objects: objs, + c_args: cflags, dependencies: dep_objs, include_directories: include_directories(dir_name), link_args: '-Wl,--version-script=' + version_map,