mk: build with _GNU_SOURCE defined by default
[dpdk.git] / drivers / meson.build
index b41a0f1..567f4a1 100644 (file)
@@ -2,11 +2,23 @@
 # Copyright(c) 2017 Intel Corporation
 
 # Defines the order in which the drivers are buit.
-driver_classes = ['bus',
-              'mempool', # depends on bus.
-              'net',     # depends on bus and mempool.
-              'crypto',  # depenss on bus, mempool (net in future).
-              'event']   # depends on bus, mempool and net.
+driver_classes = ['common',
+              'bus',
+              'mempool', # depends on common and bus.
+              'net',     # depends on common, bus and mempool.
+              '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 = []
@@ -17,6 +29,7 @@ foreach class:driver_classes
                             # version file for linking
 
        subdir(class)
+       class_drivers = []
 
        foreach drv:drivers
                drv_path = join_paths(class, drv)
@@ -28,7 +41,7 @@ foreach class:driver_classes
                allow_experimental_apis = false
                sources = []
                objs = []
-               cflags = machine_args
+               cflags = default_cflags
                includes = [include_directories(drv_path)]
                # set up internal deps. Drivers can append/override as necessary
                deps = std_deps
@@ -44,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)
 
@@ -55,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
@@ -130,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