Mesa (master): meson: Use dependencies for nir

Dylan Baker dbaker at kemper.freedesktop.org
Thu Jan 11 23:44:30 UTC 2018


Module: Mesa
Branch: master
Commit: 2083a14179eb04d22feebc5751a1a145828d07cf
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=2083a14179eb04d22feebc5751a1a145828d07cf

Author: Dylan Baker <dylan at pnwbakers.com>
Date:   Tue Dec 12 12:22:56 2017 -0800

meson: Use dependencies for nir

This creates two new internal dependencies, idep_nir_headers and
idep_nir. The former encapsulates the generation of nir_opcodes.h and
nir_builder_opcodes.h and adding src/compiler/nir as an include path.
This ensures that any target that needs nir headers will have the
includes and that the generated headers will be generated before the
target is build. The second, idep_nir, includes the first and
additionally links to libnir.

This is intended to make it easier to avoid race conditions in the build
when using nir, since the number of consumers for libnir and it's
headers are quite high.

Acked-by: Eric Engestrom <eric.engestrom at imgtec.com>
Signed-off-by: Dylan Baker <dylan.c.baker at intel.com>

---

 src/amd/common/meson.build                |  5 +++--
 src/amd/vulkan/meson.build                |  6 +++---
 src/broadcom/compiler/meson.build         |  4 ++--
 src/compiler/glsl/meson.build             |  3 ++-
 src/compiler/meson.build                  |  4 ++--
 src/compiler/nir/meson.build              | 18 +++++++++++++++---
 src/gallium/auxiliary/meson.build         |  8 +++++---
 src/gallium/drivers/freedreno/meson.build |  8 ++++----
 src/gallium/drivers/radeonsi/meson.build  |  6 +++---
 src/gallium/drivers/vc4/meson.build       |  7 ++++---
 src/gallium/drivers/vc5/meson.build       |  7 ++++---
 src/gallium/targets/xa/meson.build        |  2 +-
 src/intel/blorp/meson.build               |  3 ++-
 src/intel/compiler/meson.build            | 12 ++++++------
 src/intel/vulkan/meson.build              | 12 +++++++-----
 src/mesa/drivers/dri/i965/meson.build     | 10 +++++-----
 src/mesa/drivers/dri/meson.build          |  4 ++--
 src/mesa/meson.build                      |  3 ++-
 18 files changed, 72 insertions(+), 50 deletions(-)

