davidcallanan / os-series

803 stars 118 forks source link

make: *** No rule to make target 'build/x86_64/boot/main.o', needed by 'build-x86_64'. Stop. #63

Closed poggingfish closed 2 years ago

poggingfish commented 2 years ago

Makefile:

x86_64_asm_source_files := $(shell find src/impl/x86_64 -name *.asm)
x86_64_asm_object_files := $(patsubst src/impl/x86_64/%.asm, build/x86_64/%.o, $(x86_64_asm_source_files))

$(x86_64_asm_source_files): build/x86_64/%.o
    mkdir -p $(dir $@) && \
    nasm -f elf64 $(patsubst build/x86_64/%.o, src/impl/x86_64/%.asm, $@) -o $@

.PHONY: build-x86_64
build-x86_64: $(x86_64_asm_object_files)
    mkdir -p dist/x86_64 && \
    x86_x64-elf-ld -n -o dist/x86_64/kernel.bin -T targets/x86_64/linker.ld $(x86_64_asm_object_files) && \
    cp dist/x86_x64/kernel.bin targets/x86_64/iso/boot/kernel.bin && \
    grub-mkrescue /usr/lib/grub/i386-pc -o dist/x86_64/kernel.iso targets/x86_64/iso

Command ran: make build-x86_64

error received: make: *** No rule to make target 'build/x86_64/boot/main.o', needed by 'build-x86_64'. Stop.

poggingfish commented 2 years ago

Ah im stupid. I forgot a line.