[U-Boot] [PATCH 1/4] api_examples/Makefile: Split up variable declarations

This cleans up the Makefile a bit and simplifies future changes
Signed-off-by: Peter Tyser ptyser@xes-inc.com --- These are some similar changes to the ones I made to the tools directory recently. It gets rid of symlinking source files which has the side benefit of resolving the out of tree build error for the API code.
api_examples/Makefile | 15 +++++++++++---- 1 files changed, 11 insertions(+), 4 deletions(-)
diff --git a/api_examples/Makefile b/api_examples/Makefile index 4c01437..be0b462 100644 --- a/api_examples/Makefile +++ b/api_examples/Makefile @@ -45,13 +45,20 @@ COBJS := $(COBJS-y) SOBJS := $(SOBJS-y)
LIB = $(obj)libglue.a -LIBCOBJS-$(CONFIG_API) += glue.o crc32.o ctype.o string.o vsprintf.o \ - libgenwrap.o +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)
-LIBOBJS = $(addprefix $(obj),$(SOBJS) $(LIBCOBJS)) +LIBOBJS += $(addprefix $(obj),$(SOBJS)) +LIBOBJS += $(addprefix $(obj),$(LIBCOBJS))
-SRCS := $(COBJS:.o=.c) $(LIBCOBJS:.o=.c) $(SOBJS:.o=.S) +SRCS += $(COBJS:.o=.c) +SRCS += $(LIBCOBJS:.o=.c) +SRCS += $(SOBJS:.o=.S) OBJS := $(addprefix $(obj),$(COBJS)) ELF := $(addprefix $(obj),$(ELF)) BIN := $(addprefix $(obj),$(BIN))

Combining the two rules cleans up the Makefile a bit
Signed-off-by: Peter Tyser ptyser@xes-inc.com --- api_examples/Makefile | 21 ++++++++------------- 1 files changed, 8 insertions(+), 13 deletions(-)
diff --git a/api_examples/Makefile b/api_examples/Makefile index be0b462..98506a0 100644 --- a/api_examples/Makefile +++ b/api_examples/Makefile @@ -29,18 +29,18 @@ endif
include $(TOPDIR)/config.mk
-ELF-$(CONFIG_API) += demo -BIN-$(CONFIG_API) += demo.bin -ELF := $(ELF-y) -BIN := $(BIN-y) +# Resulting ELF and binary exectuables will be named demo and demo.bin +OUTPUT-$(CONFIG_API) = $(obj)demo
#CFLAGS += -v
-COBJS-$(CONFIG_API) += $(ELF:=.o) SOBJS-$(CONFIG_API) += crt0.o +COBJS-$(CONFIG_API) += demo.o ifeq ($(ARCH),ppc) SOBJS-$(CONFIG_API) += ppcstring.o endif + +OUTPUT := $(OUTPUT-y) COBJS := $(COBJS-y) SOBJS := $(SOBJS-y)
@@ -60,28 +60,23 @@ SRCS += $(COBJS:.o=.c) SRCS += $(LIBCOBJS:.o=.c) SRCS += $(SOBJS:.o=.S) OBJS := $(addprefix $(obj),$(COBJS)) -ELF := $(addprefix $(obj),$(ELF)) -BIN := $(addprefix $(obj),$(BIN))
gcclibdir := $(shell dirname `$(CC) -print-libgcc-file-name`)
CPPFLAGS += -I..
-all: $(obj).depend $(OBJS) $(LIB) $(ELF) $(BIN) +all: $(obj).depend $(OBJS) $(LIB) $(OUTPUT)
######################################################################### $(LIB): $(obj).depend $(LIBOBJS) $(AR) $(ARFLAGS) $@ $(LIBOBJS)
-$(ELF): +$(OUTPUT): $(obj)%: $(obj)%.o $(LIB) $(LD) $(obj)crt0.o -Ttext $(LOAD_ADDR) \ -o $@ $< $(LIB) \ -L$(gcclibdir) -lgcc - -$(BIN): -$(obj)%.bin: $(obj)% - $(OBJCOPY) -O binary $< $@ 2>/dev/null + $(OBJCOPY) -O binary $@ $(OUTPUT).bin 2>/dev/null
$(obj)crc32.c: @rm -f $(obj)crc32.c

