app.mk (1826B)
1 ## Copyright 2022, Brian Swetland <swetland@frotz.net> 2 ## Licensed under the Apache License, Version 2.0 3 4 MOD_DIR := $(BUILD)/$(MOD_NAME) 5 MOD_ELF := $(BUILD)/$(MOD_NAME).elf 6 MOD_LST := $(BUILD)/$(MOD_NAME).lst 7 MOD_BIN := $(BUILD)/$(MOD_NAME).bin 8 MOD_LDSCRIPT := $(if $(MOD_LDSCRIPT),$(MOD_LDSCRIPT),$(LDSCRIPT)) 9 MOD_QFLAGS := $(if $(MOD_QEMU_FB),$(QFLAGS.FB),$(QFLAGS.TTY)) 10 11 ALL += $(MOD_ELF) $(MOD_LST) $(MOD_BIN) 12 13 include make/rules.mk 14 15 ifneq ($(MOD_EXT),) 16 # if there is an extra data file, arrange for it to 17 # be added as an object file containing an .extra 18 # segment with the raw data. The linker script 19 # will stuff it in .rodata sandwiched between 20 # __extra_start and __extra_end symbols 21 $(BUILD)/$(MOD_NAME)/extra.o: $(MOD_EXT) 22 $(V)$(XOBJCOPY) -I binary -O elf32-littleriscv --rename-section .data=.extra $< $@ 23 24 MOD_OBJ += $(BUILD)/$(MOD_NAME)/extra.o 25 endif 26 27 $(MOD_ELF): $(MOD_DIR)/build.opts $(patsubst %,$(BUILD)/lib%.a,$(MOD_LIB)) 28 29 $(MOD_ELF): _OBJ := $(MOD_OBJ) 30 $(MOD_ELF): _LDFLAGS := $(MOD_LDFLAGS) -T $(MOD_LDSCRIPT) 31 $(MOD_ELF): _LIB := -L$(BUILD) $(patsubst %,-l%,$(MOD_LIB)) -lgcc 32 $(MOD_ELF): $(MOD_OBJ) $(MOD_LDSCRIPT) make/common.ram.ld 33 @$(info linking $@) 34 $(V)$(XGCC) $(_LDFLAGS) -o $@ $(_OBJ) $(_LIB) 35 36 $(MOD_LST): $(MOD_ELF) 37 $(V)$(XOBJDUMP) -d -z $< > $@ 38 39 $(MOD_BIN): $(MOD_ELF) 40 $(V)$(XOBJCOPY) -O binary $< $@ 41 42 run.$(MOD_NAME):: _BIN := $(MOD_BIN) 43 run.$(MOD_NAME):: _QFLAGS := $(QFLAGS) $(MOD_QFLAGS) 44 run.$(MOD_NAME):: $(MOD_ELF) $(MOD_LST) $(MOD_BIN) $(QEMUBIOS) 45 $(QEMU) $(_QFLAGS) -kernel $(_BIN) 46 47 debug.$(MOD_NAME):: _BIN := $(MOD_BIN) 48 debug.$(MOD_NAME):: _QFLAGS := $(QFLAGS) $(MOD_QFLAGS) $(QFLAGS.GDB) 49 debug.$(MOD_NAME):: $(MOD_ELF) $(MOD_LST) $(MOD_BIN) $(QEMUBIOS) 50 $(QEMU) $(_QFLAGS) -kernel $(_BIN) 51 52 MOD_NAME := 53 MOD_INC := 54 MOD_SRC := 55 MOD_LIB := 56 MOD_EXT := 57 MOD_LDSCRIPT := 58 MOD_QEMU_FB :=