mk: build with _GNU_SOURCE defined by default
[dpdk.git] / drivers / meson.build
index 1737d86..567f4a1 100644 (file)
@@ -9,8 +9,17 @@ driver_classes = ['common',
               'crypto',  # depends on common, bus and mempool (net in future).
               'compress', # depends on common, bus, mempool.
               'event',   # depends on common, bus, mempool and net.
+              'baseband', # depends on common and bus.
               'raw']     # depends on common, bus, mempool, net and event.
 
+default_cflags = machine_args
+if cc.has_argument('-Wno-format-truncation')
+       default_cflags += '-Wno-format-truncation'
+endif
+
+# specify -D_GNU_SOURCE unconditionally
+default_cflags += '-D_GNU_SOURCE'
+
 foreach class:driver_classes
        drivers = []
        std_deps = []
@@ -20,6 +29,7 @@ foreach class:driver_classes
                             # version file for linking
 
        subdir(class)
+       class_drivers = []
 
        foreach drv:drivers
                drv_path = join_paths(class, drv)
@@ -31,10 +41,7 @@ foreach class:driver_classes
                allow_experimental_apis = false
                sources = []
                objs = []
-               cflags = machine_args
-               if cc.has_argument('-Wno-format-truncation')
-                       cflags += '-Wno-format-truncation'
-               endif
+               cflags = default_cflags
                includes = [include_directories(drv_path)]
                # set up internal deps. Drivers can append/override as necessary
                deps = std_deps
@@ -50,6 +57,8 @@ foreach class:driver_classes
                subdir(drv_path)
 
                if build
+                       class_drivers += name
+
                        dpdk_conf.set(config_flag_fmt.format(name.to_upper()),1)
                        lib_name = driver_name_fmt.format(name)
 
@@ -61,6 +70,10 @@ foreach class:driver_classes
                        shared_objs = []
                        static_objs = []
                        foreach d:deps
+                               if not is_variable('shared_rte_' + d)
+                                       error('Missing dependency ' + d +
+                                               ' for driver ' + lib_name)
+                               endif
                                shared_objs += [get_variable('shared_rte_' + d)]
                                static_objs += [get_variable('static_rte_' + d)]
                        endforeach
@@ -136,4 +149,9 @@ foreach class:driver_classes
                        set_variable('static_@0@'.format(lib_name), static_dep)
                endif # build
        endforeach
+
+       if meson.version().version_compare('>=0.47')
+               # prior to 0.47, set_variable can't take array params
+               set_variable(class + '_drivers', class_drivers)
+       endif
 endforeach