.POSIX: .SUFFIXES: .o CC ?= gcc OUT := hello SRC += main.c OBJ := $(SRC:.c=.o) CFLAGS += @compile_flags.txt CFLAGS += -ffunction-sections -fdata-sections LDFLAGS := -fwhole-program -flto LDFLAGS += -Wl,--gc-sections -s RM ?= rm -f .DEFAULT_GOAL: all .PHONY: all all: $(OUT) $(OUT): $(OBJ) $(CC) -o $@ $< .PHONY: clean clean: $(RM) $(OBJ) .PHONY: fclean fclean: clean $(RM) -r $(OUT) .PHONY: re .NOTPARALLEL: re re: fclean all