[vala/meson-msvc] meson: Port install scripts for cmd.exe shells




commit 5d5e86d23e3d1c589d4bffcb59f28dcb0d3c6f77
Author: Chun-wei Fan <fanchunwei src gnome org>
Date:   Wed Jan 26 13:10:26 2022 +0800

    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.

 compiler/meson.build                    | 15 +++++++++++----
 doc/meson.build                         | 16 +++++++++++-----
 valadoc/meson.build                     | 12 ++++++++++--
 vapigen/meson.build                     | 15 ++++++++++-----
 vapigen/vala-gen-introspect/meson.build | 12 ++++++++++--
 5 files changed, 52 insertions(+), 18 deletions(-)
---
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


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]