gradle: upgrade wrapper
[olsrd.git] / Makefile
1 # The olsr.org Optimized Link-State Routing daemon (olsrd)
2 #
3 # (c) by the OLSR project
4 #
5 # See our Git repository to find out who worked on this file
6 # and thus is a copyright holder on it.
7 #
8 # All rights reserved.
9 #
10 # Redistribution and use in source and binary forms, with or without
11 # modification, are permitted provided that the following conditions
12 # are met:
13 #
14 # * Redistributions of source code must retain the above copyright
15 #   notice, this list of conditions and the following disclaimer.
16 # * Redistributions in binary form must reproduce the above copyright
17 #   notice, this list of conditions and the following disclaimer in
18 #   the documentation and/or other materials provided with the
19 #   distribution.
20 # * Neither the name of olsr.org, olsrd nor the names of its
21 #   contributors may be used to endorse or promote products derived
22 #   from this software without specific prior written permission.
23 #
24 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
25 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
26 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
27 # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
28 # COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
29 # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
30 # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
31 # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
32 # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
33 # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
34 # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
35 # POSSIBILITY OF SUCH DAMAGE.
36 #
37 # Visit http://www.olsr.org for more information.
38 #
39 # If you find this software useful feel free to make a donation
40 # to the project. For more information see the website or contact
41 # the copyright holders.
42 #
43
44 # Please also write a new version to:
45 # gui/win32/Main/Frontend.rc (line 71, around "CAPTION [...]")
46 # gui/win32/Inst/installer.nsi (line 57, around "MessageBox MB_YESNO [...]")
47 VERS =          pre-0.9.8
48
49 TOPDIR = $(shell pwd)
50 INSTALLOVERWRITE ?=
51 include Makefile.inc
52
53 # pass generated variables to save time
54 MAKECMD = $(MAKE) OS="$(OS)" WARNINGS="$(WARNINGS)" VERBOSE="$(VERBOSE)" SANITIZE_ADDRESS="$(SANITIZE_ADDRESS)"
55
56 LIBS +=         $(OS_LIB_DYNLOAD)
57 ifeq ($(OS), win32)
58 LDFLAGS +=      -Wl,--out-implib=libolsrd.a
59 LDFLAGS +=      -Wl,--export-all-symbols
60 endif
61
62 SWITCHDIR =     src/olsr_switch
63 CFGDIR =        src/cfgparser
64 include $(CFGDIR)/local.mk
65 TAG_SRCS =      $(SRCS) $(HDRS) $(sort $(wildcard $(CFGDIR)/*.[ch] $(SWITCHDIR)/*.[ch]))
66
67 SGW_SUPPORT = 0
68 ifeq ($(OS),linux)
69   SGW_SUPPORT = 1
70 endif
71 ifeq ($(OS),android)
72   SGW_SUPPORT = 1
73 endif
74
75
76 .PHONY: default_target switch
77 default_target: $(EXENAME)
78
79 ANDROIDREGEX=
80 ifeq ($(OS),android)
81 # On Android Google forgot to include regex engine code for Froyo version (but also there was
82 # no support in older versions for it) so we have here this missing code.
83 # http://groups.google.com/group/android-ndk/browse_thread/thread/5ea6f0650f0e3fc
84 CFLAGS += -D__POSIX_VISIBLE
85 ANDROIDREGEX=$(REGEX_LIB)
86 endif
87
88 $(EXENAME):     $(OBJS) $(ANDROIDREGEX) src/builddata.o
89 ifeq ($(VERBOSE),0)
90                 @echo "[LD] $@"
91 endif
92                 $(MAKECMDPREFIX)$(CC) $(LDFLAGS) -lm -o $@ $^ $(LIBS)
93
94 cfgparser:      $(CFGDEPS) src/builddata.o
95                 $(MAKECMDPREFIX)$(MAKECMD) -C $(CFGDIR)
96
97 switch:         
98         $(MAKECMDPREFIX)$(MAKECMD) -C $(SWITCHDIR)
99
100 # generate it always
101 .PHONY: builddata.txt
102 builddata.txt:
103         $(MAKECMDPREFIX)./make/hash_source.sh "$@" "$(VERS)" "$(VERBOSE)"
104
105 # only overwrite it when it doesn't exists or when it has changed
106 src/builddata.c: builddata.txt
107         $(MAKECMDPREFIX)if [ ! -f "$@" ] || [ -n "$$(diff "$<" "$@")" ]; then cp -p "$<" "$@"; fi
108
109 .PHONY: help libs clean_libs libs_clean clean distclean uberclean install_libs uninstall_libs libs_install libs_uninstall install_bin uninstall_bin install_olsrd uninstall_olsrd install uninstall build_all install_all uninstall_all clean_all gui clean_gui cfgparser_install cfgparser_clean
110
111 clean:
112         -rm -f $(OBJS) $(SRCS:%.c=%.d) $(EXENAME) $(EXENAME).exe src/builddata.c $(TMPFILES)
113         -rm -f libolsrd.a
114         -rm -f olsr_switch.exe
115         -rm -f gui/win32/Main/olsrd_cfgparser.lib
116         -rm -f olsr-setup.exe
117         -rm -fr gui/win32/Main/Release
118         -rm -fr gui/win32/Shim/Release
119
120 gui:
121 ifeq ($(OS),linux)
122         $(MAKECMDPREFIX)$(MAKECMD) -C gui/linux-gtk all
123 else
124         @echo "target gui not supported on $(OS)"
125         @exit 1
126 endif
127
128 clean_gui:
129         $(MAKECMDPREFIX)$(MAKECMD) -C gui/linux-gtk clean
130
131 distclean: uberclean
132 uberclean:      clean clean_libs clean_gui
133         -rm -f $(TAGFILE)
134 #       BSD-xargs has no "--no-run-if-empty" aka "-r"
135         find . \( -name '*.[od]' -o -name '*~' \) -not -path "*/.hg*" -type f -print0 | xargs -0 rm -f
136         $(MAKECMDPREFIX)$(MAKECMD) -C $(SWITCHDIR) clean
137         $(MAKECMDPREFIX)$(MAKECMD) -C $(CFGDIR) clean
138         $(MAKECMDPREFIX)rm -f builddata.txt
139
140 install: install_olsrd
141
142 uninstall: uninstall_olsrd
143
144 cfgparser_install: cfgparser
145                 $(MAKECMDPREFIX)$(MAKECMD) -C $(CFGDIR) install
146
147 cfgparser_clean:
148                 $(MAKECMDPREFIX)$(MAKECMD) -C $(CFGDIR) clean
149
150 install_bin:
151                 mkdir -p $(SBINDIR)
152                 install -m 755 $(EXENAME) $(SBINDIR)
153                 $(STRIP) $(SBINDIR)/$(EXENAME)
154 ifeq ($(SGW_SUPPORT),1)
155                 $(MAKECMDPREFIX)if [ -e $(SBINDIR)/$(SGW_POLICY_SCRIPT) ]; then \
156                         cp -f files/$(SGW_POLICY_SCRIPT) $(SBINDIR)/$(SGW_POLICY_SCRIPT).new; \
157                         echo "Policy routing script was saved as $(SBINDIR)/$(SGW_POLICY_SCRIPT).new"; \
158                 else \
159                         cp -f files/$(SGW_POLICY_SCRIPT) $(SBINDIR)/$(SGW_POLICY_SCRIPT); \
160                 fi
161 endif
162
163 uninstall_bin:
164                 rm -f $(SBINDIR)/$(EXENAME)
165                 rmdir -p $(SBINDIR) || true
166
167 install_olsrd:  install_bin
168                 @echo ========= C O N F I G U R A T I O N - F I L E ============
169                 @echo $(EXENAME) uses the configfile $(CFGFILE)
170                 @echo a default configfile. A sample RFC-compliance aimed
171                 @echo configfile can be found in olsrd.conf.default.rfc.
172                 @echo However none of the larger OLSRD using networks use that
173                 @echo so install a configfile with activated link quality exstensions
174                 @echo per default.
175                 @echo can be found at files/olsrd.conf.default.lq
176                 @echo ==========================================================
177                 mkdir -p $(ETCDIR)
178                 $(MAKECMDPREFIX)if [ -e $(CFGFILE) ]; then \
179                         cp -f files/olsrd.conf.default.lq $(CFGFILE).new; \
180                         echo "Configuration file was saved as $(CFGFILE).new"; \
181                 else \
182                         cp -f files/olsrd.conf.default.lq $(CFGFILE); \
183                 fi
184                 @echo -------------------------------------------
185                 @echo Edit $(CFGFILE) before running olsrd!!
186                 @echo -------------------------------------------
187                 @echo Installing manpages $(EXENAME)\(8\) and $(CFGNAME)\(5\)
188 ifneq ($(MANDIR),)
189                 mkdir -p $(MANDIR)/man8/
190                 cp files/olsrd.8.gz $(MANDIR)/man8/$(EXENAME).8.gz
191                 mkdir -p $(MANDIR)/man5/
192                 cp files/olsrd.conf.5.gz $(MANDIR)/man5/$(CFGNAME).5.gz
193 endif
194 ifneq ($(RCDIR),)
195                 cp $(RCFILE) $(RCDIR)/olsrd
196 endif
197 ifneq ($(DOCDIR_OLSRD),)
198                 mkdir -p "$(DOCDIR_OLSRD)"
199                 cp -t "$(DOCDIR_OLSRD)" "CHANGELOG" "README-Olsr-Extensions" \
200                   "README-LINUX_NL80211.txt" "files/olsrd.conf.default" \
201                   "files/olsrd.conf.default.txt" "license.txt"
202 endif
203
204 uninstall_olsrd:        uninstall_bin
205 ifneq ($(DOCDIR_OLSRD),)
206                 rm -f "$(DOCDIR_OLSRD)/CHANGELOG" "$(DOCDIR_OLSRD)/README-Olsr-Extensions" \
207                   "$(DOCDIR_OLSRD)/README-LINUX_NL80211.txt" "$(DOCDIR_OLSRD)/olsrd.conf.default" \
208                   "$(DOCDIR_OLSRD)/olsrd.conf.default.txt" "$(DOCDIR_OLSRD)/license.txt"
209                 rmdir -p --ignore-fail-on-non-empty "$(DOCDIR_OLSRD)"
210 endif
211 ifneq ($(MANDIR),)
212                 rm -f $(MANDIR)/man5/$(CFGNAME).5.gz
213                 rmdir -p $(MANDIR)/man5/ || true
214                 rm -f $(MANDIR)/man8/$(EXENAME).8.gz
215                 rmdir -p $(MANDIR)/man8/ || true
216 endif
217                 rm -f $(CFGFILE) $(CFGFILE).new
218                 rmdir -p $(ETCDIR) || true
219 ifneq ($(RCDIR),)
220                 rm -f $(RCDIR)/olsrd
221                 rmdir -p $(RCDIR) || true
222 endif
223
224 tags:
225                 $(TAGCMD) -o $(TAGFILE) $(TAG_SRCS)
226
227 rpm:
228         $(MAKECMDPREFIX)$(MAKECMD) -C redhat
229
230
231 #
232 # PLUGINS
233 #
234
235 # This is quite ugly but at least it works
236 ifeq ($(OS),linux)
237 SUBDIRS := arprefresh bmf dot_draw dyn_gw dyn_gw_plain httpinfo info jsoninfo mdns mini nameservice netjson poprouting p2pd pgraph pud quagga secure sgwdynspeed txtinfo watchdog
238 else
239 ifeq ($(OS),win32)
240 SUBDIRS := dot_draw httpinfo info jsoninfo mini netjson pgraph secure txtinfo
241 else
242 ifeq ($(OS),android)
243 SUBDIRS := arprefresh bmf dot_draw dyn_gw dyn_gw_plain httpinfo info jsoninfo mdns mini nameservice netjson p2pd pgraph secure sgwdynspeed txtinfo watchdog
244 else
245 SUBDIRS := dot_draw httpinfo info jsoninfo mini nameservice netjson pgraph secure txtinfo watchdog
246 endif
247 endif
248 endif
249
250 libs:
251                 $(MAKECMDPREFIX)set -e;for dir in $(SUBDIRS);do $(MAKECMD) -C lib/$$dir LIBDIR=$(LIBDIR);done
252
253 libs_clean clean_libs:
254                 -for dir in $(SUBDIRS);do $(MAKECMD) -C lib/$$dir LIBDIR=$(LIBDIR) clean;rm -f lib/$$dir/*.so lib/$$dir/*.dll;done
255
256 libs_install install_libs:
257                 $(MAKECMDPREFIX)set -e;for dir in $(SUBDIRS);do $(MAKECMD) -C lib/$$dir LIBDIR=$(LIBDIR) install;done
258
259 libs_uninstall uninstall_libs:
260                 $(MAKECMDPREFIX)set -e;for dir in $(SUBDIRS);do $(MAKECMD) -C lib/$$dir LIBDIR=$(LIBDIR) uninstall;done
261                 rmdir -p $(LIBDIR) || true
262
263 #
264 # DOCUMENTATION
265 #
266 .PHONY: doc doc_clean
267 doc:
268                 $(MAKECMDPREFIX)$(MAKECMD) -C doc OS=$(OS)
269
270 doc-pdf:
271                 $(MAKECMDPREFIX)$(MAKECMD) -C doc-pdf OS=$(OS)
272
273 doc_clean:
274                 $(MAKECMDPREFIX)$(MAKECMD) -C doc OS=$(OS) clean
275
276 #
277 # PLUGINS
278 #
279
280 arprefresh:
281                 $(MAKECMDPREFIX)$(MAKECMD) -C lib/arprefresh
282
283 arprefresh_clean:
284                 $(MAKECMDPREFIX)$(MAKECMD) -C lib/arprefresh DESTDIR=$(DESTDIR) clean
285
286 arprefresh_install:
287                 $(MAKECMDPREFIX)$(MAKECMD) -C lib/arprefresh DESTDIR=$(DESTDIR) install
288
289 arprefresh_uninstall:
290                 $(MAKECMDPREFIX)$(MAKECMD) -C lib/arprefresh DESTDIR=$(DESTDIR) uninstall
291
292 bmf:
293                 $(MAKECMDPREFIX)$(MAKECMD) -C lib/bmf
294
295 bmf_clean:
296                 $(MAKECMDPREFIX)$(MAKECMD) -C lib/bmf DESTDIR=$(DESTDIR) clean
297
298 bmf_install:
299                 $(MAKECMDPREFIX)$(MAKECMD) -C lib/bmf DESTDIR=$(DESTDIR) install
300
301 bmf_uninstall:
302                 $(MAKECMDPREFIX)$(MAKECMD) -C lib/bmf DESTDIR=$(DESTDIR) uninstall
303
304 dot_draw:
305                 $(MAKECMDPREFIX)$(MAKECMD) -C lib/dot_draw
306
307 dot_draw_clean:
308                 $(MAKECMDPREFIX)$(MAKECMD) -C lib/dot_draw DESTDIR=$(DESTDIR) clean
309
310 dot_draw_install:
311                 $(MAKECMDPREFIX)$(MAKECMD) -C lib/dot_draw DESTDIR=$(DESTDIR) install
312
313 dot_draw_uninstall:
314                 $(MAKECMDPREFIX)$(MAKECMD) -C lib/dot_draw DESTDIR=$(DESTDIR) uninstall
315
316 dyn_gw:
317                 $(MAKECMDPREFIX)$(MAKECMD) -C lib/dyn_gw
318
319 dyn_gw_clean:
320                 $(MAKECMDPREFIX)$(MAKECMD) -C lib/dyn_gw DESTDIR=$(DESTDIR) clean
321
322 dyn_gw_install:
323                 $(MAKECMDPREFIX)$(MAKECMD) -C lib/dyn_gw DESTDIR=$(DESTDIR) install
324
325 dyn_gw_uninstall:
326                 $(MAKECMDPREFIX)$(MAKECMD) -C lib/dyn_gw DESTDIR=$(DESTDIR) uninstall
327
328 dyn_gw_plain:
329                 $(MAKECMDPREFIX)$(MAKECMD) -C lib/dyn_gw_plain
330
331 dyn_gw_plain_clean:
332                 $(MAKECMDPREFIX)$(MAKECMD) -C lib/dyn_gw_plain DESTDIR=$(DESTDIR) clean
333
334 dyn_gw_plain_install:
335                 $(MAKECMDPREFIX)$(MAKECMD) -C lib/dyn_gw_plain DESTDIR=$(DESTDIR) install
336
337 dyn_gw_plain_uninstall:
338                 $(MAKECMDPREFIX)$(MAKECMD) -C lib/dyn_gw_plain DESTDIR=$(DESTDIR) uninstall
339
340 httpinfo:
341                 $(MAKECMDPREFIX)$(MAKECMD) -C lib/httpinfo
342
343 httpinfo_clean:
344                 $(MAKECMDPREFIX)$(MAKECMD) -C lib/httpinfo DESTDIR=$(DESTDIR) clean
345
346 httpinfo_install:
347                 $(MAKECMDPREFIX)$(MAKECMD) -C lib/httpinfo DESTDIR=$(DESTDIR) install
348
349 httpinfo_uninstall:
350                 $(MAKECMDPREFIX)$(MAKECMD) -C lib/httpinfo DESTDIR=$(DESTDIR) uninstall
351
352 info:
353                 $(MAKECMDPREFIX)$(MAKECMD) -C lib/info
354
355 info_clean:
356                 $(MAKECMDPREFIX)$(MAKECMD) -C lib/info DESTDIR=$(DESTDIR) clean
357
358 info_install:
359                 $(MAKECMDPREFIX)$(MAKECMD) -C lib/info DESTDIR=$(DESTDIR) install
360
361 info_uninstall:
362                 $(MAKECMDPREFIX)$(MAKECMD) -C lib/info DESTDIR=$(DESTDIR) uninstall
363
364 info_java:
365                 $(MAKECMDPREFIX)$(MAKECMD) -C lib/info.java
366
367 info_java_clean:
368                 $(MAKECMDPREFIX)$(MAKECMD) -C lib/info.java DESTDIR=$(DESTDIR) clean
369
370 info_java_install:
371                 $(MAKECMDPREFIX)$(MAKECMD) -C lib/info.java DESTDIR=$(DESTDIR) install
372
373 info_java_uninstall:
374                 $(MAKECMDPREFIX)$(MAKECMD) -C lib/info.java DESTDIR=$(DESTDIR) uninstall
375
376 jsoninfo: info
377                 $(MAKECMDPREFIX)$(MAKECMD) -C lib/jsoninfo
378
379 jsoninfo_clean: info_clean
380                 $(MAKECMDPREFIX)$(MAKECMD) -C lib/jsoninfo DESTDIR=$(DESTDIR) clean
381
382 jsoninfo_install: info_install
383                 $(MAKECMDPREFIX)$(MAKECMD) -C lib/jsoninfo DESTDIR=$(DESTDIR) install
384
385 jsoninfo_uninstall: info_uninstall
386                 $(MAKECMDPREFIX)$(MAKECMD) -C lib/jsoninfo DESTDIR=$(DESTDIR) uninstall
387
388 mdns:
389                 $(MAKECMDPREFIX)$(MAKECMD) -C lib/mdns
390
391 mdns_clean:
392                 $(MAKECMDPREFIX)$(MAKECMD) -C lib/mdns DESTDIR=$(DESTDIR) clean
393
394 mdns_install:
395                 $(MAKECMDPREFIX)$(MAKECMD) -C lib/mdns DESTDIR=$(DESTDIR) install
396
397 mdns_uninstall:
398                 $(MAKECMDPREFIX)$(MAKECMD) -C lib/mdns DESTDIR=$(DESTDIR) uninstall
399
400 #
401 # no targets for mini: it's an example plugin
402 #
403
404 nameservice:
405                 $(MAKECMDPREFIX)$(MAKECMD) -C lib/nameservice clean
406                 $(MAKECMDPREFIX)$(MAKECMD) -C lib/nameservice
407
408 nameservice_clean:
409                 $(MAKECMDPREFIX)$(MAKECMD) -C lib/nameservice DESTDIR=$(DESTDIR) clean
410
411 nameservice_install:
412                 $(MAKECMDPREFIX)$(MAKECMD) -C lib/nameservice DESTDIR=$(DESTDIR) install
413
414 nameservice_uninstall:
415                 $(MAKECMDPREFIX)$(MAKECMD) -C lib/nameservice DESTDIR=$(DESTDIR) uninstall
416
417 netjson: info
418                 $(MAKECMDPREFIX)$(MAKECMD) -C lib/netjson
419
420 netjson_clean: info_clean
421                 $(MAKECMDPREFIX)$(MAKECMD) -C lib/netjson DESTDIR=$(DESTDIR) clean
422
423 netjson_install: info_install
424                 $(MAKECMDPREFIX)$(MAKECMD) -C lib/netjson DESTDIR=$(DESTDIR) install
425
426 netjson_uninstall: info_uninstall
427                 $(MAKECMDPREFIX)$(MAKECMD) -C lib/netjson DESTDIR=$(DESTDIR) uninstall
428
429 poprouting: info
430                 $(MAKECMDPREFIX)$(MAKECMD) -C lib/poprouting
431
432 poprouting_clean: info_clean
433                 $(MAKECMDPREFIX)$(MAKECMD) -C lib/poprouting DESTDIR=$(DESTDIR) clean
434
435 poprouting_install: info_install
436                 $(MAKECMDPREFIX)$(MAKECMD) -C lib/poprouting DESTDIR=$(DESTDIR) install
437
438 poprouting_uninstall: info_uninstall
439                 $(MAKECMDPREFIX)$(MAKECMD) -C lib/poprouting DESTDIR=$(DESTDIR) uninstall
440
441 p2pd:
442                 $(MAKECMDPREFIX)$(MAKECMD) -C lib/p2pd
443
444 p2pd_clean:
445                 $(MAKECMDPREFIX)$(MAKECMD) -C lib/p2pd DESTDIR=$(DESTDIR) clean
446
447 p2pd_install:
448                 $(MAKECMDPREFIX)$(MAKECMD) -C lib/p2pd DESTDIR=$(DESTDIR) install
449
450 p2pd_uninstall:
451                 $(MAKECMDPREFIX)$(MAKECMD) -C lib/p2pd DESTDIR=$(DESTDIR) uninstall
452
453 pgraph:
454                 $(MAKECMDPREFIX)$(MAKECMD) -C lib/pgraph
455
456 pgraph_clean:
457                 $(MAKECMDPREFIX)$(MAKECMD) -C lib/pgraph DESTDIR=$(DESTDIR) clean
458
459 pgraph_install:
460                 $(MAKECMDPREFIX)$(MAKECMD) -C lib/pgraph DESTDIR=$(DESTDIR) install
461
462 pgraph_uninstall:
463                 $(MAKECMDPREFIX)$(MAKECMD) -C lib/pgraph DESTDIR=$(DESTDIR) uninstall
464
465 pud:
466                 $(MAKECMDPREFIX)$(MAKECMD) -C lib/pud
467
468 pud_clean:
469                 $(MAKECMDPREFIX)$(MAKECMD) -C lib/pud DESTDIR=$(DESTDIR) clean
470
471 pud_install:
472                 $(MAKECMDPREFIX)$(MAKECMD) -C lib/pud DESTDIR=$(DESTDIR) install
473
474 pud_uninstall:
475                 $(MAKECMDPREFIX)$(MAKECMD) -C lib/pud DESTDIR=$(DESTDIR) uninstall
476
477 pud_java: pud
478                 $(MAKECMDPREFIX)$(MAKECMD) -C lib/pud DESTDIR=$(DESTDIR) java
479
480 pud_java_install:
481                 $(MAKECMDPREFIX)$(MAKECMD) -C lib/pud DESTDIR=$(DESTDIR) java-install
482
483 pud_java_uninstall:
484                 $(MAKECMDPREFIX)$(MAKECMD) -C lib/pud DESTDIR=$(DESTDIR) java-uninstall
485
486 quagga:
487                 $(MAKECMDPREFIX)$(MAKECMD) -C lib/quagga
488
489 quagga_clean:
490                 $(MAKECMDPREFIX)$(MAKECMD) -C lib/quagga DESTDIR=$(DESTDIR) clean
491
492 quagga_install:
493                 $(MAKECMDPREFIX)$(MAKECMD) -C lib/quagga DESTDIR=$(DESTDIR) install
494
495 quagga_uninstall:
496                 $(MAKECMDPREFIX)$(MAKECMD) -C lib/quagga DESTDIR=$(DESTDIR) uninstall
497
498 secure:
499                 $(MAKECMDPREFIX)$(MAKECMD) -C lib/secure
500
501 secure_clean:
502                 $(MAKECMDPREFIX)$(MAKECMD) -C lib/secure DESTDIR=$(DESTDIR) clean
503
504 secure_install:
505                 $(MAKECMDPREFIX)$(MAKECMD) -C lib/secure DESTDIR=$(DESTDIR) install
506
507 secure_uninstall:
508                 $(MAKECMDPREFIX)$(MAKECMD) -C lib/secure DESTDIR=$(DESTDIR) uninstall
509
510 sgwdynspeed:
511                 $(MAKECMDPREFIX)$(MAKECMD) -C lib/sgwdynspeed
512
513 sgwdynspeed_clean:
514                 $(MAKECMDPREFIX)$(MAKECMD) -C lib/sgwdynspeed DESTDIR=$(DESTDIR) clean
515
516 sgwdynspeed_install:
517                 $(MAKECMDPREFIX)$(MAKECMD) -C lib/sgwdynspeed DESTDIR=$(DESTDIR) install
518
519 sgwdynspeed_uninstall:
520                 $(MAKECMDPREFIX)$(MAKECMD) -C lib/sgwdynspeed DESTDIR=$(DESTDIR) uninstall
521
522 txtinfo: info
523                 $(MAKECMDPREFIX)$(MAKECMD) -C lib/txtinfo
524
525 txtinfo_clean: info_clean
526                 $(MAKECMDPREFIX)$(MAKECMD) -C lib/txtinfo DESTDIR=$(DESTDIR) clean
527
528 txtinfo_install: info_install
529                 $(MAKECMDPREFIX)$(MAKECMD) -C lib/txtinfo DESTDIR=$(DESTDIR) install
530
531 txtinfo_uninstall: info_uninstall
532                 $(MAKECMDPREFIX)$(MAKECMD) -C lib/txtinfo DESTDIR=$(DESTDIR) uninstall
533
534 watchdog:
535                 $(MAKECMDPREFIX)$(MAKECMD) -C lib/watchdog
536
537 watchdog_clean:
538                 $(MAKECMDPREFIX)$(MAKECMD) -C lib/watchdog DESTDIR=$(DESTDIR) clean
539
540 watchdog_install:
541                 $(MAKECMDPREFIX)$(MAKECMD) -C lib/watchdog DESTDIR=$(DESTDIR) install
542
543 watchdog_uninstall:
544                 $(MAKECMDPREFIX)$(MAKECMD) -C lib/watchdog DESTDIR=$(DESTDIR) uninstall
545
546
547 build_all:      all switch libs
548 install_all:    install install_libs
549 uninstall_all:  uninstall uninstall_libs
550 clean_all:      uberclean clean_libs