based on this
main.o: main.c main.h
$@ # "main.o" (target)
$< # "main.c" (first prerequisite)
$^ # "main.c mian.h" (all prerequisites)
%.o: %.c
$* # the 'stem' with which an implicit rule matches ("foo" in "foo.c")
verilog_files := $(wildcard rtl/*.v)
all_files := $(shell find rtl -name "*")
uglify = $(uglify) # lazy assignment
compressor := $(uglify) # immediate assignment
prefix ?= /usr/local # safe assignment
hello += world # append
file = $(SOURCE:.cpp=.o) # foo.cpp => foo.o
-cmd # ignore error
@cmd # do not print command
see here
foo bar biz &: baz boz
echo hello