Even when linking, don't call "cc", but "$(CC)". You're relying on the implicit rule to compile your .c to .o which will use $(CC). $(CC) could be some ARM cross-compiler supplied by a distro. When you link using "cc", you end up using the build-machine's native compiler.
Write the build system like this is an awesome program that major distros will be eager to pick up, and make it easy for the package maintainer. :)
Speaking of CFLAGS, only set that conditionally; don't clobber it:
CFLAGS ?= -O2 # Only if CFLAGS is not specified externally, use this default
for things that your program needs in order to build right, put that in other variables of your own: DIALECT_CFLAGS := -std=c11
CFLAGS += $(DIALECT_CFLAGS) # integrate external CFLAGS with our own.
Same deal with LDFLAGS. Both CFLAGS and LDFLAGS can include important things that cause a bad build if you mess with them.