I've already searched a long time on stackoverflow and other make manuals, websites but cannot find any trailing whitespace or miss usage in make functions. Can you help me solve this warning message ?
make: Circular main.asm.o <- main.asm dependency dropped.
Makefile:
AS:=yasm
CC:=gcc
OUTPUTDIR:=$(shell pwd)/bin
ASFLAGS:=-g dwarf2 -f elf64 -a x86
CFLAGS:=-g
SOURCES=$(wildcard *.asm)
OBJECTS=$(patsubst %.asm,%.o,$(SOURCES))
%.o: $(SOURCES)
$(AS) $(ASFLAGS) -o $(OUTPUTDIR)/$(OBJECTS) $<
all: $(OBJECTS)
$(CC) $(CFLAGS) -o httpd $(OUTPUTDIR)/$(OBJECTS)
clean:
rm $(OUTPUTDIR)/*
rm httpd
main.asm:
section .text
global main
extern exit
main:
mov rdi, 1
call exit
thanks you :)
Your error is this line:
which presumably expands to something like
What that means is something very approximately like
That's 'approximately' because you're mixing up the syntax here.
You're confusing an ordinary rule (
target: source
) with a wildcard rule (%.target: %.source
). What you probably want iswhich teaches Make how to make
.o
files from.asm
files, combined withwhich tells Make how to combine the various
.o
files into thehttpd
executable. The$(SOURCES:.asm=.o)
variable reference expands to a list of.o
files as dependencies, and Make now knows how to create those.o
files from the corresponding.asm
files.Thanks to you explication Norman, I did that. It's important for me to have distinct folders, /bin and /src so that everything stay clear.
Thank you, It's working and I understand my error.
note: if I put any object file in the Makefile folder I got weird error from make... just deleting them make it working again.