blob: 36d0f090334d820809d002470c1fe36579f060d8 [file] [log] [blame]
uname_S := $(shell sh -c 'uname -s 2>/dev/null || echo not')
uname_R := $(shell sh -c 'uname -r 2>/dev/null || echo not')
# External programs
CC := gcc
# Set up source directory for GNU Make
srcdir := $(CURDIR)
VPATH := $(srcdir)
EXTRA_WARNINGS := -Wcast-align
EXTRA_WARNINGS += -Wformat
EXTRA_WARNINGS += -Wformat-security
EXTRA_WARNINGS += -Wformat-y2k
EXTRA_WARNINGS += -Wshadow
EXTRA_WARNINGS += -Winit-self
EXTRA_WARNINGS += -Wpacked
EXTRA_WARNINGS += -Wredundant-decls
EXTRA_WARNINGS += -Wstrict-aliasing=3
EXTRA_WARNINGS += -Wswitch-default
EXTRA_WARNINGS += -Wswitch-enum
EXTRA_WARNINGS += -Wno-system-headers
EXTRA_WARNINGS += -Wundef
EXTRA_WARNINGS += -Wwrite-strings
EXTRA_WARNINGS += -Wbad-function-cast
EXTRA_WARNINGS += -Wmissing-declarations
EXTRA_WARNINGS += -Wmissing-prototypes
EXTRA_WARNINGS += -Wnested-externs
EXTRA_WARNINGS += -Wold-style-definition
EXTRA_WARNINGS += -Wstrict-prototypes
EXTRA_WARNINGS += -Wdeclaration-after-statement
# Compile flags
CFLAGS := -I$(srcdir)/include -Wall $(EXTRA_WARNINGS) -g -O6 -std=gnu99
# Output to current directory by default
O =
# Make the build silent by default
V =
ifeq ($(strip $(V)),)
E = @echo
Q = @
else
E = @\#
Q =
endif
export E Q
# Project files
PROGRAM := gen
OBJS += gen.o
DEPS := $(patsubst %.o,%.d,$(OBJS))
# Targets
all: sub-make
.DEFAULT: all
.PHONY: all
ifneq ($(O),)
sub-make: $(O) $(FORCE)
$(Q) $(MAKE) --no-print-directory -C $(O) -f ../Makefile srcdir=$(CURDIR) _all
else
sub-make: _all
endif
_all: $(PROGRAM) $(LIB_FILE)
.PHONY: _all
$(O):
ifneq ($(O),)
$(E) " MKDIR " $@
$(Q) mkdir -p $(O)
endif
%.d: %.c
$(Q) $(CC) -M -MT $(patsubst %.d,%.o,$@) $(CFLAGS) $< -o $@
%.o: %.c
$(E) " CC " $@
$(Q) $(CC) -c $(CFLAGS) $< -o $@
$(PROGRAM): $(DEPS) $(LIB_FILE) $(OBJS)
$(E) " LINK " $@
$(Q) $(CC) $(OBJS) $(LIBS) -o $(PROGRAM)
clean:
$(E) " CLEAN"
$(Q) rm -f $(PROGRAM) $(OBJS) $(DEPS)
.PHONY: clean
PHONY += FORCE
FORCE:
# Deps
-include $(DEPS)