14e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#!/bin/bash 24e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 34e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)# Copyright 2013 The Chromium Authors. All rights reserved. 44e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)# Use of this source code is governed by a BSD-style license that can be 54e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)# found in the LICENSE file. 64e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 74e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)if [[ a"`ctags --version | head -1 | grep \"^Exuberant Ctags\"`" == "a" ]]; then 84e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) cat <<EOF 94e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) You must be using Exuberant Ctags, not just standard GNU ctags. If you are on 104e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) Debian or a related flavor of Linux, you may want to try running 114e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) apt-get install exuberant-ctags. 124e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)EOF 134e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) exit 144e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)fi 154e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 164e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)CHROME_SRC_DIR="$PWD" 174e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 184e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)fail() { 194e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) echo "Failed to create ctags for $1" 204e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) exit 1 214e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)} 224e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 234e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)ctags_cmd() { 244e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) echo "ctags --languages=C++ $1 --exclude=.git -R -f .tmp_tags" 254e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)} 264e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 274e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)build_dir() { 284e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) local extraexcludes="" 294e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) if [[ a"$1" == "a--extra-excludes" ]]; then 304e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) extraexcludes="--exclude=third_party --exclude=build --exclude=out" 314e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) shift 324e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) fi 334e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 344e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) cd "$CHROME_SRC_DIR/$1" || fail $1 354e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) # Redirect error messages so they aren't seen because they are almost always 364e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) # errors about components that you just happen to have not built (NaCl, for 374e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) # example). 384e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) $(ctags_cmd "$extraexcludes") 2> /dev/null || fail $1 394e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) mv -f .tmp_tags .tags 404e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)} 414e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 424e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)# We always build the top level but leave all submodules as optional. 434e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)build_dir --extra-excludes "" "top level" 444e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 454e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)# Build any other directies that are listed on the command line. 464e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)for dir in $@; do 474e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) build_dir "$1" 484e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) shift 494e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)done 50