* set version to 0.5.0 and added a section in the CHANGELOG
[olsrd.git] / Makefile
index d56df2e..f5d16a5 100644 (file)
--- a/Makefile
+++ b/Makefile
-CC ?= gcc
-
-CFLAGS ?= -Wall -Wmissing-prototypes -Wstrict-prototypes -O2 -g #-pg -DDEBUG #-march=i686
-LIBS = -lpthread -lm -ldl
-INSTALL_PREFIX ?=
-STRIP ?= strip
-
-# 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.76 2007/04/01 21:44:14 bernd67 Exp $
 
-libs: 
-       for i in lib/*; do \
-               $(MAKE) -C $$i; \
-       done; 
+VERS =         0.5.0
+
+TOPDIR = .
+include Makefile.inc
+
+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
+
+olsrd:         $(OBJS) $(CFGOBJS)
+               $(CC) $(LDFLAGS) -o $@ $(OBJS) $(CFGOBJS) $(LIBS)
+
+cfgparser:     $(CFGDEPS)
+               $(MAKE) -C $(CFGDIR)
 
-clean_libs: 
-       for i in lib/*; do \
-               $(MAKE) -C $$i clean; \
-       done; 
+switch:                
+               $(MAKE) -C $(SWITCHDIR)
+
+$(CFGOBJS):
+               $(MAKE) -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
+               $(MAKE) -C $(CFGDIR) clean
+               $(MAKE) -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)
+               -rm -f src/*.[od~] 
+               -rm -f src/linux/*.[od~] src/unix/*.[od~] src/win32/*.[od~] src/bsd/*.[od~]
+               $(MAKE) -C $(CFGDIR) uberclean
+               $(MAKE) -C $(SWITCHDIR) clean
 
+install: install_olsrd
 
 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
+               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: 
+               $(MAKE) -C lib LIBDIR=$(LIBDIR)
+
+libs_clean clean_libs:
+               $(MAKE) -C lib LIBDIR=$(LIBDIR) clean
+
+libs_install install_libs:
+               $(MAKE) -C lib LIBDIR=$(LIBDIR) install
+
+httpinfo:
+               $(MAKE) -C lib/httpinfo clean
+               $(MAKE) -C lib/httpinfo 
+               $(MAKE) -C lib/httpinfo DESTDIR=$(DESTDIR) install 
+
+tas:
+               $(MAKE) -C lib/tas clean
+               $(MAKE) -C lib/tas DESTDIR=$(DESTDIR) install
+
+dot_draw:
+               $(MAKE) -C lib/dot_draw clean
+               $(MAKE) -C lib/dot_draw DESTDIR=$(DESTDIR) install
+
+nameservice:
+               $(MAKE) -C lib/nameservice clean
+               $(MAKE) -C lib/nameservice DESTDIR=$(DESTDIR) install
+
+dyn_gw:
+               $(MAKE) -C lib/dyn_gw clean
+               $(MAKE) -C lib/dyn_gw
+               $(MAKE) -C lib/dyn_gw DESTDIR=$(DESTDIR) install
+
+dyn_gw_plain:
+               $(MAKE) -C lib/dyn_gw_plain clean
+               $(MAKE) -C lib/dyn_gw_plain
+               $(MAKE) -C lib/dyn_gw_plain DESTDIR=$(DESTDIR) install
+
+secure:
+               $(MAKE) -C lib/secure clean
+               $(MAKE) -C lib/secure
+               $(MAKE) -C lib/secure DESTDIR=$(DESTDIR) install
+
+pgraph:
+               $(MAKE) -C lib/pgraph clean
+               $(MAKE) -C lib/pgraph 
+               $(MAKE) -C lib/pgraph DESTDIR=$(DESTDIR) install 
+
+bmf:
+               $(MAKE) -C lib/bmf clean
+               $(MAKE) -C lib/bmf 
+               $(MAKE) -C lib/bmf DESTDIR=$(DESTDIR) install 
+
+quagga:
+               $(MAKE) -C lib/quagga clean
+               $(MAKE) -C lib/quagga 
+               $(MAKE) -C lib/quagga DESTDIR=$(DESTDIR) install 
+
+
+build_all:     cfgparser olsrd libs
+install_all:   install install_libs
+clean_all:     uberclean clean_libs