vulkan: Track dependencies of Python imports

The meson.build was unaware of transitive dependencies introduced by
Python imports.

Android still needs fixing. But I did not update the Android files lest
I break the build.

Ideally, we would fix this by using a Python runner that generates
a depfile, similar to how meson creates depfiles for C files by passing
flags -MD -MQ -MF to gcc. But this patch gets the job done, without
stalling on the ideal general solution, by manually tracking the Python
imports in new 'foo_depend_files' variables.

CC: mesa-stable@lists.freedesktop.org
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/1466>
This commit is contained in:
Chad Versace
2021-03-29 12:39:07 -07:00
committed by Marge Bot
parent 84e0f6dbd8
commit 0845cabc72
9 changed files with 31 additions and 1 deletions

View File

@@ -27,6 +27,7 @@ radv_entrypoints = custom_target(
'--out-h', '@OUTPUT0@', '--out-c', '@OUTPUT1@', '--prefix', 'radv', '--out-h', '@OUTPUT0@', '--out-c', '@OUTPUT1@', '--prefix', 'radv',
'--device-prefix', 'sqtt', '--device-prefix', 'sqtt',
], ],
depend_files : vk_entrypoints_gen_depend_files,
) )
libradv_files = files( libradv_files = files(

View File

@@ -26,6 +26,7 @@ v3dv_entrypoints = custom_target(
prog_python, '@INPUT0@', '--xml', '@INPUT1@', '--proto', '--weak', prog_python, '@INPUT0@', '--xml', '@INPUT1@', '--proto', '--weak',
'--out-h', '@OUTPUT0@', '--out-c', '@OUTPUT1@', '--prefix', 'v3dv', '--out-h', '@OUTPUT0@', '--out-c', '@OUTPUT1@', '--prefix', 'v3dv',
], ],
depend_files : vk_entrypoints_gen_depend_files,
) )
v3dv_extensions_c = custom_target( v3dv_extensions_c = custom_target(

View File

@@ -26,6 +26,7 @@ tu_entrypoints = custom_target(
prog_python, '@INPUT0@', '--xml', '@INPUT1@', '--proto', '--weak', prog_python, '@INPUT0@', '--xml', '@INPUT1@', '--proto', '--weak',
'--out-h', '@OUTPUT0@', '--out-c', '@OUTPUT1@', '--prefix', 'tu', '--out-h', '@OUTPUT0@', '--out-c', '@OUTPUT1@', '--prefix', 'tu',
], ],
depend_files : vk_entrypoints_gen_depend_files,
) )
tu_extensions_c = custom_target( tu_extensions_c = custom_target(

View File

@@ -7,6 +7,7 @@ lvp_entrypoints = custom_target(
prog_python, '@INPUT0@', '--xml', '@INPUT1@', '--proto', '--weak', prog_python, '@INPUT0@', '--xml', '@INPUT1@', '--proto', '--weak',
'--out-h', '@OUTPUT0@', '--out-c', '@OUTPUT1@', '--prefix', 'lvp', '--out-h', '@OUTPUT0@', '--out-c', '@OUTPUT1@', '--prefix', 'lvp',
], ],
depend_files : vk_entrypoints_gen_depend_files,
) )
liblvp_files = files( liblvp_files = files(

View File

@@ -30,6 +30,7 @@ anv_entrypoints = custom_target(
'--device-prefix', 'gfx11', '--device-prefix', 'gfx12', '--device-prefix', 'gfx11', '--device-prefix', 'gfx12',
'--device-prefix', 'gfx125', '--device-prefix', 'gfx125',
], ],
depend_files : vk_entrypoints_gen_depend_files,
) )
intel_icd = custom_target( intel_icd = custom_target(

View File

@@ -18,6 +18,23 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE. # SOFTWARE.
# Mesa-local imports in the Python files must be declared here for correct
# dependency tracking.
vk_extensions_depend_files = [
]
vk_extensions_gen_depend_files = [
files('vk_extensions.py'),
vk_extensions_depend_files,
]
vk_dispatch_table_gen_depend_files = [
files('vk_extensions.py'),
vk_extensions_depend_files,
]
vk_entrypoints_gen_depend_files = [
files('vk_dispatch_table_gen.py'),
vk_dispatch_table_gen_depend_files,
]
vk_entrypoints_gen = files('vk_entrypoints_gen.py') vk_entrypoints_gen = files('vk_entrypoints_gen.py')
vk_extensions_gen = files('vk_extensions_gen.py') vk_extensions_gen = files('vk_extensions_gen.py')
vk_icd_gen = files('vk_icd_gen.py') vk_icd_gen = files('vk_icd_gen.py')
@@ -55,6 +72,7 @@ vk_common_entrypoints = custom_target(
prog_python, '@INPUT0@', '--xml', '@INPUT1@', '--proto', '--weak', prog_python, '@INPUT0@', '--xml', '@INPUT1@', '--proto', '--weak',
'--out-h', '@OUTPUT0@', '--out-c', '@OUTPUT1@', '--prefix', 'vk_common', '--out-h', '@OUTPUT0@', '--out-c', '@OUTPUT1@', '--prefix', 'vk_common',
], ],
depend_files : vk_entrypoints_gen_depend_files,
) )
vk_dispatch_table = custom_target( vk_dispatch_table = custom_target(
@@ -65,6 +83,7 @@ vk_dispatch_table = custom_target(
prog_python, '@INPUT0@', '--xml', '@INPUT1@', prog_python, '@INPUT0@', '--xml', '@INPUT1@',
'--out-c', '@OUTPUT0@', '--out-h', '@OUTPUT1@' '--out-c', '@OUTPUT0@', '--out-h', '@OUTPUT1@'
], ],
depend_files : vk_dispatch_table_gen_depend_files,
) )
vk_enum_to_str = custom_target( vk_enum_to_str = custom_target(
@@ -85,7 +104,7 @@ vk_extensions = custom_target(
prog_python, '@INPUT0@', '--xml', '@INPUT1@', prog_python, '@INPUT0@', '--xml', '@INPUT1@',
'--out-c', '@OUTPUT0@', '--out-h', '@OUTPUT1@' '--out-c', '@OUTPUT0@', '--out-h', '@OUTPUT1@'
], ],
depend_files : files('vk_extensions.py'), depend_files : vk_extensions_gen_depend_files,
) )
libvulkan_util = static_library( libvulkan_util = static_library(

View File

@@ -33,6 +33,8 @@ import xml.etree.ElementTree as et
from collections import OrderedDict, namedtuple from collections import OrderedDict, namedtuple
from mako.template import Template from mako.template import Template
# Mesa-local imports must be declared in meson variable
# '{file_without_suffix}_depend_files'.
from vk_extensions import * from vk_extensions import *
# We generate a static hash table for entry point lookup # We generate a static hash table for entry point lookup

View File

@@ -28,6 +28,8 @@ import os
from mako.template import Template from mako.template import Template
# Mesa-local imports must be declared in meson variable
# '{file_without_suffix}_depend_files'.
from vk_dispatch_table_gen import get_entrypoints_from_xml from vk_dispatch_table_gen import get_entrypoints_from_xml
TEMPLATE_H = Template(COPYRIGHT + """\ TEMPLATE_H = Template(COPYRIGHT + """\

View File

@@ -28,6 +28,8 @@ import xml.etree.ElementTree as et
from mako.template import Template from mako.template import Template
# Mesa-local imports must be declared in meson variable
# '{file_without_suffix}_depend_files'.
from vk_extensions import * from vk_extensions import *
_TEMPLATE_H = Template(COPYRIGHT + """ _TEMPLATE_H = Template(COPYRIGHT + """