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

Makefile tweaks.

上级 ec549a89
......@@ -4,13 +4,13 @@
# Custom config file? Otherwise use defaults.
-include config.mk
Q ?= @
TOOLPREFIX ?= x86_64-jos-elf-
QEMU ?= qemu-system-x86_64
QEMUSMP ?= 4
QEMUSRC ?= ../mtrace
MTRACE ?= $(QEMU)
CC = $(TOOLPREFIX)clang
CC = $(TOOLPREFIX)gcc
AS = $(TOOLPREFIX)gas
LD = $(TOOLPREFIX)ld
......@@ -18,7 +18,8 @@ NM = $(TOOLPREFIX)nm
OBJCOPY = $(TOOLPREFIX)objcopy
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)
ASFLAGS = -m64 -gdwarf-2
LDFLAGS += -m elf_x86_64
......@@ -65,19 +66,26 @@ UPROGS= \
_ls \
_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
$(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
initcode: initcode.S
$(CC) $(CFLAGS) -nostdinc -I. -c initcode.S
$(LD) $(LDFLAGS) -N -e start -Ttext 0 -o initcode.out initcode.o
$(OBJCOPY) -S -O binary initcode.out initcode
bootother: bootother.S
$(CC) $(CFLAGS) -nostdinc -I. -c bootother.S
$(LD) $(LDFLAGS) -N -e start -Ttext 0x7000 -o bootother.out bootother.o
$(OBJCOPY) -S -O binary bootother.out bootother
initcode: TTEXT = 0x0
bootother: TTEXT = 0x7000
%: %.S
@echo " CC $@"
$(Q)$(CC) $(CFLAGS) -nostdinc -I. -c $@.S
$(Q)$(LD) $(LDFLAGS) -N -e start -Ttext $(TTEXT) -o $@.out $@.o
$(Q)$(OBJCOPY) -S -O binary $@.out $@
xv6memfs.img: bootblock kernelmemfs
dd if=/dev/zero of=xv6memfs.img count=10000
......@@ -85,7 +93,8 @@ xv6memfs.img: bootblock kernelmemfs
dd if=kernelmemfs of=xv6memfs.img seek=1 conv=notrunc
_%: %.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
gcc -m32 -Werror -Wall -o mkfs mkfs.c
......@@ -121,11 +130,14 @@ MTRACEOPTS = -rtc clock=vm -mtrace-enable -mtrace-file mtrace.out \
mtrace: mscan.kern mscan.syms
$(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)
mscan.sorted: mscan.out $(QEMUSRC)/mtrace-tools/sersec-sort
$(QEMUSRC)/mtrace-tools/sersec-sort < $< > $@
ud0: kernel
rsync -avP kernel amsterdam.csail.mit.edu:/tftpboot/ud0/kernel.xv6
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 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论