#NOTE: CPP refers to the C pre-processor, CXX referes to C++ compiler. KERNEL_LOCATION := /usr/src/linux # Sub directories containing files to make. SRCDIR := dasm eah fifo main pci pll qduc tsp # C source files SRC := version.c OBJS := $(foreach DIR, $(SRCDIR), $(DIR).o) PKGS := $(foreach DIR, $(SRCDIR), $(DIR).o) OBJS += $(SRCXX:.cpp=.o) OBJS += $(SRC:.c=.o) TOPDIR := $(shell /bin/pwd) USERNAME := $(shell /usr/bin/whoami) DATE := $(shell /bin/date) KERNEL_HEADERS := $(KERNEL_LOCATION)/include include $(KERNEL_LOCATION)/.config CPPFLAGS := -I$(TOPDIR) -I$(KERNEL_HEADERS) -D__KERNEL__ -DMODULE \ -DEXPORT_SYMTAB -DSED_USERNAME="\"$(USERNAME)\"" \ -DSED_DATE="\"$(DATE)\"" -D__NO_VERSION__ ifdef CONFIG_SMP CPPFLAGS += -D__SMP__ -DSMP endif CC := gcc LD := ld CFLAGS := -Wall -O2 -finline-functions -pipe EXE := spflsmdd.o export CC CPPFLAGS CFLAGS CXXFLAGS TOPDIR LD %.d: %.c set -e; $(CC) -MM $(CPPFLAGS) $< \ | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ [ -s $@ ] || rm -f $@ .PHONY : all all: $(EXE) .PHONY : doc doc: Doxyfile @echo "Generating documents using doxygen..." @doxygen $< DEPENDS = $(SRC:.c=.d) ifneq ($(SRC), ) include $(DEPENDS) endif $(EXE): $(OBJS) $(LD) -r -o $@ $^ dasm.o: FORCE $(MAKE) -C dasm eah.o: FORCE $(MAKE) -C eah fifo.o: FORCE $(MAKE) -C fifo main.o: FORCE $(MAKE) -C main pci.o: FORCE $(MAKE) -C pci pll.o: FORCE $(MAKE) -C pll qduc.o: FORCE $(MAKE) -C qduc tsp.o: FORCE $(MAKE) -C tsp version.o: FORCE FORCE: .PHONY : clean clean: neat rm -rf $(EXE) $(OBJS) .PHONY : neat neat: rm -f $(OBJS) $(EXE) rm -f $(DEPENDS) rm -f core @for pkg in $(SRCDIR); do \ $(MAKE) -C $$pkg clean; \ done; find * -type f | grep '~' | xargs rm -f .PHONY : dep dep: $(DEPENDS) @for pkg in $(SRCDIR); do \ $(MAKE) -C $$pkg dep; \ done;