diff --git a/bin/meson_get_version.py b/bin/meson_get_version.py index 9a44aa8fab6..91a7e7030d1 100644 --- a/bin/meson_get_version.py +++ b/bin/meson_get_version.py @@ -20,11 +20,16 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. +import argparse import os def main(): - filename = os.path.join(os.environ['MESON_SOURCE_ROOT'], 'VERSION') + parser = argparse.ArgumentParser() + parser.add_argument('version_dir', help="Directory with VERSION file") + args = parser.parse_args() + + filename = os.path.join(args.version_dir, 'VERSION') with open(filename) as f: version = f.read().strip() print(version, end='') diff --git a/meson.build b/meson.build index 1aebd04e5d7..90a92e5e517 100644 --- a/meson.build +++ b/meson.build @@ -22,7 +22,8 @@ project( 'mesa', ['c', 'cpp'], version : run_command( - [find_program('python3', 'python'), 'bin/meson_get_version.py'], + [find_program('python3', 'python'), 'bin/meson_get_version.py', + meson.version().version_compare('>= 0.56') ? meson.project_source_root() : meson.source_root()], check : true ).stdout(), license : 'MIT', @@ -2289,6 +2290,14 @@ gcc_lto_quirk = (cc.get_id() == 'gcc') ? ['-fno-lto'] : [] devenv = environment() dir_compiler_nir = join_paths(meson.current_source_dir(), 'src/compiler/nir/') +if meson.version().version_compare('>= 0.56') + dir_source_root = meson.project_source_root() +else + # source_root() returns a source root of the parent project if called from + # a subproject, which makes impossible to use Mesa as a meson subproject. + dir_source_root = meson.source_root() +endif + subdir('include') subdir('bin') diff --git a/src/amd/vulkan/bvh/meson.build b/src/amd/vulkan/bvh/meson.build index 8c5eb22d973..16fd7fc5153 100644 --- a/src/amd/vulkan/bvh/meson.build +++ b/src/amd/vulkan/bvh/meson.build @@ -28,7 +28,7 @@ bvh_shaders = [ 'converter_leaf.comp', ] -bvh_include_dir = meson.source_root() + '/src/amd/vulkan/bvh' +bvh_include_dir = dir_source_root + '/src/amd/vulkan/bvh' bvh_includes = files( 'build_helpers.h', diff --git a/src/amd/vulkan/radix_sort/shaders/meson.build b/src/amd/vulkan/radix_sort/shaders/meson.build index 0f9b27edd61..16a81ce1e1a 100644 --- a/src/amd/vulkan/radix_sort/shaders/meson.build +++ b/src/amd/vulkan/radix_sort/shaders/meson.build @@ -29,7 +29,7 @@ radix_sort_shaders = [ 'scatter_1_odd.comp' ] -shader_include_dir = meson.source_root() + '/src/amd/vulkan/radix_sort/targets/u64' +shader_include_dir = dir_source_root + '/src/amd/vulkan/radix_sort/targets/u64' shader_include_files = files( 'bufref.h', @@ -37,7 +37,7 @@ shader_include_files = files( 'prefix.h', 'push.h', 'scatter.glsl', - meson.source_root() + '/src/amd/vulkan/radix_sort/targets/u64/config.h' + dir_source_root + '/src/amd/vulkan/radix_sort/targets/u64/config.h' ) radix_sort_spv = [] diff --git a/src/compiler/glsl/tests/meson.build b/src/compiler/glsl/tests/meson.build index 28bdec8fd17..2204f0478dc 100644 --- a/src/compiler/glsl/tests/meson.build +++ b/src/compiler/glsl/tests/meson.build @@ -77,7 +77,7 @@ if meson.has_exe_wrapper() join_paths(meson.current_source_dir(), 'warnings_test.py'), '--glsl-compiler', glsl_compiler, '--test-directory', join_paths( - meson.source_root(), 'src', 'compiler', 'glsl', 'tests', 'warnings' + dir_source_root, 'src', 'compiler', 'glsl', 'tests', 'warnings' ), ], suite : ['compiler', 'glsl'], diff --git a/src/freedreno/afuc/meson.build b/src/freedreno/afuc/meson.build index b779b2dd39f..6d209b587c8 100644 --- a/src/freedreno/afuc/meson.build +++ b/src/freedreno/afuc/meson.build @@ -68,7 +68,7 @@ if with_tests diff, args: ['-u', files('../.gitlab-ci/reference/afuc_test.fw'), asm_fw], suite: 'freedreno', - workdir: meson.source_root() + workdir: dir_source_root ) endif @@ -112,7 +112,7 @@ if cc.sizeof('size_t') > 4 diff, args: ['-u', files('../.gitlab-ci/reference/afuc_test.asm'), disasm_fw], suite: 'freedreno', - workdir: meson.source_root() + workdir: dir_source_root ) endif endif diff --git a/src/freedreno/decode/meson.build b/src/freedreno/decode/meson.build index fd8e3813dc4..a34ca892b53 100644 --- a/src/freedreno/decode/meson.build +++ b/src/freedreno/decode/meson.build @@ -146,7 +146,7 @@ if dep_lua.found() and dep_libarchive.found() diff, args: ['-u', files('../.gitlab-ci/reference/' + name + '.log'), log], suite: 'freedreno', - workdir: meson.source_root() + workdir: dir_source_root ) endforeach @@ -186,7 +186,7 @@ if with_tests diff, args: ['-u', files('../.gitlab-ci/reference/crash.log'), crashdec_output], suite: 'freedreno', - workdir: meson.source_root() + workdir: dir_source_root ) endif diff --git a/src/freedreno/meson.build b/src/freedreno/meson.build index f24221e7355..5feab386007 100644 --- a/src/freedreno/meson.build +++ b/src/freedreno/meson.build @@ -21,7 +21,7 @@ inc_freedreno = include_directories(['.', './registers', './registers/adreno', './common']) inc_freedreno_rnn = include_directories('rnn') -rnn_src_path = meson.source_root() + '/src/freedreno/registers' +rnn_src_path = dir_source_root + '/src/freedreno/registers' rnn_install_path = get_option('datadir') + '/freedreno/registers' rnn_path = rnn_src_path + ':' + get_option('prefix') + '/' + rnn_install_path diff --git a/src/freedreno/vulkan/meson.build b/src/freedreno/vulkan/meson.build index 6accd3dc040..2f2a176b04f 100644 --- a/src/freedreno/vulkan/meson.build +++ b/src/freedreno/vulkan/meson.build @@ -82,7 +82,7 @@ tu_tracepoints = custom_target( output: ['tu_tracepoints.c', 'tu_tracepoints.h', 'tu_tracepoints_perfetto.h'], command: [ prog_python, '@INPUT@', - '-p', join_paths(meson.source_root(), 'src/util/perf/'), + '-p', join_paths(dir_source_root, 'src/util/perf/'), '--utrace-src', '@OUTPUT0@', '--utrace-hdr', '@OUTPUT1@', '--perfetto-hdr', '@OUTPUT2@', diff --git a/src/gallium/auxiliary/meson.build b/src/gallium/auxiliary/meson.build index ee623962a4b..63a2a912092 100644 --- a/src/gallium/auxiliary/meson.build +++ b/src/gallium/auxiliary/meson.build @@ -467,7 +467,7 @@ files_libgallium += custom_target( output: 'u_tracepoints.c', command: [ prog_python, '@INPUT@', - '-p', join_paths(meson.source_root(), 'src/util/perf/'), + '-p', join_paths(dir_source_root, 'src/util/perf/'), '-C', '@OUTPUT@', ], depend_files: u_trace_py, @@ -479,7 +479,7 @@ files_u_tracepoints = custom_target( output: 'u_tracepoints.h', command: [ prog_python, '@INPUT@', - '-p', join_paths(meson.source_root(), 'src/util/perf/'), + '-p', join_paths(dir_source_root, 'src/util/perf/'), '-H', '@OUTPUT@', ], depend_files: u_trace_py, diff --git a/src/gallium/drivers/freedreno/meson.build b/src/gallium/drivers/freedreno/meson.build index baddc0ae09f..9dc2cdbb885 100644 --- a/src/gallium/drivers/freedreno/meson.build +++ b/src/gallium/drivers/freedreno/meson.build @@ -225,7 +225,7 @@ freedreno_tracepoints = custom_target( output: ['freedreno_tracepoints.c', 'freedreno_tracepoints.h'], command: [ prog_python, '@INPUT@', - '-p', join_paths(meson.source_root(), 'src/util/perf/'), + '-p', join_paths(dir_source_root, 'src/util/perf/'), '-C', '@OUTPUT0@', '-H', '@OUTPUT1@', ], diff --git a/src/gallium/drivers/zink/meson.build b/src/gallium/drivers/zink/meson.build index 04d4bee10c7..f7fc960df6d 100644 --- a/src/gallium/drivers/zink/meson.build +++ b/src/gallium/drivers/zink/meson.build @@ -49,7 +49,7 @@ zink_device_info = custom_target( input : ['zink_device_info.py'], output : ['zink_device_info.h', 'zink_device_info.c'], command : [ - prog_python, '@INPUT@', '@OUTPUT@', join_paths(meson.source_root(), 'src/vulkan/registry/vk.xml') + prog_python, '@INPUT@', '@OUTPUT@', join_paths(dir_source_root, 'src/vulkan/registry/vk.xml') ] ) @@ -58,7 +58,7 @@ zink_instance = custom_target( input : ['zink_instance.py'], output : ['zink_instance.h', 'zink_instance.c'], command : [ - prog_python, '@INPUT@', '@OUTPUT@', join_paths(meson.source_root(), 'src/vulkan/registry/vk.xml') + prog_python, '@INPUT@', '@OUTPUT@', join_paths(dir_source_root, 'src/vulkan/registry/vk.xml') ] ) diff --git a/src/intel/common/meson.build b/src/intel/common/meson.build index f3fd0f6fa26..41c6f69f50e 100644 --- a/src/intel/common/meson.build +++ b/src/intel/common/meson.build @@ -93,7 +93,7 @@ if with_tests and not with_platform_android depend_files: gen_pack_header_deps ) - genxml_path = join_paths(meson.source_root(), + genxml_path = join_paths(dir_source_root, '@0@'.format(gentest_xml[0])) test( diff --git a/src/intel/ds/meson.build b/src/intel/ds/meson.build index 066b3ed8588..6a6719cb83d 100644 --- a/src/intel/ds/meson.build +++ b/src/intel/ds/meson.build @@ -11,7 +11,7 @@ intel_tracepoint_files = custom_target( 'intel_tracepoints.c'], command : [ prog_python, '@INPUT@', - '-p', join_paths(meson.source_root(), 'src/util/perf/'), + '-p', join_paths(dir_source_root, 'src/util/perf/'), '--utrace-hdr', '@OUTPUT0@', '--perfetto-hdr', '@OUTPUT1@', '--utrace-src', '@OUTPUT2@',