## The following line supports click-mkmindriver and should not be changed.
## Click userlevel driver Makefile ##
SHELL = @SHELL@

top_srcdir := @top_srcdir@
srcdir := @srcdir@
top_builddir := ..
subdir := userlevel
conf_auxdir := @conf_auxdir@

prefix = @prefix@
bindir = @bindir@
sbindir = @sbindir@
libdir = @libdir@

VPATH = .:$(top_srcdir)/lib:$(top_srcdir)/$(subdir):$(top_srcdir)/elements/standard

CC = @CC@
CPP = @CPP@
CXX = @CXX@
CXXCPP = @CXXCPP@
AR_CREATE = @AR@ @AR_CREATEFLAGS@
RANLIB = @RANLIB@
INSTALL = @INSTALL@
mkinstalldirs = $(conf_auxdir)/mkinstalldirs

ifeq ($(V),1)
ccompile = $(COMPILE) $(1)
cxxcompile = $(CXXCOMPILE) $(1)
else
ccompile = @/bin/echo ' ' $(2) $< && $(COMPILE) $(1)
cxxcompile = @/bin/echo ' ' $(2) $< && $(CXXCOMPILE) $(1)
endif

.SUFFIXES:
.SUFFIXES: .S .c .cc .o .s .ii

.c.o:
	$(call ccompile,-c $< -o $@,CC)
.s.o:
	$(call ccompile,-c $< -o $@,ASM)
.S.o:
	$(call ccompile,-c $< -o $@,ASM)
.cc.o:
	$(call cxxcompile,-c $< -o $@,CXX)
.cc.s:
	$(call cxxcompile,-S $< -o $@,CXX -S)
.cc.ii:
	$(call cxxcompile,-E $< > $@,CXXCPP)


GENERIC_OBJS = string.o straccum.o nameinfo.o \
	bitvector.o vectorv.o templatei.o bighashmap_arena.o \
	ipaddress.o ipaddresslist.o ipflowid.o etheraddress.o \
	packet.o \
	error.o timestamp.o glue.o task.o timer.o atomic.o gaprate.o \
	element.o \
	confparse.o variableenv.o lexer.o elemfilter.o \
	routerthread.o router.o master.o handlercall.o notifier.o \
	integers.o crc32.o in_cksum.o iptable.o ewma64.o \
	archive.o userutils.o driver.o \
	$(EXTRA_DRIVER_OBJS)

EXTRA_DRIVER_OBJS = @EXTRA_DRIVER_OBJS@

LIBOBJS = $(GENERIC_OBJS) $(STD_ELEMENT_OBJS) clp.o exportstub.o
STD_ELEMENT_OBJS = addressinfo.o alignmentinfo.o \
	errorelement.o portinfo.o scheduleinfo.o
OBJS = $(ELEMENT_OBJS) $(ELEMENTSCONF).o click.o

CPPFLAGS = @CPPFLAGS@ -DCLICK_USERLEVEL
CFLAGS = @CFLAGS@
CXXFLAGS = @CXXFLAGS@
DEPCFLAGS = @DEPCFLAGS@

DEFS = @DEFS@
INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include \
	-I$(srcdir) -I$(top_srcdir) @PCAP_INCLUDES@
LDFLAGS = @LDFLAGS@
LIBS = @LIBS@ `$(top_builddir)/click-compile --otherlibs` $(ELEMENT_LIBS)

CXXCOMPILE = $(CXX) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CXXFLAGS) $(DEPCFLAGS)
CXXLD = $(CXX)
CXXLINK = $(CXXLD) $(CXXFLAGS) $(LDFLAGS) -o $@
COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(DEPCFLAGS)
CCLD = $(CC)
LINK = $(CCLD) $(CFLAGS) $(LDFLAGS) -o $@

ifndef MINDRIVER
DRIVER = click
ELEMENTSCONF = elements
INSTALLLIBS = libclick.a
else
DRIVER = $(MINDRIVER)click
ELEMENTSCONF = elements_$(MINDRIVER)
endif
INSTALLPROGS = $(DRIVER)

all: $(INSTALLPROGS) $(INSTALLLIBS)

ifneq ($(MAKECMDGOALS),clean)
-include $(ELEMENTSCONF).mk
endif

$(DRIVER): Makefile libclick.a $(OBJS)
	$(CXXLINK) -rdynamic $(OBJS) libclick.a $(LIBS)

libclick.a: Makefile $(LIBOBJS)
	$(AR_CREATE) libclick.a $(LIBOBJS)
	$(RANLIB) libclick.a

Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
	cd $(top_builddir) \
	  && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status

elemlist:
	@rm -f elements.conf
	@$(MAKE) elements.conf
elements.conf: $(top_builddir)/config.status $(top_builddir)/click-buildtool
	echo "userlevel @element_groups@" | $(top_builddir)/click-buildtool findelem -r userlevel -p $(top_srcdir) > elements.conf
$(ELEMENTSCONF).mk: $(ELEMENTSCONF).conf $(top_builddir)/click-buildtool
	$(top_builddir)/click-buildtool elem2make -x "$(STD_ELEMENT_OBJS)" < $(ELEMENTSCONF).conf > $(ELEMENTSCONF).mk
$(ELEMENTSCONF).cc: $(ELEMENTSCONF).conf $(top_builddir)/click-buildtool
	$(top_builddir)/click-buildtool elem2export < $(ELEMENTSCONF).conf > $(ELEMENTSCONF).cc
	@rm -f $(ELEMENTSCONF).d

DEPFILES := $(wildcard *.d)
ifneq ($(DEPFILES),)
include $(DEPFILES)
endif

install: $(INSTALLPROGS) install-lib
	$(mkinstalldirs) $(DESTDIR)$(bindir)
	for i in $(INSTALLPROGS); do $(INSTALL) $$i $(DESTDIR)$(bindir)/$$i; done
install-lib: $(INSTALLLIBS)
	$(mkinstalldirs) $(DESTDIR)$(libdir)
	for i in $(INSTALLLIBS); do $(INSTALL) $$i $(DESTDIR)$(libdir)/$$i; done
install-man:
	:
uninstall:
	for i in $(INSTALLLIBS); do rm -f $(DESTDIR)$(libdir)/$$i; done
	for i in $(INSTALLPROGS); do rm -f $(DESTDIR)$(bindir)/$$i; done

clean:
	rm -f *.d *.o $(INSTALLPROGS) $(ELEMENTSCONF).mk $(ELEMENTSCONF).cc elements.conf libclick.a
clean-lib:
	rm -f $(LIBOBJS) libclick.a
distclean: clean
	-rm -f Makefile

.PHONY: all clean clean-lib distclean elemlist \
	install install-lib uninstall


syntax highlighted by Code2HTML, v. 0.9.1