From: Jonathan Nieder <jrnieder@gmail.com>
To: Git Mailing List <git@vger.kernel.org>
Cc: Nanako Shiraishi <nanako3@lavabit.com>,
Junio C Hamano <gitster@pobox.com>,
Johannes Sixt <j.sixt@viscovery.net>,
Git Mailing List <git@vger.kernel.org>,
Johannes Schindelin <Johannes.Schindelin@gmx.de>
Subject: [PATCH 3/5] Makefile: add OBJECTS variable listing object files
Date: Thu, 7 Jan 2010 01:19:43 -0600 [thread overview]
Message-ID: <20100107071943.GD11777@progeny.tock> (raw)
In-Reply-To: <20100107071305.GA11777@progeny.tock>
To find the generated dependencies to include, we will need a
comprehensive list of all object file targets. To make sure it
is truly comprehensive, restrict the scope of the
%.o pattern rule to only generate objects in that list.
Attempts to build other object files will fail loudly:
$ touch foo.c
$ make foo.o
make: *** No rule to make target `foo.o'. Stop.
providing a reminder to add the new object to the OBJECTS list.
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
---
Makefile | 34 ++++++++++++++++++++--------------
1 files changed, 20 insertions(+), 14 deletions(-)
diff --git a/Makefile b/Makefile
index 9a5d897..87de3c3 100644
--- a/Makefile
+++ b/Makefile
@@ -388,6 +388,18 @@ SCRIPTS = $(patsubst %.sh,%,$(SCRIPT_SH)) \
# Empty...
EXTRA_PROGRAMS =
+TEST_PROGRAMS += test-chmtime$X
+TEST_PROGRAMS += test-ctype$X
+TEST_PROGRAMS += test-date$X
+TEST_PROGRAMS += test-delta$X
+TEST_PROGRAMS += test-dump-cache-tree$X
+TEST_PROGRAMS += test-genrandom$X
+TEST_PROGRAMS += test-match-trees$X
+TEST_PROGRAMS += test-parse-options$X
+TEST_PROGRAMS += test-path-utils$X
+TEST_PROGRAMS += test-sha1$X
+TEST_PROGRAMS += test-sigchain$X
+
# ... and all the rest that could be moved out of bindir to gitexecdir
PROGRAMS += $(EXTRA_PROGRAMS)
PROGRAMS += git-fast-import$X
@@ -1634,14 +1646,20 @@ GIT_OBJS := $(LIB_OBJS) $(BUILTIN_OBJS) git.o http.o http-walker.o \
$(patsubst git-%$X,%.o,$(PROGRAMS))
XDIFF_OBJS = xdiff/xdiffi.o xdiff/xprepare.o xdiff/xutils.o xdiff/xemit.o \
xdiff/xmerge.o xdiff/xpatience.o
+TEST_OBJS := $(patsubst test-%$X,test-%.o,$(TEST_PROGRAMS))
+OBJECTS := $(GIT_OBJS) $(XDIFF_OBJS) $(TEST_OBJS)
+
+ASM_SRC := $(wildcard $(OBJECTS:o=S))
+ASM_OBJ := $(ASM_SRC:S=o)
+C_OBJ := $(filter-out $(ASM_OBJ),$(OBJECTS))
.SUFFIXES:
-%.o: %.c GIT-CFLAGS
+$(C_OBJ): %.o: %.c GIT-CFLAGS
$(QUIET_CC)$(CC) -o $*.o -c $(ALL_CFLAGS) $<
%.s: %.c GIT-CFLAGS FORCE
$(QUIET_CC)$(CC) -S $(ALL_CFLAGS) $<
-%.o: %.S GIT-CFLAGS
+$(ASM_OBJ): %.o: %.S GIT-CFLAGS
$(QUIET_CC)$(CC) -o $*.o -c $(ALL_CFLAGS) $<
$(GIT_OBJS): $(LIB_H)
@@ -1757,18 +1775,6 @@ endif
### Testing rules
-TEST_PROGRAMS += test-chmtime$X
-TEST_PROGRAMS += test-ctype$X
-TEST_PROGRAMS += test-date$X
-TEST_PROGRAMS += test-delta$X
-TEST_PROGRAMS += test-dump-cache-tree$X
-TEST_PROGRAMS += test-genrandom$X
-TEST_PROGRAMS += test-match-trees$X
-TEST_PROGRAMS += test-parse-options$X
-TEST_PROGRAMS += test-path-utils$X
-TEST_PROGRAMS += test-sha1$X
-TEST_PROGRAMS += test-sigchain$X
-
all:: $(TEST_PROGRAMS)
# GNU make supports exporting all variables by "export" without parameters.
--
1.6.6.rc2
next prev parent reply other threads:[~2010-01-07 7:19 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-11-27 8:04 [PATCH] Makefile: determine the list of header files using a glob Johannes Sixt
2009-11-27 8:26 ` Mike Hommey
2009-11-27 8:50 ` Johannes Sixt
2009-11-27 8:58 ` Mike Hommey
2009-11-27 18:28 ` Junio C Hamano
2009-12-30 8:00 ` Mike Hommey
2009-12-30 8:45 ` Junio C Hamano
2009-11-27 9:36 ` Johannes Schindelin
2009-11-27 17:45 ` [PATCH/RFC 0/2] Lazily generate header dependencies Jonathan Nieder
2009-11-27 17:49 ` [PATCH/RFC 1/2] Makefile: use target-specific variable to pass flags to cc Jonathan Nieder
2009-11-27 17:50 ` [PATCH/RFC 2/2] Makefile: automatically compute header dependencies Jonathan Nieder
2009-11-27 22:57 ` Sverre Rabbelier
2009-11-28 4:24 ` Jonathan Nieder
2009-11-28 9:29 ` [PATCH/RFC 2/2 v3] Makefile: lazily " Jonathan Nieder
2009-11-28 9:26 ` Andreas Schwab
2009-11-28 11:49 ` Jonathan Nieder
2010-01-01 0:05 ` [PATCH/RFC 0/2] Lazily generate " Nanako Shiraishi
2010-01-06 1:06 ` Junio C Hamano
2010-01-06 9:26 ` Johannes Schindelin
2010-01-06 9:36 ` Jonathan Nieder
2010-01-07 7:13 ` [PATCH v2 0/5] " Jonathan Nieder
2010-01-07 7:16 ` [PATCH 1/5] Makefile: rearrange dependency rules Jonathan Nieder
2010-01-07 7:18 ` [PATCH 2/5] Makefile: clear list of default rules Jonathan Nieder
2010-01-07 7:19 ` Jonathan Nieder [this message]
2010-01-07 7:23 ` [PATCH 4/5] Makefile: lazily compute header dependencies Jonathan Nieder
2010-01-07 7:30 ` [PATCH/RFC 5/5] Teach Makefile to check " Jonathan Nieder
2010-01-07 13:22 ` [PATCH v2 0/5] Lazily generate " Erik Faye-Lund
2009-11-27 18:28 ` [PATCH] Makefile: determine the list of header files using a glob Junio C Hamano
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20100107071943.GD11777@progeny.tock \
--to=jrnieder@gmail.com \
--cc=Johannes.Schindelin@gmx.de \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=j.sixt@viscovery.net \
--cc=nanako3@lavabit.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).