From: Ian Romanick Date: Mon, 14 Aug 2017 17:40:09 +0000 (-0700) Subject: spirv: Move SPIR-V building to Makefile.spirv.am and spirv/meson.build X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=042ee4bea26272bd7c358cc9541e576a8352890c;p=mesa.git spirv: Move SPIR-V building to Makefile.spirv.am and spirv/meson.build Future changes will add generated files used only from src/compiler/glsl. These can't be built from Makefile.nir.am, and we can't move all the rules from Makefile.nir.am to Makefile.spirv.am (and it would be silly anyway). v2: Do it for meson too. Signed-off-by: Ian Romanick Reviewed-by: Eric Engestrom (the meson bits) Reviewed-by: Alejandro Piñeiro (the automake bits) --- diff --git a/src/compiler/Makefile.am b/src/compiler/Makefile.am index 18c062019f0..8ec9b0449ca 100644 --- a/src/compiler/Makefile.am +++ b/src/compiler/Makefile.am @@ -69,6 +69,8 @@ EXTRA_DIST = \ MKDIR_GEN = $(AM_V_at)$(MKDIR_P) $(@D) PYTHON_GEN = $(AM_V_GEN)$(PYTHON2) $(PYTHON_FLAGS) +include Makefile.spirv.am + include Makefile.glsl.am include Makefile.nir.am diff --git a/src/compiler/Makefile.nir.am b/src/compiler/Makefile.nir.am index d805f573d51..32e4145b70f 100644 --- a/src/compiler/Makefile.nir.am +++ b/src/compiler/Makefile.nir.am @@ -60,33 +60,6 @@ nir/nir_opt_algebraic.c: nir/nir_opt_algebraic.py nir/nir_algebraic.py $(MKDIR_GEN) $(PYTHON_GEN) $(srcdir)/nir/nir_opt_algebraic.py > $@ || ($(RM) $@; false) -spirv/spirv_info.c: spirv/spirv_info_c.py spirv/spirv.core.grammar.json - $(MKDIR_GEN) - $(PYTHON_GEN) $(srcdir)/spirv/spirv_info_c.py $(srcdir)/spirv/spirv.core.grammar.json $@ || ($(RM) $@; false) - -spirv/vtn_gather_types.c: spirv/vtn_gather_types_c.py spirv/spirv.core.grammar.json - $(MKDIR_GEN) - $(PYTHON_GEN) $(srcdir)/spirv/vtn_gather_types_c.py $(srcdir)/spirv/spirv.core.grammar.json $@ || ($(RM) $@; false) - -noinst_PROGRAMS += spirv2nir - -spirv2nir_SOURCES = \ - spirv/spirv2nir.c - -spirv2nir_CPPFLAGS = \ - $(AM_CPPFLAGS) \ - -I$(top_builddir)/src/compiler/nir \ - -I$(top_srcdir)/src/compiler/nir \ - -I$(top_srcdir)/src/compiler/spirv - -spirv2nir_LDADD = \ - nir/libnir.la \ - $(top_builddir)/src/util/libmesautil.la \ - -lm \ - $(PTHREAD_LIBS) - -nodist_EXTRA_spirv2nir_SOURCES = dummy.cpp - check_PROGRAMS += nir/tests/control_flow_tests nir_tests_control_flow_tests_CPPFLAGS = \ @@ -109,12 +82,10 @@ TESTS += nir/tests/control_flow_tests BUILT_SOURCES += \ - $(NIR_GENERATED_FILES) \ - $(SPIRV_GENERATED_FILES) + $(NIR_GENERATED_FILES) CLEANFILES += \ - $(NIR_GENERATED_FILES) \ - $(SPIRV_GENERATED_FILES) + $(NIR_GENERATED_FILES) EXTRA_DIST += \ nir/nir_algebraic.py \ @@ -129,7 +100,4 @@ EXTRA_DIST += \ nir/nir_opt_algebraic.py \ nir/tests \ nir/README \ - spirv/spirv_info_c.py \ - spirv/spirv.core.grammar.json \ - spirv/vtn_gather_types_c.py \ SConscript.nir diff --git a/src/compiler/Makefile.spirv.am b/src/compiler/Makefile.spirv.am new file mode 100644 index 00000000000..a9f90c26e7b --- /dev/null +++ b/src/compiler/Makefile.spirv.am @@ -0,0 +1,58 @@ +# +# Copyright (C) 2017 Intel Corporation +# +# Permission is hereby granted, free of charge, to any person obtaining a +# copy of this software and associated documentation files (the "Software"), +# to deal in the Software without restriction, including without limitation +# the rights to use, copy, modify, merge, publish, distribute, sublicense, +# and/or sell copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice (including the next +# paragraph) shall be included in all copies or substantial portions of the +# Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +# IN THE SOFTWARE. + +spirv/spirv_info.c: spirv/spirv_info_c.py spirv/spirv.core.grammar.json + $(MKDIR_GEN) + $(PYTHON_GEN) $(srcdir)/spirv/spirv_info_c.py $(srcdir)/spirv/spirv.core.grammar.json $@ || ($(RM) $@; false) + +spirv/vtn_gather_types.c: spirv/vtn_gather_types_c.py spirv/spirv.core.grammar.json + $(MKDIR_GEN) + $(PYTHON_GEN) $(srcdir)/spirv/vtn_gather_types_c.py $(srcdir)/spirv/spirv.core.grammar.json $@ || ($(RM) $@; false) + +noinst_PROGRAMS += spirv2nir + +spirv2nir_SOURCES = \ + spirv/spirv2nir.c + +spirv2nir_CPPFLAGS = \ + $(AM_CPPFLAGS) \ + -I$(top_builddir)/src/compiler/nir \ + -I$(top_srcdir)/src/compiler/nir \ + -I$(top_srcdir)/src/compiler/spirv + +spirv2nir_LDADD = \ + nir/libnir.la \ + $(top_builddir)/src/util/libmesautil.la \ + -lm \ + $(PTHREAD_LIBS) + +nodist_EXTRA_spirv2nir_SOURCES = dummy.cpp + +BUILT_SOURCES += \ + $(SPIRV_GENERATED_FILES) + +CLEANFILES += \ + $(SPIRV_GENERATED_FILES) + +EXTRA_DIST += \ + spirv/spirv_info_c.py \ + spirv/spirv.core.grammar.json diff --git a/src/compiler/meson.build b/src/compiler/meson.build index e955e66f811..da2464d7b8c 100644 --- a/src/compiler/meson.build +++ b/src/compiler/meson.build @@ -21,6 +21,7 @@ inc_compiler = include_directories('.') inc_nir = include_directories('nir') inc_glsl = include_directories('glsl') +inc_spirv = include_directories('spirv') files_libcompiler = files( 'blob.c', @@ -53,8 +54,12 @@ libcompiler = static_library( build_by_default : false, ) +subdir('spirv') + subdir('nir') +# This is here because putting it in spirv/meson.build would create a circular +# dependency with nir/meson.build. spirv2nir = executable( 'spirv2nir', [files('spirv/spirv2nir.c'), dummy_cpp], diff --git a/src/compiler/nir/meson.build b/src/compiler/nir/meson.build index cbee73256ef..db89e276139 100644 --- a/src/compiler/nir/meson.build +++ b/src/compiler/nir/meson.build @@ -83,21 +83,6 @@ nir_intrinsics_c = custom_target( depend_files : files('nir_intrinsics.py'), ) -spirv_info_c = custom_target( - 'spirv_info.c', - input : files('../spirv/spirv_info_c.py', '../spirv/spirv.core.grammar.json'), - output : 'spirv_info.c', - command : [prog_python2, '@INPUT0@', '@INPUT1@', '@OUTPUT@'], -) - -vtn_gather_types_c = custom_target( - 'vtn_gather_types.c', - input : files('../spirv/vtn_gather_types_c.py', - '../spirv/spirv.core.grammar.json'), - output : 'vtn_gather_types.c', - command : [prog_python2, '@INPUT0@', '@INPUT1@', '@OUTPUT@'], -) - files_libnir = files( 'nir.c', 'nir.h', diff --git a/src/compiler/spirv/meson.build b/src/compiler/spirv/meson.build new file mode 100644 index 00000000000..eb0c0d554d9 --- /dev/null +++ b/src/compiler/spirv/meson.build @@ -0,0 +1,33 @@ +# Copyright © 2017 Intel Corporation +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + +vtn_gather_types_c = custom_target( + 'vtn_gather_types.c', + input : files('vtn_gather_types_c.py', 'spirv.core.grammar.json'), + output : 'vtn_gather_types.c', + command : [prog_python2, '@INPUT0@', '@INPUT1@', '@OUTPUT@'], +) + +spirv_info_c = custom_target( + 'spirv_info.c', + input : files('spirv_info_c.py', 'spirv.core.grammar.json'), + output : 'spirv_info.c', + command : [prog_python2, '@INPUT0@', '@INPUT1@', '@OUTPUT@'], +)