ifneq (,$(filter gcc%,$(CC))) _gccversion:=$(shell $(CC) -dumpversion) _gccmachine:=$(shell $(CC) -dumpmachine) _cobjs := .objs-$(_gccmachine:-linux-gnu=)-$(_gccversion) # Use pipes and not temp files. CFLAGS += -pipe # optimize even more CFLAGS += -O2 # let the type char be unsigned by default CFLAGS += -funsigned-char CFLAGS += -fstrict-aliasing # turn on all common warnings CFLAGS += -Wall # turn on extra warnings CFLAGS += $(if $(filter 4.%,$(GCCVERSION)),-W,-Wextra) # treat warnings as errors CFLAGS += -Werror CFLAGS += -Wchar-subscripts # warn about undefined preprocessor identifiers CFLAGS += -Wundef # warn about local variable shadowing another local variable CFLAGS += -Wshadow # warn about casting of pointers to increased alignment requirements CFLAGS += -Wcast-align # make string constants const CFLAGS += -Wwrite-strings # warn about implicit conversions with side effects # fgets, calloc and friends take an int, not size_t... #CFLAGS += -Wconversion # warn about comparisons between signed and unsigned values CFLAGS += -Wsign-compare # warn about unused declared stuff CFLAGS += -Wunused # don not warn about unused return value CFLAGS += -Wno-unused-value # warn about variable use before initialization CFLAGS += -Wuninitialized # warn about pointer arithmetic on void* and function pointers CFLAGS += -Wpointer-arith # warn about multiple declarations CFLAGS += -Wredundant-decls # warn if the format string is not a string literal CFLAGS += -Wformat-nonliteral # do not warn about strftime format with y2k issues CFLAGS += -Wno-format-y2k CFLAGS += -I$(DEPTH) else CFLAGS += -Wall _cobjs := .objs endif LDFLAGS += -Wl,--warn-common