f70172129c
if no lapic available, use 8253pit for clock now xv6 runs both on qemu (uniprocessor) and bochs (uniprocessor and MP)
146 lines
3.5 KiB
Makefile
146 lines
3.5 KiB
Makefile
OBJS = \
|
|
console.o\
|
|
file.o\
|
|
ide.o\
|
|
kalloc.o\
|
|
lapic.o\
|
|
ioapic.o\
|
|
main.o\
|
|
mp.o\
|
|
picirq.o\
|
|
pipe.o\
|
|
proc.o\
|
|
setjmp.o\
|
|
spinlock.o\
|
|
string.o\
|
|
syscall.o\
|
|
sysfile.o\
|
|
sysproc.o\
|
|
trapasm.o\
|
|
trap.o\
|
|
vectors.o\
|
|
bio.o\
|
|
fs.o\
|
|
8253pit.o\
|
|
|
|
# Cross-compiling (e.g., on Mac OS X)
|
|
TOOLPREFIX = i386-jos-elf-
|
|
|
|
# Using native tools (e.g., on X86 Linux)
|
|
# TOOLPREFIX =
|
|
|
|
CC = $(TOOLPREFIX)gcc
|
|
LD = $(TOOLPREFIX)ld
|
|
OBJCOPY = $(TOOLPREFIX)objcopy
|
|
OBJDUMP = $(TOOLPREFIX)objdump
|
|
CFLAGS = -fno-builtin -O2 -Wall -MD
|
|
AS = $(TOOLPREFIX)gas
|
|
|
|
xv6.img : bootblock kernel fs.img
|
|
dd if=/dev/zero of=xv6.img count=10000
|
|
dd if=bootblock of=xv6.img conv=notrunc
|
|
dd if=kernel of=xv6.img seek=1 conv=notrunc
|
|
|
|
bootblock : bootasm.S bootmain.c
|
|
$(CC) -O -nostdinc -I. -c bootmain.c
|
|
$(CC) -nostdinc -I. -c bootasm.S
|
|
$(LD) -N -e start -Ttext 0x7C00 -o bootblock.o bootasm.o bootmain.o
|
|
$(OBJDUMP) -S bootblock.o > bootblock.asm
|
|
$(OBJCOPY) -S -O binary bootblock.o bootblock
|
|
./sign.pl bootblock
|
|
|
|
kernel : $(OBJS) bootother.S init
|
|
$(CC) -nostdinc -I. -c bootother.S
|
|
$(LD) -N -e start -Ttext 0x7000 -o bootother.out bootother.o
|
|
$(OBJCOPY) -S -O binary bootother.out bootother
|
|
$(OBJDUMP) -S bootother.o > bootother.asm
|
|
$(LD) -Ttext 0x100000 -e main0 -o kernel $(OBJS) -b binary bootother init
|
|
$(OBJDUMP) -S kernel > kernel.asm
|
|
|
|
tags: $(OBJS) bootother.S init
|
|
etags *.S *.c
|
|
|
|
PRINT = \
|
|
runoff.list \
|
|
README\
|
|
types.h param.h defs.h x86.h asm.h elf.h mmu.h spinlock.h\
|
|
bootasm.S bootother.S main.c init.c spinlock.c\
|
|
proc.h proc.c setjmp.S kalloc.c\
|
|
syscall.h trapasm.S traps.h trap.c vectors.pl syscall.c sysproc.c\
|
|
buf.h dev.h fcntl.h stat.h file.h fs.h fsvar.h fd.c fs.c bio.c ide.c sysfile.c\
|
|
pipe.c\
|
|
mp.h ioapic.h mp.c lapic.c ioapic.c picirq.c\
|
|
console.c\
|
|
string.c\
|
|
|
|
# make a printout
|
|
xv6.pdf : $(PRINT)
|
|
./runoff
|
|
|
|
print : xv6.pdf
|
|
|
|
vectors.S : vectors.pl
|
|
perl vectors.pl > vectors.S
|
|
|
|
ULIB = ulib.o usys.o printf.o umalloc.o
|
|
|
|
user1 : user1.o $(ULIB)
|
|
$(LD) -N -e main -Ttext 0 -o user1 user1.o $(ULIB)
|
|
$(OBJDUMP) -S user1 > user1.asm
|
|
|
|
usertests : usertests.o $(ULIB)
|
|
$(LD) -N -e main -Ttext 0 -o usertests usertests.o $(ULIB)
|
|
$(OBJDUMP) -S usertests > usertests.asm
|
|
|
|
fstests : fstests.o $(ULIB)
|
|
$(LD) -N -e main -Ttext 0 -o fstests fstests.o $(ULIB)
|
|
$(OBJDUMP) -S fstests > fstests.asm
|
|
|
|
echo : echo.o $(ULIB)
|
|
$(LD) -N -e main -Ttext 0 -o echo echo.o $(ULIB)
|
|
$(OBJDUMP) -S echo > echo.asm
|
|
|
|
cat : cat.o $(ULIB)
|
|
$(LD) -N -e main -Ttext 0 -o cat cat.o $(ULIB)
|
|
$(OBJDUMP) -S cat > cat.asm
|
|
|
|
userfs : userfs.o $(ULIB)
|
|
$(LD) -N -e main -Ttext 0 -o userfs userfs.o $(ULIB)
|
|
$(OBJDUMP) -S userfs > userfs.asm
|
|
|
|
init : init.o $(ULIB)
|
|
$(LD) -N -e main -Ttext 0 -o init init.o $(ULIB)
|
|
$(OBJDUMP) -S init > init.asm
|
|
|
|
sh : sh.o $(ULIB)
|
|
$(LD) -N -e main -Ttext 0 -o sh sh.o $(ULIB)
|
|
$(OBJDUMP) -S sh > sh.asm
|
|
|
|
ls : ls.o $(ULIB)
|
|
$(LD) -N -e main -Ttext 0 -o ls ls.o $(ULIB)
|
|
$(OBJDUMP) -S ls > ls.asm
|
|
|
|
mkdir : mkdir.o $(ULIB)
|
|
$(LD) -N -e main -Ttext 0 -o mkdir mkdir.o $(ULIB)
|
|
$(OBJDUMP) -S mkdir > mkdir.asm
|
|
|
|
rm : rm.o $(ULIB)
|
|
$(LD) -N -e main -Ttext 0 -o rm rm.o $(ULIB)
|
|
$(OBJDUMP) -S rm > rm.asm
|
|
|
|
mkfs : mkfs.c fs.h
|
|
cc -o mkfs mkfs.c
|
|
|
|
fs.img : mkfs userfs usertests echo cat README init sh ls mkdir rm fstests
|
|
./mkfs fs.img userfs usertests echo cat README init sh ls mkdir rm fstests
|
|
# Remove system binaries to avoid confusion.
|
|
/bin/rm -f echo cat sh ls mkdir rm
|
|
|
|
-include *.d
|
|
|
|
clean :
|
|
/bin/rm -f rm
|
|
rm -f *.ps *.tex *.dvi *.idx *.aux *.log *.ind *.ilg \
|
|
*.o *.d *.asm vectors.S parport.out \
|
|
bootblock kernel xv6.img user1 userfs usertests \
|
|
fs.img mkfs echo init fstests
|