[Skiboot] [PATCH] external/pflash: Fix makefile dependencies

Stewart Smith stewart at linux.vnet.ibm.com
Thu Dec 3 18:12:57 AEDT 2015


Joel Stanley <joel at jms.id.au> writes:
> When building under buildroot, libflash was being built before the
> links:
>
>  make[2]: *** No rule to make target 'libflash/libflash.c', needed by
>  'libflash-libflash.o'.  Stop.
>  make[2]: *** Waiting for unfinished jobs....
>      LN  ccan
>      LN  common
>      LN  libflash
>
> This is another race that is only exposed certain conditions. To
> reproduce outside of buildroot, set PFLASH_VERSION to anything. By
> describing the dependencies on the source files the build works again.
>
> I think it's almost time to stop using symlinks.
>
> Signed-off-by: Joel Stanley <joel at jms.id.au>
> ---
>  external/pflash/Makefile | 7 +++++++
>  external/pflash/rules.mk | 7 +++++--
>  2 files changed, 12 insertions(+), 2 deletions(-)
>
> diff --git a/external/pflash/Makefile b/external/pflash/Makefile
> index 9d7c18372c67..fb686cb18fe1 100644
> --- a/external/pflash/Makefile
> +++ b/external/pflash/Makefile
> @@ -24,6 +24,13 @@ ccan:
>  common:
>  	$(Q_LN)ln -sf ../common .
>  
> +# Surely there's a better way than this
> +common/arch_flash_common.c: | common
> +common/arch_flash_x86.c: | common
> +common/arch_flash_arm.c: | common
> +common/arch_flash_powrepc.c: | common
> +common/ast-sf-ctrl.c: | common
> +
>  $(OBJS): | links arch_links
>  
>  .PHONY: VERSION-always
> diff --git a/external/pflash/rules.mk b/external/pflash/rules.mk
> index f49e438cedf2..219e3d34a706 100644
> --- a/external/pflash/rules.mk
> +++ b/external/pflash/rules.mk
> @@ -2,8 +2,9 @@
>  
>  override CFLAGS  += -O2 -Wall -I.
>  OBJS    = pflash.o progress.o version.o
> -LIBFLASH_OBJS += libflash-libflash.o libflash-libffs.o libflash-ecc.o \
> -		 libflash-blocklevel.o libflash-file.o
> +LIBFLASH_FILES := libflash.c libffs.c ecc.c blocklevel.c file.c
> +LIBFLASH_OBJS := $(addprefix libflash-, $(LIBFLASH_FILES:.c=.o))
> +LIBFLASH_SRC := $(addprefix libflash/,$(LIBFLASH_FILES))
>  OBJS	+= $(LIBFLASH_OBJS)
>  OBJS	+= common-arch_flash.o
>  EXE     = pflash
> @@ -22,6 +23,8 @@ version.c: .version
>  %.o : %.c
>  	$(Q_CC)$(CC) $(CFLAGS) -c $< -o $@
>  
> +$(LIBFLASH_SRC): | links
> +
>  $(LIBFLASH_OBJS): libflash-%.o : libflash/%.c
>  	$(Q_CC)$(CC) $(CFLAGS) -c $< -o $@
>  

Would this work

--- a/external/common/rules.mk
+++ b/external/common/rules.mk
@@ -34,3 +34,6 @@ common/arch_flash_common.o: common/arch_flash_common.c .FORCE
 common/arch_flash.o: $(ARCH_OBJS)
        $(CROSS_COMPILE)ld -r $(ARCH_OBJS) -o $@
 
+common/arch_flash_common.c: common
+common/arch_flash.o: common
+$(ARCH_OBJS): common


A bit less hacky?

I'll hold off tagging 5.1.12 until we sort this out.



More information about the Skiboot mailing list