* distribute information about (upstream) DNS servers
[olsrd.git] / Makefile
index bf9752f..84f4c76 100644 (file)
--- a/Makefile
+++ b/Makefile
 # to the project. For more information see the website or contact
 # the copyright holders.
 #
-# $Id: Makefile,v 1.29 2004/11/30 16:52:15 kattemat Exp $
+# $Id: Makefile,v 1.51 2005/03/10 06:55:44 kattemat Exp $
 
-VERS =         0.4.8
-
-#OS ?=         linux
-#OS =          fbsd
-#OS =          win32
-#OS =          osx
+VERS =         0.4.9
 
 CC ?=          gcc
 STRIP ?=       strip
 BISON ?=       bison
 FLEX ?=                flex
 
+CCWARNINGS = -Wall -Wmissing-prototypes -Wstrict-prototypes \
+             -Wmissing-declarations -Wsign-compare
+
 INSTALL_PREFIX ?=
 
-DEFINES =      -DUSE_LINK_QUALITY
-INCLUDES =     -I src
+INCLUDES =     -Isrc
 
 DEPFILE =      .depend
 
@@ -61,26 +58,66 @@ HDRS =              $(wildcard src/*.h)
 
 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
+
+TAGCMD ?=      etags   
+TAGFILE ?=     src/TAGS
+
+ifndef OS
+all:           help
+else
+all:           cfgparser olsrd
+endif
+
+ifeq ($(OS), Windows_NT)
+OS =           win32
+endif
 
 ifeq ($(OS), linux)
 
 SRCS +=        $(wildcard src/linux/*.c) $(wildcard src/unix/*.c)
 HDRS +=                $(wildcard src/linux/*.h) $(wildcard src/unix/*.h)
-DEFINES +=     -Dlinux
-CFLAGS ?=      -Wall -Wmissing-prototypes -Wstrict-prototypes \
-               -O2 -g #-pg -DDEBUG #-march=i686
-LIBS =         -lm -ldl
-MAKEDEPEND =   makedepend -f $(DEPFILE) -Y $(INCLUDES) $(DEFINES) $(SRCS) >/dev/null 2>&1
+DEFINES =      -Dlinux
+CFLAGS ?=      $(CCWARNINGS) -O2 -g #-DDEBUG #-pg #-march=i686
+LIBS =         -lm -ldl #-pg
+MAKEDEPEND =   makedepend -f $(DEPFILE) $(DEFINES) -Y $(INCLUDES) $(SRCS) >/dev/null 2>&1
 
 else
 ifeq ($(OS), fbsd)
 
 SRCS +=                $(wildcard src/bsd/*.c) $(wildcard src/unix/*.c)
 HDRS +=                $(wildcard src/bsd/*.h) $(wildcard src/unix/*.h)
-CFLAGS ?=      -Wall -Wmissing-prototypes -Wstrict-prototypes \
-               -O2 -g
+CFLAGS ?=      $(CCWARNINGS) -O2 -g
+LIBS =         -lm
+MAKEDEPEND =   makedepend -f $(DEPFILE) -D__FreeBSD__ $(INCLUDES) $(SRCS)
+
+else
+ifeq ($(OS), fbsd-ll)
+
+SRCS +=                $(wildcard src/bsd/*.c) $(wildcard src/unix/*.c)
+HDRS +=                $(wildcard src/bsd/*.h) $(wildcard src/unix/*.h)
+CFLAGS ?=      -Wall -Wmissing-prototypes -O2 -g -DSPOOF -I/usr/local/include
+LIBS =         -lm -L/usr/local/lib -lnet
+MAKEDEPEND =   makedepend -f $(DEPFILE) -D__FreeBSD__ $(INCLUDES) $(SRCS)
+
+else
+ifeq ($(OS), nbsd)
+
+SRCS +=                $(wildcard src/bsd/*.c) $(wildcard src/unix/*.c)
+HDRS +=                $(wildcard src/bsd/*.h) $(wildcard src/unix/*.h)
+CFLAGS ?=      $(CCWARNINGS) -O2 -g
 LIBS =         -lm
-MAKEDEPEND =   makedepend -f $(DEPFILE) $(INCLUDES) $(DEFINES) $(SRCS)
+MAKEDEPEND =   makedepend -f $(DEPFILE) -D__NetBSD__ $(INCLUDES) $(SRCS)
+
+else
+ifeq ($(OS), osx)
+
+SRCS +=                $(wildcard src/bsd/*.c) $(wildcard src/unix/*.c)
+HDRS +=                $(wildcard src/bsd/*.h) $(wildcard src/unix/*.h)
+DEFINES =      -D__MacOSX__
+CFLAGS ?=      $(CCWARNINGS) -O2 -g 
+LIBS =         -lm -ldl
+MAKEDEPEND =   makedepend -f $(DEPFILE) $(DEFINES) $(INCLUDES) $(SRCS)
 
 else
 ifeq ($(OS), win32)
@@ -88,21 +125,28 @@ ifeq ($(OS), win32)
 SRCS +=                $(wildcard src/win32/*.c)
 HDRS +=                $(wildcard src/win32/*.h)
 INCLUDES +=    -Isrc/win32
-DEFINES +=     -DWIN32
-CFLAGS ?=      -Wall -Wmissing-prototypes \
-               -Wstrict-prototypes -mno-cygwin -O2 -g
+DEFINES =      -DWIN32
+CFLAGS ?=      $(CCWARNINGS) -mno-cygwin -O2 -g
 LIBS =         -mno-cygwin -lws2_32 -liphlpapi
-MAKEDEPEND =   makedepend -f $(DEPFILE) $(INCLUDES) $(DEFINES) $(SRCS) >/dev/null 2>&1
+MAKEDEPEND =   makedepend -f $(DEPFILE) $(DEFINES) $(INCLUDES) $(SRCS)
 
 olsr-${VERS}.zip:      gui/win32/Main/Release/Switch.exe \
                gui/win32/Shim/Release/Shim.exe \
                olsrd.exe \
                src/cfgparser/olsrd_cfgparser.dll \
-               README-WIN32.txt \
+               README \
+               README-Link-Quality.html \
                gui/win32/Inst/linux-manual.txt \
                files/olsrd.conf.default.win32 \
                gui/win32/Main/Default.olsr \
-               lib/dot_draw/olsrd_dot_draw.dll
+               lib/dot_draw/olsrd_dot_draw.dll \
+               lib/nameservice/olsrd_nameservice.dll \
+               lib/httpinfo/olsrd_httpinfo.dll
+               $(STRIP) olsrd.exe
+               $(STRIP) src/cfgparser/olsrd_cfgparser.dll
+               $(STRIP) lib/dot_draw/olsrd_dot_draw.dll
+               $(STRIP) lib/nameservice/olsrd_nameservice.dll
+               $(STRIP) lib/httpinfo/olsrd_httpinfo.dll
                rm -rf ${TEMP}/olsr-${VERS}
                rm -f ${TEMP}/olsr-${VERS}.zip
                rm -f olsr-${VERS}.zip
@@ -111,11 +155,14 @@ olsr-${VERS}.zip: gui/win32/Main/Release/Switch.exe \
                cp gui/win32/Shim/Release/Shim.exe ${TEMP}/olsr-${VERS}
                cp olsrd.exe ${TEMP}/olsr-${VERS}
                cp src/cfgparser/olsrd_cfgparser.dll ${TEMP}/olsr-${VERS}
-               cp README-WIN32.txt ${TEMP}/olsr-${VERS}
+               cp README ${TEMP}/olsr-${VERS}
+               cp README-Link-Quality.html ${TEMP}/olsr-${VERS}
                cp gui/win32/Inst/linux-manual.txt ${TEMP}/olsr-${VERS}
                cp files/olsrd.conf.default.win32 ${TEMP}/olsr-${VERS}/olsrd.conf
                cp gui/win32/Main/Default.olsr ${TEMP}/olsr-${VERS}
                cp lib/dot_draw/olsrd_dot_draw.dll ${TEMP}/olsr-${VERS}
+               cp lib/nameservice/olsrd_nameservice.dll ${TEMP}/olsr-${VERS}
+               cp lib/httpinfo/olsrd_httpinfo.dll ${TEMP}/olsr-${VERS}
                cd ${TEMP}; echo y | cacls olsr-${VERS} /T /G Everyone:F
                cd ${TEMP}; zip -q -r olsr-${VERS}.zip olsr-${VERS}
                cp ${TEMP}/olsr-${VERS}.zip .
@@ -126,38 +173,39 @@ olsr-${VERS}-setup.exe:   gui/win32/Main/Release/Switch.exe \
                gui/win32/Shim/Release/Shim.exe \
                olsrd.exe \
                src/cfgparser/olsrd_cfgparser.dll \
-               README-WIN32.txt \
+               README \
+               README-Link-Quality.html \
                gui/win32/Inst/linux-manual.txt \
                files/olsrd.conf.default.win32 \
                gui/win32/Main/Default.olsr \
                lib/dot_draw/olsrd_dot_draw.dll \
+               lib/nameservice/olsrd_nameservice.dll \
+               lib/httpinfo/olsrd_httpinfo.dll \
                gui/win32/Inst/installer.nsi
+               $(STRIP) olsrd.exe
+               $(STRIP) src/cfgparser/olsrd_cfgparser.dll
+               $(STRIP) lib/dot_draw/olsrd_dot_draw.dll
+               $(STRIP) lib/nameservice/olsrd_nameservice.dll
+               $(STRIP) lib/httpinfo/olsrd_httpinfo.dll
                rm -f olsr-setup.exe
                rm -f olsr-${VERS}-setup.exe
                C:/Program\ Files/NSIS/makensis gui\win32\Inst\installer.nsi
                mv olsr-setup.exe olsr-${VERS}-setup.exe
 
 else
-ifeq ($(OS), osx)
 
-SRCS +=                $(wildcard src/bsd/*.c) $(wildcard src/unix/*.c)
-HDRS +=                $(wildcard src/bsd/*.h) $(wildcard src/unix/*.h)
-DEFINES +=     -D__MacOSX__
-CFLAGS ?=      -Wall -Wmissing-prototypes -Wstrict-prototypes -O2 -g 
-LIBS =         -lm -ldl
-MAKEDEPEND =   makedepend -f $(DEPFILE) $(INCLUDES) $(DEFINES) $(SRCS)
+all:   help
 
 endif
 endif
 endif
 endif
-
-ifndef OS
-all: help
-else
-all: olsrd
+endif
 endif
 
+ifneq ($(NODEBUG), )
+CFLAGS += -DNODEBUG
+endif
 
 OBJS = $(patsubst %.c,%.o,$(SRCS))
 override CFLAGS += $(INCLUDES) $(DEFINES)
@@ -173,9 +221,11 @@ ifdef MAKEDEPEND
                $(MAKEDEPEND)
 endif
 
-$(CFGOBJS):
-               $(MAKE) -C src/cfgparser
+cfgparser:     $(CFGDEPS)
+               $(MAKE) -C $(CFGDIR)
 
+$(CFGOBJS):
+               $(MAKE) -C $(CFGDIR)
 
 .PHONY: help libs clean_libs clean uberclean install_libs install_bin install
 
@@ -189,6 +239,7 @@ help:
        @echo ' linux - GNU/Linux                  '
        @echo ' win32 - MS Windows                 '
        @echo ' fbsd  - FreeBSD                    '
+       @echo ' nbsd  - NetBSD                     '
        @echo ' osx   - Mac OS X                   '
        @echo ' ---------------------------------  '
        @echo ' Example - build for windows:       '
@@ -203,16 +254,16 @@ clean:
                rm -f $(OBJS) olsrd olsrd.exe
                $(MAKE) -C src/cfgparser clean
 
-uberclean:     clean libs_clean
-               rm -f $(DEPFILE) $(DEPFILE).bak
+uberclean:     clean clean_libs
+               rm -f $(DEPFILE) $(DEPFILE).bak *~
                rm -f src/*[o~] src/linux/*[o~] src/unix/*[o~] src/win32/*[o~]
                rm -f src/bsd/*[o~] 
                $(MAKE) -C src/cfgparser uberclean
 
-
 install_bin:
                $(STRIP) olsrd
-               install -D -m 755 olsrd $(INSTALL_PREFIX)/usr/sbin/olsrd
+               mkdir -p $(INSTALL_PREFIX)/usr/sbin
+               install -m 755 olsrd $(INSTALL_PREFIX)/usr/sbin
 
 install:       install_bin
                @echo olsrd uses the configfile $(INSTALL_PREFIX)/etc/olsr.conf
@@ -223,22 +274,61 @@ install:  install_bin
                @echo -------------------------------------------
                @echo Edit $(INSTALL_PREFIX)/etc/olsrd.conf before running olsrd!!
                @echo -------------------------------------------
+               @echo Installing manpages olsrd\(8\) and olsrd.conf\(5\)
                mkdir -p $(INSTALL_PREFIX)/usr/share/man/man8/
                cp files/olsrd.8.gz $(INSTALL_PREFIX)/usr/share/man/man8/olsrd.8.gz
+               mkdir -p $(INSTALL_PREFIX)/usr/share/man/man5/
+               cp files/olsrd.conf.5.gz $(INSTALL_PREFIX)/usr/share/man/man5/olsrd.conf.5.gz
+
+#
+# PLUGINS
+#
 
 libs: 
                for i in lib/*; do \
                        $(MAKE) -C $$i; \
                done; 
 
-libs_clean
+clean_libs
                for i in lib/*; do \
                        $(MAKE) -C $$i clean; \
                done; 
 
-libs_install:
+install_libs:
                for i in lib/*; do \
                        $(MAKE) -C $$i LIBDIR=$(INSTALL_PREFIX)/usr/lib install; \
                done;   
 
+httpinfo:
+               $(MAKE) -C lib/httpinfo clean
+               $(MAKE) -C lib/httpinfo 
+               $(MAKE) -C lib/httpinfo install 
+
+dot_draw:
+               $(MAKE) -C lib/dot_draw clean
+               $(MAKE) -C lib/dot_draw install
+
+nameservice:
+               $(MAKE) -C lib/nameservice clean
+               $(MAKE) -C lib/nameservice install
+
+dyn_gw:
+               $(MAKE) -C lib/dyn_gw clean
+               $(MAKE) -C lib/dyn_gw
+               $(MAKE) -C lib/dyn_gw install
+
+powerinfo:
+               $(MAKE) -C lib/powerinfo clean
+               $(MAKE) -C lib/powerinfo 
+               $(MAKE) -C lib/powerinfo install
+
+secure:
+               $(MAKE) -C lib/secure clean
+               $(MAKE) -C lib/secure
+               $(MAKE) -C lib/secure install
+
+
+tags:
+               $(TAGCMD) -o $(TAGFILE) $(SRCS) $(HDRS) $(wildcard src/cfgparser/*.c) $(wildcard src/cfgparser/*.h)
+
 sinclude       $(DEPFILE)