File: Makefile

package info (click to toggle)
ipvsadm 1:1.31-1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye, sid
  • size: 496 kB
  • sloc: ansic: 4,070; sh: 288; makefile: 135
file content (142 lines) | stat: -rw-r--r-- 4,215 bytes parent folder | download | duplicates (3)
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 <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 $@ $<