@@ -43,7 +43,7 @@ error_cflags = ['-Wno-sign-compare',
'-Wno-unused-value',
'-Wno-format',
'-Wno-unused-but-set-variable']
-c_args = i40e_cflags
+c_args = cflags
foreach flag: error_cflags
if cc.has_argument(flag)
c_args += flag
@@ -29,12 +29,13 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-i40e_cflags = ['-DPF_DRIVER',
+cflags = ['-DPF_DRIVER',
'-DVF_DRIVER',
'-DINTEGRATED_VF',
'-DX722_A0_SUPPORT']
subdir('base')
+libs = [base_lib]
sources = files(
'i40e_ethdev.c',
@@ -56,31 +57,7 @@ if arch_subdir == 'x86'
sources += files('i40e_rxtx_vec_sse.c')
endif
-install_headers('rte_pmd_i40e.h')
-
-pmdinfogen_srcs = run_command('grep', '--files-with-matches',
- 'RTE_PMD_REGISTER_.*(.*)', sources).stdout().strip().split()
-foreach src: pmdinfogen_srcs
- out_filename = '@0@.pmd.c'.format(src.split('/')[-1])
- tmp_lib = static_library('tmp_@0@'.format(src.underscorify()),
- src, include_directories: include_directories('base'),
- dependencies: deps,
- c_args: i40e_cflags)
- sources += custom_target(out_filename,
- command: [pmdinfo, tmp_lib.full_path(), '@OUTPUT@', pmdinfogen],
- output: out_filename,
- depends: [pmdinfogen, tmp_lib])
-endforeach
+includes = include_directories('base', '.')
-i40e_lib = library('rte_pmd_i40e', sources,
- include_directories: include_directories('base'),
- dependencies: deps,
- link_with: base_lib,
- c_args: i40e_cflags,
- install: true,
- install_dir: 'dpdk/drivers')
-
-dpdk_drivers += i40e_lib
+install_headers('rte_pmd_i40e.h')
-i40e_pmd = declare_dependency(link_with: i40e_lib,
- include_directories: include_directories('.'))
@@ -29,4 +29,50 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-subdir('i40e')
+drivers = ['i40e']
+
+foreach drv:drivers
+ dpdk_conf.set('RTE_LIBRTE_@0@_PMD'.format(drv.to_upper()),1)
+
+ # set up empty variables used for build
+ sources = []
+ libs = []
+ cflags = []
+ deps = []
+ includes = []
+
+ # pull in driver directory which should assign to each of the above
+ subdir(drv)
+
+ # generate pmdinfo sources
+ pmdinfogen_srcs = run_command('grep', '--files-with-matches',
+ 'RTE_PMD_REGISTER_.*(.*)', sources).stdout().strip().split()
+ foreach src: pmdinfogen_srcs
+ out_filename = '@0@.pmd.c'.format(src.split('/')[-1])
+ tmp_lib = static_library('tmp_@0@'.format(src.underscorify()),
+ src, include_directories: includes,
+ dependencies: deps,
+ c_args: cflags)
+ sources += custom_target(out_filename,
+ command: [pmdinfo, tmp_lib.full_path(), '@OUTPUT@', pmdinfogen],
+ output: out_filename,
+ depends: [pmdinfogen, tmp_lib])
+ endforeach
+
+ # now build the driver itself, and add to the drivers list
+ lib = library('rte_pmd_@0@'.format(drv), sources,
+ include_directories: includes,
+ dependencies: deps,
+ link_with: libs,
+ c_args: cflags,
+ install: true,
+ install_dir: driver_install_path)
+
+ dpdk_drivers += lib
+
+ # create a dependency object and add it to the global dictionary so
+ # testpmd or other built-in apps can find it if necessary
+ set_variable('dep_pmd_@0@'.format(drv),
+ declare_dependency(link_with: lib,
+ include_directories: includes))
+endforeach