diff --git a/src/nouveau/compiler/meson.build b/src/nouveau/compiler/meson.build index a1c9764e296..e02a0b89d3e 100644 --- a/src/nouveau/compiler/meson.build +++ b/src/nouveau/compiler/meson.build @@ -1,6 +1,12 @@ add_languages('rust', required: true) rust = import('unstable-rust') +dep_syn = dependency('syn', + version : '>= 2.0.15', + fallback : ['syn', 'dep_syn'], + required : true, +) + libnak_c_files = files( 'nak.h', 'nak_nir.c', diff --git a/subprojects/packagefiles/proc-macro2/meson.build b/subprojects/packagefiles/proc-macro2/meson.build new file mode 100644 index 00000000000..1433ee7c531 --- /dev/null +++ b/subprojects/packagefiles/proc-macro2/meson.build @@ -0,0 +1,55 @@ +project( + 'proc-macro2', + 'rust', + version : '1.0.56', + license :'MIT OR Apache-2.0', +) + +rc = meson.get_compiler('rust') + +if rc.version().version_compare('< 1.31') + error('Minimum rustc supported version is 1.31') +endif + +rust_args = [ + '--cfg', 'feature="proc-macro"', + '--cfg', 'feature="default"', + '--cfg', 'use_proc_macro', + '--cfg', 'wrap_proc_macro', +] +if rc.version().version_compare('< 1.32') + rust_args += ['--cfg', 'no_libprocmacro_unwind_safe'] +endif +if rc.version().version_compare('< 1.39') + rust_args += ['--cfg', 'no_bind_by_move_pattern_guard'] +endif +if rc.version().version_compare('< 1.44') + rust_args += ['--cfg', 'no_lexerror_display'] +endif +if rc.version().version_compare('< 1.45') + rust_args += ['--cfg', 'no_hygiene'] +endif +if rc.version().version_compare('< 1.47') + rust_args += ['--cfg', 'no_ident_new_raw'] +endif +if rc.version().version_compare('< 1.54') + rust_args += ['--cfg', 'no_literal_from_str'] +endif +if rc.version().version_compare('< 1.55') + rust_args += ['--cfg', 'no_group_open_close'] +endif +if rc.version().version_compare('< 1.57') + rust_args += ['--cfg', 'no_is_available'] +endif + +u_ind = subproject('unicode-ident').get_variable('lib') + +lib = static_library( + 'proc_macro2', + 'src/lib.rs', + rust_args : rust_args, + override_options : ['rust_std=2018', 'build.rust_std=2018'], + link_with : u_ind, + rust_abi : 'rust', + native : true, +) diff --git a/subprojects/packagefiles/quote/meson.build b/subprojects/packagefiles/quote/meson.build new file mode 100644 index 00000000000..58fea738922 --- /dev/null +++ b/subprojects/packagefiles/quote/meson.build @@ -0,0 +1,32 @@ +project( + 'quote', + 'rust', + version : '1.0.25', + license :'MIT OR Apache-2.0', +) + +rc = meson.get_compiler('rust') + +if rc.version().version_compare('< 1.31') + error('Minimum rustc supported version is 1.31') +endif + +rust_args = ['--cfg', 'feature="default"', '--cfg', 'feature="proc-macro"'] +if rc.version().version_compare('< 1.53') + rust_args += ['--cfg', 'needs_invalid_span_workaround'] +endif + +pm2 = subproject('proc-macro2').get_variable('lib') + +# XXX: workround for meson bug: https://github.com/mesonbuild/meson/issues/11306 +rust_args += ['-L', 'dependency=subprojects/unicode-ident'] + +lib = static_library( + 'quote', + 'src/lib.rs', + rust_args : rust_args, + override_options : ['rust_std=2018', 'build.rust_std=2018'], + link_with : pm2, + rust_abi : 'rust', + native : true, +) diff --git a/subprojects/packagefiles/syn/meson.build b/subprojects/packagefiles/syn/meson.build new file mode 100644 index 00000000000..f7ea5ec011d --- /dev/null +++ b/subprojects/packagefiles/syn/meson.build @@ -0,0 +1,50 @@ +project( + 'syn', + 'rust', + version : '2.0.15', + license :'MIT OR Apache-2.0', +) + +rc = meson.get_compiler('rust') + + +rust_args = [ + '--cfg', 'feature="default"', + '--cfg', 'feature="derive"', + '--cfg', 'feature="parsing"', + '--cfg', 'feature="printing"', + '--cfg', 'feature="clone-impls"', + '--cfg', 'feature="proc-macro"', + '--cfg', 'feature="quote"', +] +if rc.version().version_compare('< 1.36') + rust_args += ['--cfg', 'syn_omit_await_from_token_macro'] +endif +if rc.version().version_compare('< 1.39') + rust_args += ['--cfg', 'syn_no_const_vec_new'] +endif +if rc.version().version_compare('< 1.40') + rust_args += ['--cfg', 'syn_no_non_exhaustive'] +endif +if rc.version().version_compare('< 1.56') + rust_args += ['--cfg', 'syn_no_negative_literal_parse'] +endif + +u_ind = subproject('unicode-ident').get_variable('lib') +quote = subproject('quote').get_variable('lib') +pm2 = subproject('proc-macro2').get_variable('lib') + + +lib = static_library( + 'syn', + 'src/lib.rs', + rust_args : rust_args, + override_options : ['rust_std=2021', 'build.rust_std=2021'], + link_with : [u_ind, quote, pm2], + rust_abi : 'rust', + native : true, +) + +dep_syn = declare_dependency( + link_with : [lib, u_ind, quote, pm2], +) diff --git a/subprojects/packagefiles/unicode-ident/meson.build b/subprojects/packagefiles/unicode-ident/meson.build new file mode 100644 index 00000000000..89fdf8a87dc --- /dev/null +++ b/subprojects/packagefiles/unicode-ident/meson.build @@ -0,0 +1,14 @@ +project( + 'unicode-ident', + 'rust', + version : '1.0.6', + license : '(MIT or Apache-2.0) AND Unicode-DFS-2016)', +) + +lib = static_library( + 'unicode_ident', + 'src/lib.rs', + override_options : ['rust_std=2018', 'build.rust_std=2018'], + rust_abi : 'rust', + native : true, +) diff --git a/subprojects/proc-macro2.wrap b/subprojects/proc-macro2.wrap new file mode 100644 index 00000000000..17ecce13966 --- /dev/null +++ b/subprojects/proc-macro2.wrap @@ -0,0 +1,6 @@ +[wrap-file] +directory = proc-macro2-1.0.56 +source_url = https://crates.io/api/v1/crates/proc-macro2/1.0.56/download +source_filename = proc-macro2-1.0.56.tar.gz +source_hash = 2b63bdb0cd06f1f4dedf69b254734f9b45af66e4a031e42a7480257d9898b435 +patch_directory = proc-macro2 diff --git a/subprojects/quote.wrap b/subprojects/quote.wrap new file mode 100644 index 00000000000..7861ad1cf59 --- /dev/null +++ b/subprojects/quote.wrap @@ -0,0 +1,6 @@ +[wrap-file] +directory = quote-1.0.25 +source_url = https://crates.io/api/v1/crates/quote/1.0.25/download +source_filename = quote-1.0.25.tar.gz +source_hash = 5308e8208729c3e1504a6cfad0d5daacc4614c9a2e65d1ea312a34b5cb00fe84 +patch_directory = quote diff --git a/subprojects/syn.wrap b/subprojects/syn.wrap new file mode 100644 index 00000000000..18a7b168639 --- /dev/null +++ b/subprojects/syn.wrap @@ -0,0 +1,6 @@ +[wrap-file] +directory = syn-2.0.15 +source_url = https://crates.io/api/v1/crates/syn/2.0.15/download +source_filename = syn-2.0.15.tar.gz +source_hash = a34fcf3e8b60f57e6a14301a2e916d323af98b0ea63c599441eec8558660c822 +patch_directory = syn diff --git a/subprojects/unicode-ident.wrap b/subprojects/unicode-ident.wrap new file mode 100644 index 00000000000..a1b66a0c175 --- /dev/null +++ b/subprojects/unicode-ident.wrap @@ -0,0 +1,6 @@ +[wrap-file] +directory = unicode-ident-1.0.6 +source_url = https://crates.io/api/v1/crates/unicode-ident/1.0.6/download +source_filename = unicode-ident-1.0.6.tar.gz +source_hash = 84a22b9f218b40614adcb3f4ff08b703773ad44fa9423e4e0d346d5db86e4ebc +patch_directory = unicode-ident