meson: use a custom target instead of a generator for i965 oa
authorDylan Baker <dylan@pnwbakers.com>
Mon, 12 Feb 2018 19:53:55 +0000 (11:53 -0800)
committerDylan Baker <dylan@pnwbakers.com>
Thu, 15 Feb 2018 00:45:40 +0000 (16:45 -0800)
Generators really are never the thing you want. The problem in this case
is that a generator must create a file that contains any file that the
generated target depends on. Since brw_oa.py doesn't generate such a
file the generated sources are not regenerated even if the xml files
they should depend on changes.

While we could change brw_oa.py to write such a file, that's silly, it
depends on itself and the xml file. So we'll just use a custom target
instead, which will have the correct dependency behavior and doesn't
really add that much code.

Fixes: 3218056e0eb3 ("meson: Build i965 and dri stack")
CC: Ian Romanick <idr@freedesktop.org>
Signed-off-by: Dylan Baker <dylan.c.baker@intel.com>
Acked-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
src/mesa/drivers/dri/i965/meson.build

index 9adda06..8ce5444 100644 (file)
@@ -148,20 +148,19 @@ foreach v : ['40', '45', '50', '60', '70', '75', '80', '90', '100']
   )
 endforeach
 
-oa_generator = generator(
-  prog_python2,
-  arguments : [
-    '@CURRENT_SOURCE_DIR@/brw_oa.py', '@INPUT@', '--chipset', '@EXTRA_ARGS@',
-    '--code', '@OUTPUT0@', '--header', '@OUTPUT1@',
-  ],
-  output : ['@BASENAME@.c', '@BASENAME@.h'],
-)
-
 i965_oa_sources = []
 foreach hw : ['hsw', 'bdw', 'chv', 'sklgt2', 'sklgt3', 'sklgt4', 'bxt',
               'kblgt2', 'kblgt3', 'glk', 'cflgt2', 'cflgt3']
-  _xml = 'brw_oa_@0@.xml'.format(hw)
-  i965_oa_sources += oa_generator.process(_xml, extra_args : hw)
+  _name = 'brw_oa_@0@'.format(hw)
+  i965_oa_sources += custom_target(
+    _name,
+    input : ['brw_oa.py', '@0@.xml'.format(_name)],
+    output : ['@0@.c'.format(_name), '@0@.h'.format(_name)],
+    command : [
+      prog_python2, '@INPUT0@', '--chipset', hw, '--code', '@OUTPUT0@',
+      '--header', '@OUTPUT1@', '@INPUT1@',
+    ],
+  )
 endforeach
 
 libi965 = static_library(