diff --git a/src/amd/common/meson.build b/src/amd/common/meson.build
index 43a633a493..22c13b955f 100644
--- a/src/amd/common/meson.build
+++ b/src/amd/common/meson.build
@@ -52,12 +52,13 @@ amd_common_files = files(
 
 libamd_common = static_library(
   'amd_common',
-  [amd_common_files, sid_tables_h, nir_opcodes_h],
+  [amd_common_files, sid_tables_h],
   include_directories : [
-    inc_common, inc_compiler, inc_nir, inc_mesa, inc_mapi, inc_amd,
+    inc_common, inc_compiler, inc_mesa, inc_mapi, inc_amd,
   ],
   dependencies : [
     dep_llvm, dep_thread, dep_elf, dep_libdrm_amdgpu, dep_valgrind,
+    idep_nir_headers,
   ],
   c_args : [c_vis_args],
   cpp_args : [cpp_vis_args],
diff --git a/src/amd/vulkan/meson.build b/src/amd/vulkan/meson.build
index 054ee5e282..74f6399ed7 100644
--- a/src/amd/vulkan/meson.build
+++ b/src/amd/vulkan/meson.build
@@ -114,19 +114,19 @@ endif
 
 libvulkan_radeon = shared_library(
   'vulkan_radeon',
-  [libradv_files, radv_entrypoints, radv_extensions_c, nir_opcodes_h,
-   vk_format_table_c],
+  [libradv_files, radv_entrypoints, radv_extensions_c, vk_format_table_c],
   include_directories : [
     inc_common, inc_amd, inc_amd_common, inc_compiler, inc_vulkan_util,
     inc_vulkan_wsi,
   ],
   link_with : [
-    libamd_common, libamdgpu_addrlib, libvulkan_util, libvulkan_wsi, libnir,
+    libamd_common, libamdgpu_addrlib, libvulkan_util, libvulkan_wsi,
     libmesa_util,
   ],
   dependencies : [
     dep_llvm, dep_libdrm_amdgpu, dep_thread, dep_elf, dep_dl, dep_m,
     dep_valgrind,
+    idep_nir,
   ],
   c_args : [c_vis_args, no_override_init_args, radv_flags],
   link_args : [ld_args_bsymbolic, ld_args_gc_sections],
diff --git a/src/broadcom/compiler/meson.build b/src/broadcom/compiler/meson.build
index fd4d05fdbb..8f2ee7542c 100644
--- a/src/broadcom/compiler/meson.build
+++ b/src/broadcom/compiler/meson.build
@@ -36,10 +36,10 @@ libbroadcom_compiler_files = files(
 )
 
 libbroadcom_compiler = static_library(
-  ['broadcom_compiler', v3d_xml_pack, nir_opcodes_h, nir_builder_opcodes_h],
+  ['broadcom_compiler', v3d_xml_pack],
   libbroadcom_compiler_files,
   include_directories : [inc_common, inc_broadcom],
   c_args : [c_vis_args, no_override_init_args],
-  dependencies : [dep_libdrm, dep_valgrind],
+  dependencies : [dep_libdrm, dep_valgrind, idep_nir_headers],
   build_by_default : false,
 )
diff --git a/src/compiler/glsl/meson.build b/src/compiler/glsl/meson.build
index 2a6bddf4a8..b0c0de810a 100644
--- a/src/compiler/glsl/meson.build
+++ b/src/compiler/glsl/meson.build
@@ -205,8 +205,9 @@ libglsl = static_library(
    ir_expression_operation_strings_h, ir_expression_operation_constant_h],
   c_args : [c_vis_args, c_msvc_compat_args, no_override_init_args],
   cpp_args : [cpp_vis_args, cpp_msvc_compat_args],
-  link_with : [libnir, libglcpp],
+  link_with : libglcpp,
   include_directories : [inc_common, inc_compiler, inc_nir],
+  dependencies : idep_nir,
   build_by_default : false,
 )
 
diff --git a/src/compiler/meson.build b/src/compiler/meson.build
index 783be11c92..d86bdde61d 100644
--- a/src/compiler/meson.build
+++ b/src/compiler/meson.build
@@ -58,9 +58,9 @@ subdir('nir')
 spirv2nir = executable(
   'spirv2nir',
   [files('spirv/spirv2nir.c'), dummy_cpp],
-  dependencies : [dep_m, dep_thread],
+  dependencies : [dep_m, dep_thread, idep_nir],
   include_directories : [inc_common, inc_nir, include_directories('spirv')],
-  link_with : [libnir, libmesa_util],
+  link_with : libmesa_util,
   c_args : [c_vis_args, c_msvc_compat_args, no_override_init_args],
   build_by_default : false,
 )
diff --git a/src/compiler/nir/meson.build b/src/compiler/nir/meson.build
index 54cef67e9e..b5f27ad667 100644
--- a/src/compiler/nir/meson.build
+++ b/src/compiler/nir/meson.build
@@ -205,6 +205,18 @@ libnir = static_library(
   build_by_default : false,
 )
 
+# Headers-only dependency
+idep_nir_headers = declare_dependency(
+  sources : [nir_opcodes_h, nir_builder_opcodes_h],
+  include_directories : include_directories('.'),
+)
+
+# Also link with nir
+idep_nir = declare_dependency(
+  dependencies : idep_nir_headers,
+  link_with : libnir,
+)
+
 nir_algebraic_py = files('nir_algebraic.py')
 
 if with_tests
@@ -212,11 +224,11 @@ if with_tests
     'nir_control_flow',
     executable(
       'nir_control_flow_test',
-      [files('tests/control_flow_tests.cpp'), nir_opcodes_h],
+      files('tests/control_flow_tests.cpp'),
       c_args : [c_vis_args, c_msvc_compat_args, no_override_init_args],
       include_directories : [inc_common],
-      dependencies : [dep_thread, idep_gtest],
-      link_with : [libmesa_util, libnir],
+      dependencies : [dep_thread, idep_gtest, idep_nir],
+      link_with : libmesa_util,
     )
   )
 endif
diff --git a/src/gallium/auxiliary/meson.build b/src/gallium/auxiliary/meson.build
index 584cbe4509..acef71bb3a 100644
--- a/src/gallium/auxiliary/meson.build
+++ b/src/gallium/auxiliary/meson.build
@@ -490,14 +490,16 @@ u_format_table_c = custom_target(
 
 libgallium = static_library(
   'gallium',
-  [files_libgallium, u_indices_gen_c, u_unfilled_gen_c, u_format_table_c,
-   nir_opcodes_h, nir_builder_opcodes_h],
+  [files_libgallium, u_indices_gen_c, u_unfilled_gen_c, u_format_table_c],
   include_directories : [
     inc_loader, inc_gallium, inc_src, inc_include, include_directories('util')
   ],
   c_args : [c_vis_args, c_msvc_compat_args],
   cpp_args : [cpp_vis_args, cpp_msvc_compat_args],
-  dependencies : [dep_libdrm, dep_llvm, dep_unwind, dep_dl, dep_m, dep_thread],
+  dependencies : [
+    dep_libdrm, dep_llvm, dep_unwind, dep_dl, dep_m, dep_thread,
+    idep_nir_headers,
+  ],
   build_by_default : false,
 )
 
diff --git a/src/gallium/drivers/freedreno/meson.build b/src/gallium/drivers/freedreno/meson.build
index af288ced1a..23c85cfa71 100644
--- a/src/gallium/drivers/freedreno/meson.build
+++ b/src/gallium/drivers/freedreno/meson.build
@@ -203,7 +203,7 @@ files_libfreedreno = files(
 )
 
 freedreno_includes = [
-  inc_src, inc_include, inc_gallium, inc_gallium_aux, inc_nir,
+  inc_src, inc_include, inc_gallium, inc_gallium_aux,
   include_directories('ir3')
 ]
 
@@ -219,11 +219,11 @@ endif
 
 libfreedreno = static_library(
   'freedreno',
-  [files_libfreedreno, ir3_nir_trig_c, nir_opcodes_h],
+  [files_libfreedreno, ir3_nir_trig_c],
   include_directories : freedreno_includes,
   c_args : [freedreno_c_args, c_vis_args],
   cpp_args : [freedreno_cpp_args, cpp_vis_args],
-  dependencies : [dep_libdrm, dep_libdrm_freedreno],
+  dependencies : [dep_libdrm, dep_libdrm_freedreno, idep_nir_headers],
 )
 
 driver_freedreno = declare_dependency(
@@ -240,11 +240,11 @@ ir3_compiler = executable(
     dep_libdrm_freedreno,
     dep_thread,
     dep_lmsensors,
+    idep_nir,
   ],
   link_with : [
     libfreedreno,
     libgallium,
-    libnir,
     libglsl_standalone,
     libmesa_util,
   ],
diff --git a/src/gallium/drivers/radeonsi/meson.build b/src/gallium/drivers/radeonsi/meson.build
index 58132bf072..97c7a41244 100644
--- a/src/gallium/drivers/radeonsi/meson.build
+++ b/src/gallium/drivers/radeonsi/meson.build
@@ -70,14 +70,14 @@ si_driinfo_h = custom_target(
 
 libradeonsi = static_library(
   'radeonsi',
-  [files_libradeonsi, si_driinfo_h, nir_opcodes_h, sid_tables_h],
+  [files_libradeonsi, si_driinfo_h, sid_tables_h],
   include_directories : [
     inc_src, inc_include, inc_gallium, inc_gallium_aux, inc_amd_common,
     inc_gallium_drivers,
   ],
   c_args : [c_vis_args],
   cpp_args : [cpp_vis_args],
-  dependencies : dep_llvm,
+  dependencies : [dep_llvm, idep_nir_headers],
 )
 
 driver_radeonsi = declare_dependency(
@@ -85,6 +85,6 @@ driver_radeonsi = declare_dependency(
   sources : si_driinfo_h,
   link_with : [
     libradeonsi, libradeon, libradeonwinsys, libamdgpuwinsys, libamd_common,
-    libnir,
   ],
+  dependencies : idep_nir,
 )
diff --git a/src/gallium/drivers/vc4/meson.build b/src/gallium/drivers/vc4/meson.build
index 9b816cc8fd..ef7e7bcac5 100644
--- a/src/gallium/drivers/vc4/meson.build
+++ b/src/gallium/drivers/vc4/meson.build
@@ -101,7 +101,7 @@ endif
 
 libvc4 = static_library(
   'vc4',
-  [files_libvc4, v3d_xml_pack, nir_opcodes_h, nir_builder_opcodes_h],
+  [files_libvc4, v3d_xml_pack],
   include_directories : [
     inc_src, inc_include, inc_gallium, inc_gallium_aux, inc_broadcom,
     inc_gallium_drivers, inc_drm_uapi,
@@ -109,11 +109,12 @@ libvc4 = static_library(
   link_with: libvc4_neon,
   c_args : [c_vis_args, simpenrose_c_args],
   cpp_args : [cpp_vis_args],
-  dependencies : [dep_simpenrose, dep_libdrm, dep_valgrind],
+  dependencies : [dep_simpenrose, dep_libdrm, dep_valgrind, idep_nir_headers],
   build_by_default : false,
 )
 
 driver_vc4 = declare_dependency(
   compile_args : '-DGALLIUM_VC4',
-  link_with : [libvc4, libvc4winsys, libbroadcom_cle, libnir],
+  link_with : [libvc4, libvc4winsys, libbroadcom_cle],
+  dependencies : idep_nir,
 )
diff --git a/src/gallium/drivers/vc5/meson.build b/src/gallium/drivers/vc5/meson.build
index ee7fe9dc83..deaa81fdb9 100644
--- a/src/gallium/drivers/vc5/meson.build
+++ b/src/gallium/drivers/vc5/meson.build
@@ -54,17 +54,18 @@ endif
 
 libvc5 = static_library(
   'vc5',
-  [files_libvc5, v3d_xml_pack, nir_opcodes_h, nir_builder_opcodes_h],
+  [files_libvc5, v3d_xml_pack],
   include_directories : [
     inc_src, inc_include, inc_gallium, inc_gallium_aux, inc_broadcom,
     inc_gallium_drivers, inc_drm_uapi,
   ],
   c_args : [c_vis_args, v3dv3_c_args],
   cpp_args : [cpp_vis_args, v3dv3_c_args],
-  dependencies : [dep_v3dv3, dep_libdrm, dep_valgrind],
+  dependencies : [dep_v3dv3, dep_libdrm, dep_valgrind, idep_nir_headers],
 )
 
 driver_vc5 = declare_dependency(
   compile_args : '-DGALLIUM_VC5',
-  link_with : [libvc5, libvc5winsys, libbroadcom_cle, libbroadcom_vc5, libnir],
+  link_with : [libvc5, libvc5winsys, libbroadcom_cle, libbroadcom_vc5],
+  dependencies : idep_nir,
 )
diff --git a/src/gallium/targets/xa/meson.build b/src/gallium/targets/xa/meson.build
index f25999d160..8ff6486a5a 100644
--- a/src/gallium/targets/xa/meson.build
+++ b/src/gallium/targets/xa/meson.build
@@ -40,7 +40,7 @@ libxatracker = shared_library(
     inc_common, inc_util, inc_gallium_winsys, inc_gallium_drivers,
   ],
   link_with : [
-    libxa_st, libgalliumvl_stub, libgallium, libmesa_util, libnir,
+    libxa_st, libgalliumvl_stub, libgallium, libmesa_util,
     libpipe_loader_static, libws_null, libwsw,
   ],
   link_depends : xa_link_depends,
diff --git a/src/intel/blorp/meson.build b/src/intel/blorp/meson.build
index febdea97f3..c1201b0aa1 100644
--- a/src/intel/blorp/meson.build
+++ b/src/intel/blorp/meson.build
@@ -30,7 +30,8 @@ files_libblorp = files(
 
 libblorp = static_library(
   'blorp',
-  [files_libblorp, nir_opcodes_h],
+  files_libblorp,
   include_directories : [inc_common, inc_intel],
   c_args : [c_vis_args, no_override_init_args],
+  dependencies : idep_nir_headers,
 )
diff --git a/src/intel/compiler/meson.build b/src/intel/compiler/meson.build
index 19e5926a0d..602206c725 100644
--- a/src/intel/compiler/meson.build
+++ b/src/intel/compiler/meson.build
@@ -131,11 +131,11 @@ brw_nir_trig = custom_target(
 
 libintel_compiler = static_library(
   'intel_compiler',
-  [libintel_compiler_files, brw_nir_trig, nir_opcodes_h, nir_builder_opcodes_h,
-   ir_expression_operation_h],
-  include_directories : [inc_common, inc_intel, inc_nir],
+  [libintel_compiler_files, brw_nir_trig, ir_expression_operation_h],
+  include_directories : [inc_common, inc_intel],
   c_args : [c_vis_args, no_override_init_args],
   cpp_args : [cpp_vis_args],
+  dependencies : idep_nir_headers,
   build_by_default : false,
 )
 
@@ -148,13 +148,13 @@ if with_tests
     test(
       t,
       executable(
-        [t, nir_opcodes_h, ir_expression_operation_h],
+        [t, ir_expression_operation_h],
         'test_ at 0@.cpp'.format(t),
         include_directories : [inc_common, inc_intel],
         link_with : [
-          libintel_compiler, libintel_common, libnir, libmesa_util, libisl,
+          libintel_compiler, libintel_common, libmesa_util, libisl,
         ],
-        dependencies : [dep_thread, dep_dl, idep_gtest],
+        dependencies : [dep_thread, dep_dl, idep_gtest, idep_nir],
       )
     )
   endforeach
diff --git a/src/intel/vulkan/meson.build b/src/intel/vulkan/meson.build
index 4cd7a02581..a0ec35dadc 100644
--- a/src/intel/vulkan/meson.build
+++ b/src/intel/vulkan/meson.build
@@ -100,7 +100,7 @@ foreach g : [['70', ['gen7_cmd_buffer.c']], ['75', ['gen7_cmd_buffer.c']],
       c_vis_args, no_override_init_args, '-msse2',
       '-DGEN_VERSIONx10=@0@'.format(_gen),
     ],
-    dependencies : [dep_libdrm, dep_valgrind],
+    dependencies : [dep_libdrm, dep_valgrind, idep_nir_headers],
   )
 endforeach
 
@@ -153,13 +153,13 @@ endif
 
 libanv_common = static_library(
   'anv_common',
-  [libanv_files, anv_entrypoints, anv_extensions_c, nir_opcodes_h],
+  [libanv_files, anv_entrypoints, anv_extensions_c],
   include_directories : [
     inc_common, inc_intel, inc_compiler, inc_drm_uapi, inc_vulkan_util,
     inc_vulkan_wsi,
   ],
   c_args : [c_vis_args, no_override_init_args, '-msse2', anv_flags],
-  dependencies : [dep_valgrind, anv_deps, dep_libdrm],
+  dependencies : [dep_valgrind, anv_deps, dep_libdrm, idep_nir_headers],
 )
 
 libvulkan_intel = shared_library(
@@ -172,9 +172,11 @@ libvulkan_intel = shared_library(
   link_whole : [libanv_common, libanv_gen_libs],
   link_with : [
     libintel_compiler, libintel_common, libisl, libblorp, libvulkan_util,
-    libvulkan_wsi, libnir, libmesa_util,
+    libvulkan_wsi, libmesa_util,
+  ],
+  dependencies : [
+    dep_libdrm, dep_thread, dep_dl, dep_m, anv_deps, dep_valgrind, idep_nir,
   ],
-  dependencies : [dep_libdrm, dep_thread, dep_dl, dep_m, anv_deps, dep_valgrind],
   c_args : [c_vis_args, no_override_init_args, '-msse2', anv_flags],
   link_args : ['-Wl,--build-id=sha1', ld_args_bsymbolic, ld_args_gc_sections],
   install : true,
diff --git a/src/mesa/drivers/dri/i965/meson.build b/src/mesa/drivers/dri/i965/meson.build
index 1183978b7b..9adda06183 100644
--- a/src/mesa/drivers/dri/i965/meson.build
+++ b/src/mesa/drivers/dri/i965/meson.build
@@ -138,13 +138,13 @@ i965_gen_libs = []
 foreach v : ['40', '45', '50', '60', '70', '75', '80', '90', '100']
   i965_gen_libs += static_library(
     'libi965_gen at 0@'.format(v),
-    ['genX_blorp_exec.c', 'genX_state_upload.c', nir_opcodes_h, gen_xml_pack],
+    ['genX_blorp_exec.c', 'genX_state_upload.c', gen_xml_pack],
     include_directories : [inc_common, inc_intel, inc_dri_common],
     c_args : [
       c_vis_args, no_override_init_args, '-msse2',
       '-DGEN_VERSIONx10=@0@'.format(v),
     ],
-    dependencies : [dep_libdrm],
+    dependencies : [dep_libdrm, idep_nir_headers],
   )
 endforeach
 
@@ -166,17 +166,17 @@ endforeach
 
 libi965 = static_library(
   'i965',
-  [files_i965, i965_oa_sources, nir_opcodes_h, ir_expression_operation_h,
+  [files_i965, i965_oa_sources, ir_expression_operation_h,
    xmlpool_options_h],
   include_directories : [
-    inc_common, inc_intel, inc_dri_common, inc_util, inc_drm_uapi, inc_nir,
+    inc_common, inc_intel, inc_dri_common, inc_util, inc_drm_uapi,
   ],
   c_args : [c_vis_args, no_override_init_args, '-msse2'],
   cpp_args : [cpp_vis_args, '-msse2'],
   link_with : [
     i965_gen_libs, libintel_common, libisl, libintel_compiler, libblorp,
   ],
-  dependencies : [dep_libdrm, dep_valgrind],
+  dependencies : [dep_libdrm, dep_valgrind, idep_nir_headers],
 )
 
 dri_drivers += libi965
diff --git a/src/mesa/drivers/dri/meson.build b/src/mesa/drivers/dri/meson.build
index e73ee39381..94798b0f5d 100644
--- a/src/mesa/drivers/dri/meson.build
+++ b/src/mesa/drivers/dri/meson.build
@@ -48,10 +48,10 @@ if dri_drivers != []
     link_whole : dri_drivers,
     link_with : [
       libmegadriver_stub, libdricommon, libxmlconfig, libglapi, libmesa_util,
-      libnir, libmesa_classic,
+      libmesa_classic,
     ],
     dependencies : [
-      dep_selinux, dep_libdrm, dep_expat, dep_m, dep_thread, dep_dl,
+      dep_selinux, dep_libdrm, dep_expat, dep_m, dep_thread, dep_dl, idep_nir,
     ],
     link_args : ['-Wl,--build-id=sha1', ld_args_bsymbolic, ld_args_gc_sections],
   )
diff --git a/src/mesa/meson.build b/src/mesa/meson.build
index ab6bc27312..998953d641 100644
--- a/src/mesa/meson.build
+++ b/src/mesa/meson.build
@@ -687,7 +687,6 @@ files_libmesa_common += [
   main_marshal_generated_h,
   main_dispatch_h,
   ir_expression_operation_h,
-  nir_opcodes_h,
   main_remap_helper_h,
   matypes_h,
   sha1_h,
@@ -711,6 +710,7 @@ libmesa_classic = static_library(
   cpp_args : [cpp_vis_args, cpp_msvc_compat_args],
   include_directories : [inc_common, include_directories('main')],
   link_with : [libglsl, libmesa_sse41],
+  dependencies : idep_nir_headers,
   build_by_default : false,
 )
 
@@ -721,6 +721,7 @@ libmesa_gallium = static_library(
   cpp_args : [cpp_vis_args, cpp_msvc_compat_args],
   include_directories : [inc_common, include_directories('main')],
   link_with : [libglsl, libmesa_sse41],
+  dependencies : idep_nir_headers,
   build_by_default : false,
 )
 




More information about the mesa-commit mailing list