ECHO=echo ifndef OS OS=$(shell uname) endif CFLAGS=-Wall -pedantic -ansi -O2 -g -pthread ifeq ($(OS), FreeBSD) CFLAGS+= -DHAVE_POLL_H endif ifeq ($(OS), Linux) CFLAGS+= -DHAVE_SYS_POLL_H -D_GNU_SOURCE -D_LARGE_FILES -D_FILE_OFFSET_BITS=64 endif CFLAGS+=$(EXTRAFLAGS) CC=gcc AR=ar RANLIB=ranlib LD=ld LIB=-lpthread $(EXTRALIB) INCLUDE=-I$(topbuilddir)/include -I. $(EXTRAINCLUDE) ARFLAGS=rcv LDFLAGS=-r ifdef SUBOBJ SUBSYS=SUBSYS.o endif ifdef SUBDIRS SUBDIROBJS := $(SUBDIRS:%=%/SUBSYS.o) endif ifdef PROGRAM PROGRAMOBJ := $(PROGRAM:%=%.o) endif .SUFFIXES: .o.c .c.o: $(CC) $(CFLAGS) $(INCLUDE) -c $< all: $(SUBSYS) $(LIBRARY) $(PROGRAM) ifdef PROGRAM ifdef LIBRARY $(PROGRAM): $(LIBRARY) endif $(PROGRAM): %: %.o $(CC) -o $@ $< $(LIBRARY) $(LIB) endif ifdef LIBRARY $(LIBRARY): $(LIBOBJ) $(SUBDIROBJS) $(AR) $(ARFLAGS) $@ $(LIBOBJ) $(SUBDIROBJS) $(RANLIB) $@ endif ifdef SUBOBJ $(SUBSYS): $(SUBOBJ) $(LD) $(LDFLAGS) -o $@ $(SUBOBJ) endif ifdef SUBDIRS $(SUBDIROBJS): $(SUBDIRS:%=%-recursive) ; $(SUBDIRS:%=%-recursive): $(MAKE) -C $(subst -recursive,,$@) -f Makefile SUBSYS.o endif clean: ifdef OBJ rm -rf $(OBJ) endif ifdef LIBOBJ rm -rf $(LIBOBJ) endif ifdef PROGRAM rm -rf $(PROGRAM) $(PROGRAMOBJ) *core core.* endif ifdef LIBRARY rm -rf $(LIBRARY) endif ifdef SUBOBJ rm -rf $(SUBOBJ) $(SUBSYS) endif ifdef SUBDIRS for dir in $(SUBDIRS); do $(MAKE) -f Makefile -C $$dir clean || exit; done endif