blob: 91a2991f6746217f870f27be0182b376d6a6126f [file] [log] [blame]
#
# 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) -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 $@ $<