os-workshop

same materials and sample source for RV32 OS projects
git clone http://frotz.net/git/os-workshop.git
Log | Files | Refs

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 :=