提交 1de04831 创建 作者: Silas Boyd-Wickizer's avatar Silas Boyd-Wickizer

Makefile tweaks.

上级 ec549a89
...@@ -4,13 +4,13 @@ ...@@ -4,13 +4,13 @@
# Custom config file? Otherwise use defaults. # Custom config file? Otherwise use defaults.
-include config.mk -include config.mk
Q ?= @
TOOLPREFIX ?= x86_64-jos-elf- TOOLPREFIX ?= x86_64-jos-elf-
QEMU ?= qemu-system-x86_64 QEMU ?= qemu-system-x86_64
QEMUSMP ?= 4 QEMUSMP ?= 4
QEMUSRC ?= ../mtrace QEMUSRC ?= ../mtrace
MTRACE ?= $(QEMU) MTRACE ?= $(QEMU)
CC = $(TOOLPREFIX)clang
CC = $(TOOLPREFIX)gcc CC = $(TOOLPREFIX)gcc
AS = $(TOOLPREFIX)gas AS = $(TOOLPREFIX)gas
LD = $(TOOLPREFIX)ld LD = $(TOOLPREFIX)ld
...@@ -18,7 +18,8 @@ NM = $(TOOLPREFIX)nm ...@@ -18,7 +18,8 @@ NM = $(TOOLPREFIX)nm
OBJCOPY = $(TOOLPREFIX)objcopy OBJCOPY = $(TOOLPREFIX)objcopy
CFLAGS = -fno-pic -static -fno-builtin -fno-strict-aliasing -O2 -Wall -MD -ggdb \ CFLAGS = -fno-pic -static -fno-builtin -fno-strict-aliasing -O2 -Wall -MD -ggdb \
-m64 -Werror -std=c99 -fms-extensions -mno-sse -mcmodel=kernel -I$(QEMUSRC) -m64 -Werror -std=c99 -fms-extensions -mno-sse -mcmodel=kernel -I$(QEMUSRC) \
-fno-omit-frame-pointer
CFLAGS += $(shell $(CC) -fno-stack-protector -E -x c /dev/null >/dev/null 2>&1 && echo -fno-stack-protector) CFLAGS += $(shell $(CC) -fno-stack-protector -E -x c /dev/null >/dev/null 2>&1 && echo -fno-stack-protector)
ASFLAGS = -m64 -gdwarf-2 ASFLAGS = -m64 -gdwarf-2
LDFLAGS += -m elf_x86_64 LDFLAGS += -m elf_x86_64
...@@ -65,19 +66,26 @@ UPROGS= \ ...@@ -65,19 +66,26 @@ UPROGS= \
_ls \ _ls \
_sh \ _sh \
%.o: %.c
@echo " CC $@"
$(Q)$(CC) $(CFLAGS) -c -o $@ $<
%.o: %.S
@echo " CC $@"
$(Q)$(CC) $(ASFLAGS) -c -o $@ $<
kernel: boot.o $(OBJS) initcode bootother fs.img kernel: boot.o $(OBJS) initcode bootother fs.img
$(LD) $(LDFLAGS) -T kernel.ld -z max-page-size=4096 -e start \ @echo " LD $@"
$(Q)$(LD) $(LDFLAGS) -T kernel.ld -z max-page-size=4096 -e start \
-o $@ boot.o $(OBJS) -b binary initcode bootother fs.img -o $@ boot.o $(OBJS) -b binary initcode bootother fs.img
initcode: initcode.S initcode: TTEXT = 0x0
$(CC) $(CFLAGS) -nostdinc -I. -c initcode.S bootother: TTEXT = 0x7000
$(LD) $(LDFLAGS) -N -e start -Ttext 0 -o initcode.out initcode.o %: %.S
$(OBJCOPY) -S -O binary initcode.out initcode @echo " CC $@"
$(Q)$(CC) $(CFLAGS) -nostdinc -I. -c $@.S
bootother: bootother.S $(Q)$(LD) $(LDFLAGS) -N -e start -Ttext $(TTEXT) -o $@.out $@.o
$(CC) $(CFLAGS) -nostdinc -I. -c bootother.S $(Q)$(OBJCOPY) -S -O binary $@.out $@
$(LD) $(LDFLAGS) -N -e start -Ttext 0x7000 -o bootother.out bootother.o
$(OBJCOPY) -S -O binary bootother.out bootother
xv6memfs.img: bootblock kernelmemfs xv6memfs.img: bootblock kernelmemfs
dd if=/dev/zero of=xv6memfs.img count=10000 dd if=/dev/zero of=xv6memfs.img count=10000
...@@ -85,7 +93,8 @@ xv6memfs.img: bootblock kernelmemfs ...@@ -85,7 +93,8 @@ xv6memfs.img: bootblock kernelmemfs
dd if=kernelmemfs of=xv6memfs.img seek=1 conv=notrunc dd if=kernelmemfs of=xv6memfs.img seek=1 conv=notrunc
_%: %.o $(ULIB) _%: %.o $(ULIB)
$(LD) $(LDFLAGS) -N -e main -Ttext 0 -o $@ $^ @echo " LD $@"
$(Q)$(LD) $(LDFLAGS) -N -e main -Ttext 0 -o $@ $^
mkfs: mkfs.c fs.h mkfs: mkfs.c fs.h
gcc -m32 -Werror -Wall -o mkfs mkfs.c gcc -m32 -Werror -Wall -o mkfs mkfs.c
...@@ -121,11 +130,14 @@ MTRACEOPTS = -rtc clock=vm -mtrace-enable -mtrace-file mtrace.out \ ...@@ -121,11 +130,14 @@ MTRACEOPTS = -rtc clock=vm -mtrace-enable -mtrace-file mtrace.out \
mtrace: mscan.kern mscan.syms mtrace: mscan.kern mscan.syms
$(MTRACE) $(QEMUOPTS) $(MTRACEOPTS) -kernel mscan.kern $(MTRACE) $(QEMUOPTS) $(MTRACEOPTS) -kernel mscan.kern
mscan.out: mtrace.out $(QEMUSRC)/mtrace-tools/mscan mscan.out: $(QEMUSRC)/mtrace-tools/mscan
$(QEMUSRC)/mtrace-tools/mscan > $@ || (rm -f $@; exit 2) $(QEMUSRC)/mtrace-tools/mscan > $@ || (rm -f $@; exit 2)
mscan.sorted: mscan.out $(QEMUSRC)/mtrace-tools/sersec-sort
$(QEMUSRC)/mtrace-tools/sersec-sort < $< > $@
ud0: kernel ud0: kernel
rsync -avP kernel amsterdam.csail.mit.edu:/tftpboot/ud0/kernel.xv6 rsync -avP kernel amsterdam.csail.mit.edu:/tftpboot/ud0/kernel.xv6
clean: clean:
rm -f *.o *.d *.asm *.sym initcode kernel bootother mkfs fs.img rm -f *.o *.d *.asm *.sym initcode kernel bootother mkfs fs.img _*
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论