meson: add support for ctags
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Mon, 3 Jul 2017 16:42:29 +0000 (12:42 -0400)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Mon, 3 Jul 2017 16:42:29 +0000 (12:42 -0400)
This is a squash of casync commits
https://github.com/systemd/casync/commit/02fbbdb2b9a926a695a3ede7f3e3c17b9779db1a
(by Silvio Fricke)
and https://github.com/systemd/casync/commit/b687a94b1e24df73d32f8cdcee29f3c00eae69c9.

Instead of checking during every meson config whether etags are
available, just try to call them and error out if not. This has
the advantage that the target is always available (if git is installed),
and the error message gives a hint what needs to be installed.

The naming is confusing, but etags(1) is pretty clear:
- emacs expects TAGS file in etags format
- vi expects tags file in ctags format
and automake docs are pretty clear too:
- tags target generates TAGS file
- ctags target generates tags file

meson.build

index a301454..ce59d18 100644 (file)
@@ -451,7 +451,6 @@ awk = find_program('awk')
 m4 = find_program('m4')
 stat = find_program('stat')
 git = find_program('git', required : false)
-etags = find_program('etags', required : false)
 
 meson_make_symlink = meson.source_root() + '/tools/meson-make-symlink.sh'
 mkdir_p = 'mkdir -p $DESTDIR/@0@'
@@ -2321,7 +2320,7 @@ endforeach
 
 ############################################################
 
-if git.found() and etags.found()
+if git.found()
         all_files = run_command(
                 git,
                 ['--git-dir=@0@/.git'.format(meson.source_root()),
@@ -2330,9 +2329,13 @@ if git.found() and etags.found()
         all_files = files(all_files.stdout().split())
 
         run_target(
-                'TAGS',
+                'tags',
+                input : all_files,
+                command : ['env', 'etags', '-o', '@0@/TAGS'.format(meson.source_root())] + all_files)
+        run_target(
+                'ctags',
                 input : all_files,
-                command : [etags, '-o', '@0@/TAGS'.format(meson.source_root())] + all_files)
+                command : ['env', 'ctags', '-o', '@0@/tags'.format(meson.source_root())] + all_files)
 endif
 
 if git.found()