mirror of
https://github.com/lowRISC/ibex.git
synced 2025-04-23 21:39:13 -04:00
This invocation would break: make -C examples/sw/led/ CC=/opt/lowrisc-toolchain-gcc-rv32imc-20210412-1/bin/riscv32-unknown-elf-gcc because the "-gcc" occurence inside the directory name would also be replaced. Fix by first deriving CROSS_COMPILE from CC, then conditionally build other tool file names/paths. Signed-off-by: Leon Woestenberg <leon@sidebranch.com>
60 lines
1.5 KiB
Makefile
60 lines
1.5 KiB
Makefile
# Copyright lowRISC contributors.
|
|
# Licensed under the Apache License, Version 2.0, see LICENSE for details.
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
#
|
|
# Generate a baremetal application
|
|
|
|
PROGRAM ?= led
|
|
PROGRAM_CFLAGS = -Wall -g -Os
|
|
ARCH = rv32imc
|
|
# ARCH = rv32im # to disable compressed instructions
|
|
SRCS = $(PROGRAM).c
|
|
|
|
CC = riscv32-unknown-elf-gcc
|
|
|
|
CROSS_COMPILE = $(patsubst %-gcc,%-,$(CC))
|
|
OBJCOPY ?= $(CROSS_COMPILE)objcopy
|
|
OBJDUMP ?= $(CROSS_COMPILE)objdump
|
|
|
|
LINKER_SCRIPT ?= link.ld
|
|
CRT ?= crt0.S
|
|
CFLAGS ?= -march=$(ARCH) -mabi=ilp32 -static -mcmodel=medany \
|
|
-fvisibility=hidden -nostdlib -nostartfiles $(PROGRAM_CFLAGS)
|
|
|
|
OBJS := ${SRCS:.c=.o} ${CRT:.S=.o}
|
|
DEPS = $(OBJS:%.o=%.d)
|
|
|
|
OUTFILES = $(PROGRAM).elf $(PROGRAM).vmem $(PROGRAM).bin $(PROGRAM).dis
|
|
|
|
all: $(OUTFILES)
|
|
|
|
$(PROGRAM).elf: $(OBJS) $(LINKER_SCRIPT)
|
|
$(CC) $(CFLAGS) -T $(LINKER_SCRIPT) $(OBJS) -o $@ $(LIBS)
|
|
|
|
%.dis: %.elf
|
|
$(OBJDUMP) -SD $^ > $@
|
|
|
|
# Note: this target requires the srecord package to be installed.
|
|
# XXX: This could be replaced by objcopy once
|
|
# https://sourceware.org/bugzilla/show_bug.cgi?id=19921
|
|
# is widely available.
|
|
# XXX: Currently the start address 0x00000000 is hardcoded. It could/should be
|
|
# read from the elf file, but is lost in the bin file.
|
|
# Switching to objcopy will resolve that as well.
|
|
%.vmem: %.bin
|
|
srec_cat $^ -binary -offset 0x0000 -byte-swap 4 -o $@ -vmem
|
|
|
|
%.bin: %.elf
|
|
$(OBJCOPY) -O binary $^ $@
|
|
|
|
%.o: %.c
|
|
$(CC) $(CFLAGS) -MMD -c $(INCS) -o $@ $<
|
|
|
|
%.o: %.S
|
|
$(CC) $(CFLAGS) -MMD -c $(INCS) -o $@ $<
|
|
|
|
clean:
|
|
$(RM) -f *.o *.d
|
|
|
|
distclean: clean
|
|
$(RM) -f $(OUTFILES)
|