| Index: Makefile
 | 
| diff --git a/Makefile b/Makefile
 | 
| index a0c08a6d9634c7b5e7f5590f1e6905701f288fbf..afa155239183a63f1ffc935b7b6c727ce6f8c75a 100644
 | 
| --- a/Makefile
 | 
| +++ b/Makefile
 | 
| @@ -432,7 +432,7 @@ native.clean:
 | 
|  	rm -rf $(OUTDIR)/native
 | 
|  	find $(OUTDIR) -regex '.*\(host\|target\)\.native\.mk' -delete
 | 
|  
 | 
| -clean: $(addsuffix .clean, $(ARCHES) $(ANDROID_ARCHES) $(NACL_ARCHES)) native.clean gtags.clean
 | 
| +clean: $(addsuffix .clean, $(ARCHES) $(ANDROID_ARCHES) $(NACL_ARCHES)) native.clean gtags.clean tags.clean
 | 
|  
 | 
|  # GYP file generation targets.
 | 
|  OUT_MAKEFILES = $(addprefix $(OUTDIR)/Makefile.,$(BUILDS))
 | 
| @@ -497,11 +497,21 @@ gtags.files: $(GYPFILES) $(ENVFILE)
 | 
|  
 | 
|  # We need to manually set the stack limit here, to work around bugs in
 | 
|  # gmake-3.81 and global-5.7.1 on recent 64-bit Linux systems.
 | 
| -GPATH GRTAGS GSYMS GTAGS: gtags.files $(shell cat gtags.files 2> /dev/null)
 | 
| +# Using $(wildcard ...) gracefully ignores non-existing files, so that stale
 | 
| +# gtags.files after switching branches don't cause recipe failures.
 | 
| +GPATH GRTAGS GSYMS GTAGS: gtags.files $(wildcard $(shell cat gtags.files 2> /dev/null))
 | 
|  	@bash -c 'ulimit -s 10240 && GTAGSFORCECPP=yes gtags -i -q -f $<'
 | 
|  
 | 
|  gtags.clean:
 | 
|  	rm -f gtags.files GPATH GRTAGS GSYMS GTAGS
 | 
|  
 | 
| +tags: gtags.files $(wildcard $(shell cat gtags.files 2> /dev/null))
 | 
| +	@(ctags --version | grep 'Exuberant Ctags' >/dev/null) || \
 | 
| +		(echo "Please install Exuberant Ctags (check 'ctags --version')" >&2; false)
 | 
| +	ctags --fields=+l -L $<
 | 
| +
 | 
| +tags.clean:
 | 
| +	rm -r tags
 | 
| +
 | 
|  dependencies builddeps:
 | 
|  	$(error Use 'gclient sync' instead)
 | 
| 
 |