[U-Boot-Users] [PATCH] [BUILD] Remove libraries when updating autoconf.mk

From: Grant Likely grant.likely@secretlab.ca
Fix library problems caused by conditional compilation. Using autoconf.mk to decide which files to compile has caused a problem when changing configuration from one board to another without clearing out the library (*.a) files.
It used to be that the linker was always passed the same list of .o files when building the .a files. However, that is not longer true with conditional compilation. Now, a different board config will have a different file list passed to the linker. The problem occurs when a library has already been built and the board config is changed.
Since the linker will update instead of replace a preexisting library, then if the file list changes to remove some object files the old objects will still exist in the library.
The solution is to remove all old library files when autoconf.mk is made.
Signed-off-by: Grant Likely grant.likely@secretlab.ca ---
Makefile | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-)
diff --git a/Makefile b/Makefile index 407b938..d94d158 100644 --- a/Makefile +++ b/Makefile @@ -354,6 +354,8 @@ $(OBJTREE)/include/autoconf.mk: $(obj)include/config.h @$(CC) -M $(HOST_CFLAGS) $(CPPFLAGS) -MQ $@ include/common.h > $@.dep @# Extract the config macros @$(CPP) $(CFLAGS) -dM include/common.h | sed -n -f tools/scripts/define2mk.sed >> $@ + @# Remove the old libraries because the file list may have changed + @find $(OBJTREE) -type f -name '*.a' -print | xargs rm
sinclude $(OBJTREE)/include/autoconf.mk.dep

In message 20071121162424.22535.14889.stgit@trillian.cg.shawcable.net you wrote:
From: Grant Likely grant.likely@secretlab.ca
Fix library problems caused by conditional compilation. Using autoconf.mk to decide which files to compile has caused a problem when changing configuration from one board to another without clearing out the library (*.a) files.
It used to be that the linker was always passed the same list of .o files when building the .a files. However, that is not longer true with conditional compilation. Now, a different board config will have a different file list passed to the linker. The problem occurs when a library has already been built and the board config is changed.
Since the linker will update instead of replace a preexisting library, then if the file list changes to remove some object files the old objects will still exist in the library.
The solution is to remove all old library files when autoconf.mk is made.
Signed-off-by: Grant Likely grant.likely@secretlab.ca
Merged into u-boot-testing repo. Thanks.
Best regards,
Wolfgang Denk
participants (2)
-
Grant Likely
-
Wolfgang Denk