]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
meson: Port install scripts for cmd.exe shells
authorChun-wei Fan <fanchunwei@src.gnome.org>
Wed, 26 Jan 2022 05:10:26 +0000 (13:10 +0800)
committerChun-wei Fan <fanchunwei@src.gnome.org>
Fri, 28 Jan 2022 08:16:43 +0000 (16:16 +0800)
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.

compiler/meson.build
doc/meson.build
valadoc/meson.build
vapigen/meson.build
vapigen/vala-gen-introspect/meson.build

index d2761a44d432b2fec2008f42f2b98fca5a94c6c9..a07330f6991ca33c43084b37bc23ba3a3ae042f7 100644 (file)
@@ -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
index c5763e5186501b7a1f88f287af9c663ac49a1c56..43620b98e7021c887afe21fd8a20eb887c8cb7d8 100644 (file)
@@ -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 = [
index 08e891e5bf74b0c8bc38e13b8df17445e8264cf1..158f78903447b9a02074459fede6057d6d94e985 100644 (file)
@@ -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')
index df3e18c5af4fdf6a942378eee578e351742ba7dc..72af0cc7875976c51f5be9dafccdac117e09e73c 100644 (file)
@@ -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',
index 79ab9737917754de2ffda44f7bd4156653a59081..a64a40808dcf64a5b72c5a21b4cbe58b7b47360b 100644 (file)
@@ -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