blob: 9453bdc5fa7f9df1873fa171223a36b8c20e4bba [file] [log] [blame]
# Copyright lowRISC contributors.
# Licensed under the Apache License, Version 2.0, see LICENSE for details.
# SPDX-License-Identifier: Apache-2.0
#
##########################################################################
## The following variables must be set prior to invoking this Makefile ##
## NAME - Top level name of the final elf ##
## SRCS - List of files to be compiled ##
## PROGRAM_DIR - Location of file corresponding to NAME ##
##########################################################################
all: $(LIB_DIR) $(OUTFILES)
#
.PHONY: $(LIB_DIR)
$(LIB_DIR):
$(MAKE) -C $(LIB_DIR)
$(EXE).elf: $(OBJS) $(LINKER_SCRIPT) $(LIB_DIR)
$(CC) $(CFLAGS) $(OBJS) -T $(LINKER_SCRIPT) -o $@ $(LIBS) -Xlinker -Map=$(EXE).map
%.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 merged.
%.vmem: %.bin
srec_cat $^ -binary -offset 0x0 -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 $@ $<
-include $(DEPS)
clean:
$(RM) -f *.o *.d $(GENHDRS)
distclean: clean
cd $(LIB_DIR) && $(MAKE) distclean
$(RM) -f $(OUTFILES) $(EXT_DIR)/*.o $(EXT_DIR)/*.d