git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 09/12] Makefile: list generated object files in OBJECTS

From
Jonathan Nieder <jrnieder@gmail.com>
Date
Jan 26, 2010, 15:52 UTC
Message-ID
<20100126155211.GJ4895@progeny.tock>
In-Reply-To
<20100126154357.GA4895@progeny.tock>

Set the OBJECTS variable to 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 this 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.

The new variable is otherwise unused. The intent is for later patches to take advantage of it.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
---
 Makefile |    9 +++++++--
 1 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/Makefile b/Makefile
index 60ef711..0e4e8ff 100644
--- a/Makefile
+++ b/Makefile
@@ -1671,14 +1671,19 @@ GIT_OBJS := $(LIB_OBJS) $(BUILTIN_OBJS) $(TEST_OBJS) \
 	$(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
+OBJECTS := $(GIT_OBJS) $(XDIFF_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)
-- 
1.6.6
Previous: Jonathan NiederNext: Jonathan Nieder
Message 17 of 27 in “Makefile: add missing header dependency rules”
  1. 0/5 Makefile: add missing header dependency rulesJonathan Nieder, Jan 23, 2010
  2. 1/5 Makefile: add missing header file dependenciesJonathan Nieder, Jan 23, 2010
  3. 2/5 Makefile: make sure test helpers are rebuilt when headers changeJonathan Nieder, Jan 23, 2010
  4. 3/5 Makefile: remove wt-status.h from LIB_HJonathan Nieder, Jan 23, 2010
  5. 4/5 Makefile: clean up http-walker.o dependency rulesJonathan Nieder, Jan 23, 2010
  6. 5/5 Makefile: drop dependency on $(wildcard */*.h)Jonathan Nieder, Jan 23, 2010
  7. Junio C HamanoJan 25, 2010
  8. 00/12 Re: Makefile: add missing header dependency rulesJonathan Nieder, Jan 26, 2010
  9. 01/12 Makefile: add missing header file dependenciesJonathan Nieder, Jan 26, 2010
  10. 02/12 Makefile: make sure test helpers are rebuilt when headers changeJonathan Nieder, Jan 26, 2010
  11. 03/12 Makefile: remove wt-status.h from LIB_HJonathan Nieder, Jan 26, 2010
  12. 04/12 Makefile: clean up http-walker.o dependency rulesJonathan Nieder, Jan 26, 2010
  13. 05/12 Makefile: drop dependency on $(wildcard */*.h)Jonathan Nieder, Jan 26, 2010
  14. 06/12 Makefile: transport.o depends on branch.h nowJonathan Nieder, Jan 26, 2010
  15. 07/12 Makefile: rearrange dependency rulesJonathan Nieder, Jan 26, 2010
  16. 08/12 Makefile: disable default implicit rulesJonathan Nieder, Jan 26, 2010
  17. 09/12 Makefile: list generated object files in OBJECTSJonathan Nieder, Jan 26, 2010
  18. 10/12 Makefile: lazily compute header dependenciesJonathan Nieder, Jan 26, 2010
  19. 11/12 Makefile: list standalone program object files in PROGRAM_OBJSJonathan Nieder, Jan 26, 2010
  20. 11/12 Makefile: list standalone program object files in PROGRAM_OBJSJonathan Nieder, Jan 27, 2010
  21. 12/12 Teach Makefile to check header dependenciesJonathan Nieder, Jan 26, 2010
  22. Junio C HamanoJan 31, 2010
  23. Jonathan NiederJan 31, 2010
  24. Junio C HamanoJan 31, 2010
  25. 14/12 Makefile: always remove .depend directories on 'make clean'Jonathan Nieder, Jan 31, 2010
  26. 13/12 Makefile: tuck away generated makefile fragments in .dependJonathan Nieder, Jan 31, 2010
  27. Jonathan NiederJan 26, 2010

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.