gdp / gdp / Makefile @ master
History | View | Annotate | Download (6.64 KB)
1 |
# |
---|---|
2 |
# ----- BEGIN LICENSE BLOCK ----- |
3 |
# GDP: Global Data Plane Support Library |
4 |
# From the Ubiquitous Swarm Lab, 490 Cory Hall, U.C. Berkeley. |
5 |
# |
6 |
# Copyright (c) 2015-2019, Regents of the University of California. |
7 |
# All rights reserved. |
8 |
# |
9 |
# Permission is hereby granted, without written agreement and without |
10 |
# license or royalty fees, to use, copy, modify, and distribute this |
11 |
# software and its documentation for any purpose, provided that the above |
12 |
# copyright notice and the following two paragraphs appear in all copies |
13 |
# of this software. |
14 |
# |
15 |
# IN NO EVENT SHALL REGENTS BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, |
16 |
# SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST |
17 |
# PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, |
18 |
# EVEN IF REGENTS HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
19 |
# |
20 |
# REGENTS SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT |
21 |
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS |
22 |
# FOR A PARTICULAR PURPOSE. THE SOFTWARE AND ACCOMPANYING DOCUMENTATION, |
23 |
# IF ANY, PROVIDED HEREUNDER IS PROVIDED "AS IS". REGENTS HAS NO |
24 |
# OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, |
25 |
# OR MODIFICATIONS. |
26 |
# ----- END LICENSE BLOCK ----- |
27 |
# |
28 |
|
29 |
# Version number of library. All others are derived from here. |
30 |
# NOTE: lang/python/gdp/MISC.py has MAJOR.MINOR hard coded; if you change |
31 |
# either of them, change `gdp_ver` in that file too. (This is not |
32 |
# a feature.) |
33 |
# FIXME: This should be in the top level Makefile, not here. |
34 |
GDP_VERSION_MAJOR= 2 |
35 |
GDP_VERSION_MINOR= 3 |
36 |
GDP_VERSION_PATCH= 3 |
37 |
|
38 |
# These are generally changed on make command line |
39 |
DESTDIR= |
40 |
LOCALROOT= /usr |
41 |
LOCAL1= /usr/local |
42 |
LOCAL2= /opt/local |
43 |
LOCAL3= /usr/local/opt/openssl |
44 |
|
45 |
# These generally do not need to be changed |
46 |
INSTALLROOT= ${DESTDIR}${LOCALROOT} |
47 |
INCDIR= ${INSTALLROOT}/include |
48 |
LIBDIR= ${INSTALLROOT}/lib |
49 |
BINDIR= ${INSTALLROOT}/bin |
50 |
SBINDIR= ${INSTALLROOT}/sbin |
51 |
MANDIR= ${INSTALLROOT}/share/man |
52 |
ALLDIRS= ${BINDIR} \ |
53 |
${SBINDIR} \ |
54 |
${LIBDIR} \ |
55 |
${INCDIR}/gdp \ |
56 |
${MANDIR}/man7 \ |
57 |
${MANDIR}/man8 |
58 |
ADM= ../adm |
59 |
LOCALLIBSDIR= ../libs |
60 |
LIBNAME= libgdp |
61 |
|
62 |
BINALL= |
63 |
|
64 |
SBINALL= |
65 |
|
66 |
MAN1ALL= |
67 |
|
68 |
MAN3ALL= |
69 |
|
70 |
MAN5ALL= |
71 |
|
72 |
MAN7ALL= gdp.7 \ |
73 |
|
74 |
MAN8ALL= |
75 |
|
76 |
MANALL= ${MAN1ALL} ${MAN3ALL} ${MAN5ALL} ${MAN7ALL} ${MAN8ALL} |
77 |
|
78 |
OBJS_ZC = \ |
79 |
gdp_zc_client.o \ |
80 |
gdp_zc_server.o |
81 |
|
82 |
OBJS_MOST= \ |
83 |
gdp_api.o \ |
84 |
gdp_buf.o \ |
85 |
gdp_chan.o \ |
86 |
gdp_create.o \ |
87 |
gdp_crypto.o \ |
88 |
gdp_datum.o \ |
89 |
gdp_event.o \ |
90 |
gdp_gob_cache.o \ |
91 |
gdp_gob_mgmt.o \ |
92 |
gdp_gob_ops.o \ |
93 |
gdp_main.o \ |
94 |
gdp_md.o \ |
95 |
gdp_msg.o \ |
96 |
gdp_name.o \ |
97 |
gdp_pdu.o \ |
98 |
gdp_proto.o \ |
99 |
gdp_req.o \ |
100 |
gdp_stat.o \ |
101 |
gdp_subscr.o \ |
102 |
gdp_util.o \ |
103 |
gdp.pb-c.o \ |
104 |
$(OBJS_ZC) |
105 |
|
106 |
OBJS= \ |
107 |
${OBJS_MOST} \ |
108 |
gdp_version.o |
109 |
|
110 |
PUBHFILES= \ |
111 |
gdp.h \ |
112 |
gdp_buf.h \ |
113 |
gdp_stat.h \ |
114 |
gdp_version.h \ |
115 |
gdp_zc_client.h \ |
116 |
gdp_zc_server.h \ |
117 |
|
118 |
PRIVHFILES= \ |
119 |
gdp_chan.h \ |
120 |
gdp_event.h \ |
121 |
gdp_hongd.h \ |
122 |
gdp_md.h \ |
123 |
gdp_pdu.h \ |
124 |
gdp_priv.h \ |
125 |
gdp.pb-c.h \ |
126 |
|
127 |
HFILES= ${PUBHFILES} ${PRIVHFILES} |
128 |
|
129 |
GDPLIBVER= ${GDP_VERSION_MAJOR}.${GDP_VERSION_MINOR} |
130 |
INCALL= ${PUBHFILES} |
131 |
LIBALL= libgdp.a libgdp.so.${GDPLIBVER} |
132 |
# files that should be removed on "make clean" |
133 |
CLEANALL= ${LIBALL} ${BINALL} ${SBINALL} gdp_version.h |
134 |
# files that should be publicly installed |
135 |
PUBALL= ${SCRIPTS} ${MANALL} ${INCALL} ${LIBALL} |
136 |
# "make all" targets (may be overlap) |
137 |
ALL= ${CLEANALL} ${PUBALL} |
138 |
|
139 |
SANITIZE= |
140 |
#SANITIZE+= -fsanitize=address |
141 |
#SANITIZE+= -fsanitize=thread |
142 |
#SANITIZE+= -fsanitize=memory |
143 |
#SANITIZE+= -fsanitize=undefined |
144 |
|
145 |
INCROOT= .. |
146 |
INCSEARCH= ${INCLOCAL} \ |
147 |
-I${INCROOT} \ |
148 |
`mysql_config --include` \ |
149 |
-I${LOCAL1}/include \ |
150 |
-I${LOCAL2}/include \ |
151 |
-I${LOCAL3}/include |
152 |
LIBROOT= ${INCROOT} |
153 |
LIBEVENT2= -levent -levent_pthreads |
154 |
LIBCRYPTO= -lcrypto |
155 |
LIBPROTO_C= -lprotobuf-c |
156 |
LIBAVAHI= -lavahi-client -lavahi-common |
157 |
LIBMYSQL= `mysql_config --libs` |
158 |
LIBADD= `sh ../adm/add-libs.sh libgdp` |
159 |
INCEP= -I${INCROOT} |
160 |
LIBEP= -lep |
161 |
INCS= ${INCSEARCH} ${INCEP} ${INCEVENT2} ${INCAVAHI} |
162 |
LIBSEARCH= ${LIBLOCAL} \ |
163 |
-L${LIBROOT}/ep \ |
164 |
-L${LOCAL1}/lib \ |
165 |
-L${LOCAL2}/lib \ |
166 |
-L${LOCAL3}/lib |
167 |
LDFLAGS+= ${LIBSEARCH} ${SANITIZE} |
168 |
LDLIBS= ${LIBEP} \ |
169 |
${LIBEVENT2} \ |
170 |
${LIBCRYPTO} \ |
171 |
${LIBPROTO_C} \ |
172 |
${LIBAVAHI} \ |
173 |
${LIBMYSQL} \ |
174 |
${LIBADD} |
175 |
CC= cc |
176 |
PG= |
177 |
WALL= -Wall |
178 |
G= -g |
179 |
O= -O |
180 |
STD= |
181 |
COPTS= ${PG} ${WALL} $G $O ${STD} ${SANITIZE} |
182 |
CFLAGS+= ${COPTS} ${INCS} -fPIC |
183 |
|
184 |
LN= ln |
185 |
MV= mv |
186 |
CP= cp |
187 |
RM= rm |
188 |
MKDIR= mkdir -p |
189 |
RANLIB= ranlib |
190 |
PROTOC_C= protoc-c |
191 |
SHARED= -shared ${CRYPTOLFLAGS} |
192 |
#SHARED= -shared ${CRYPTOLFLAGS} -Wl,-soname,$@ |
193 |
INSTALLFLAGS= |
194 |
INSTALL= install ${INSTALLFLAGS} |
195 |
|
196 |
all: ${ALL} |
197 |
|
198 |
# Build without avahi, the zero-conf facility that |
199 |
# can be tricky to compile under Mac OS X. |
200 |
all_noavahi: |
201 |
${MAKE} STD=-DGDP_OSCF_USE_ZEROCONF=0 LIBAVAHI= OBJS_ZC= all |
202 |
|
203 |
${LIBNAME}.a: ${OBJS} |
204 |
${AR} -r $@ ${OBJS} |
205 |
${RANLIB} $@ |
206 |
${RM} -f ${LOCALLIBSDIR}/$@ |
207 |
${CP} $@ ${LOCALLIBSDIR} |
208 |
|
209 |
${LIBNAME}.so.${GDPLIBVER}: ${OBJS} |
210 |
${CC} ${SHARED} -o $@ ${LDFLAGS} ${OBJS} ${LDLIBS} |
211 |
${RM} -f ${LOCALLIBSDIR}/$@ |
212 |
${CP} $@ ${LOCALLIBSDIR} |
213 |
sh ${LOCALLIBSDIR}/makelinks.sh gdp ${GDP_VERSION_MAJOR} ${GDP_VERSION_MINOR} ${LOCALLIBSDIR} |
214 |
|
215 |
${OBJS}: ${HFILES} |
216 |
|
217 |
|
218 |
gdp.pb-c.c gdp.pb-c.h: gdp.proto |
219 |
${PROTOC_C} --c_out=. gdp.proto |
220 |
|
221 |
gdp_version.o: gdp_version.c ${OBJS_MOST} Makefile gdp_version.h |
222 |
${CC} ${CFLAGS} \ |
223 |
-D_VERSION_INFO_="\"`sh ../adm/get-version-info.sh`\"" \ |
224 |
-c gdp_version.c |
225 |
|
226 |
gdp_version.h ../adm/gdp-version.sh: gdp_version.template gdp_version.sh Makefile |
227 |
sh gdp_version.sh ${GDP_VERSION_MAJOR} ${GDP_VERSION_MINOR} ${GDP_VERSION_PATCH} |
228 |
|
229 |
#../git-version.txt: |
230 |
# ../adm/get-version-info.sh > /dev/null |
231 |
|
232 |
# |
233 |
# Administrative stuff |
234 |
# |
235 |
|
236 |
# cleanup |
237 |
clean: |
238 |
-rm -f ${CLEANALL} *.o *.core |
239 |
|
240 |
# system installation |
241 |
install-lib: ${LIBDIR} ${LIBALL} |
242 |
test -z "${LIBALL}" || ${CP} ${LIBALL} ${LIBDIR} |
243 |
sh ${LOCALLIBSDIR}/makelinks.sh gdp ${GDP_VERSION_MAJOR} ${GDP_VERSION_MINOR} ${LIBDIR} |
244 |
|
245 |
install-include: ${INCDIR}/gdp ${INCALL} |
246 |
test -z "${INCALL}" || ${CP} ${INCALL} ${INCDIR}/gdp |
247 |
|
248 |
install-bin: ${BINDIR} ${SBINDIR} |
249 |
test -z "${BINALL}" || ${INSTALL} ${BINALL} ${BINDIR} |
250 |
test -z "${SBINALL}" || ${INSTALL} ${SBINALL} ${SBINDIR} |
251 |
|
252 |
install-man: ${MANDIR} ${MANALL} |
253 |
test -z "${MAN1ALL}" || ${CP} ${MAN1ALL} ${MANDIR}/man1 |
254 |
test -z "${MAN3ALL}" || ${CP} ${MAN3ALL} ${MANDIR}/man3 |
255 |
test -z "${MAN7ALL}" || ${CP} ${MAN7ALL} ${MANDIR}/man7 |
256 |
test -z "${MAN8ALL}" || ${CP} ${MAN8ALL} ${MANDIR}/man8 |
257 |
|
258 |
install: install-include install-lib install-bin install-man |
259 |
|
260 |
${ALLDIRS}: |
261 |
${MKDIR} $@ |
262 |
|
263 |
# local installation (into source tree, needed for Java & Debian package build) |
264 |
# XXX Why is this needed? It's done when the libraries are built. |
265 |
install-local: ${LOCALLIBSDIR} ${LIBALL} |
266 |
${CP} ${LIBALL} ${LOCALLIBSDIR} |
267 |
sh ${LOCALLIBSDIR}/makelinks.sh gdp ${GDP_VERSION_MAJOR} ${GDP_VERSION_MINOR} ${LOCALLIBSDIR} |
268 |
|
269 |
UPDATE_LICENSE= ${ADM}/update-license.sh |
270 |
|
271 |
update-license: |
272 |
${UPDATE_LICENSE} Makefile *.[ch] |
273 |
|
274 |
FORCE: |