Commit 8a7db4c3 authored by Tor Didriksen's avatar Tor Didriksen

Bug#28200422 USE CTAGS RATHER THAN ETAGS FOR GENERATING TAGS FILE

Switch to Exuberant Ctags when generating TAGS, since it is much
better at parsing modern C++

Change-Id: I9652012708df7e7edf93161097a547f60fb0cf79
(cherry picked from commit 125b2804fbbb8662632f761f39aeef0a7f9cebb3)
parent 394be4f1
# Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 2010, 2018, Oracle and/or its affiliates. All rights reserved.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
......@@ -15,12 +15,29 @@
# Generate tag files
IF(UNIX)
ADD_CUSTOM_TARGET (tags
COMMAND support-files/build-tags
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
)
ADD_CUSTOM_TARGET (ctags
COMMAND ctags -R -f CTAGS
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
)
FIND_PROGRAM(CTAGS_EXECUTABLE ctags)
IF(NOT CTAGS_EXECUTABLE)
RETURN()
ENDIF()
EXEC_PROGRAM(${CTAGS_EXECUTABLE} ARGS --version OUTPUT_VARIABLE CTAGS_VERSION)
IF(CTAGS_VERSION MATCHES "Exuberant")
ADD_CUSTOM_TARGET(tags
COMMAND support-files/build-tags
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
)
ADD_CUSTOM_TARGET(ctags
COMMAND support-files/build-tags ctags
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
)
ELSE()
ADD_CUSTOM_TARGET (tags
COMMAND exit 1
COMMENT "Please install Exuberant Ctags"
)
ADD_CUSTOM_TARGET (ctags
COMMAND exit 1
COMMENT "Please install Exuberant Ctags"
)
ENDIF()
ENDIF()
#! /bin/sh
#! /bin/bash
rm -f TAGS
# Copyright (c) 2002, 2018, Oracle and/or its affiliates. All rights reserved.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; version 2 of the License.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
tagstyle=${1:-etags}
common_opts="--langmap=C++:+.ic,YACC:+.yy -I MY_ATTRIBUTE+"
case $tagstyle in
"etags") tagfile=TAGS
tagopt="-e $common_opts"
;;
"ctags") tagfile=tags
tagopt="--fields=+l $common_opts"
;;
*) echo "$0 [etags|ctags]"
exit 1
;;
esac
rm -f $tagfile
filter='\.cpp$\|\.cc$\|\.c$\|\.h$\|sql_yacc\.yy$\|\.hpp$\|\.ic$'
list="find . -type f"
git rev-parse >/dev/null 2>/dev/null && list="git ls-files"
$list |grep $filter |while read f;
do
etags -o TAGS --append $f
done
ctags $tagopt -o $tagfile $( $list | grep $filter )
echo "wrote file `pwd`/$tagfile"
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment