{"thread":{"id":"24969","subject":"[RFC/PATCH] Avoid TAGS/tags warning from GNU Make","startedAt":"2010-09-04T09:03:32Z","lastAt":"2010-09-04T16:34:07Z","messageCount":4,"participants":["Jonathan Nieder","Matthieu Moy","Junio C Hamano"],"isPatch":true,"patchVersion":1,"patchTotal":null},"messages":[{"id":"149826","messageId":"20100904090331.GA10903@burratino","threadId":"24969","inReplyTo":null,"subject":"[RFC/PATCH] Avoid TAGS/tags warning from GNU Make","fromName":"Jonathan Nieder","fromEmail":"jrnieder@gmail.com","sentAt":"2010-09-04T09:03:32Z","receivedAt":"2010-09-04T09:03:32Z","isPatch":true,"sender":{"key":"jrnieder@gmail.com","avatar":"https://avatars.githubusercontent.com/u/281595?v=4"},"body":"From: Johannes Schindelin <johannes.schindelin@gmx.de>\nDate: Thu, 22 Oct 2009 19:04:17 +0200\n\nMinGW make considers the TAGS and tags targets to refer to\nthe same file:\n\n Makefile: warning: overriding commands for target `TAGS'\n Makefile: warning: ignoring old commands for target `TAGS'\n\nSuppress both targets on that platform.\n\nCc: Fredrik Kuivinen <frekui@gmail.com>\nSigned-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>\nSigned-off-by: Jonathan Nieder <jrnieder@gmail.com>\n---\nThis is kind of ugly; I hope there is a better way.  Maybe mingw\nmake ought to special-case the TAGS name, since this has come up in\nother projects[1], too.\n\n[1] e.g., http://thread.gmane.org/gmane.comp.video.mplayer.devel/51542/focus=51545\n\n Makefile |    2 ++\n 1 files changed, 2 insertions(+), 0 deletions(-)\n\ndiff --git a/Makefile b/Makefile\nindex 40fbcae..a1d4550 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -1952,6 +1952,7 @@ info:\n pdf:\n \t$(MAKE) -C Documentation pdf\n \n+ifeq (,$(findstring MINGW,$(uname_S)))\n TAGS:\n \t$(RM) TAGS\n \t$(FIND) . -name '*.[hcS]' -print | xargs etags -a\n@@ -1959,6 +1960,7 @@ TAGS:\n tags:\n \t$(RM) tags\n \t$(FIND) . -name '*.[hcS]' -print | xargs ctags -a\n+endif\n \n cscope:\n \t$(RM) cscope*\n-- \n1.7.2.3\n"},{"id":"149827","messageId":"vpqeid97sn6.fsf@bauges.imag.fr","threadId":"24969","inReplyTo":"20100904090331.GA10903@burratino","subject":"Re: [RFC/PATCH] Avoid TAGS/tags warning from GNU Make","fromName":"Matthieu Moy","fromEmail":"matthieu.moy@grenoble-inp.fr","sentAt":"2010-09-04T09:41:17Z","receivedAt":"2010-09-04T09:41:17Z","isPatch":true,"sender":{"key":"matthieu.moy@grenoble-inp.fr","avatar":"https://gravatar.com/avatar/72c8a2705971a25dfaff23cece15130d405685845d911aedd5667ace277f3fc5?d=mp&s=160"},"body":"Jonathan Nieder <jrnieder@gmail.com> writes:\n\n> From: Johannes Schindelin <johannes.schindelin@gmx.de>\n> Date: Thu, 22 Oct 2009 19:04:17 +0200\n>\n> MinGW make considers the TAGS and tags targets to refer to\n> the same file:\n>\n>  Makefile: warning: overriding commands for target `TAGS'\n>  Makefile: warning: ignoring old commands for target `TAGS'\n>\n> Suppress both targets on that platform.\n\nWouldn't it be more sensible to rename them (like ETAGS/CTAGS) on\nmingw instead, in case someone wants to use these files on windows?\n\nWell, anyway, it doesn't harm much to remove them, they're just\nconvenience targets to be used by text editors, not by the build\nsystem itself.\n\n-- \nMatthieu Moy\nhttp://www-verimag.imag.fr/~moy/\n"},{"id":"149850","messageId":"7v8w3hxz81.fsf@alter.siamese.dyndns.org","threadId":"24969","inReplyTo":"vpqeid97sn6.fsf@bauges.imag.fr","subject":"Re: [RFC/PATCH] Avoid TAGS/tags warning from GNU Make","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2010-09-04T16:14:38Z","receivedAt":"2010-09-04T16:14:38Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Matthieu Moy <Matthieu.Moy@grenoble-inp.fr> writes:\n\n> Jonathan Nieder <jrnieder@gmail.com> writes:\n>\n>> From: Johannes Schindelin <johannes.schindelin@gmx.de>\n>> Date: Thu, 22 Oct 2009 19:04:17 +0200\n>>\n>> MinGW make considers the TAGS and tags targets to refer to\n>> the same file:\n>>\n>>  Makefile: warning: overriding commands for target `TAGS'\n>>  Makefile: warning: ignoring old commands for target `TAGS'\n>>\n>> Suppress both targets on that platform.\n>\n> Wouldn't it be more sensible to rename them (like ETAGS/CTAGS) on\n> mingw instead, in case someone wants to use these files on windows?\n\nI think that makes much more sense.  How about doing it that way, perhaps\nsomething like this?\n\nBy the way, doesn't case insensitive HFS+ have the same issue?\n\n-- >8 --\n[Subject] MinGW: avoid collisions between \"tags\" and \"TAGS\"\n\nOn case insensitive filesystems, \"tags\" and \"TAGS\" target will try to\noverwrite the same file.  Allow MinGW to use \"ETAGS\" instead.\n\nThese two targets do produce real files; do not put them on .PHONY target\nlist.\n\nSigned-off-by: Junio C Hamano <gitster@pobox.com>\n---\n\n Makefile |   13 ++++++++-----\n 1 files changed, 8 insertions(+), 5 deletions(-)\n\ndiff --git a/Makefile b/Makefile\nindex 8b7c243..d87efdd 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -390,6 +390,8 @@ SCRIPTS = $(patsubst %.sh,%,$(SCRIPT_SH)) \\\n \t  $(patsubst %.py,%,$(SCRIPT_PYTHON)) \\\n \t  git-instaweb\n \n+ETAGS_TARGET = TAGS\n+\n # Empty...\n EXTRA_PROGRAMS =\n \n@@ -1120,6 +1122,7 @@ ifneq (,$(findstring MINGW,$(uname_S)))\n \tNO_REGEX = YesPlease\n \tNO_PYTHON = YesPlease\n \tBLK_SHA1 = YesPlease\n+\tETAGS_TARGET = ETAGS\n \tCOMPAT_CFLAGS += -D__USE_MINGW_ACCESS -DNOGDI -Icompat -Icompat/fnmatch -Icompat/win32\n \tCOMPAT_CFLAGS += -DSTRIP_EXTENSION=\\\".exe\\\"\n \tCOMPAT_OBJS += compat/mingw.o compat/fnmatch/fnmatch.o compat/winansi.o \\\n@@ -1954,9 +1957,9 @@ info:\n pdf:\n \t$(MAKE) -C Documentation pdf\n \n-TAGS:\n-\t$(RM) TAGS\n-\t$(FIND) . -name '*.[hcS]' -print | xargs etags -a\n+$(ETAGS_TARGET):\n+\t$(RM) $(ETAGS_TARGET)\n+\t$(FIND) . -name '*.[hcS]' -print | xargs etags -a -o $(ETAGS_TARGET)\n \n tags:\n \t$(RM) tags\n@@ -2228,7 +2231,7 @@ clean:\n \t$(RM) $(TEST_PROGRAMS)\n \t$(RM) -r bin-wrappers\n \t$(RM) -r $(dep_dirs)\n-\t$(RM) *.spec *.pyc *.pyo */*.pyc */*.pyo common-cmds.h TAGS tags cscope*\n+\t$(RM) *.spec *.pyc *.pyo */*.pyc */*.pyo common-cmds.h $(ETAGS_TARGET) tags cscope*\n \t$(RM) -r autom4te.cache\n \t$(RM) config.log config.mak.autogen config.mak.append config.status config.cache\n \t$(RM) -r $(GIT_TARNAME) .doc-tmp-dir\n@@ -2252,7 +2255,7 @@ endif\n \n .PHONY: all install clean strip\n .PHONY: shell_compatibility_test please_set_SHELL_PATH_to_a_more_modern_shell\n-.PHONY: FORCE TAGS tags cscope\n+.PHONY: FORCE cscope\n \n ### Check documentation\n #\n"},{"id":"149852","messageId":"20100904163407.GA31513@burratino","threadId":"24969","inReplyTo":"7v8w3hxz81.fsf@alter.siamese.dyndns.org","subject":"Re: [RFC/PATCH] Avoid TAGS/tags warning from GNU Make","fromName":"Jonathan Nieder","fromEmail":"jrnieder@gmail.com","sentAt":"2010-09-04T16:34:07Z","receivedAt":"2010-09-04T16:34:07Z","isPatch":true,"sender":{"key":"jrnieder@gmail.com","avatar":"https://avatars.githubusercontent.com/u/281595?v=4"},"body":"Junio C Hamano wrote:\n\n> +++ b/Makefile\n> @@ -390,6 +390,8 @@ SCRIPTS = $(patsubst %.sh,%,$(SCRIPT_SH)) \\\n>  \t  $(patsubst %.py,%,$(SCRIPT_PYTHON)) \\\n>  \t  git-instaweb\n>  \n> +ETAGS_TARGET = TAGS\n[...]\n> @@ -1954,9 +1957,9 @@ info:\n>  pdf:\n>  \t$(MAKE) -C Documentation pdf\n>  \n> -TAGS:\n> -\t$(RM) TAGS\n> -\t$(FIND) . -name '*.[hcS]' -print | xargs etags -a\n> +$(ETAGS_TARGET):\n> +\t$(RM) $(ETAGS_TARGET)\n> +\t$(FIND) . -name '*.[hcS]' -print | xargs etags -a -o $(ETAGS_TARGET)\n\nNice.\n\n> @@ -2252,7 +2255,7 @@ endif\n>  \n>  .PHONY: all install clean strip\n>  .PHONY: shell_compatibility_test please_set_SHELL_PATH_to_a_more_modern_shell\n> -.PHONY: FORCE TAGS tags cscope\n> +.PHONY: FORCE cscope\n\nmake: `tags' is up to date.\n\nHow about something like this squashed in or on top?\n\n-- 8< --\nSubject: Makefile: regenerate editor tag files when asked\n\ntags and TAGS depend on all source files, but it is easier to teach\nthe Makefile to regenerate them every time the user asks than to\ndeclare that.\n\nSigned-off-by: Jonathan Nieder <jrnieder@gmail.com>\n---\n Makefile |    4 ++--\n 1 files changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/Makefile b/Makefile\nindex 52252d4..205fe58 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -1955,11 +1955,11 @@ info:\n pdf:\n \t$(MAKE) -C Documentation pdf\n \n-$(ETAGS_TARGET):\n+$(ETAGS_TARGET): FORCE\n \t$(RM) $(ETAGS_TARGET)\n \t$(FIND) . -name '*.[hcS]' -print | xargs etags -a -o $(ETAGS_TARGET)\n \n-tags:\n+tags: FORCE\n \t$(RM) tags\n \t$(FIND) . -name '*.[hcS]' -print | xargs ctags -a\n \n-- \n1.7.2.3\n"}]}