[U-Boot] [PATCH 4/4] api_examples/Makefile: General cleanup

Peter Tyser ptyser at xes-inc.com
Tue Jun 23 01:01:41 CEST 2009


* Remove symlinking of files located outside api_examples/

* Auto generate dependencies for files located outside api_examples/

* Update names of variables to be similar to those in tools/Makefile

* Fix out of tree build error
  Dependencies are calculated for all files in the SRCS variable.
  Previously, the SRCS variable contained files which were symlinked
  into the api_examples/ directory.  These symlinked files did not exist
  when dependencies were calculated when building out of tree.  This
  resulted in errors such as:
    make[1]: *** No rule to make target `/work/wd/tmp-ppc/api_examples/.depend', needed by `_depend'.  Stop.
    make[1]: Leaving directory `/home/wd/git/u-boot/work/api_examples'
    make: *** [depend] Error 2

  Since symlinked source files are no longer used, this bug no longer
  exists.

Signed-off-by: Peter Tyser <ptyser at xes-inc.com>
---
 Makefile                |    1 -
 api_examples/.gitignore |    5 ---
 api_examples/Makefile   |   79 +++++++++++++++++++----------------------------
 3 files changed, 32 insertions(+), 53 deletions(-)

diff --git a/Makefile b/Makefile
index bcc81c9..337ea63 100644
--- a/Makefile
+++ b/Makefile
@@ -3593,7 +3593,6 @@ clobber:	clean
 	@rm -f $(obj)include/asm/proc $(obj)include/asm/arch $(obj)include/asm
 	@[ ! -d $(obj)nand_spl ] || find $(obj)nand_spl -name "*" -type l -print | xargs rm -f
 	@[ ! -d $(obj)onenand_ipl ] || find $(obj)onenand_ipl -name "*" -type l -print | xargs rm -f
-	@[ ! -d $(obj)api_examples ] || find $(obj)api_examples -name "*" -type l -print | xargs rm -f
 
 ifeq ($(OBJTREE),$(SRCTREE))
 mrproper \
diff --git a/api_examples/.gitignore b/api_examples/.gitignore
index 272816f..d7b18dc 100644
--- a/api_examples/.gitignore
+++ b/api_examples/.gitignore
@@ -1,7 +1,2 @@
-crc32.c
-ctype.c
 demo
 demo.bin
-ppcstring.S
-string.c
-vsprintf.c
diff --git a/api_examples/Makefile b/api_examples/Makefile
index a85fd9c..2a30bef 100644
--- a/api_examples/Makefile
+++ b/api_examples/Makefile
@@ -31,69 +31,54 @@ include $(TOPDIR)/config.mk
 
 # Resulting ELF and binary exectuables will be named demo and demo.bin
 OUTPUT-$(CONFIG_API) = $(obj)demo
-
-#CFLAGS += -v
-
-SOBJS-$(CONFIG_API) += crt0.o
-COBJS-$(CONFIG_API) += demo.o
+OUTPUT = $(OUTPUT-y)
+
+# Source files located in the api_examples directory
+SOBJ_FILES-$(CONFIG_API) += crt0.o
+COBJ_FILES-$(CONFIG_API) += demo.o
+COBJ_FILES-$(CONFIG_API) += glue.o
+COBJ_FILES-$(CONFIG_API) += libgenwrap.o
+
+# Source files which exist outside the api_examples directory
+EXT_COBJ_FILES-$(CONFIG_API) += lib_generic/crc32.o
+EXT_COBJ_FILES-$(CONFIG_API) += lib_generic/ctype.o
+EXT_COBJ_FILES-$(CONFIG_API) += lib_generic/string.o
+EXT_COBJ_FILES-$(CONFIG_API) += lib_generic/vsprintf.o
 ifeq ($(ARCH),ppc)
-SOBJS-$(CONFIG_API) += ppcstring.o
+EXT_SOBJ_FILES-$(CONFIG_API) += lib_ppc/ppcstring.o
 endif
 
-OUTPUT	:= $(OUTPUT-y)
-COBJS	:= $(COBJS-y)
-SOBJS	:= $(SOBJS-y)
-
-LIBCOBJS-$(CONFIG_API) += glue.o
-LIBCOBJS-$(CONFIG_API) += crc32.o
-LIBCOBJS-$(CONFIG_API) += ctype.o
-LIBCOBJS-$(CONFIG_API) += string.o
-LIBCOBJS-$(CONFIG_API) += vsprintf.o
-LIBCOBJS-$(CONFIG_API) += libgenwrap.o
-LIBCOBJS := $(LIBCOBJS-y)
+# Create a list of source files so their dependencies can be auto-generated
+SRCS	+= $(addprefix $(SRCTREE)/,$(EXT_COBJ_FILES-y:.o=.c))
+SRCS	+= $(addprefix $(SRCTREE)/,$(EXT_SOBJ_FILES-y:.o=.S))
+SRCS	+= $(addprefix $(SRCTREE)/api_examples/,$(COBJ_FILES-y:.o=.c))
+SRCS	+= $(addprefix $(SRCTREE)/api_examples/,$(SOBJ_FILES-y:.o=.S))
 
-LIBOBJS	+= $(addprefix $(obj),$(SOBJS))
-LIBOBJS	+= $(addprefix $(obj),$(COBJS))
-LIBOBJS	+= $(addprefix $(obj),$(LIBCOBJS))
-
-SRCS	+= $(COBJS:.o=.c)
-SRCS	+= $(LIBCOBJS:.o=.c)
-SRCS	+= $(SOBJS:.o=.S)
-OBJS	:= $(addprefix $(obj),$(COBJS))
+# Create a list of object files to be compiled
+OBJS	+= $(addprefix $(obj),$(SOBJ_FILES-y))
+OBJS	+= $(addprefix $(obj),$(COBJ_FILES-y))
+OBJS	+= $(addprefix $(obj),$(notdir $(EXT_COBJ_FILES-y)))
+OBJS	+= $(addprefix $(obj),$(notdir $(EXT_SOBJ_FILES-y)))
 
 gcclibdir := $(shell dirname `$(CC) -print-libgcc-file-name`)
 
 CPPFLAGS += -I..
 
-all:	$(obj).depend $(OBJS) $(OUTPUT)
+all:	$(obj).depend $(OUTPUT)
 
 #########################################################################
 
-$(OUTPUT):	$(LIBOBJS)
+$(OUTPUT):	$(OBJS)
 		$(LD) -Ttext $(LOAD_ADDR) -o $@ $^ -L$(gcclibdir) -lgcc
 		$(OBJCOPY) -O binary $@ $(OUTPUT).bin 2>/dev/null
 
-$(obj)crc32.c:
-	@rm -f $(obj)crc32.c
-	ln -s $(src)../lib_generic/crc32.c $(obj)crc32.c
-
-$(obj)ctype.c:
-	@rm -f $(obj)ctype.c
-	ln -s $(src)../lib_generic/ctype.c $(obj)ctype.c
+# Rule to build generic library C files
+$(obj)%.o: $(SRCTREE)/lib_generic/%.c
+	$(CC) -g $(CFLAGS) -c -o $@ $<
 
-$(obj)string.c:
-	@rm -f $(obj)string.c
-	ln -s $(src)../lib_generic/string.c $(obj)string.c
-
-$(obj)vsprintf.c:
-	@rm -f $(obj)vsprintf.c
-	ln -s $(src)../lib_generic/vsprintf.c $(obj)vsprintf.c
-
-ifeq ($(ARCH),ppc)
-$(obj)ppcstring.S:
-	@rm -f $(obj)ppcstring.S
-	ln -s $(src)../lib_ppc/ppcstring.S $(obj)ppcstring.S
-endif
+# Rule to build architecture-specific library assembly files
+$(obj)%.o: $(SRCTREE)/lib_$(ARCH)/%.S
+	$(CC) -g $(CFLAGS) -c -o $@ $<
 
 #########################################################################
 
-- 
1.6.2.1



More information about the U-Boot mailing list