diff --git a/Makefile b/Makefile index 6a448fa..769086a 100644 --- a/Makefile +++ b/Makefile @@ -5,15 +5,16 @@ ARCH = arm # Config options concerning the build process itself -VERBOSE = 0 # 1 shows all compiler flags, 0 shows cleaner output +VERBOSE ?= 0 # 1 shows all compiler flags, 0 shows cleaner output +V = $(if $(VERBOSE:1=),@) # Use this to prefix commands that should only be shown when VERBOSE==1 # Define the tools to be used TOOL_PREFIX = arm-elf- AS = $(TOOL_PREFIX)as CC = $(TOOL_PREFIX)gcc LD = $(TOOL_PREFIX)ld -OBJCPY = $(TOOL_PREFIX)objcopy -OBJDMP = $(TOOL_PREFIX)objdump +OBJCOPY = $(TOOL_PREFIX)objcopy +OBJDUMP = $(TOOL_PREFIX)objdump # Define the flags we'll need for our tools INCLUDES = -I include @@ -27,45 +28,47 @@ include boot/Makefile.inc include kernel/Makefile.inc include devices/Makefile.inc -.PHONY: all clean boot +.PHONY: all clean boot boot-gdb all: aedrix-kernel.img aedrix-kernel.elf aedrix-kernel.elf: $(KOBJS) - $(if $(VERBOSE:1=),@echo ' LD $@') - $(if $(VERBOSE:1=),@)$(LD) $(KLDFLAGS) -o $@ $(KOBJS) $(EXTRA_LIBS) + @echo ' LD $@' + $(V)$(LD) $(KLDFLAGS) -o $@ $(KOBJS) $(EXTRA_LIBS) aedrix-kernel.objdump: aedrix-kernel.elf - $(if $(VERBOSE:1=),@echo ' OBJDMP $@') - $(if $(VERBOSE:1=),@)$(OBJDMP) -D $< > $@ + @echo 'OBJDUMP $@' + $(V)$(OBJDUMP) -D $< > $@ aedrix-kernel.img: aedrix-kernel.elf - $(if $(VERBOSE:1=),@echo ' OBJCPY $@') - $(if $(VERBOSE:1=),@)$(OBJCPY) $< -O binary $@ + @echo 'OBJCOPY $@' + $(V)$(OBJCOPY) $< -O binary $@ %.o: %.c - $(if $(VERBOSE:1=),@echo ' CC $@') - $(if $(VERBOSE:1=),@)$(CC) $(KCFLAGS) -c -o $@ $< + @echo ' CC $@' + $(V)$(CC) $(KCFLAGS) -c -o $@ $< # Assembly files without preprocessor directives %.o: %.s - $(if $(VERBOSE:1=),@echo ' AS $@') - $(if $(VERBOSE:1=),@)$(AS) -o $@ $< + @echo ' AS $@' + $(V)$(AS) -o $@ $< # Assembly files with preprocessor directives %.o: %.S - $(if $(VERBOSE:1=),@echo ' AS $@') - $(if $(VERBOSE:1=),@)$(AS) -o $@ $< + @echo ' AS $@' + $(V)$(AS) -o $@ $< clean: - @echo ' CLEAN *.o' - @rm -f $(KOBJS) - @echo ' CLEAN aedrix-kernel.elf' - @rm -f aedrix-kernel.elf - @echo ' CLEAN aedrix-kernel.objdump' - @rm -f aedrix-kernel.objdump - @echo ' CLEAN aedrix-kernel.img' - @rm -f aedrix-kernel.img + @echo ' CLEAN *.o' + $(V)rm -f $(KOBJS) + @echo ' CLEAN aedrix-kernel.elf' + $(V)rm -f aedrix-kernel.elf + @echo ' CLEAN aedrix-kernel.objdump' + $(V)rm -f aedrix-kernel.objdump + @echo ' CLEAN aedrix-kernel.img' + $(V)rm -f aedrix-kernel.img -boot: aedrix-kernel.elf - @qemu-system-arm -m 1024 -M vexpress-a9 -kernel aedrix-kernel.elf -serial stdio +boot: aedrix-kernel.img + $(V)qemu-system-arm -m 1024 -M vexpress-a9 -kernel aedrix-kernel.img -serial stdio +boot-gdb: aedrix-kernel.img + $(V)qemu-system-arm -m 1024 -M vexpress-a9 -kernel aedrix-kernel.img -serial stdio -S -s