From: Chun-wei Fan Date: Wed, 26 Jan 2022 05:10:26 +0000 (+0800) Subject: meson: Port install scripts for cmd.exe shells X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7bd1b6588216b015c19ef84a2b0531d7a0960f4b;p=thirdparty%2Fvala.git meson: Port install scripts for cmd.exe shells On Windows builds using Visual Studio-like compilers, we are using cmd.exe shells, so we do the symlinking of the tools and man pages using the commands that Windows provides. Also, group the various programs and man pages together so that we have single commands for each of the subdirs that we want to run the install scripts, to make things simpler. --- diff --git a/compiler/meson.build b/compiler/meson.build index d2761a44d..a07330f69 100644 --- a/compiler/meson.build +++ b/compiler/meson.build @@ -20,7 +20,14 @@ valac_exe = executable( vala_name = 'vala@0@'.format(vala_version_suffix) -# https://github.com/mesonbuild/meson/issues/1602 -meson.add_install_script('sh', '-c', 'cd $DESTDIR@0@; ln -fs --relative @1@ valac'.format(join_paths(get_option('prefix'), get_option('bindir')), valac_name)) -meson.add_install_script('sh', '-c', 'cd $DESTDIR@0@; ln -fs --relative @1@ @2@'.format(join_paths(get_option('prefix'), get_option('bindir')), valac_name, vala_name)) -meson.add_install_script('sh', '-c', 'cd $DESTDIR@0@; ln -fs --relative @1@ vala'.format(join_paths(get_option('prefix'), get_option('bindir')), valac_name)) + +valac_names = [ 'valac', vala_name, 'vala' ] + +foreach name: valac_names + if cc.get_argument_syntax() == 'msvc' + meson.add_install_script('cmd', '/c', 'cd /d @0@ & (if exist @2@.exe del @2@.exe) & mklink @2@.exe @1@.exe'.format(join_paths(get_option('prefix'), get_option('bindir')).replace('/','\\'), valac_name, name)) + else + # https://github.com/mesonbuild/meson/issues/1602 + meson.add_install_script('sh', '-c', 'cd $DESTDIR@0@; ln -fs --relative @1@ @2@'.format(join_paths(get_option('prefix'), get_option('bindir')), valac_name, name)) + endif +endforeach diff --git a/doc/meson.build b/doc/meson.build index c5763e518..43620b98e 100644 --- a/doc/meson.build +++ b/doc/meson.build @@ -55,14 +55,20 @@ else install_man(manpages) endif -# https://github.com/mesonbuild/meson/issues/1602 -meson.add_install_script('sh', '-c', 'cd $DESTDIR@0@/man1; ln -fs --relative vala-gen-introspect.1 @1@'.format(join_paths(get_option('prefix'), get_option('mandir')), 'vala-gen-introspect@0@.1'.format(vala_version_suffix))) -meson.add_install_script('sh', '-c', 'cd $DESTDIR@0@/man1; ln -fs --relative valac.1 @1@'.format(join_paths(get_option('prefix'), get_option('mandir')), 'valac@0@.1'.format(vala_version_suffix))) -meson.add_install_script('sh', '-c', 'cd $DESTDIR@0@/man1; ln -fs --relative vapigen.1 @1@'.format(join_paths(get_option('prefix'), get_option('mandir')), 'vapigen@0@.1'.format(vala_version_suffix))) +man_names = [ 'vala-gen-introspect', 'valac', 'vapigen' ] if valadoc_enabled - meson.add_install_script('sh', '-c', 'cd $DESTDIR@0@/man1; ln -fs --relative valadoc.1 @1@'.format(join_paths(get_option('prefix'), get_option('mandir')), 'valadoc@0@.1'.format(vala_version_suffix))) + man_names += 'valadoc' endif +foreach name: man_names + if cc.get_argument_syntax() == 'msvc' + meson.add_install_script('cmd', '/c', 'cd /d @0@\man1 & (if exist @1@.1 del @1@.1) & mklink @1@.1 @2@.1'.format(join_paths(get_option('prefix'), get_option('mandir')).replace('/','\\'), '@1@@0@'.format(vala_version_suffix, name), name)) + else + # https://github.com/mesonbuild/meson/issues/1602 + meson.add_install_script('sh', '-c', 'cd $DESTDIR@0@/man1; ln -fs --relative @2@.1 @1@'.format(join_paths(get_option('prefix'), get_option('mandir'), name), '@1@@0@.1'.format(vala_version_suffix, name))) + endif +endforeach + if valadoc_enabled valadoc_flags = [ diff --git a/valadoc/meson.build b/valadoc/meson.build index 08e891e5b..158f78903 100644 --- a/valadoc/meson.build +++ b/valadoc/meson.build @@ -15,8 +15,16 @@ valadoc_exe = executable( install: true, ) -# https://github.com/mesonbuild/meson/issues/1602 -meson.add_install_script('sh', '-c', 'cd $DESTDIR@0@; ln -fs --relative @1@ valadoc'.format(join_paths(get_option('prefix'), get_option('bindir')), valadoc_name)) +valadoc_names = [ 'valadoc' ] + +foreach name: valadoc_names + if cc.get_argument_syntax() == 'msvc' + meson.add_install_script('cmd', '/c', 'cd /d @0@ & (if exist @2@.exe del @2@.exe) & mklink @2@.exe @1@.exe'.format(join_paths(get_option('prefix'), get_option('bindir')).replace('/','\\'), valadoc_name, name)) + else + # https://github.com/mesonbuild/meson/issues/1602 + meson.add_install_script('sh', '-c', 'cd $DESTDIR@0@; ln -fs --relative @1@ @2@'.format(join_paths(get_option('prefix'), get_option('bindir')), valadoc_name, name)) + endif +endforeach subdir('doclets') subdir('icons') diff --git a/vapigen/meson.build b/vapigen/meson.build index df3e18c5a..72af0cc78 100644 --- a/vapigen/meson.build +++ b/vapigen/meson.build @@ -13,9 +13,6 @@ vapigen_exe = executable( vala_args: ['--pkg', 'gidl', '--vapidir', join_paths(meson.source_root(), 'gobject-introspection')], ) -# https://github.com/mesonbuild/meson/issues/1602 -meson.add_install_script('sh', '-c', 'cd $DESTDIR@0@; ln -fs --relative @1@ vapigen'.format(join_paths(get_option('prefix'), get_option('bindir')), vapigen_name)) - vapicheck_sources = files( 'valavapicheck.vala', ) @@ -30,8 +27,16 @@ executable( vala_args: ['--pkg', 'gidl', '--vapidir', join_paths(meson.source_root(), 'gobject-introspection')], ) -# https://github.com/mesonbuild/meson/issues/1602 -meson.add_install_script('sh', '-c', 'cd $DESTDIR@0@; ln -fs --relative @1@ vapicheck'.format(join_paths(get_option('prefix'), get_option('bindir')), vapicheck_name)) +vapitools_names = [ 'vapigen', 'vapicheck' ] + +foreach name: vapitools_names + if cc.get_argument_syntax() == 'msvc' + meson.add_install_script('cmd', '/c', 'cd /d @0@ & (if exist @1@.exe del @1@.exe) & mklink @1@.exe @1@@2@.exe'.format(join_paths(get_option('prefix'), get_option('bindir')).replace('/','\\'), name, vala_version_suffix)) + else + # https://github.com/mesonbuild/meson/issues/1602 + meson.add_install_script('sh', '-c', 'cd $DESTDIR@0@; ln -fs --relative @1@@2@ @1@'.format(join_paths(get_option('prefix'), get_option('bindir')), name, vala_version_suffix)) + endif +endforeach configure_file( input: 'vapigen.pc.in', diff --git a/vapigen/vala-gen-introspect/meson.build b/vapigen/vala-gen-introspect/meson.build index 79ab97379..a64a40808 100644 --- a/vapigen/vala-gen-introspect/meson.build +++ b/vapigen/vala-gen-introspect/meson.build @@ -5,5 +5,13 @@ vala_gen_introspect_sh = configure_file( install_dir: get_option('bindir'), ) -# https://github.com/mesonbuild/meson/issues/1602 -meson.add_install_script('sh', '-c', 'cd $DESTDIR@0@; ln -fs @1@ vala-gen-introspect'.format(join_paths(get_option('prefix'), get_option('bindir')), 'vala-gen-introspect@0@'.format(vala_version_suffix))) +vala_gen_introspect_names = [ 'vala-gen-introspect' ] + +foreach name: vala_gen_introspect_names + if cc.get_argument_syntax() == 'msvc' + meson.add_install_script('cmd', '/c', 'cd /d @0@ & (if exist @2@ del @2@) & mklink @2@ @1@'.format(join_paths(get_option('prefix'), get_option('bindir')).replace('/','\\'), '@1@@0@'.format(vala_version_suffix, name), name)) + else + # https://github.com/mesonbuild/meson/issues/1602 + meson.add_install_script('sh', '-c', 'cd $DESTDIR@0@; ln -fs @1@ @2@'.format(join_paths(get_option('prefix'), get_option('bindir'), name), '@1@@0@'.format(vala_version_suffix, name))) + endif +endforeach