1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154
|
#
# ipvsadm - IP Virtual Server ADMinistration program
# for IPVS NetFilter Module in kernel 2.4
#
# Version: $Id: Makefile 77 2011-02-08 00:23:51Z wensong $
#
# 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 )
ifeq (,$(FORCE_GETOPT))
DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)
LIB_SEARCH = /lib64 /usr/lib64 /usr/local/lib64 /lib /usr/lib /usr/local/lib /usr/lib/$(DEB_HOST_MULTIARCH)
POPT_LIB = $(shell for i in $(LIB_SEARCH); do \
if [ -f $$i/libpopt.a ]; then \
if nm $$i/libpopt.a | fgrep -q poptGetContext; then \
echo "-lpopt"; \
break; \
fi; \
fi; \
done)
endif
ifneq (,$(POPT_LIB))
POPT_DEFINE = -DHAVE_POPT
endif
OBJS = ipvsadm.o config_stream.o dynamic_array.o
LIBS = $(POPT_LIB)
ifneq (0,$(HAVE_NL))
INCLUDE += $(shell pkg-config --cflags libnl-3.0 libnl-genl-3.0)
LIBS += $(shell pkg-config --libs libnl-3.0 libnl-genl-3.0)
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) $(LDFLAGS) -c -o $@ $<
|