usr = upstream/install PATH := $(usr)/bin:$(PATH) export PATH tasks = upstream/tasks usr = $(shell pwd)/upstream/install all: image $(tasks)/%: $(MAKE) -C upstream tasks/$* usr="$(usr)" upstream_clean_%: $(MAKE) -C upstream clean_$* usr="$(usr)" BOCHS = /Applications/Bochs-2.1.1/bochs.app/Contents/MacOS/bochs NASM = nasm LD = i386-unknown-elf-ld CC = i386-unknown-elf-gcc CFLAGS = -O2 -Isrc -Wall -Werror LDFLAGS = BOOTSECT = build/bootsect.bin LOADER = build/loader.bin KERNEL = build/kernel.bin build/%.bin: src/%.asm $(tasks)/build_nasm @mkdir -p `dirname $@` $(NASM) -f bin -o $@ $< build/%.o: src/%.asm $(tasks)/build_nasm @mkdir -p `dirname $@` $(NASM) -f elf -o $@ $< build/%.o: build/%.asm $(tasks)/build_nasm @mkdir -p `dirname $@` $(NASM) -f elf -o $@ $< build/%.o: src/%.c $(tasks)/build_gcc @mkdir -p `dirname $@` $(CC) $(CFLAGS) -c -o $@ $< build/int.asm: scripts/mkintasm.pl perl scripts/mkintasm.pl > $@ build/kernel.bin: $(patsubst %, build/%.o, main lib int keyboard console memory timer) $(LD) --oformat binary -T src/kernel.ld -o $@ $^ image: $(BOOTSECT) $(LOADER) $(KERNEL) @rm -f $@ dd if=$(BOOTSECT) of=$@ bs=512 seek=0 conv=sync dd if=$(LOADER) of=$@ bs=512 seek=1 conv=sync dd if=$(KERNEL) of=$@ bs=512 seek=2 conv=sync test: image $(BOCHS) -q -f bochsrc clean: rm -rf build/*