From 644cb38108b8dc22e0ef3cf5f404fe310d1995f8 Mon Sep 17 00:00:00 2001 From: Peter Tyser Date: Mon, 22 Jun 2009 18:01:38 -0500 Subject: api_examples/Makefile: Split up variable declarations This cleans up the Makefile a bit and simplifies future changes Signed-off-by: Peter Tyser Acked-by: Rafal Jaworowski --- api_examples/Makefile | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) (limited to 'api_examples') 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)) -- cgit v1.1 From 117d0ab5e6f3b3dd48fc346df4919555a78afd39 Mon Sep 17 00:00:00 2001 From: Peter Tyser Date: Mon, 22 Jun 2009 18:01:39 -0500 Subject: api_examples/Makefile: Combine ELF and BIN targets Combining the two rules cleans up the Makefile a bit Signed-off-by: Peter Tyser Acked-by: Rafal Jaworowski --- api_examples/Makefile | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) (limited to 'api_examples') 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 -- cgit v1.1 From 522f6f02adb93194e337016fe2e4e53c58d5d5ea Mon Sep 17 00:00:00 2001 From: Peter Tyser Date: Mon, 22 Jun 2009 18:01:40 -0500 Subject: api_examples/Makefile: Get rid of unnecessary intermediate LIB target Signed-off-by: Peter Tyser Acked-by: Rafal Jaworowski --- api_examples/Makefile | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) (limited to 'api_examples') 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: -- cgit v1.1 From 876b3cef537aab2cba8c19505db2876f6057f818 Mon Sep 17 00:00:00 2001 From: Peter Tyser Date: Mon, 22 Jun 2009 18:01:41 -0500 Subject: api_examples/Makefile: General cleanup * 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 Acked-by: Rafal Jaworowski --- api_examples/.gitignore | 5 ---- api_examples/Makefile | 79 ++++++++++++++++++++----------------------------- 2 files changed, 32 insertions(+), 52 deletions(-) (limited to 'api_examples') 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 $@ $< ######################################################################### -- cgit v1.1