12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- # Cross-compiling (e.g., on Mac OS X)
- #TOOLPREFIX = i386-jos-elf-
- # Using native tools (e.g., on X86 Linux)
- TOOLPREFIX =
- # The intermediate directory for compiled object files.
- BUILD = build/
- CC = $(TOOLPREFIX)gcc
- AS = $(TOOLPREFIX)as
- LD = $(TOOLPREFIX)ld
- OBJCOPY = $(TOOLPREFIX)objcopy
- OBJDUMP = $(TOOLPREFIX)objdump
- CFLAGS := -fno-pic -static -fno-builtin -fno-strict-aliasing -fshort-wchar -O2 -Wall -MD -ggdb -Werror -fno-omit-frame-pointer -fno-stack-protector -Wa,-march=armv6 -Wa,-mcpu=arm1176jzf-s
- 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
- $(OBJDUMP) -S initcode.o > initcode.asm
- ULIB = ulib.o usys.o printf.o umalloc.o
-
- _%: %.o $(ULIB)
- $(LD) $(LDFLAGS) -N -e main -Ttext 0 -o $@ $^
- $(OBJDUMP) -S $@ > $*.asm
- $(OBJDUMP) -t $@ | sed '1,/SYMBOL TABLE/d; s/ .* / /; /^$$/d' > $*.sym
- _forktest: forktest.o $(ULIB)
- # forktest has less library code linked in - needs to be small
- # in order to be able to max out the proc table.
- $(LD) $(LDFLAGS) -N -e main -Ttext 0 -o _forktest forktest.o ulib.o usys.o
- $(OBJDUMP) -S _forktest > forktest.asm
- mkfs: mkfs.c ../include/fs.h
- gcc -Werror -Wall -o mkfs mkfs.c
- # Prevent deletion of intermediate files, e.g. cat.o, after first build, so
- # that disk image changes after first build are persistent until clean. More
- # details:
- # http://www.gnu.org/software/make/manual/html_node/Chained-Rules.html
- .PRECIOUS: %.o
- UPROGS=\
- _cat\
- _echo\
- _forktest\
- _grep\
- _init\
- _kill\
- _ln\
- _ls\
- _mkdir\
- _rm\
- _sh\
- _stressfs\
- _usertests\
- _wc\
- _zombie\
- fs.img: mkfs README $(UPROGS)
- ./mkfs fs.img README $(UPROGS)
- clean:
- rm -f *.o *.d fs.img mkfs $(UPROGS)
|