Blob Blame History Raw
#
#      ipvsadm - IP Virtual Server ADMinistration program
#                for IPVS NetFilter Module in kernel 2.4
#
#      Version: $Id$
#
#      Authors: Wensong Zhang <wensong@linux-vs.org>
#               Peter Kese <peter.kese@ijs.si>
#
#      This file:
#
#      ChangeLog
#
#      Wensong        :   Modified the Makefile and the spec files so
#                     :   that rpms can be created with ipvsadm alone
#      P.Copeland     :   Modified the Makefile and the spec files so
#                     :   that it is possible to create rpms on the fly
#                     :   using 'make rpms'
#                     :   Also added NAME, VERSION and RELEASE numbers to
#                     :   the Makefile
#      Horms          :   Updated to add config_stream.c dynamic_array.c
#                     :   Added autodetection of libpot
#                     :   Added BUILD_ROOT support
#      Wensong        :   Changed the OBJS according to detection
#      Ratz           :   Fixed to use the correct CFLAGS on sparc64
#

NAME		= ipvsadm
VERSION		= $(shell cat VERSION)
RELEASE		= 1
SCHEDULERS	= "$(shell cat SCHEDULERS)"
PE_LIST		= "$(shell cat PERSISTENCE_ENGINES)"
PROGROOT	= $(shell basename `pwd`)
ARCH		= $(shell uname -m)
RPMSOURCEDIR	= $(shell rpm --eval '%_sourcedir')
RPMSPECDIR	= $(shell rpm --eval '%_specdir')

CC		= gcc
INCLUDE		=
SBIN		= $(BUILD_ROOT)/sbin
MANDIR		= usr/man
MAN		= $(BUILD_ROOT)/$(MANDIR)/man8
INIT		= $(BUILD_ROOT)/etc/rc.d/init.d
MKDIR		= mkdir
INSTALL		= install
STATIC_LIBS	= libipvs/libipvs.a

ifeq "${ARCH}" "sparc64"
    CFLAGS += -Wall -Wunused -Wstrict-prototypes -g -m64 -pipe -mcpu=ultrasparc -mcmodel=medlow
else
    CFLAGS += -Wall -Wunused -Wstrict-prototypes -g
endif


#####################################
# No servicable parts below this line

RPMBUILD = $(shell				\
	if [ -x /usr/bin/rpmbuild ]; then	\
		echo "/usr/bin/rpmbuild";	\
	else					\
		echo "/bin/rpm";		\
	fi )

OBJS		= ipvsadm.o config_stream.o dynamic_array.o
LIBS		= -lpopt
ifneq (0,$(HAVE_NL))
LIBS		+= $(shell \
		if which pkg-config > /dev/null 2>&1; then \
		  if   pkg-config --libs libnl-genl-3.0  2> /dev/null; then :;\
		  elif pkg-config --libs libnl-2.0       2> /dev/null; then :;\
		  elif pkg-config --libs libnl-1         2> /dev/null; then :;\
		  fi; \
		else echo "-lnl"; fi)
endif
DEFINES		= -DVERSION=\"$(VERSION)\" -DSCHEDULERS=\"$(SCHEDULERS)\" \
		  -DPE_LIST=\"$(PE_LIST)\" $(POPT_DEFINE)
DEFINES		+= $(shell if [ ! -f ../ip_vs.h ]; then	\
		     echo "-DHAVE_NET_IP_VS_H"; fi;)


.PHONY	= all clean install dist distclean rpm rpms

all:            libs ipvsadm

libs:
		make -C libipvs

ipvsadm:	$(OBJS) $(STATIC_LIBS)
		$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LIBS)

install:        all
		if [ ! -d $(SBIN) ]; then $(MKDIR) -p $(SBIN); fi
		$(INSTALL) -m 0755 ipvsadm $(SBIN)
		$(INSTALL) -m 0755 ipvsadm-save $(SBIN)
		$(INSTALL) -m 0755 ipvsadm-restore $(SBIN)
		[ -d $(MAN) ] || $(MKDIR) -p $(MAN)
		$(INSTALL) -m 0644 ipvsadm.8 $(MAN)
		$(INSTALL) -m 0644 ipvsadm-save.8 $(MAN)
		$(INSTALL) -m 0644 ipvsadm-restore.8 $(MAN)
		[ -d $(INIT) ] || $(MKDIR) -p $(INIT)
		$(INSTALL) -m 0755 ipvsadm.sh $(INIT)/ipvsadm

clean:
		rm -f ipvsadm $(NAME).spec $(NAME)-$(VERSION).tar.gz
		rm -rf debian/tmp
		find . -name '*.[ao]' -o -name "*~" -o -name "*.orig" \
		  -o -name "*.rej" -o -name core | xargs rm -f
		make -C libipvs clean

distclean:	clean

dist:		distclean
		sed -e "s/@@VERSION@@/$(VERSION)/g" \
		    -e "s/@@RELEASE@@/$(RELEASE)/g" \
		    < ipvsadm.spec.in > ipvsadm.spec
		rm -f $(NAME)-$(VERSION)
		ln -s . $(NAME)-$(VERSION)
		tar czvf $(NAME)-$(VERSION).tar.gz			\
		    --exclude CVS --exclude .svn --exclude TAGS		\
		    --exclude $(NAME)-$(VERSION)/$(NAME)-$(VERSION)	\
		    --exclude $(NAME)-$(VERSION).tar.gz			\
		    $(NAME)-$(VERSION)/*
		rm -f $(NAME)-$(VERSION)

rpms:		dist
		cp $(NAME)-$(VERSION).tar.gz $(RPMSOURCEDIR)/
		cp $(NAME).spec $(RPMSPECDIR)/
		$(RPMBUILD) -ba $(RPMSPECDIR)/$(NAME).spec

srpm:		dist
		cp $(NAME)-$(VERSION).tar.gz $(RPMSOURCEDIR)/
		cp $(NAME).spec $(RPMSPECDIR)/
		$(RPMBUILD) -bs $(RPMSPECDIR)/$(NAME).spec

deb:		debs

debs:
		dpkg-buildpackage

%.o:	%.c
		$(CC) $(CFLAGS) $(INCLUDE) $(DEFINES) -c -o $@ $<