app: generalize meson build
authorBruce Richardson <bruce.richardson@intel.com>
Fri, 16 Feb 2018 16:53:34 +0000 (16:53 +0000)
committerBruce Richardson <bruce.richardson@intel.com>
Mon, 12 Mar 2018 15:29:27 +0000 (16:29 +0100)
Since most apps are built in largely the same way, generalize the logic
into a foreach loop in app/meson.build file.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
app/meson.build
app/test-eventdev/meson.build
app/test-pmd/meson.build

index 0088de4..7491316 100644 (file)
@@ -1,5 +1,53 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2017 Intel Corporation
 
-subdir('test-pmd')
-subdir('test-eventdev')
+apps = ['test-eventdev',
+       'test-pmd']
+
+# for BSD only
+lib_execinfo = cc.find_library('execinfo', required: false)
+
+foreach app:apps
+       build = true
+       name = app
+       allow_experimental_apis = false
+       sources = []
+       includes = []
+       cflags = machine_args
+       objs = [] # other object files to link against, used e.g. for
+                 # instruction-set optimized versions of code
+
+       # use "deps" for internal DPDK dependencies, and "ext_deps" for
+       # external package/library requirements
+       ext_deps = []
+       deps = []
+
+       subdir(name)
+
+       if build
+               dep_objs = []
+               foreach d:deps
+                       dep_objs += get_variable(get_option('default_library')
+                                + '_rte_' + d)
+               endforeach
+               dep_objs += lib_execinfo
+
+               link_libs = []
+               if get_option('default_library') == 'static'
+                       link_libs = dpdk_drivers
+               endif
+
+               if allow_experimental_apis
+                       cflags += '-DALLOW_EXPERIMENTAL_API'
+               endif
+
+               executable('dpdk-' + name,
+                               sources,
+                               c_args: cflags,
+                               link_whole: link_libs,
+                               dependencies: dep_objs,
+                               install_rpath: join_paths(get_option('prefix'),
+                                                driver_install_path),
+                               install: true)
+       endif
+endforeach
index 7c373c8..a81dcd1 100644 (file)
@@ -1,6 +1,7 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2017 Cavium, Inc
 
+allow_experimental_apis = true
 sources = files('evt_main.c',
                'evt_options.c',
                'evt_test.c',
@@ -11,19 +12,4 @@ sources = files('evt_main.c',
                'test_perf_common.c',
                'test_perf_atq.c',
                'test_perf_queue.c')
-
-dep_objs = [get_variable(get_option('default_library') + '_rte_eventdev')]
-dep_objs += cc.find_library('execinfo', required: false) # BSD only
-
-link_libs = []
-if get_option('default_library') == 'static'
-       link_libs = dpdk_drivers
-endif
-
-executable('dpdk-test-eventdev',
-       sources,
-       c_args: [machine_args, '-DALLOW_EXPERIMENTAL_API'],
-       link_whole: link_libs,
-       dependencies: dep_objs,
-       install_rpath: join_paths(get_option('prefix'), driver_install_path),
-       install: true)
+deps += 'eventdev'
index 7ed74db..b5bb2e7 100644 (file)
@@ -1,6 +1,9 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2017 Intel Corporation
 
+# override default name to drop the hyphen
+name = 'testpmd'
+allow_experimental_apis = true
 sources = files('cmdline.c',
        'cmdline_flow.c',
        'cmdline_mtr.c',
@@ -32,22 +35,3 @@ if dpdk_conf.has('RTE_LIBRTE_SOFTNIC_PMD')
        sources += files('tm.c')
        deps += 'pmd_softnic'
 endif
-
-dep_objs = []
-foreach d:deps
-       dep_objs += get_variable(get_option('default_library') + '_rte_' + d)
-endforeach
-dep_objs += cc.find_library('execinfo', required: false) # for BSD only
-
-link_libs = []
-if get_option('default_library') == 'static'
-       link_libs = dpdk_drivers
-endif
-
-executable('dpdk-testpmd',
-       sources,
-       c_args: [machine_args, '-DALLOW_EXPERIMENTAL_API'],
-       link_whole: link_libs,
-       dependencies: dep_objs,
-       install_rpath: join_paths(get_option('prefix'), driver_install_path),
-       install: true)