Dear Peter Tyser,
In message 1245711701-22468-2-git-send-email-ptyser@xes-inc.com you wrote:
Combining the two rules cleans up the Makefile a bit
Signed-off-by: Peter Tyser ptyser@xes-inc.com
api_examples/Makefile | 21 ++++++++------------- 1 files changed, 8 insertions(+), 13 deletions(-)
Applied, thanks.
Best regards,
Wolfgang Denk

Signed-off-by: Peter Tyser ptyser@xes-inc.com --- api_examples/Makefile | 15 +++++---------- 1 files changed, 5 insertions(+), 10 deletions(-)
diff --git a/api_examples/Makefile b/api_examples/Makefile index 98506a0..a85fd9c 100644 --- a/api_examples/Makefile +++ b/api_examples/Makefile @@ -44,7 +44,6 @@ OUTPUT := $(OUTPUT-y) COBJS := $(COBJS-y) SOBJS := $(SOBJS-y)
-LIB = $(obj)libglue.a LIBCOBJS-$(CONFIG_API) += glue.o LIBCOBJS-$(CONFIG_API) += crc32.o LIBCOBJS-$(CONFIG_API) += ctype.o @@ -54,6 +53,7 @@ LIBCOBJS-$(CONFIG_API) += libgenwrap.o LIBCOBJS := $(LIBCOBJS-y)
LIBOBJS += $(addprefix $(obj),$(SOBJS)) +LIBOBJS += $(addprefix $(obj),$(COBJS)) LIBOBJS += $(addprefix $(obj),$(LIBCOBJS))
SRCS += $(COBJS:.o=.c) @@ -65,17 +65,12 @@ gcclibdir := $(shell dirname `$(CC) -print-libgcc-file-name`)
CPPFLAGS += -I..
-all: $(obj).depend $(OBJS) $(LIB) $(OUTPUT) +all: $(obj).depend $(OBJS) $(OUTPUT)
######################################################################### -$(LIB): $(obj).depend $(LIBOBJS) - $(AR) $(ARFLAGS) $@ $(LIBOBJS) - -$(OUTPUT): -$(obj)%: $(obj)%.o $(LIB) - $(LD) $(obj)crt0.o -Ttext $(LOAD_ADDR) \ - -o $@ $< $(LIB) \ - -L$(gcclibdir) -lgcc + +$(OUTPUT): $(LIBOBJS) + $(LD) -Ttext $(LOAD_ADDR) -o $@ $^ -L$(gcclibdir) -lgcc $(OBJCOPY) -O binary $@ $(OUTPUT).bin 2>/dev/null
$(obj)crc32.c:

Dear Peter Tyser,
In message 1245711701-22468-3-git-send-email-ptyser@xes-inc.com you wrote:
Signed-off-by: Peter Tyser ptyser@xes-inc.com
api_examples/Makefile | 15 +++++---------- 1 files changed, 5 insertions(+), 10 deletions(-)
Applied, thanks.
Best regards,
Wolfgang Denk

* 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@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 $@ $<
#########################################################################

Dear Peter Tyser,
In message 1245711701-22468-4-git-send-email-ptyser@xes-inc.com you wrote:
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@xes-inc.com
Makefile | 1 - api_examples/.gitignore | 5 --- api_examples/Makefile | 79 +++++++++++++++++++---------------------------- 3 files changed, 32 insertions(+), 53 deletions(-)
Applied, thanks.
Best regards,
Wolfgang Denk

On 2009-06-23, at 01:01, Peter Tyser wrote:
This cleans up the Makefile a bit and simplifies future changes
Signed-off-by: Peter Tyser ptyser@xes-inc.com
These are some similar changes to the ones I made to the tools directory recently. It gets rid of symlinking source files which has the side benefit of resolving the out of tree build error for the API code.
Hi Peter, Thanks a lot for taking care of this. All 4 patches look fine, so "Acked-by" from me.
Rafal

Dear Peter Tyser,
In message 1245711701-22468-1-git-send-email-ptyser@xes-inc.com you wrote:
This cleans up the Makefile a bit and simplifies future changes
Signed-off-by: Peter Tyser ptyser@xes-inc.com
These are some similar changes to the ones I made to the tools directory recently. It gets rid of symlinking source files which has the side benefit of resolving the out of tree build error for the API code.
api_examples/Makefile | 15 +++++++++++---- 1 files changed, 11 insertions(+), 4 deletions(-)
Applied, thanks.
Best regards,
Wolfgang Denk
participants (3)
-
Peter Tyser
-
Rafal Jaworowski
-
Wolfgang Denk