{"thread":{"id":"21774","subject":"[PATCH 0/4] Makefile fixes","startedAt":"2009-11-28T11:25:46Z","lastAt":"2010-01-07T07:42:53Z","messageCount":20,"participants":["Jonathan Nieder","Junio C Hamano","Nanako Shiraishi","Linus Torvalds","Nicolas Pitre","Shawn O. Pearce"],"isPatch":true,"patchVersion":1,"patchTotal":4},"messages":[{"id":"128617","messageId":"20091128112546.GA10059@progeny.tock","threadId":"21774","inReplyTo":null,"subject":"[PATCH 0/4] Makefile fixes","fromName":"Jonathan Nieder","fromEmail":"jrnieder@gmail.com","sentAt":"2009-11-28T11:25:46Z","receivedAt":"2009-11-28T11:25:46Z","isPatch":true,"sender":{"key":"jrnieder@gmail.com","avatar":"https://avatars.githubusercontent.com/u/281595?v=4"},"body":"Here are the aforementioned small fixes for the Makefile, intended for\nmaint.  I hope they are of some use.\n\nJonathan Nieder (4):\n  Makefile: http-push.c uses the git headers\n  Makefile: make ppc/sha1ppc.o depend on GIT-CFLAGS\n  Makefile: fix .s pattern rule dependencies\n  Makefile: stop cleaning arm directory\n\n Makefile |   12 +++++-------\n 1 files changed, 5 insertions(+), 7 deletions(-)\n"},{"id":"128619","messageId":"20091128113115.GB10059@progeny.tock","threadId":"21774","inReplyTo":"20091128112546.GA10059@progeny.tock","subject":"[PATCH 1/4] Makefile: fix http-push.o dependencies","fromName":"Jonathan Nieder","fromEmail":"jrnieder@gmail.com","sentAt":"2009-11-28T11:31:15Z","receivedAt":"2009-11-28T11:31:15Z","isPatch":true,"sender":{"key":"jrnieder@gmail.com","avatar":"https://avatars.githubusercontent.com/u/281595?v=4"},"body":"Since it is not in LIB_OBJS, http-push.o needs an explicit\n$(GIT_H) dependency.\n\nSigned-off-by: Jonathan Nieder <jrnieder@gmail.com>\n---\nhttp-push.c begins:\n\n#include \"cache.h\"\n#include \"commit.h\"\n\n Makefile |    4 +---\n 1 files changed, 1 insertions(+), 3 deletions(-)\n\ndiff --git a/Makefile b/Makefile\nindex 856ba09..dc7c929 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -1557,9 +1557,7 @@ git-imap-send$X: imap-send.o $(GITLIBS)\n \t$(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) \\\n \t\t$(LIBS) $(OPENSSL_LINK) $(OPENSSL_LIBSSL)\n \n-http.o http-walker.o http-push.o: http.h\n-\n-http.o http-walker.o: $(LIB_H)\n+http.o http-walker.o http-push.o: http.h $(LIB_H)\n \n git-http-fetch$X: revision.o http.o http-walker.o http-fetch.o $(GITLIBS)\n \t$(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) \\\n-- \n1.6.5.3\n"},{"id":"128620","messageId":"20091128113323.GC10059@progeny.tock","threadId":"21774","inReplyTo":"20091128112546.GA10059@progeny.tock","subject":"[PATCH 2/4] Makefile: make ppc/sha1ppc.o depend on GIT-CFLAGS","fromName":"Jonathan Nieder","fromEmail":"jrnieder@gmail.com","sentAt":"2009-11-28T11:33:23Z","receivedAt":"2009-11-28T11:33:23Z","isPatch":true,"sender":{"key":"jrnieder@gmail.com","avatar":"https://avatars.githubusercontent.com/u/281595?v=4"},"body":"Any rule that makes use of ALL_CFLAGS should depend on GIT-CFLAGS\nto avoid trouble.  This one would not actually be affected by any\nbuild flags except the optimization level, so leaving the\ndependency out was mostly harmless.\n\nSigned-off-by: Jonathan Nieder <jrnieder@gmail.com>\n---\n Makefile |    2 +-\n 1 files changed, 1 insertions(+), 1 deletions(-)\n\ndiff --git a/Makefile b/Makefile\nindex dc7c929..bb3879e 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -1526,7 +1526,7 @@ git.o git.spec \\\n \t$(QUIET_CC)$(CC) -o $*.o -c $(ALL_CFLAGS) $<\n %.s: %.c GIT-CFLAGS\n \t$(QUIET_CC)$(CC) -S $(ALL_CFLAGS) $<\n-%.o: %.S\n+%.o: %.S GIT-CFLAGS\n \t$(QUIET_CC)$(CC) -o $*.o -c $(ALL_CFLAGS) $<\n \n exec_cmd.o: exec_cmd.c GIT-CFLAGS\n-- \n1.6.5.3\n"},{"id":"128621","messageId":"20091128113709.GD10059@progeny.tock","threadId":"21774","inReplyTo":"20091128112546.GA10059@progeny.tock","subject":"[PATCH 3/4] Makefile: fix .s pattern rule dependencies","fromName":"Jonathan Nieder","fromEmail":"jrnieder@gmail.com","sentAt":"2009-11-28T11:37:09Z","receivedAt":"2009-11-28T11:37:09Z","isPatch":true,"sender":{"key":"jrnieder@gmail.com","avatar":"https://avatars.githubusercontent.com/u/281595?v=4"},"body":"'make git.s' fails to regenerate an assembler listing if git.c\nhas not changed but a header it includes has.  The %.s: %.c\npattern rule is meant to be invoked by hand, so it would be\nbetter to make it always run.\n\nSigned-off-by: Jonathan Nieder <jrnieder@gmail.com>\n---\nThis adds yet another phony .FORCE-foo target.  Wouldn’t it be simpler\nto use a single target called .FORCE, or is there something I am\nmissing that that would break?\n\n Makefile |    4 ++--\n 1 files changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/Makefile b/Makefile\nindex bb3879e..cd210e3 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -1524,7 +1524,7 @@ git.o git.spec \\\n \n %.o: %.c GIT-CFLAGS\n \t$(QUIET_CC)$(CC) -o $*.o -c $(ALL_CFLAGS) $<\n-%.s: %.c GIT-CFLAGS\n+%.s: %.c GIT-CFLAGS .FORCE-LISTING\n \t$(QUIET_CC)$(CC) -S $(ALL_CFLAGS) $<\n %.o: %.S GIT-CFLAGS\n \t$(QUIET_CC)$(CC) -o $*.o -c $(ALL_CFLAGS) $<\n@@ -1859,7 +1859,7 @@ endif\n .PHONY: all install clean strip\n .PHONY: shell_compatibility_test please_set_SHELL_PATH_to_a_more_modern_shell\n .PHONY: .FORCE-GIT-VERSION-FILE TAGS tags cscope .FORCE-GIT-CFLAGS\n-.PHONY: .FORCE-GIT-BUILD-OPTIONS\n+.PHONY: .FORCE-GIT-BUILD-OPTIONS .FORCE-LISTING\n \n ### Check documentation\n #\n-- \n1.6.5.3\n"},{"id":"128622","messageId":"20091128114128.GE10059@progeny.tock","threadId":"21774","inReplyTo":"20091128112546.GA10059@progeny.tock","subject":"[PATCH 4/4] Makefile: do not clean arm directory","fromName":"Jonathan Nieder","fromEmail":"jrnieder@gmail.com","sentAt":"2009-11-28T11:41:28Z","receivedAt":"2009-11-28T11:41:28Z","isPatch":true,"sender":{"key":"jrnieder@gmail.com","avatar":"https://avatars.githubusercontent.com/u/281595?v=4"},"body":"The ARM SHA-1 implementation was removed by commit 30ae47b\n(remove ARM and Mozilla SHA1 implementations, 2009-08-17).  Prune\nits directory from the list of object files to delete in 'make\nclean'.\n\nSigned-off-by: Jonathan Nieder <jrnieder@gmail.com>\n---\nOne could argue that this should be left in, to allow 'make\nclean' to clean up after the old version in an upgrade.  But that\nway lies long rules for clean that never get tested for their\nintended purpose.\n\n Makefile |    2 +-\n 1 files changed, 1 insertions(+), 1 deletions(-)\n\ndiff --git a/Makefile b/Makefile\nindex cd210e3..47e1412 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -1833,7 +1833,7 @@ distclean: clean\n \t$(RM) configure\n \n clean:\n-\t$(RM) *.o block-sha1/*.o arm/*.o ppc/*.o compat/*.o compat/*/*.o xdiff/*.o \\\n+\t$(RM) *.o block-sha1/*.o ppc/*.o compat/*.o compat/*/*.o xdiff/*.o \\\n \t\t$(LIB_FILE) $(XDIFF_LIB)\n \t$(RM) $(ALL_PROGRAMS) $(BUILT_INS) git$X\n \t$(RM) $(TEST_PROGRAMS)\n-- \n1.6.5.3\n"},{"id":"128630","messageId":"7vk4xah6el.fsf@alter.siamese.dyndns.org","threadId":"21774","inReplyTo":"20091128113115.GB10059@progeny.tock","subject":"Re: [PATCH 1/4] Makefile: fix http-push.o dependencies","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2009-11-28T18:05:06Z","receivedAt":"2009-11-28T18:05:06Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Jonathan Nieder <jrnieder@gmail.com> writes:\n\n> Since it is not in LIB_OBJS, http-push.o needs an explicit\n> $(GIT_H) dependency.\n\nI think you meant $(LIB_H).\n\n    $ make\n    $ touch cache.h\n    $ make http-push.o\n\ndoes rebuild it with the current Makefile without this patch, because\nit has this seemingly unrelated line (worse yet, this gives even more than\nwhat are listed in LIB_H).\n\n    $(patsubst git-%$X,%.o,$(PROGRAMS)) git.o: $(LIB_H) $(wildcard */*.h)\n\nPuzzlingly messy.\n"},{"id":"130645","messageId":"20100101090556.6117@nanako3.lavabit.com","threadId":"21774","inReplyTo":"20091128112546.GA10059@progeny.tock","subject":"Re: [PATCH 0/4] Makefile fixes","fromName":"Nanako Shiraishi","fromEmail":"nanako3@lavabit.com","sentAt":"2010-01-01T00:05:56Z","receivedAt":"2010-01-01T00:05:56Z","isPatch":true,"sender":{"key":"nanako3@lavabit.com","avatar":"https://gravatar.com/avatar/3777b9e201c5883a62b1a6fdf7c53f2d712d1d80989146063ea861e33aad72a8?d=mp&s=160"},"body":"Junio, could you tell us what happened to this thread?\n\nMakefile improvements.  No discussion.\n"},{"id":"130884","messageId":"7vpr5onir5.fsf@alter.siamese.dyndns.org","threadId":"21774","inReplyTo":"20100101090556.6117@nanako3.lavabit.com","subject":"Re: [PATCH 0/4] Makefile fixes","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2010-01-06T01:07:26Z","receivedAt":"2010-01-06T01:07:26Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Nanako Shiraishi <nanako3@lavabit.com> writes:\n\n> Junio, could you tell us what happened to this thread?\n>\n> Makefile improvements.  No discussion.\n\nI took 4/4, and after looking at them again, I think 2/4 looks sensible,\ntoo.\n\nI was puzzled by 3/4 and I still am; the dependency rules are the same for\n%.o and %.s yet the patch changes only %.s.  Either it leaves the same\nbreakage for %.o (which is much more important in practice), or the\nproblem Jonathan has with %.s may have other causes, but it was unclear to\nme.\n"},{"id":"130892","messageId":"20100106042003.GA20532@progeny.tock","threadId":"21774","inReplyTo":"7vpr5onir5.fsf@alter.siamese.dyndns.org","subject":"Re: [PATCH 0/4] Makefile fixes","fromName":"Jonathan Nieder","fromEmail":"jrnieder@gmail.com","sentAt":"2010-01-06T04:20:03Z","receivedAt":"2010-01-06T04:20:03Z","isPatch":true,"sender":{"key":"jrnieder@gmail.com","avatar":"https://avatars.githubusercontent.com/u/281595?v=4"},"body":"Junio C Hamano wrote:\n> Nanako Shiraishi <nanako3@lavabit.com> writes:\n> \n>> Junio, could you tell us what happened to this thread?\n>>\n>> Makefile improvements.  No discussion.\n\nThese had some issues and instead of following up, I simply forgot\nabout them.\n\n> I took 4/4, and after looking at them again, I think 2/4 looks sensible,\n> too.\n\nI also think the patch for 2/4 looks sensible, but the commit message\ndoes not make much sense.  Optimization flags do not affect\ncompilation of assembler code as far as I can tell.  It would have\nmade more sense to say something like \"Since the only .S file in git\ndoes not have any #ifdefs, leaving the dependency out was mostly\nharmless.\"  (Will resend.)\n\n> I was puzzled by 3/4 and I still am; the dependency rules are the same for\n> %.o and %.s yet the patch changes only %.s.  Either it leaves the same\n> breakage for %.o (which is much more important in practice), or the\n> problem Jonathan has with %.s may have other causes, but it was unclear to\n> me.\n\nThe Makefile lists dependencies for each .o target elsewhere.  While\ncleaning up those other dependency rules, I noticed there was nothing\nanalogous for the .s targets.  You can reproduce this by running\n\"make var.o var.s && touch cache.h && make var.o var.s\".\n\nOf course, I should have mentioned this in the commit message.  Will\nresend as well.  Sorry to leave these standing for so long.\n\nSincerely,\nJonathan\n"},{"id":"130894","messageId":"20100106063759.GA882@progeny.tock","threadId":"21774","inReplyTo":"20091128113323.GC10059@progeny.tock","subject":"[PATCH v2] Makefile: make ppc/sha1ppc.o depend on GIT-CFLAGS","fromName":"Jonathan Nieder","fromEmail":"jrnieder@gmail.com","sentAt":"2010-01-06T06:37:59Z","receivedAt":"2010-01-06T06:37:59Z","isPatch":true,"sender":{"key":"jrnieder@gmail.com","avatar":"https://avatars.githubusercontent.com/u/281595?v=4"},"body":"The %.o: %.S pattern rule should depend on GIT-CFLAGS to avoid\ntrouble when ALL_CFLAGS changes.\n\nThe pattern only applies to one file (ppc/sha1ppc.S) and that\nfile does not use any #ifdefs, so leaving the dependency out is\nprobably harmless.  Nevertheless, it is safer to include the\ndependency in case future code's behavior does depend on the\nbuild flags.\n\nSigned-off-by: Jonathan Nieder <jrnieder@gmail.com>\n---\nHopefully the justification is a little clearer this time.\n\nThis is not a high-priority change.  The problem it addresses is only\nan aesthetic one as far as I can tell.  Still, I would be happy to see\nit fixed; thanks for the reminder.\n\n Makefile |    2 +-\n 1 files changed, 1 insertions(+), 1 deletions(-)\n\ndiff --git a/Makefile b/Makefile\nindex c11719c..015bfab 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -1635,7 +1635,7 @@ git.o git.spec \\\n \t$(QUIET_CC)$(CC) -o $*.o -c $(ALL_CFLAGS) $<\n %.s: %.c GIT-CFLAGS\n \t$(QUIET_CC)$(CC) -S $(ALL_CFLAGS) $<\n-%.o: %.S\n+%.o: %.S GIT-CFLAGS\n \t$(QUIET_CC)$(CC) -o $*.o -c $(ALL_CFLAGS) $<\n \n exec_cmd.o: exec_cmd.c GIT-CFLAGS\n-- \n1.6.6.rc2\n"},{"id":"130897","messageId":"20100106080216.GA7298@progeny.tock","threadId":"21774","inReplyTo":"20091128113709.GD10059@progeny.tock","subject":"[PATCH v2 0/5] Makefile: fix generation of assembler listings","fromName":"Jonathan Nieder","fromEmail":"jrnieder@gmail.com","sentAt":"2010-01-06T08:02:16Z","receivedAt":"2010-01-06T08:02:16Z","isPatch":true,"sender":{"key":"jrnieder@gmail.com","avatar":"https://avatars.githubusercontent.com/u/281595?v=4"},"body":"Jonathan Nieder wrote:\n\n> This adds yet another phony .FORCE-foo target.  Wouldn’t it be simpler\n> to use a single target called .FORCE, or is there something I am\n> missing that that would break?\n\nI didn’t hear any screams when I suggested this about a month ago, so\nlet’s try it out.\n\nPatch 1 fixes a problem I noticed when tweaking the Makefile to\nautomatically generate dependencies for the %.o targets.  The problem\nis that the dependencies for the corresponding %.s (code listing)\ntargets are not included in the Makefile at all, automatically or not.\nThus the command \"make var.s var.o && touch cache.h && make var.s var.o\"\nproduces the output\n\nCC var.s\nCC var.o\nCC var.o\n\nnot regenerating var.s to reflect potential changes in cache.h.\n\n\"make git.s\" previously did not work at all; patches 2-3 fix that.\n\nJonathan Nieder (5):\n  Makefile: regenerate assembler listings when asked\n  Makefile: use target-specific variable to pass flags to cc\n  Makefile: learn to generate listings for targets requiring special\n    flags\n  Makefile: consolidate .FORCE-* targets\n  git-gui/Makefile: consolidate .FORCE-* targets\n\n Documentation/Makefile |    4 +-\n Makefile               |   56 ++++++++++++++++++++---------------------------\n git-gui/Makefile       |    7 ++---\n 3 files changed, 29 insertions(+), 38 deletions(-)\n"},{"id":"130898","messageId":"20100106080420.GB7298@progeny.tock","threadId":"21774","inReplyTo":"20100106080216.GA7298@progeny.tock","subject":"[PATCH 1/5] Makefile: regenerate assembler listings when asked","fromName":"Jonathan Nieder","fromEmail":"jrnieder@gmail.com","sentAt":"2010-01-06T08:04:20Z","receivedAt":"2010-01-06T08:04:20Z","isPatch":true,"sender":{"key":"jrnieder@gmail.com","avatar":"https://avatars.githubusercontent.com/u/281595?v=4"},"body":"'make var.s' fails to regenerate an assembler listing if var.c\nhas not changed but a header it includes has:\n\n\t$ make var.s\n\t    CC var.s\n\t$ touch cache.h\n\t$ make var.s\n\t$\n\nThe corresponding problem for 'make var.o' does not occur because\nthe Makefile lists dependencies for each .o target explicitly;\nanalogous dependency rules for the .s targets are not present.\nRather than add some, it seems better to force 'make' to always\nregenerate assembler listings, since the assembler listing\ntargets are only invoked when specifically requested on the make\ncommand line.\n\nCc: Linus Torvalds <torvalds@linux-foundation.org>\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 c11719c..ba4d071 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -1633,7 +1633,7 @@ git.o git.spec \\\n \n %.o: %.c GIT-CFLAGS\n \t$(QUIET_CC)$(CC) -o $*.o -c $(ALL_CFLAGS) $<\n-%.s: %.c GIT-CFLAGS\n+%.s: %.c GIT-CFLAGS .FORCE-LISTING\n \t$(QUIET_CC)$(CC) -S $(ALL_CFLAGS) $<\n %.o: %.S\n \t$(QUIET_CC)$(CC) -o $*.o -c $(ALL_CFLAGS) $<\n@@ -1978,7 +1978,7 @@ endif\n .PHONY: all install clean strip\n .PHONY: shell_compatibility_test please_set_SHELL_PATH_to_a_more_modern_shell\n .PHONY: .FORCE-GIT-VERSION-FILE TAGS tags cscope .FORCE-GIT-CFLAGS\n-.PHONY: .FORCE-GIT-BUILD-OPTIONS\n+.PHONY: .FORCE-GIT-BUILD-OPTIONS .FORCE-LISTING\n \n ### Check documentation\n #\n-- \n1.6.6.rc2\n"},{"id":"130899","messageId":"20100106080504.GC7298@progeny.tock","threadId":"21774","inReplyTo":"20100106080216.GA7298@progeny.tock","subject":"[PATCH 2/5] Makefile: use target-specific variable to pass flags to cc","fromName":"Jonathan Nieder","fromEmail":"jrnieder@gmail.com","sentAt":"2010-01-06T08:05:04Z","receivedAt":"2010-01-06T08:05:04Z","isPatch":true,"sender":{"key":"jrnieder@gmail.com","avatar":"https://avatars.githubusercontent.com/u/281595?v=4"},"body":"This allows reusing the standard %.o: %.c pattern rule even for\ntargets that require special flags to be set.  Thus after this\nchange, any changes in the command for compilation only have to\nbe performed in one place.\n\nTarget-specific variables have been supported in GNU make since\nversion 3.77, which has been available since 1998.\n\nCc: Linus Torvalds <torvalds@linux-foundation.org>\nSigned-off-by: Jonathan Nieder <jrnieder@gmail.com>\n---\n Makefile |   41 ++++++++++++++++++-----------------------\n 1 files changed, 18 insertions(+), 23 deletions(-)\n\ndiff --git a/Makefile b/Makefile\nindex ba4d071..81190a6 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -1467,20 +1467,19 @@ shell_compatibility_test: please_set_SHELL_PATH_to_a_more_modern_shell\n strip: $(PROGRAMS) git$X\n \t$(STRIP) $(STRIP_OPTS) $(PROGRAMS) git$X\n \n-git.o: git.c common-cmds.h GIT-CFLAGS\n-\t$(QUIET_CC)$(CC) -DGIT_VERSION='\"$(GIT_VERSION)\"' \\\n-\t\t'-DGIT_HTML_PATH=\"$(htmldir_SQ)\"' \\\n-\t\t$(ALL_CFLAGS) -o $@ -c $(filter %.c,$^)\n+git.o: common-cmds.h\n+git.o: ALL_CFLAGS += -DGIT_VERSION='\"$(GIT_VERSION)\"' \\\n+\t'-DGIT_HTML_PATH=\"$(htmldir_SQ)\"'\n \n git$X: git.o $(BUILTIN_OBJS) $(GITLIBS)\n \t$(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ git.o \\\n \t\t$(BUILTIN_OBJS) $(ALL_LDFLAGS) $(LIBS)\n \n-builtin-help.o: builtin-help.c common-cmds.h GIT-CFLAGS\n-\t$(QUIET_CC)$(CC) -o $*.o -c $(ALL_CFLAGS) \\\n-\t\t'-DGIT_HTML_PATH=\"$(htmldir_SQ)\"' \\\n-\t\t'-DGIT_MAN_PATH=\"$(mandir_SQ)\"' \\\n-\t\t'-DGIT_INFO_PATH=\"$(infodir_SQ)\"' $<\n+builtin-help.o: common-cmds.h\n+builtin-help.o: ALL_CFLAGS += \\\n+\t'-DGIT_HTML_PATH=\"$(htmldir_SQ)\"' \\\n+\t'-DGIT_MAN_PATH=\"$(mandir_SQ)\"' \\\n+\t'-DGIT_INFO_PATH=\"$(infodir_SQ)\"'\n \n $(BUILT_INS): git$X\n \t$(QUIET_BUILT_IN)$(RM) $@ && \\\n@@ -1638,25 +1637,21 @@ git.o git.spec \\\n %.o: %.S\n \t$(QUIET_CC)$(CC) -o $*.o -c $(ALL_CFLAGS) $<\n \n-exec_cmd.o: exec_cmd.c GIT-CFLAGS\n-\t$(QUIET_CC)$(CC) -o $*.o -c $(ALL_CFLAGS) \\\n-\t\t'-DGIT_EXEC_PATH=\"$(gitexecdir_SQ)\"' \\\n-\t\t'-DBINDIR=\"$(bindir_relative_SQ)\"' \\\n-\t\t'-DPREFIX=\"$(prefix_SQ)\"' \\\n-\t\t$<\n+exec_cmd.o: ALL_CFLAGS += \\\n+\t'-DGIT_EXEC_PATH=\"$(gitexecdir_SQ)\"' \\\n+\t'-DBINDIR=\"$(bindir_relative_SQ)\"' \\\n+\t'-DPREFIX=\"$(prefix_SQ)\"'\n \n-builtin-init-db.o: builtin-init-db.c GIT-CFLAGS\n-\t$(QUIET_CC)$(CC) -o $*.o -c $(ALL_CFLAGS) -DDEFAULT_GIT_TEMPLATE_DIR='\"$(template_dir_SQ)\"' $<\n+builtin-init-db.o: ALL_CFLAGS += \\\n+\t-DDEFAULT_GIT_TEMPLATE_DIR='\"$(template_dir_SQ)\"'\n \n-config.o: config.c GIT-CFLAGS\n-\t$(QUIET_CC)$(CC) -o $*.o -c $(ALL_CFLAGS) -DETC_GITCONFIG='\"$(ETC_GITCONFIG_SQ)\"' $<\n+config.o: ALL_CFLAGS += -DETC_GITCONFIG='\"$(ETC_GITCONFIG_SQ)\"'\n \n-http.o: http.c GIT-CFLAGS\n-\t$(QUIET_CC)$(CC) -o $*.o -c $(ALL_CFLAGS) -DGIT_USER_AGENT='\"git/$(GIT_VERSION)\"' $<\n+http.o: ALL_CFLAGS += -DGIT_USER_AGENT='\"git/$(GIT_VERSION)\"'\n \n ifdef NO_EXPAT\n-http-walker.o: http-walker.c http.h GIT-CFLAGS\n-\t$(QUIET_CC)$(CC) -o $*.o -c $(ALL_CFLAGS) -DNO_EXPAT $<\n+http-walker.o: http.h\n+http-walker.o: ALL_CFLAGS += -DNO_EXPAT\n endif\n \n git-%$X: %.o $(GITLIBS)\n-- \n1.6.6.rc2\n"},{"id":"130900","messageId":"20100106080603.GD7298@progeny.tock","threadId":"21774","inReplyTo":"20100106080216.GA7298@progeny.tock","subject":"[PATCH 3/5] Makefile: learn to generate listings for targets requiring special flags","fromName":"Jonathan Nieder","fromEmail":"jrnieder@gmail.com","sentAt":"2010-01-06T08:06:03Z","receivedAt":"2010-01-06T08:06:03Z","isPatch":true,"sender":{"key":"jrnieder@gmail.com","avatar":"https://avatars.githubusercontent.com/u/281595?v=4"},"body":"'make git.s' to debug code generation of main() fails because\ngit.c makes use of preprocessor symbols such as GIT_VERSION that\nare not set.  make does not generate code listings for\nbuiltin_help.c, exec_cmd.c, builtin-init-db.c, config.c, http.c,\nor http-walker.c either, for the same reason.\n\nSo pass the flags used to generate each .o file when generating\nthe corresponding assembler listing.\n\nCc: Linus Torvalds <torvalds@linux-foundation.org>\nSigned-off-by: Jonathan Nieder <jrnieder@gmail.com>\n---\n Makefile |   14 +++++++-------\n 1 files changed, 7 insertions(+), 7 deletions(-)\n\ndiff --git a/Makefile b/Makefile\nindex 81190a6..3d774c6 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -1468,7 +1468,7 @@ strip: $(PROGRAMS) git$X\n \t$(STRIP) $(STRIP_OPTS) $(PROGRAMS) git$X\n \n git.o: common-cmds.h\n-git.o: ALL_CFLAGS += -DGIT_VERSION='\"$(GIT_VERSION)\"' \\\n+git.s git.o: ALL_CFLAGS += -DGIT_VERSION='\"$(GIT_VERSION)\"' \\\n \t'-DGIT_HTML_PATH=\"$(htmldir_SQ)\"'\n \n git$X: git.o $(BUILTIN_OBJS) $(GITLIBS)\n@@ -1476,7 +1476,7 @@ git$X: git.o $(BUILTIN_OBJS) $(GITLIBS)\n \t\t$(BUILTIN_OBJS) $(ALL_LDFLAGS) $(LIBS)\n \n builtin-help.o: common-cmds.h\n-builtin-help.o: ALL_CFLAGS += \\\n+builtin-help.s builtin-help.o: ALL_CFLAGS += \\\n \t'-DGIT_HTML_PATH=\"$(htmldir_SQ)\"' \\\n \t'-DGIT_MAN_PATH=\"$(mandir_SQ)\"' \\\n \t'-DGIT_INFO_PATH=\"$(infodir_SQ)\"'\n@@ -1637,21 +1637,21 @@ git.o git.spec \\\n %.o: %.S\n \t$(QUIET_CC)$(CC) -o $*.o -c $(ALL_CFLAGS) $<\n \n-exec_cmd.o: ALL_CFLAGS += \\\n+exec_cmd.s exec_cmd.o: ALL_CFLAGS += \\\n \t'-DGIT_EXEC_PATH=\"$(gitexecdir_SQ)\"' \\\n \t'-DBINDIR=\"$(bindir_relative_SQ)\"' \\\n \t'-DPREFIX=\"$(prefix_SQ)\"'\n \n-builtin-init-db.o: ALL_CFLAGS += \\\n+builtin-init-db.s builtin-init-db.o: ALL_CFLAGS += \\\n \t-DDEFAULT_GIT_TEMPLATE_DIR='\"$(template_dir_SQ)\"'\n \n-config.o: ALL_CFLAGS += -DETC_GITCONFIG='\"$(ETC_GITCONFIG_SQ)\"'\n+config.s config.o: ALL_CFLAGS += -DETC_GITCONFIG='\"$(ETC_GITCONFIG_SQ)\"'\n \n-http.o: ALL_CFLAGS += -DGIT_USER_AGENT='\"git/$(GIT_VERSION)\"'\n+http.s http.o: ALL_CFLAGS += -DGIT_USER_AGENT='\"git/$(GIT_VERSION)\"'\n \n ifdef NO_EXPAT\n http-walker.o: http.h\n-http-walker.o: ALL_CFLAGS += -DNO_EXPAT\n+http-walker.s http-walker.o: ALL_CFLAGS += -DNO_EXPAT\n endif\n \n git-%$X: %.o $(GITLIBS)\n-- \n1.6.6.rc2\n"},{"id":"130901","messageId":"20100106080658.GE7298@progeny.tock","threadId":"21774","inReplyTo":"20100106080216.GA7298@progeny.tock","subject":"[PATCH 4/5] Makefile: consolidate .FORCE-* targets","fromName":"Jonathan Nieder","fromEmail":"jrnieder@gmail.com","sentAt":"2010-01-06T08:06:58Z","receivedAt":"2010-01-06T08:06:58Z","isPatch":true,"sender":{"key":"jrnieder@gmail.com","avatar":"https://avatars.githubusercontent.com/u/281595?v=4"},"body":"Providing multiple targets to force a rebuild is unnecessary\ncomplication.\n\nAvoid using a name that could conflict with future special\ntargets in GNU make (a leading period followed by uppercase\nletters).\n\nThe corresponding change to the git-gui Makefile is left for\nanother patch.\n\nSigned-off-by: Jonathan Nieder <jrnieder@gmail.com>\n---\n Documentation/Makefile |    4 ++--\n Makefile               |   15 ++++++---------\n 2 files changed, 8 insertions(+), 11 deletions(-)\n\ndiff --git a/Documentation/Makefile b/Documentation/Makefile\nindex 4797b2d..8a8a395 100644\n--- a/Documentation/Makefile\n+++ b/Documentation/Makefile\n@@ -204,7 +204,7 @@ install-pdf: pdf\n install-html: html\n \t'$(SHELL_PATH_SQ)' ./install-webdoc.sh $(DESTDIR)$(htmldir)\n \n-../GIT-VERSION-FILE: .FORCE-GIT-VERSION-FILE\n+../GIT-VERSION-FILE: FORCE\n \t$(QUIET_SUBDIR0)../ $(QUIET_SUBDIR1) GIT-VERSION-FILE\n \n -include ../GIT-VERSION-FILE\n@@ -337,4 +337,4 @@ quick-install-man:\n quick-install-html:\n \t'$(SHELL_PATH_SQ)' ./install-doc-quick.sh $(HTML_REF) $(DESTDIR)$(htmldir)\n \n-.PHONY: .FORCE-GIT-VERSION-FILE\n+.PHONY: FORCE\ndiff --git a/Makefile b/Makefile\nindex 3d774c6..fd79cd6 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -222,7 +222,7 @@ all::\n #   DEFAULT_EDITOR='$GIT_FALLBACK_EDITOR',\n #   DEFAULT_EDITOR='\"C:\\Program Files\\Vim\\gvim.exe\" --nofork'\n \n-GIT-VERSION-FILE: .FORCE-GIT-VERSION-FILE\n+GIT-VERSION-FILE: FORCE\n \t@$(SHELL_PATH) ./GIT-VERSION-GEN\n -include GIT-VERSION-FILE\n \n@@ -1632,7 +1632,7 @@ git.o git.spec \\\n \n %.o: %.c GIT-CFLAGS\n \t$(QUIET_CC)$(CC) -o $*.o -c $(ALL_CFLAGS) $<\n-%.s: %.c GIT-CFLAGS .FORCE-LISTING\n+%.s: %.c GIT-CFLAGS FORCE\n \t$(QUIET_CC)$(CC) -S $(ALL_CFLAGS) $<\n %.o: %.S\n \t$(QUIET_CC)$(CC) -o $*.o -c $(ALL_CFLAGS) $<\n@@ -1723,7 +1723,7 @@ cscope:\n TRACK_CFLAGS = $(subst ','\\'',$(ALL_CFLAGS)):\\\n              $(bindir_SQ):$(gitexecdir_SQ):$(template_dir_SQ):$(prefix_SQ)\n \n-GIT-CFLAGS: .FORCE-GIT-CFLAGS\n+GIT-CFLAGS: FORCE\n \t@FLAGS='$(TRACK_CFLAGS)'; \\\n \t    if test x\"$$FLAGS\" != x\"`cat GIT-CFLAGS 2>/dev/null`\" ; then \\\n \t\techo 1>&2 \"    * new build flags or prefix\"; \\\n@@ -1733,7 +1733,7 @@ GIT-CFLAGS: .FORCE-GIT-CFLAGS\n # We need to apply sq twice, once to protect from the shell\n # that runs GIT-BUILD-OPTIONS, and then again to protect it\n # and the first level quoting from the shell that runs \"echo\".\n-GIT-BUILD-OPTIONS: .FORCE-GIT-BUILD-OPTIONS\n+GIT-BUILD-OPTIONS: FORCE\n \t@echo SHELL_PATH=\\''$(subst ','\\'',$(SHELL_PATH_SQ))'\\' >$@\n \t@echo PERL_PATH=\\''$(subst ','\\'',$(PERL_PATH_SQ))'\\' >>$@\n \t@echo TAR=\\''$(subst ','\\'',$(subst ','\\'',$(TAR)))'\\' >>$@\n@@ -1745,14 +1745,12 @@ GIT-BUILD-OPTIONS: .FORCE-GIT-BUILD-OPTIONS\n ifndef NO_TCLTK\n TRACK_VARS = $(subst ','\\'',-DTCLTK_PATH='$(TCLTK_PATH_SQ)')\n \n-GIT-GUI-VARS: .FORCE-GIT-GUI-VARS\n+GIT-GUI-VARS: FORCE\n \t@VARS='$(TRACK_VARS)'; \\\n \t    if test x\"$$VARS\" != x\"`cat $@ 2>/dev/null`\" ; then \\\n \t\techo 1>&2 \"    * new Tcl/Tk interpreter location\"; \\\n \t\techo \"$$VARS\" >$@; \\\n             fi\n-\n-.PHONY: .FORCE-GIT-GUI-VARS\n endif\n \n ### Testing rules\n@@ -1972,8 +1970,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-GIT-VERSION-FILE TAGS tags cscope .FORCE-GIT-CFLAGS\n-.PHONY: .FORCE-GIT-BUILD-OPTIONS .FORCE-LISTING\n+.PHONY: FORCE TAGS tags cscope\n \n ### Check documentation\n #\n-- \n1.6.6.rc2\n"},{"id":"130902","messageId":"20100106081638.GF7298@progeny.tock","threadId":"21774","inReplyTo":"20100106080216.GA7298@progeny.tock","subject":"[PATCH git-gui 5/5] git-gui/Makefile: consolidate .FORCE-* targets","fromName":"Jonathan Nieder","fromEmail":"jrnieder@gmail.com","sentAt":"2010-01-06T08:16:38Z","receivedAt":"2010-01-06T08:16:38Z","isPatch":true,"sender":{"key":"jrnieder@gmail.com","avatar":"https://avatars.githubusercontent.com/u/281595?v=4"},"body":"Providing multiple targets to force a rebuild is unnecessary\ncomplication.\n\nAvoid using a name that could conflict with future special\ntargets in GNU make (a leading period followed by uppercase\nletters).\n\nCc: Junio C Hamano <gitster@pobox.com>\nSigned-off-by: Jonathan Nieder <jrnieder@gmail.com>\n---\nThis is my first git-gui patch, so it is likely I have missed some\nconventions.  If that is the case, please let me know.\n\nThanks,\nJonathn\n\n Makefile |    7 +++----\n 1 files changed, 3 insertions(+), 4 deletions(-)\n\ndiff --git a/Makefile b/Makefile\nindex b3580e9..197b55e 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -7,7 +7,7 @@ all::\n # TCL_PATH must be vaild for this to work.\n #\n \n-GIT-VERSION-FILE: .FORCE-GIT-VERSION-FILE\n+GIT-VERSION-FILE: FORCE\n \t@$(SHELL_PATH) ./GIT-VERSION-GEN\n -include GIT-VERSION-FILE\n \n@@ -270,7 +270,7 @@ TRACK_VARS = \\\n \tGITGUI_MACOSXAPP=$(GITGUI_MACOSXAPP) \\\n #end TRACK_VARS\n \n-GIT-GUI-VARS: .FORCE-GIT-GUI-VARS\n+GIT-GUI-VARS: FORCE\n \t@VARS='$(TRACK_VARS)'; \\\n \tif test x\"$$VARS\" != x\"`cat $@ 2>/dev/null`\" ; then \\\n \t\techo 1>&2 \"    * new locations or Tcl/Tk interpreter\"; \\\n@@ -340,5 +340,4 @@ ifdef GITGUI_WINDOWS_WRAPPER\n endif\n \n .PHONY: all install uninstall dist-version clean\n-.PHONY: .FORCE-GIT-VERSION-FILE\n-.PHONY: .FORCE-GIT-GUI-VARS\n+.PHONY: FORCE\n-- \n1.6.6.rc2\n"},{"id":"130907","messageId":"alpine.LFD.2.00.1001060100550.3630@localhost.localdomain","threadId":"21774","inReplyTo":"20100106080216.GA7298@progeny.tock","subject":"Re: [PATCH v2 0/5] Makefile: fix generation of assembler listings","fromName":"Linus Torvalds","fromEmail":"torvalds@linux-foundation.org","sentAt":"2010-01-06T09:07:58Z","receivedAt":"2010-01-06T09:07:58Z","isPatch":true,"sender":{"key":"torvalds@linux-foundation.org","avatar":"https://avatars.githubusercontent.com/u/1024025?v=4"},"body":"\n\nOn Wed, 6 Jan 2010, Jonathan Nieder wrote:\n> \n> Patch 1 fixes a problem I noticed when tweaking the Makefile to\n> automatically generate dependencies for the %.o targets.  The problem\n> is that the dependencies for the corresponding %.s (code listing)\n> targets are not included in the Makefile at all, automatically or not.\n\nPatches 1-3 (which were the ones I was cc'd on) look sane to me. Having \nreal dependencies might be prettier, but I agree that since a *.s file is \nonly generated on demand (and useful mainly to see code generation), just \nforcing the build makes sense.\n\n\t\tLinus\n"},{"id":"130935","messageId":"alpine.LFD.2.00.1001061309540.21025@xanadu.home","threadId":"21774","inReplyTo":"20100106063759.GA882@progeny.tock","subject":"Re: [PATCH v2] Makefile: make ppc/sha1ppc.o depend on GIT-CFLAGS","fromName":"Nicolas Pitre","fromEmail":"nico@fluxnic.net","sentAt":"2010-01-06T18:17:04Z","receivedAt":"2010-01-06T18:17:04Z","isPatch":true,"sender":{"key":"nico@fluxnic.net","avatar":"https://avatars.githubusercontent.com/u/702790?v=4"},"body":"On Wed, 6 Jan 2010, Jonathan Nieder wrote:\n\n> The %.o: %.S pattern rule should depend on GIT-CFLAGS to avoid\n> trouble when ALL_CFLAGS changes.\n> \n> The pattern only applies to one file (ppc/sha1ppc.S) and that\n> file does not use any #ifdefs, so leaving the dependency out is\n> probably harmless.  Nevertheless, it is safer to include the\n> dependency in case future code's behavior does depend on the\n> build flags.\n\nIs the PPC SHA1 code still needed?  Is it actually ever used?\n\nWe have block-sha1/* which is already about just as fast if not faster \non most targets.  So I'd simply remove the ppc directory and its content \nwhich is the only remaining platform specific assembly code in the \nsource tree.\n\n\nNicolas\n"},{"id":"130968","messageId":"20100107022034.GE32155@spearce.org","threadId":"21774","inReplyTo":"20100106081638.GF7298@progeny.tock","subject":"Re: [PATCH git-gui 5/5] git-gui/Makefile: consolidate .FORCE-* targets","fromName":"Shawn O. Pearce","fromEmail":"spearce@spearce.org","sentAt":"2010-01-07T02:20:34Z","receivedAt":"2010-01-07T02:20:34Z","isPatch":true,"sender":{"key":"spearce@spearce.org","avatar":"https://avatars.githubusercontent.com/u/34844?v=4"},"body":"Jonathan Nieder <jrnieder@gmail.com> wrote:\n> Providing multiple targets to force a rebuild is unnecessary\n> complication.\n> \n> Avoid using a name that could conflict with future special\n> targets in GNU make (a leading period followed by uppercase\n> letters).\n> \n> Cc: Junio C Hamano <gitster@pobox.com>\n> Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>\n\nThanks, applied.\n\n-- \nShawn.\n"},{"id":"130986","messageId":"20100107074253.GA13125@progeny.tock","threadId":"21774","inReplyTo":"20100106080504.GC7298@progeny.tock","subject":"Re: [PATCH 2/5] Makefile: use target-specific variable to pass flags to cc","fromName":"Jonathan Nieder","fromEmail":"jrnieder@gmail.com","sentAt":"2010-01-07T07:42:53Z","receivedAt":"2010-01-07T07:42:53Z","isPatch":true,"sender":{"key":"jrnieder@gmail.com","avatar":"https://avatars.githubusercontent.com/u/281595?v=4"},"body":"Jonathan Nieder wrote:\n\n> diff --git a/Makefile b/Makefile\n> index ba4d071..81190a6 100644\n> --- a/Makefile\n> +++ b/Makefile\n> @@ -1467,20 +1467,19 @@ shell_compatibility_test: please_set_SHELL_PATH_to_a_more_modern_shell\n>  strip: $(PROGRAMS) git$X\n>  \t$(STRIP) $(STRIP_OPTS) $(PROGRAMS) git$X\n>  \n> -git.o: git.c common-cmds.h GIT-CFLAGS\n> -\t$(QUIET_CC)$(CC) -DGIT_VERSION='\"$(GIT_VERSION)\"' \\\n> -\t\t'-DGIT_HTML_PATH=\"$(htmldir_SQ)\"' \\\n> -\t\t$(ALL_CFLAGS) -o $@ -c $(filter %.c,$^)\n> +git.o: common-cmds.h\n> +git.o: ALL_CFLAGS += -DGIT_VERSION='\"$(GIT_VERSION)\"' \\\n> +\t'-DGIT_HTML_PATH=\"$(htmldir_SQ)\"'\n>  \n[...]\n\nOne annoying feature I wasn't thinking of: the values of\ntarget-specific variables propagate to the dependencies of a target\n(why? I can't imagine), and GIT-CFLAGS keeps on changing because of\nthis.\n\nMaybe a new CMD_CFLAGS variable is needed for this, i.e. something\nlike the following squashed in.\n\ndiff --git a/Makefile b/Makefile\nindex 2580e23..d20e456 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -1468,7 +1468,7 @@ strip: $(PROGRAMS) git$X\n \t$(STRIP) $(STRIP_OPTS) $(PROGRAMS) git$X\n \n git.o: common-cmds.h\n-git.o: ALL_CFLAGS += -DGIT_VERSION='\"$(GIT_VERSION)\"' \\\n+git.o: CMD_CFLAGS += -DGIT_VERSION='\"$(GIT_VERSION)\"' \\\n \t'-DGIT_HTML_PATH=\"$(htmldir_SQ)\"'\n \n git$X: git.o $(BUILTIN_OBJS) $(GITLIBS)\n@@ -1476,7 +1476,7 @@ git$X: git.o $(BUILTIN_OBJS) $(GITLIBS)\n \t\t$(BUILTIN_OBJS) $(ALL_LDFLAGS) $(LIBS)\n \n builtin-help.o: common-cmds.h\n-builtin-help.o: ALL_CFLAGS += \\\n+builtin-help.o: CMD_CFLAGS += \\\n \t'-DGIT_HTML_PATH=\"$(htmldir_SQ)\"' \\\n \t'-DGIT_MAN_PATH=\"$(mandir_SQ)\"' \\\n \t'-DGIT_INFO_PATH=\"$(infodir_SQ)\"'\n@@ -1630,28 +1630,31 @@ git.o git.spec \\\n \t$(patsubst %.perl,%,$(SCRIPT_PERL)) \\\n \t: GIT-VERSION-FILE\n \n+# This can vary by target\n+CMD_CFLAGS = $(ALL_CFLAGS)\n+\n %.o: %.c GIT-CFLAGS\n-\t$(QUIET_CC)$(CC) -o $*.o -c $(ALL_CFLAGS) $<\n+\t$(QUIET_CC)$(CC) -o $*.o -c $(CMD_CFLAGS) $<\n %.s: %.c GIT-CFLAGS .FORCE-LISTING\n-\t$(QUIET_CC)$(CC) -S $(ALL_CFLAGS) $<\n+\t$(QUIET_CC)$(CC) -S $(CMD_CFLAGS) $<\n %.o: %.S GIT-CFLAGS\n-\t$(QUIET_CC)$(CC) -o $*.o -c $(ALL_CFLAGS) $<\n+\t$(QUIET_CC)$(CC) -o $*.o -c $(CMD_CFLAGS) $<\n \n-exec_cmd.o: ALL_CFLAGS += \\\n+exec_cmd.o: CMD_CFLAGS += \\\n \t'-DGIT_EXEC_PATH=\"$(gitexecdir_SQ)\"' \\\n \t'-DBINDIR=\"$(bindir_relative_SQ)\"' \\\n \t'-DPREFIX=\"$(prefix_SQ)\"'\n \n-builtin-init-db.o: ALL_CFLAGS += \\\n+builtin-init-db.o: CMD_CFLAGS += \\\n \t-DDEFAULT_GIT_TEMPLATE_DIR='\"$(template_dir_SQ)\"'\n \n-config.o: ALL_CFLAGS += -DETC_GITCONFIG='\"$(ETC_GITCONFIG_SQ)\"'\n+config.o: CMD_CFLAGS += -DETC_GITCONFIG='\"$(ETC_GITCONFIG_SQ)\"'\n \n-http.o: ALL_CFLAGS += -DGIT_USER_AGENT='\"git/$(GIT_VERSION)\"'\n+http.o: CMD_CFLAGS += -DGIT_USER_AGENT='\"git/$(GIT_VERSION)\"'\n \n ifdef NO_EXPAT\n http-walker.o: http.h\n-http-walker.o: ALL_CFLAGS += -DNO_EXPAT\n+http-walker.o: CMD_CFLAGS += -DNO_EXPAT\n endif\n \n git-%$X: %.o $(GITLIBS)\n"}]}