TARGET ?= main SRC := $(wildcard src/*.s src/*.asm) OBJ := $(SRC:.s=.o) OBJ := $(OBJ:.asm=.o) AS = as LD = ld NASM = nasm ASFLAGS = NASMFLAGS = -f elf64 LDFLAGS = all: $(TARGET) run %.o: %.s $(AS) $(ASFLAGS) -o $@ $< %.o: %.asm $(NASM) $(NASMFLAGS) -o $@ $< $(TARGET): $(OBJ) $(LD) $(LDFLAGS) -o $@ $^ clean: rm -f $(OBJ) $(TARGET) re: clean all run: $(TARGET) ./$(TARGET)