-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathMakefile
142 lines (121 loc) · 4.12 KB
/
Makefile
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
#
# ipvsadm - IP Virtual Server ADMinistration program
# for IPVS NetFilter Module in kernel 2.4
#
# Version: $Id$
#
# Authors: Wensong Zhang <[email protected]>
# Peter Kese <[email protected]>
#
# 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 $@ $<