Makefile: refine image dependency
This commit is contained in:
parent
6f2c345320
commit
c3ffbc97c3
6 changed files with 17 additions and 16 deletions
15
Makefile
15
Makefile
|
@ -123,14 +123,19 @@ $(LIBS): %:
|
||||||
@$(MAKE) -s -C $(AM_HOME)/$* archive
|
@$(MAKE) -s -C $(AM_HOME)/$* archive
|
||||||
|
|
||||||
### Rule (link): objects (`*.o`) and libraries (`*.a`) -> `IMAGE.elf`, the final ELF binary to be packed into image (ld)
|
### Rule (link): objects (`*.o`) and libraries (`*.a`) -> `IMAGE.elf`, the final ELF binary to be packed into image (ld)
|
||||||
$(IMAGE).elf: $(OBJS) $(LIBS)
|
$(IMAGE).elf: $(LINKAGE)
|
||||||
|
@echo \# Creating image [$(ARCH)]
|
||||||
@echo + LD "->" $(IMAGE_REL).elf
|
@echo + LD "->" $(IMAGE_REL).elf
|
||||||
@$(LD) $(LDFLAGS) -o $(IMAGE).elf --start-group $(LINKAGE) --end-group
|
ifneq ($(filter $(ARCH),native),)
|
||||||
|
$(CXX) -o $@ -Wl,--whole-archive $^ -Wl,-no-whole-archive $(LDFLAGS_CXX)
|
||||||
|
else
|
||||||
|
@$(LD) $(LDFLAGS) -o $@ --start-group $^ --end-group
|
||||||
|
endif
|
||||||
|
|
||||||
### Rule (archive): objects (`*.o`) -> `ARCHIVE.a` (ar)
|
### Rule (archive): objects (`*.o`) -> `ARCHIVE.a` (ar)
|
||||||
$(ARCHIVE): $(OBJS)
|
$(ARCHIVE): $(OBJS)
|
||||||
@echo + AR "->" $(shell realpath $@ --relative-to .)
|
@echo + AR "->" $(shell realpath $@ --relative-to .)
|
||||||
@$(AR) rcs $(ARCHIVE) $(OBJS)
|
@$(AR) rcs $@ $^
|
||||||
|
|
||||||
### Rule (`#include` dependencies): paste in `.d` files generated by gcc on `-MMD`
|
### Rule (`#include` dependencies): paste in `.d` files generated by gcc on `-MMD`
|
||||||
-include $(addprefix $(DST_DIR)/, $(addsuffix .d, $(basename $(SRCS))))
|
-include $(addprefix $(DST_DIR)/, $(addsuffix .d, $(basename $(SRCS))))
|
||||||
|
@ -140,8 +145,8 @@ $(ARCHIVE): $(OBJS)
|
||||||
### Build order control
|
### Build order control
|
||||||
image: image-dep
|
image: image-dep
|
||||||
archive: $(ARCHIVE)
|
archive: $(ARCHIVE)
|
||||||
image-dep: $(OBJS) $(LIBS)
|
image-dep: $(LIBS) $(IMAGE).elf
|
||||||
@echo \# Creating image [$(ARCH)]
|
.NOTPARALLEL: image-dep
|
||||||
.PHONY: image image-dep archive run $(LIBS)
|
.PHONY: image image-dep archive run $(LIBS)
|
||||||
|
|
||||||
### Clean a single project (remove `build/`)
|
### Clean a single project (remove `build/`)
|
||||||
|
|
|
@ -15,14 +15,10 @@ AM_SRCS := native/trm.c \
|
||||||
CFLAGS += -fpie
|
CFLAGS += -fpie
|
||||||
ASFLAGS += -fpie -pie
|
ASFLAGS += -fpie -pie
|
||||||
comma = ,
|
comma = ,
|
||||||
LDFLAGS_CXX = $(addprefix -Wl$(comma), $(LDFLAGS))
|
LDFLAGS_CXX = $(addprefix -Wl$(comma), $(LDFLAGS)) -pie -lSDL2 -ldl
|
||||||
|
|
||||||
image:
|
|
||||||
@echo + LD "->" $(IMAGE_REL)
|
|
||||||
@g++ -pie -o $(IMAGE) -Wl,--whole-archive $(LINKAGE) -Wl,-no-whole-archive $(LDFLAGS_CXX) -lSDL2 -ldl
|
|
||||||
|
|
||||||
run: image
|
run: image
|
||||||
$(IMAGE)
|
$(IMAGE).elf
|
||||||
|
|
||||||
gdb: image
|
gdb: image
|
||||||
gdb -ex "handle SIGUSR1 SIGUSR2 SIGSEGV noprint nostop" $(IMAGE)
|
gdb -ex "handle SIGUSR1 SIGUSR2 SIGSEGV noprint nostop" $(IMAGE).elf
|
||||||
|
|
|
@ -17,7 +17,7 @@ CFLAGS += -DMAINARGS=\"$(mainargs)\"
|
||||||
CFLAGS += -I$(AM_HOME)/am/src/platform/nemu/include
|
CFLAGS += -I$(AM_HOME)/am/src/platform/nemu/include
|
||||||
.PHONY: $(AM_HOME)/am/src/platform/nemu/trm.c
|
.PHONY: $(AM_HOME)/am/src/platform/nemu/trm.c
|
||||||
|
|
||||||
image: $(IMAGE).elf
|
image: image-dep
|
||||||
@$(OBJDUMP) -d $(IMAGE).elf > $(IMAGE).txt
|
@$(OBJDUMP) -d $(IMAGE).elf > $(IMAGE).txt
|
||||||
@echo + OBJCOPY "->" $(IMAGE_REL).bin
|
@echo + OBJCOPY "->" $(IMAGE_REL).bin
|
||||||
@$(OBJCOPY) -S --set-section-flags .bss=alloc,contents -O binary $(IMAGE).elf $(IMAGE).bin
|
@$(OBJCOPY) -S --set-section-flags .bss=alloc,contents -O binary $(IMAGE).elf $(IMAGE).bin
|
||||||
|
|
|
@ -15,7 +15,7 @@ LDFLAGS += --gc-sections -e _start
|
||||||
CFLAGS += -DMAINARGS=\"$(mainargs)\"
|
CFLAGS += -DMAINARGS=\"$(mainargs)\"
|
||||||
.PHONY: $(AM_HOME)/am/src/riscv/npc/trm.c
|
.PHONY: $(AM_HOME)/am/src/riscv/npc/trm.c
|
||||||
|
|
||||||
image: $(IMAGE).elf
|
image: image-dep
|
||||||
@$(OBJDUMP) -d $(IMAGE).elf > $(IMAGE).txt
|
@$(OBJDUMP) -d $(IMAGE).elf > $(IMAGE).txt
|
||||||
@echo + OBJCOPY "->" $(IMAGE_REL).bin
|
@echo + OBJCOPY "->" $(IMAGE_REL).bin
|
||||||
@$(OBJCOPY) -S --set-section-flags .bss=alloc,contents -O binary $(IMAGE).elf $(IMAGE).bin
|
@$(OBJCOPY) -S --set-section-flags .bss=alloc,contents -O binary $(IMAGE).elf $(IMAGE).bin
|
||||||
|
|
|
@ -11,7 +11,7 @@ build-arg: image
|
||||||
|
|
||||||
BOOT_HOME := $(AM_HOME)/am/src/x86/qemu/boot
|
BOOT_HOME := $(AM_HOME)/am/src/x86/qemu/boot
|
||||||
|
|
||||||
image: $(IMAGE).elf
|
image: image-dep
|
||||||
@$(MAKE) -s -C $(BOOT_HOME)
|
@$(MAKE) -s -C $(BOOT_HOME)
|
||||||
@echo + CREATE "->" $(IMAGE_REL)
|
@echo + CREATE "->" $(IMAGE_REL)
|
||||||
@( cat $(BOOT_HOME)/bootblock.o; head -c 1024 /dev/zero; cat $(IMAGE).elf ) > $(IMAGE)
|
@( cat $(BOOT_HOME)/bootblock.o; head -c 1024 /dev/zero; cat $(IMAGE).elf ) > $(IMAGE)
|
||||||
|
|
|
@ -16,4 +16,4 @@ LDFLAGS += --gc-sections -e _start
|
||||||
CFLAGS += -DMAINARGS=\"$(mainargs)\"
|
CFLAGS += -DMAINARGS=\"$(mainargs)\"
|
||||||
.PHONY: $(AM_HOME)/am/src/riscv/spike/trm.c
|
.PHONY: $(AM_HOME)/am/src/riscv/spike/trm.c
|
||||||
|
|
||||||
image: $(IMAGE).elf
|
image: image-dep
|
||||||
|
|
Loading…
Add table
Reference in a new issue