Plugin interface updates, topology is generated upon every connection
[olsrd.git] / Makefile
index 976ee5b..8633b83 100644 (file)
--- a/Makefile
+++ b/Makefile
-CC ?= gcc
-
-CFLAGS ?= -Isrc -Wall -Wmissing-prototypes -Wstrict-prototypes -O2 -g #-pg -DDEBUG #-march=i686
-LIBS = -lpthread -lm -ldl
-INSTALL_PREFIX ?=
-STRIP ?= strip
-BISON ?= bison
-FLEX ?= flex
-CFGDIR = src/cfgparser
-
-# 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 \
-       $(CFGDIR)/oparse.c $(CFGDIR)/oscan.c \
-       $(CFGDIR)/olsrd_conf.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 \
-       $(CFGDIR)/oparse.o $(CFGDIR)/oscan.o \
-       $(CFGDIR)/olsrd_conf.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 \
-       $(CFGDIR)/oparse.h $(CFGDIR)/olsrd_conf.h \
-       $(CFGDIR)/olsrd_cfgparser.h \
-       src/linux/net.h src/linux/link_layer.h
-
-all:   olsrd
-
-olsrd: $(OBJS)
-       $(CC) $(LIBS) -o bin/$@ $(OBJS)
-
-$(CFGDIR)/oparse.c: $(CFGDIR)/oparse.y $(CFGDIR)/olsrd_conf.h
-       $(BISON) -d -o$(CFGDIR)/oparse.c $(CFGDIR)/oparse.y
-
-$(CFGDIR)/oparse.h: $(CFGDIR)/oparse.c
-
-
-$(CFGDIR)/oscan.c: $(CFGDIR)/oscan.lex $(CFGDIR)/oparse.h $(CFGDIR)/olsrd_conf.h
-       $(FLEX) -o$(CFGDIR)/oscan.c $(CFGDIR)/oscan.lex
+#
+# OLSR ad-hoc routing table management protocol
+# Copyright (C) 2003-2004 Andreas T√łnnesen (andreto@ifi.uio.no)
+#
+# This file is part of the olsr.org OLSR daemon.
+#
+# olsr.org is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# olsr.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with olsr.org; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+#
+#
+# $Id: Makefile,v 1.18 2004/11/05 20:58:09 tlopatic Exp $
+#
+
+#OS ?=         linux
+#OS =          fbsd
+#OS =          win32
+#OS =          osx
+
+CC ?=          gcc
+
+PREFIX ?=
+
+STRIP ?=       strip
+
+BISON ?=       bison
+FLEX ?=                flex
+CFGDIR =       src/cfgparser
+
+DEPFILE =      .depend
+DEPBAK =       .depend.bak
+DEPEND =       makedepend -f $(DEPFILE)
+
+all:           olsrd
+
+SRCS =         $(wildcard src/*.c) \
+               $(CFGDIR)/oparse.c $(CFGDIR)/oscan.c $(CFGDIR)/olsrd_conf.c
+
+HDRS =         $(wildcard src/*.h) \
+               $(CFGDIR)/oparse.h $(CFGDIR)/olsrd_conf.h
+
+OBJS =         $(patsubst %.c,%.o,$(wildcard src/*.c)) \
+               $(CFGDIR)/oparse.o $(CFGDIR)/oscan.o $(CFGDIR)/olsrd_conf.o
+
+ifeq ($(OS), linux)
+
+SRCS +=        $(wildcard src/linux/*.c) $(wildcard src/unix/*.c)
+
+HDRS +=                $(wildcard src/linux/*.h) $(wildcard src/unix/*.h)
+
+OBJS +=                $(patsubst %.c,%.o,$(wildcard src/linux/*.c)) \
+               $(patsubst %.c,%.o,$(wildcard src/unix/*.c))
+
+CFLAGS ?=      -Isrc -Wall -Wmissing-prototypes -Wstrict-prototypes \
+               -O2 -g -Dlinux #-pg -DDEBUG #-march=i686
+
+LIBS =         -lpthread -lm -ldl
+
+$(DEPFILE):    $(SRCS) $(HDRS)
+               @echo '# olsrd dependency file. AUTOGENERATED' > $(DEPFILE)
+               $(DEPEND) -Y $(CFLAGS) $(SRCS) >/dev/null 2>&1
+
+olsrd:         $(OBJS)
+               $(CC) -o bin/$@ $(OBJS) $(LIBS)
+
+else
+ifeq ($(OS), fbsd)
+
+SRCS +=                $(wildcard src/bsd/*.c) $(wildcard src/unix/*.c)
+
+HDRS +=                $(wildcard src/bsd/*.h) $(wildcard src/unix/*.h)
+
+OBJS +=                $(patsubst %.c,%.o,$(wildcard src/bsd/*.c)) \
+               $(patsubst %.c,%.o,$(wildcard src/unix/*.c))
+
+CFLAGS ?=      -Isrc -Wall -Wmissing-prototypes -Wstrict-prototypes \
+               -O2 -g
+
+LIBS =         -pthread -lm
+
+$(DEPFILE):    $(SRCS) $(HDRS)
+               @echo '# olsrd dependency file. AUTOGENERATED' > $(DEPFILE)
+               $(DEPEND) $(CFLAGS) $(SRCS)
+
+olsrd:         $(OBJS)
+               $(CC) -o bin/$@ $(OBJS) $(LIBS)
+
+else
+ifeq ($(OS), win32)
+
+SRCS +=                $(wildcard src/win32/*.c)
+
+HDRS +=                $(wildcard src/win32/*.h)
+
+OBJS +=                $(patsubst %.c,%.o,$(wildcard src/win32/*.c))
+
+CFLAGS ?=      -Isrc -Isrc/win32 -Wall -Wmissing-prototypes \
+               -Wstrict-prototypes -mno-cygwin -O2 -g -DWIN32
+
+LIBS =         -mno-cygwin -lws2_32 -liphlpapi
+
+$(DEPFILE):    $(SRCS) $(HDRS)
+               @echo '# olsrd dependency file. AUTOGENERATED' > $(DEPFILE)
+               $(DEPEND) $(CFLAGS) $(SRCS)
+
+olsrd:         $(OBJS)
+               $(CC) -o bin/$@ $(OBJS) $(LIBS)
+
+else
+ifeq ($(OS), osx)
+
+SRCS +=                $(wildcard src/bsd/*.c) $(wildcard src/unix/*.c)
+
+HDRS +=                $(wildcard src/bsd/*.h) $(wildcard src/unix/*.h)
+
+OBJS +=                $(patsubst %.c,%.o,$(wildcard src/bsd/*.c)) \
+               $(patsubst %.c,%.o,$(wildcard src/unix/*.c))
+
+CFLAGS ?=      -D__MacOSX__ -Isrc -Wall -Wmissing-prototypes \
+               -Wstrict-prototypes -O2 -g 
+
+LIBS =         -lm -ldl
+
+$(DEPFILE):    $(SRCS) $(HDRS)
+               @echo '# olsrd dependency file. AUTOGENERATED' > $(DEPFILE)
+               $(DEPEND) $(CFLAGS) $(SRCS)
+
+olsrd:         $(OBJS)
+               $(CC) -o bin/$@ $(OBJS) $(LIBS)
+
+
+else
+
+olsrd:
+       @echo
+       @echo '***** olsr.org olsr daemon Make ****'
+       @echo ' You must provide a valid target OS '
+       @echo ' by setting the OS variable! Valid  '
+       @echo ' target OSes are:                   '
+       @echo ' ---------------------------------  '
+       @echo ' linux - GNU/Linux                  '
+       @echo ' win32 - Windows NT family(2k/XP)   '
+       @echo ' fbsd  - FreeBSD                    '
+       @echo ' osx   - Mac OS X                   '
+       @echo ' ---------------------------------  '
+       @echo ' Example - build for windows:       '
+       @echo ' make OS=win32                      '
+       @echo ' If you are developing olsrd code,  '
+       @echo ' exporting the OS variable might    '
+       @echo ' be a good idea :-) Have fun!       '
+       @echo '************************************'
+       @echo
+endif
+endif
+endif
+endif
+
+depend:                $(DEPFILE)
+
+$(CFGDIR)/oparse.c: \
+               $(CFGDIR)/oparse.y $(CFGDIR)/olsrd_conf.h
+               $(BISON) -d -o$(CFGDIR)/oparse.c $(CFGDIR)/oparse.y
+
+$(CFGDIR)/oparse.h: \
+               $(CFGDIR)/oparse.c
+
+$(CFGDIR)/oscan.c: \
+               $(CFGDIR)/oscan.lex $(CFGDIR)/oparse.h $(CFGDIR)/olsrd_conf.h
+               $(FLEX) -o$(CFGDIR)/oscan.c $(CFGDIR)/oscan.lex
 
 libs: 
-       for i in lib/*; do \
-               $(MAKE) -C $$i; \
-       done; 
+               for i in lib/*; do \
+                       $(MAKE) -C $$i; \
+               done; 
 
 clean_libs: 
-       for i in lib/*; do \
-               $(MAKE) -C $$i clean; \
-       done; 
+               for i in lib/*; do \
+                       $(MAKE) -C $$i clean; \
+               done; 
+
+.PHONY:                clean
 
-.PHONY: clean
 clean:
-       -rm -f $(OBJS)
+               rm -f $(OBJS)
 
-install_libs:
-       for i in lib/*; do \
-               $(MAKE) -C $$i LIBDIR=$(INSTALL_PREFIX)/usr/lib install; \
-       done;   
+uberclean:
+               rm -f $(OBJS) $(DEPFILE) $(DEPBAK)
+               rm -f $(CFGDIR)/oscan.c $(CFGDIR)/oparse.h $(CFGDIR)/oparse.c
+               rm -f bin/olsrd bin/olsrd.exe
+               rm -f src/*~ src/linux/*~ src/unix/*~ src/win32/*~
+               rm -f src/bsd/*~ src/cfgparser/*~
 
+install_libs:
+               for i in lib/*; do \
+                       $(MAKE) -C $$i LIBDIR=$(PREFIX)/usr/lib install; \
+               done;   
 
 install_bin:
-       $(STRIP) bin/olsrd
-       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
+               $(STRIP) bin/olsrd
+               install -D -m 755 bin/olsrd $(PREFIX)/usr/sbin/olsrd
+
+install:       install_bin
+               @echo olsrd uses the configfile $(PREFIX)/etc/olsr.conf
+               @echo a default configfile. A sample configfile
+               @echo can be installed
+               mkdir -p $(PREFIX)/etc
+               cp -i files/olsrd.conf.default $(PREFIX)/etc/olsrd.conf
+               @echo -------------------------------------------
+               @echo Edit $(PREFIX)/etc/olsrd.conf before running olsrd!!
+               @echo -------------------------------------------
+               mkdir -p $(PREFIX)/usr/share/man/man8/
+               cp files/olsrd.8.gz $(PREFIX)/usr/share/man/man8/olsrd.8.gz
+
+sinclude       $(DEPFILE)
+