# The olsr.org Optimized Link-State Routing daemon(olsrd)
-# Copyright (c) 2004, Andreas TΓΈnnesen(andreto@olsr.org)
+# Copyright (c) 2004, Andreas Tonnesen(andreto@olsr.org)
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# to the project. For more information see the website or contact
# the copyright holders.
#
-# $Id: Makefile,v 1.87 2007/07/17 13:13:08 bernd67 Exp $
-VERS = 0.5.3pre
+# Please also write a new version to:
+# gui/win32/Main/Frontend.rc (line 71, around "CAPTION [...]")
+# gui/win32/Inst/installer.nsi (line 57, around "MessageBox MB_YESNO [...]")
+VERS = pre-0.5.6-r9
TOPDIR = .
include Makefile.inc
-CFLAGS += -DVERSION=\"$(VERS)\"
-
+# pass generated variables to save time
MAKECMD = $(MAKE) OS="$(OS)" WARNINGS="$(WARNINGS)"
LIBS += $(OS_LIB_DYNLOAD)
ifeq ($(OS), win32)
-LDFLAGS += -Wl,--out-implib=libolsrd.a -Wl,--export-all-symbols
+LDFLAGS += -Wl,--out-implib=libolsrd.a
+LDFLAGS += -Wl,--export-all-symbols
endif
-SWITCHDIR = src/olsr_switch
+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)
+include $(CFGDIR)/local.mk
+TAG_SRCS = $(SRCS) $(HDRS) $(wildcard $(CFGDIR)/*.[ch] $(SWITCHDIR)/*.[ch])
-default_target: cfgparser olsrd
+.PHONY: default_target switch
+default_target: $(EXENAME)
-olsrd: $(OBJS) $(CFGOBJS)
- $(CC) $(LDFLAGS) -o $@ $(OBJS) $(CFGOBJS) $(LIBS)
+$(EXENAME): $(OBJS) src/builddata.o
+ $(CC) $(LDFLAGS) -o $@ $^ $(LIBS)
-cfgparser: $(CFGDEPS)
- $(MAKECMD) -C $(CFGDIR)
+cfgparser: $(CFGDEPS) src/builddata.o
+ $(MAKE) -C $(CFGDIR)
switch:
- $(MAKECMD) -C $(SWITCHDIR)
+ $(MAKECMD) -C $(SWITCHDIR)
+
+# generate it always
+.PHONY: src/builddata.c
+src/builddata.c:
+ @$(RM) "$@"
+ @echo "#include \"defs.h\"" >> "$@"
+ @echo "const char olsrd_version[] = \"olsr.org - $(VERS)\";" >> "$@"
+ @date +"const char build_date[] = \"%Y-%m-%d %H:%M:%S\";" >> "$@"
+ @echo "const char build_host[] = \"$(shell hostname)\";" >> "$@"
-$(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: help libs clean_libs libs_clean clean uberclean install_libs libs_install install_bin install_olsrd install build_all install_all clean_all
clean:
- -rm -f $(OBJS) $(SRCS:%.c=%.d) olsrd olsrd.exe
- $(MAKECMD) -C $(CFGDIR) clean
- $(MAKECMD) -C $(SWITCHDIR) clean
+ -rm -f $(OBJS) $(SRCS:%.c=%.d) $(EXENAME) $(EXENAME).exe src/builddata.c $(TMPFILES)
+ifeq ($(OS), win32)
+ -rm -f libolsrd.a
+ -rm -f gui/win32/Main/olsrd_cfgparser.lib
+ -rm -f olsr-setup.exe
+ -rm -fr gui/win32/Main/Release
+ -rm -fr gui/win32/Shim/Release
+endif
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
+ -rm -f $(TAGFILE)
+# BSD-xargs has no "--no-run-if-empty" aka "-r"
+ find . \( -name '*.[od]' -o -name '*~' \) -not -path "*/.hg*" -print0 | xargs -0 rm -f
+ $(MAKECMD) -C $(SWITCHDIR) clean
+ $(MAKECMD) -C $(CFGDIR) clean
install: install_olsrd
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 $(EXENAME) 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 configfile can be found in olsrd.conf.default.rfc.
+ @echo However none of the larger OLSRD using networks use that
+ @echo so install a configfile with activated link quality exstensions
+ @echo per default.
@echo can be found at files/olsrd.conf.default.lq
@echo ==========================================================
mkdir -p $(ETCDIR)
- -cp -i files/olsrd.conf.default.rfc $(CFGFILE)
+ -cp -i files/olsrd.conf.default.lq $(CFGFILE)
@echo -------------------------------------------
@echo Edit $(CFGFILE) before running olsrd!!
@echo -------------------------------------------
- @echo Installing manpages olsrd\(8\) and olsrd.conf\(5\)
+ @echo Installing manpages $(EXENAME)\(8\) and $(CFGNAME)\(5\)
+ifneq ($(MANDIR),)
mkdir -p $(MANDIR)/man8/
- cp files/olsrd.8.gz $(MANDIR)/man8/olsrd.8.gz
+ cp files/olsrd.8.gz $(MANDIR)/man8/$(EXENAME).8.gz
mkdir -p $(MANDIR)/man5/
- cp files/olsrd.conf.5.gz $(MANDIR)/man5/olsrd.conf.5.gz
+ cp files/olsrd.conf.5.gz $(MANDIR)/man5/$(CFGNAME).5.gz
+endif
tags:
$(TAGCMD) -o $(TAGFILE) $(TAG_SRCS)
# PLUGINS
#
-libs:
- $(MAKECMD) -C lib LIBDIR=$(LIBDIR)
+# This is quite ugly but at least it works
+ifeq ($(OS),linux)
+SUBDIRS = $(notdir $(shell find lib -maxdepth 2 -name Makefile -not -path lib/Makefile -printf "%h\n"|sort))
+else
+ifeq ($(OS),win32)
+SUBDIRS := dot_draw httpinfo mini pgraph secure txtinfo
+else
+ifeq ($(OS),android)
+# nameservice: no regex
+SUBDIRS := bmf dot_draw dyn_gw_plain httpinfo mini quagga secure tas txtinfo watchdog
+else
+SUBDIRS := dot_draw dyn_gw dyn_gw_plain httpinfo mini nameservice pgraph secure txtinfo watchdog
+endif
+endif
+endif
+
+libs:
+ set -e;for dir in $(SUBDIRS);do $(MAKECMD) -C lib/$$dir LIBDIR=$(LIBDIR);done
libs_clean clean_libs:
- $(MAKECMD) -C lib LIBDIR=$(LIBDIR) clean
+ -for dir in $(SUBDIRS);do $(MAKECMD) -C lib/$$dir LIBDIR=$(LIBDIR) clean;done
+ifeq ($(OS), win32)
+ -rm -f lib/pgraph/olsrd_pgraph.dll
+ -rm -f lib/txtinfo/olsrd_txtinfo.dll
+ -rm -f lib/httpinfo/olsrd_httpinfo.dll
+ -rm -f lib/secure/olsrd_secure.dll
+ -rm -f lib/dot_draw/olsrd_dot_draw.dll
+ -rm -f lib/mini/olsrd_mini.dll
+endif
libs_install install_libs:
- $(MAKECMD) -C lib LIBDIR=$(LIBDIR) install
+ set -e;for dir in $(SUBDIRS);do $(MAKECMD) -C lib/$$dir LIBDIR=$(LIBDIR) install;done
httpinfo:
$(MAKECMD) -C lib/httpinfo clean
tas:
$(MAKECMD) -C lib/tas clean
+ $(MAKECMD) -C lib/tas
$(MAKECMD) -C lib/tas DESTDIR=$(DESTDIR) install
dot_draw:
$(MAKECMD) -C lib/dot_draw clean
+ $(MAKECMD) -C lib/dot_draw
$(MAKECMD) -C lib/dot_draw DESTDIR=$(DESTDIR) install
nameservice:
$(MAKECMD) -C lib/nameservice clean
+ $(MAKECMD) -C lib/nameservice
$(MAKECMD) -C lib/nameservice DESTDIR=$(DESTDIR) install
dyn_gw:
$(MAKECMD) -C lib/quagga
$(MAKECMD) -C lib/quagga DESTDIR=$(DESTDIR) install
+txtinfo:
+ $(MAKECMD) -C lib/txtinfo clean
+ $(MAKECMD) -C lib/txtinfo
+ $(MAKECMD) -C lib/txtinfo DESTDIR=$(DESTDIR) install
+
+arprefresh:
+ $(MAKECMD) -C lib/arprefresh clean
+ $(MAKECMD) -C lib/arprefresh
+ $(MAKECMD) -C lib/arprefresh DESTDIR=$(DESTDIR) install
+
+watchdog:
+ $(MAKECMD) -C lib/watchdog clean
+ $(MAKECMD) -C lib/watchdog
+ $(MAKECMD) -C lib/watchdog DESTDIR=$(DESTDIR) install
-build_all: cfgparser olsrd libs
+build_all: all switch libs
install_all: install install_libs
clean_all: uberclean clean_libs