flash/nor/fespi: algorithm, large address, errors
[fw/openocd] / contrib / loaders / flash / fespi / Makefile
index 4d2ab51d7619336fa7283b38eebda7f31acb45e1..edecf0a729b10208d39b7d78527c54653aca1460 100644 (file)
@@ -2,27 +2,50 @@ BIN2C = ../../../../src/helper/bin2char.sh
 
 CROSS_COMPILE ?= riscv64-unknown-elf-
 
-CC=$(CROSS_COMPILE)gcc
-OBJCOPY=$(CROSS_COMPILE)objcopy
-OBJDUMP=$(CROSS_COMPILE)objdump
+RISCV_CC=$(CROSS_COMPILE)gcc
+RISCV_OBJCOPY=$(CROSS_COMPILE)objcopy
+RISCV_OBJDUMP=$(CROSS_COMPILE)objdump
 
-CFLAGS = -march=rv32i -mabi=ilp32 -x assembler-with-cpp -nostdlib -nostartfiles
+CFLAGS = -nostdlib -nostartfiles -Wall -Werror -Os -fPIC -Wunused-result -g
+RISCV32_CFLAGS = -march=rv32e -mabi=ilp32e $(CFLAGS)
+RISCV64_CFLAGS = -march=rv64i -mabi=lp64 $(CFLAGS)
 
-all: fespi.inc
+all: riscv32_fespi.inc riscv64_fespi.inc
 
 .PHONY: clean
 
-%.elf: %.S
-       $(CC) $(CFLAGS) $< -o $@
+# .c -> .o
+riscv32_%.o:  riscv_%.c
+       $(RISCV_CC) -c $(RISCV32_CFLAGS) $^ -o $@
 
-%.lst: %.elf
-       $(OBJDUMP) -S $< > $@
+riscv64_%.o:  riscv_%.c
+       $(RISCV_CC) -c $(RISCV64_CFLAGS) $< -o $@
+
+# .S -> .o
+riscv32_%.o:  riscv_%.S
+       $(RISCV_CC) -c $(RISCV32_CFLAGS) $^ -o $@
+
+riscv64_%.o:  riscv_%.S
+       $(RISCV_CC) -c $(RISCV64_CFLAGS) $^ -o $@
+
+# .o -> .elf
+riscv32_%.elf: riscv32_%.o riscv32_wrapper.o
+       $(RISCV_CC) -T riscv.lds $(RISCV32_CFLAGS) $^ -o $@
 
+riscv64_%.elf: riscv64_%.o riscv64_wrapper.o
+       $(RISCV_CC) -T riscv.lds $(RISCV64_CFLAGS) $^ -o $@
+
+# .elf -> .bin
 %.bin: %.elf
-       $(OBJCOPY) -Obinary $< $@
+       $(RISCV_OBJCOPY) -Obinary $< $@
 
+# .bin -> .inc
 %.inc: %.bin
        $(BIN2C) < $< > $@
 
+# utility
+%.lst: %.elf
+       $(RISCV_OBJDUMP) -S $< > $@
+
 clean:
-       -rm -f *.elf *.lst *.bin *.inc
+       -rm -f *.elf *.o *.lst *.bin *.inc