CC = gcc AS = nasm LD = ld ASSEMBLIES = $(wildcard *.asm) PROGRAMS = $(patsubst %.asm, bin/%, $(ASSEMBLIES)) .PHONY: all clean all: bin build $(PROGRAMS) clean: -rm -r build -rm -r bin bin: mkdir bin build: mkdir build build/%.o: %.asm $(AS) -g -f elf64 $< -o $@ bin/%: build/%.o $(LD) $< -o $@