-CC ?= gcc
-
-CFLAGS ?= -Wall -O2 #-g #-pg -DDEBUG #-march=i686
-LIBS = -lpthread -lm -ldl
-INSTALL_PREFIX ?=
-
-
-# Keep OS specific files last
-
-SRCS= src/interfaces.c src/parser.c src/build_msg.c \
- src/scheduler.c src/main.c src/two_hop_neighbor_table.c \
- src/neighbor_table.c src/mpr_selector_set.c src/duplicate_set.c \
- src/tc_set.c src/routing_table.c src/packet.c src/olsr.c \
- src/process_routes.c src/net.c src/mantissa.c \
- src/hna_set.c src/mid_set.c src/ipc_frontend.c \
- src/link_set.c src/configfile.c src/socket_parser.c \
- src/process_package.c src/mpr.c src/local_hna_set.c \
- src/hashing.c src/hysteresis.c src/generate_msg.c \
- src/rebuild_packet.c src/plugin_loader.c src/plugin.c \
- src/linux/net.c src/linux/apm.c src/linux/tunnel.c \
- src/linux/kernel_routes.c src/linux/link_layer.c \
- src/linux/ifnet.c src/linux/log.c
-
-OBJS= src/interfaces.o src/parser.o src/build_msg.o \
- src/scheduler.o src/main.o src/two_hop_neighbor_table.o \
- src/neighbor_table.o src/mpr_selector_set.o src/duplicate_set.o \
- src/tc_set.o src/routing_table.o src/packet.o src/olsr.o \
- src/process_routes.o src/net.o src/mantissa.o \
- src/hna_set.o src/mid_set.o src/ipc_frontend.o \
- src/link_set.o src/configfile.o src/socket_parser.o \
- src/process_package.o src/mpr.o src/local_hna_set.o\
- src/hashing.o src/hysteresis.o src/generate_msg.o \
- src/rebuild_packet.o src/plugin_loader.o src/plugin.o \
- src/linux/net.o src/linux/apm.o src/linux/tunnel.o \
- src/linux/kernel_routes.o src/linux/link_layer.o \
- src/linux/ifnet.o src/linux/log.o
-
-HDRS= src/defs.h src/interfaces.h src/packet.h src/build_msg.h \
- src/olsr.h src/two_hop_neighbor_table.h olsr_plugin_io.h \
- src/neighbor_table.h src/mpr_selector_set.h \
- src/duplicate_set.h src/tc_set.h src/rtable.h \
- src/process_routes.h src/net.h src/mantissa.h \
- src/hna_set.h main.h src/mid_set.h src/ipc_frontend.h \
- src/olsr_protocol.h src/link_set.h src/configfile.h \
- src/process_package.h src/mpr.h src/ipc_olsrset.h \
- src/local_hna_set.h src/hashing.h src/hysteresis.h \
- src/generate_msg.h src/rebuild_packet.h src/plugin_loader.h \
- src/plugin.h src/socket_parser.h src/ifnet.h \
- src/kernel_routes.h src/log.h src/net_os.h \
- src/apm.h src/linux/tunnel.h src/scheduler.h \
- src/linux/net.h src/linux/link_layer.h
-
-all: olsrd
-
-olsrd: $(OBJS)
- $(CC) $(LIBS) -o bin/$@ $(OBJS)
+# The olsr.org Optimized Link-State Routing daemon(olsrd)
+# Copyright (c) 2004, Andreas Tønnesen(andreto@olsr.org)
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in
+# the documentation and/or other materials provided with the
+# distribution.
+# * Neither the name of olsr.org, olsrd nor the names of its
+# contributors may be used to endorse or promote products derived
+# from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+#
+# Visit http://www.olsr.org for more information.
+#
+# If you find this software useful feel free to make a donation
+# to the project. For more information see the website or contact
+# the copyright holders.
+#
+# $Id: Makefile,v 1.86 2007/07/05 23:12:43 bernd67 Exp $
-libs:
- for i in lib/*; do \
- $(MAKE) -C $$i; \
- done;
+VERS = 0.5.2pre
+
+TOPDIR = .
+include Makefile.inc
+
+CFLAGS += -DVERSION=\"$(VERS)\"
+
+MAKECMD = $(MAKE) OS="$(OS)" WARNINGS="$(WARNINGS)"
+
+LIBS += $(OS_LIB_DYNLOAD)
+
+ifeq ($(OS), win32)
+LDFLAGS += -Wl,--out-implib=libolsrd.a -Wl,--export-all-symbols
+endif
+
+SWITCHDIR = src/olsr_switch
+CFGDIR = src/cfgparser
+CFGOBJS = $(CFGDIR)/oscan.o $(CFGDIR)/oparse.o $(CFGDIR)/olsrd_conf.o
+CFGDEPS = $(wildcard $(CFGDIR)/*.c) $(wildcard $(CFGDIR)/*.h) $(CFGDIR)/oparse.y $(CFGDIR)/oscan.lex
+TAG_SRCS = $(SRCS) $(HDRS) $(wildcard src/cfgparser/*.c) $(wildcard src/cfgparser/*.h) $(wildcard src/olsr_switch/*.c) $(wildcard src/olsr_switch/*.h)
+
+default_target: cfgparser olsrd
-clean_libs:
- for i in lib/*; do \
- $(MAKE) -C $$i clean; \
- done;
+olsrd: $(OBJS) $(CFGOBJS)
+ $(CC) $(LDFLAGS) -o $@ $(OBJS) $(CFGOBJS) $(LIBS)
+
+cfgparser: $(CFGDEPS)
+ $(MAKECMD) -C $(CFGDIR)
+
+switch:
+ $(MAKECMD) -C $(SWITCHDIR)
+
+$(CFGOBJS):
+ $(MAKECMD) -C $(CFGDIR)
+
+.PHONY: help libs clean_libs libs_clean clean uberclean install_libs libs_install install_bin install_olsrd install build_all install_all clean_all
-.PHONY: clean
clean:
- -rm -f $(OBJS)
+ -rm -f $(OBJS) $(SRCS:%.c=%.d) olsrd olsrd.exe
+ $(MAKECMD) -C $(CFGDIR) clean
+ $(MAKECMD) -C $(SWITCHDIR) clean
-install_libs:
- for i in lib/*; do \
- $(MAKE) -C $$i LIBDIR=$(INSTALL_PREFIX)/usr/lib install; \
- done;
+uberclean: clean clean_libs
+ -rm -f $(TAGFILE)
+ find . \( -name '*.[od]' -o -name '*~' \) -print | xargs -r rm -f
+ $(MAKECMD) -C $(CFGDIR) uberclean
+ $(MAKECMD) -C $(SWITCHDIR) clean
+install: install_olsrd
install_bin:
- install -D -m 755 bin/olsrd $(INSTALL_PREFIX)/usr/sbin/olsrd
-
-install: install_bin
- @echo olsrd uses the configfile $(INSTALL_PREFIX)/etc/olsr.conf
- @echo a default configfile. A sample configfile
- @echo can be installed
- mkdir -p $(INSTALL_PREFIX)/etc
- cp -i files/olsrd.conf.default $(INSTALL_PREFIX)/etc/olsrd.conf
- @echo -------------------------------------------
- @echo Edit $(INSTALL_PREFIX)/etc/olsrd.conf before running olsrd!!
- @echo -------------------------------------------
- mkdir -p $(INSTALL_PREFIX)/usr/share/man/man8/
- cp files/olsrd.8.gz $(INSTALL_PREFIX)/usr/share/man/man8/olsrd.8.gz
+ mkdir -p $(SBINDIR)
+ install -m 755 $(EXENAME) $(SBINDIR)
+ $(STRIP) $(SBINDIR)/$(EXENAME)
+
+install_olsrd: install_bin
+ @echo ========= C O N F I G U R A T I O N - F I L E ============
+ @echo olsrd uses the configfile $(CFGFILE)
+ @echo a default configfile. A sample RFC-compliance aimed
+ @echo configfile can be installed. Note that a LQ-based configfile
+ @echo can be found at files/olsrd.conf.default.lq
+ @echo ==========================================================
+ mkdir -p $(ETCDIR)
+ -cp -i files/olsrd.conf.default.rfc $(CFGFILE)
+ @echo -------------------------------------------
+ @echo Edit $(CFGFILE) before running olsrd!!
+ @echo -------------------------------------------
+ @echo Installing manpages olsrd\(8\) and olsrd.conf\(5\)
+ mkdir -p $(MANDIR)/man8/
+ cp files/olsrd.8.gz $(MANDIR)/man8/olsrd.8.gz
+ mkdir -p $(MANDIR)/man5/
+ cp files/olsrd.conf.5.gz $(MANDIR)/man5/olsrd.conf.5.gz
+
+tags:
+ $(TAGCMD) -o $(TAGFILE) $(TAG_SRCS)
+
+rpm:
+ @$(RM) olsrd-current.tar.bz2
+ @echo "Creating olsrd-current.tar.bz2 ..."
+ @./list-excludes.sh | tar --exclude-from=- --exclude="olsrd-current.tar.bz2" -C .. -cjf olsrd-current.tar.bz2 olsrd-current
+ @echo "Building RPMs..."
+ @rpmbuild -ta olsrd-current.tar.bz2
+#
+# PLUGINS
+#
+
+libs:
+ $(MAKECMD) -C lib LIBDIR=$(LIBDIR)
+
+libs_clean clean_libs:
+ $(MAKECMD) -C lib LIBDIR=$(LIBDIR) clean
+
+libs_install install_libs:
+ $(MAKECMD) -C lib LIBDIR=$(LIBDIR) install
+
+httpinfo:
+ $(MAKECMD) -C lib/httpinfo clean
+ $(MAKECMD) -C lib/httpinfo
+ $(MAKECMD) -C lib/httpinfo DESTDIR=$(DESTDIR) install
+
+tas:
+ $(MAKECMD) -C lib/tas clean
+ $(MAKECMD) -C lib/tas DESTDIR=$(DESTDIR) install
+
+dot_draw:
+ $(MAKECMD) -C lib/dot_draw clean
+ $(MAKECMD) -C lib/dot_draw DESTDIR=$(DESTDIR) install
+
+nameservice:
+ $(MAKECMD) -C lib/nameservice clean
+ $(MAKECMD) -C lib/nameservice DESTDIR=$(DESTDIR) install
+
+dyn_gw:
+ $(MAKECMD) -C lib/dyn_gw clean
+ $(MAKECMD) -C lib/dyn_gw
+ $(MAKECMD) -C lib/dyn_gw DESTDIR=$(DESTDIR) install
+
+dyn_gw_plain:
+ $(MAKECMD) -C lib/dyn_gw_plain clean
+ $(MAKECMD) -C lib/dyn_gw_plain
+ $(MAKECMD) -C lib/dyn_gw_plain DESTDIR=$(DESTDIR) install
+
+secure:
+ $(MAKECMD) -C lib/secure clean
+ $(MAKECMD) -C lib/secure
+ $(MAKECMD) -C lib/secure DESTDIR=$(DESTDIR) install
+
+pgraph:
+ $(MAKECMD) -C lib/pgraph clean
+ $(MAKECMD) -C lib/pgraph
+ $(MAKECMD) -C lib/pgraph DESTDIR=$(DESTDIR) install
+
+bmf:
+ $(MAKECMD) -C lib/bmf clean
+ $(MAKECMD) -C lib/bmf
+ $(MAKECMD) -C lib/bmf DESTDIR=$(DESTDIR) install
+
+quagga:
+ $(MAKECMD) -C lib/quagga clean
+ $(MAKECMD) -C lib/quagga
+ $(MAKECMD) -C lib/quagga DESTDIR=$(DESTDIR) install
+
+
+build_all: cfgparser olsrd libs
+install_all: install install_libs
+clean_all: uberclean clean_libs