Fix ld error in elf maketarget
authorBoris Shingarov <shingarov@labware.com>
Thu, 25 Jun 2020 09:31:45 +0000 (05:31 -0400)
committerBoris Shingarov <shingarov@labware.com>
Fri, 26 Jun 2020 01:59:00 +0000 (21:59 -0400)
The sdram_init ELF fails to link:

powerpc64le-linux-gnu-ld -static -nostdlib -T sdram_init.lds \
    --gc-sections -o sdram_init.elf head.o main.o sdram.o console.o \
    libc.o sdram_init.lds
powerpc64le-linux-gnu-ld: error: linker script file 'sdram_init.lds'
    appears multiple times
make: *** [Makefile:70: sdram_init.elf] Error 1

This is because sdram_init.lds is one of the prerequisites, and thus is
contained in $^.  However, it is also explicitly specified as part of
LDFLAGS, as the argument to -T.

Signed-off-by: Boris Shingarov <shingarov@labware.com>
litedram/gen-src/sdram_init/Makefile

index 71ca921a13a778c7bb5df82a479ca26a091fffcc..b28d7e47a7f2e6d2cf1b43e149c7388bf5ede14c 100644 (file)
@@ -67,7 +67,7 @@ $(OBJ)/libc.o: $(LIBC_OBJ)
        $(call Q,LD, $(LD) -r -o $@ $^, $@)
 
 $(OBJ)/$(PROGRAM).elf: $(OBJECTS) $(OBJ)/libc.o $(OBJ)/$(PROGRAM).lds
-       $(call Q,LD, $(LD) $(LDFLAGS) -o $@ $^, $@)
+       $(call Q,LD, $(LD) $(LDFLAGS) -o $@ $(OBJECTS) $(OBJ)/libc.o, $@)
 
 $(OBJ)/$(PROGRAM).bin: $(OBJ)/$(PROGRAM).elf
        $(call Q,OC, $(OBJCOPY) -O binary -S $^ $@, $@)