summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Moskyto Matejka <mq@ucw.cz>2016-04-12 11:14:54 +0200
committerJan Moskyto Matejka <mq@ucw.cz>2016-05-10 14:07:34 +0200
commit7152e5efbb0fade868d5f2d2c7bc10ed52b3d19d (patch)
treeebb3ff35e34cdf37c0757e0aa6a6e8de30a71278
parent4bdf1881dc6230b742d7efcaad8eeac4ed25f445 (diff)
Build system reworked to one global Makefile with includes and no nesting
Also removed the lib-dir merging with sysdep. Updated #include's accordingly. Fixed make doc on recent Debian together with moving generated doc into objdir. Moved Makefile.in into root dir Retired all.o and birdlib.a Linking the final binaries directly from all the .o files.
-rw-r--r--Doc2
-rw-r--r--Makefile.in156
-rw-r--r--client/Makefile14
-rw-r--r--conf/Makefile34
-rw-r--r--conf/conf.c2
-rw-r--r--conf/conf.h2
-rw-r--r--conf/confbase.Y2
-rw-r--r--configure.in32
-rw-r--r--doc/LinuxDocTools.pm2
-rw-r--r--doc/Makefile68
-rwxr-xr-xdoc/sgml2html8
-rwxr-xr-xdoc/sgml2latex8
-rwxr-xr-xdoc/sgml2txt8
-rw-r--r--filter/Makefile9
-rw-r--r--lib/Doc2
-rw-r--r--lib/Makefile7
-rw-r--r--lib/Modules36
-rw-r--r--lib/birdlib.h4
-rw-r--r--lib/ip.h2
-rw-r--r--lib/unaligned.h2
-rw-r--r--nest/Makefile10
-rw-r--r--nest/password.h2
-rw-r--r--nest/protocol.h2
-rw-r--r--nest/route.h2
-rw-r--r--proto/bfd/Makefile9
-rw-r--r--proto/bfd/io.h2
-rw-r--r--proto/bgp/Makefile9
-rw-r--r--proto/ospf/Makefile9
-rw-r--r--proto/ospf/ospf.h2
-rw-r--r--proto/pipe/Makefile10
-rw-r--r--proto/radv/Makefile9
-rw-r--r--proto/radv/radv.h2
-rw-r--r--proto/rip/Makefile9
-rw-r--r--proto/rip/rip.h2
-rw-r--r--proto/static/Makefile10
-rw-r--r--sysdep/bsd/Makefile5
-rw-r--r--sysdep/bsd/Modules4
-rw-r--r--sysdep/bsd/krt-sock.c6
-rw-r--r--sysdep/cf/bsd.h3
-rw-r--r--sysdep/cf/linux.h5
-rw-r--r--sysdep/linux/Makefile4
-rw-r--r--sysdep/linux/Modules5
-rw-r--r--sysdep/linux/netlink.c6
-rw-r--r--sysdep/unix/Makefile5
-rw-r--r--sysdep/unix/Modules12
-rw-r--r--sysdep/unix/config.Y2
-rw-r--r--sysdep/unix/io.c6
-rw-r--r--sysdep/unix/krt.Y2
-rw-r--r--sysdep/unix/krt.c2
-rw-r--r--sysdep/unix/krt.h5
-rw-r--r--sysdep/unix/log.c2
-rw-r--r--sysdep/unix/main.c6
-rw-r--r--sysdep/unix/unix.h6
-rw-r--r--tools/Makefile-top.in20
-rw-r--r--tools/Makefile.in97
-rw-r--r--tools/Rules.in91
-rwxr-xr-xtools/mergedirs63
-rwxr-xr-xtools/progdoc33
58 files changed, 371 insertions, 508 deletions
diff --git a/Doc b/Doc
index f5f15087..77061390 100644
--- a/Doc
+++ b/Doc
@@ -1,3 +1,4 @@
+D doc/prog-head.sgml
C doc
C nest
C conf
@@ -5,3 +6,4 @@ C filter
C proto
C sysdep
C lib
+D doc/prog-foot.sgml
diff --git a/Makefile.in b/Makefile.in
new file mode 100644
index 00000000..c2f8ad4e
--- /dev/null
+++ b/Makefile.in
@@ -0,0 +1,156 @@
+# Makefile for the BIRD Internet Routing Daemon
+# (c) 1999--2000 Martin Mares <mj@ucw.cz>
+# (c) 2016 Jan Moskyto Matejka <mq@ucw.cz>
+
+# Disable build-in rules
+MAKEFLAGS += -r
+
+# Variable definitions
+CPPFLAGS=-I$(objdir) -I$(srcdir) @CPPFLAGS@
+CFLAGS=$(CPPFLAGS) @CFLAGS@
+LDFLAGS=@LDFLAGS@
+LIBS=@LIBS@
+CLIENT_LIBS=@CLIENT_LIBS@
+CC=@CC@
+M4=@M4@
+BISON=@BISON@
+FLEX=@FLEX@
+RANLIB=@RANLIB@
+INSTALL=@INSTALL@
+INSTALL_PROGRAM=@INSTALL_PROGRAM@
+INSTALL_DATA=@INSTALL_DATA@
+
+client=$(addprefix $(exedir)/,@CLIENT@)
+daemon=$(exedir)/bird
+protocols = @protocols@
+
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+bindir=@bindir@
+sbindir=@sbindir@
+sysconfdir=@sysconfdir@
+localstatedir=@localstatedir@
+docdir=@prefix@/doc
+
+srcdir := @srcdir@
+objdir := @objdir@
+exedir := @exedir@
+
+ifeq ($(objdir),.)
+ objdir := $(realpath .)
+endif
+
+ifeq ($(VERBOSE),)
+ Q:=@
+else
+ Q:=
+endif
+
+# Meta rules
+cleangoals := clean distclean
+docgoals := docs userdocs progdocs
+.PHONY: all daemon cli $(cleangoals) $(docgoals) tags
+all: daemon cli
+
+daemon: $(daemon)
+cli: $(client)
+
+# Include directories
+dirs := client conf doc filter lib nest $(addprefix proto/,$(protocols)) @sysdep_dirs@
+
+conf-y-targets := $(addprefix $(objdir)/conf/,cf-parse.y keywords.h commands.h)
+cf-local = $(conf-y-targets): $(s)config.Y
+
+src-o-files = $(patsubst %.c,$(o)%.o,$(src))
+
+all-daemon = $(exedir)/bird: $(obj)
+all-client = $(exedir)/birdc $(exedir)/birdcl: $(obj)
+
+s = $(dir $(lastword $(MAKEFILE_LIST)))
+ifeq ($(srcdir),.)
+ o = $(objdir)/$(s)
+else
+ o = $(patsubst $(srcdir)%,$(objdir)%,$(s))
+endif
+
+define clean_in =
+clean::
+ rm -f $(addprefix $(o),$(1))
+endef
+
+clean = $(eval $(call clean_in,$(1)))
+
+include $(addsuffix /Makefile,$(addprefix $(srcdir)/,$(dirs)))
+
+# Generic rules
+
+$(objdir)/%.o: $(srcdir)/%.c $(objdir)/.dir-stamp $(objdir)/sysdep/paths.h
+ $(Q)echo CC -o $@ -c $<
+ $(Q)$(CC) $(CFLAGS) -MMD -MP -o $@ -c $<
+
+$(objdir)/%.o: $(objdir)/%.c $(objdir)/.dir-stamp $(objdir)/sysdep/paths.h
+ $(Q)echo CC -o $@ -c $<
+ $(Q)$(CC) $(CFLAGS) -MMD -MP -o $@ -c $<
+
+$(objdir)/.dir-stamp:
+ $(Q)echo MKDIR -p $(addprefix $(objdir)/,$(dirs) doc)
+ $(Q)mkdir -p $(addprefix $(objdir)/,$(dirs) doc)
+ $(Q)touch $@
+
+$(client) $(daemon):
+ $(Q)echo LD $(LDFLAGS) -o $@ $^ $(LIBS)
+ $(Q)$(CC) $(LDFLAGS) -o $@ $^ $(LIBS)
+
+$(objdir)/sysdep/paths.h: Makefile
+ echo >$@ "/* Generated by Makefile, don't edit manually! */"
+ echo >>$@ "#define PATH_CONFIG_FILE \"@CONFIG_FILE@\""
+ echo >>$@ "#define PATH_CONTROL_SOCKET \"@CONTROL_SOCKET@\""
+ if test -n "@iproutedir@" ; then echo >>$@ "#define PATH_IPROUTE_DIR \"@iproutedir@\"" ; fi
+
+# Finally include the computed dependencies
+
+ifneq ($(filter-out $(cleangoals),$(MAKECMDGOALS)),)
+-include $(shell find $(objdir) -name "*.d")
+endif
+
+ifeq ($(MAKECMDGOALS),)
+-include $(shell find $(objdir) -name "*.d")
+endif
+
+tags:
+ cd $(srcdir) ; etags -lc `find $(dirs) -name *.[chY]`
+
+# Install
+
+install: all
+ $(INSTALL) -d $(DESTDIR)/$(sbindir) $(DESTDIR)/$(sysconfdir) $(DESTDIR)/@runtimedir@
+ $(INSTALL_PROGRAM) $(exedir)/bird $(DESTDIR)/$(sbindir)/bird
+ $(INSTALL_PROGRAM) $(exedir)/birdcl $(DESTDIR)/$(sbindir)/birdcl
+ if test -n "@CLIENT@" ; then \
+ $(INSTALL_PROGRAM) $(exedir)/birdc $(DESTDIR)/$(sbindir)/birdc ; \
+ fi
+ if ! test -f $(DESTDIR)/@CONFIG_FILE@ ; then \
+ $(INSTALL_DATA) $(srcdir)/doc/bird.conf.example $(DESTDIR)/@CONFIG_FILE@ ; \
+ else \
+ echo "Not overwriting old bird.conf" ; \
+ fi
+
+install-docs:
+ $(INSTALL) -d $(DESTDIR)/$(docdir)
+ $(INSTALL_DATA) $(objdir)/doc/{bird,prog}{,-*}.html $(DESTDIR)/$(docdir)/
+
+# Cleanup
+clean::
+ rm -f $(objdir)/sysdep/paths.h
+ rm -f $(addprefix $(exedir)/,bird birdc birdcl)
+ find $(objdir) -name "*.[od]" -exec rm -f '{}' '+'
+
+ifeq ($(objdir),obj)
+distclean: clean
+ rm -rf $(objdir)
+ rm -f config.log config.status configure Makefile
+else
+distclean: clean
+ rm -rf * .dir-stamp
+ rm -f config.log config.status configure Makefile
+endif
diff --git a/client/Makefile b/client/Makefile
index a1578766..9bdcb815 100644
--- a/client/Makefile
+++ b/client/Makefile
@@ -1,11 +1,11 @@
-source=commands.c util.c client.c
-root-rel=../
-dir-name=client
+src := commands.c util.c client.c
+obj := $(src-o-files)
-clients := $(client) birdcl
+$(all-client)
-source-dep := $(source) $(addsuffix .c,$(clients))
+$(o)commands.c.dep: $(objdir)/conf/commands.h
-subdir: $(addsuffix .o,$(clients))
+$(exedir)/birdc: $(o)birdc.o
+$(exedir)/birdc: LIBS += $(CLIENT_LIBS)
-include ../Rules
+$(exedir)/birdcl: $(o)birdcl.o
diff --git a/conf/Makefile b/conf/Makefile
index 5d729a42..c4121805 100644
--- a/conf/Makefile
+++ b/conf/Makefile
@@ -1,31 +1,29 @@
-source=cf-parse.tab.c cf-lex.c conf.c
-root-rel=../
+src := cf-parse.tab.c cf-lex.c conf.c
+obj := $(src-o-files)
-include ../Rules
-
-conf-src=$(srcdir)/conf
-conf-fragments=$(conf-src)/confbase.Y @CONFS@ $(addsuffix /config.Y,$(static-dir-paths))
+$(all-daemon)
ifdef DEBUG
BISON_DEBUG=-t
#FLEX_DEBUG=-d
endif
-cf-parse.tab.h: cf-parse.tab.c
+$(o)cf-parse.tab.h: $(o)cf-parse.tab.c
-cf-parse.tab.c: cf-parse.y
- $(BISON) -bcf-parse -dv -pcf_ $(BISON_DEBUG) cf-parse.y
+$(o)cf-parse.tab.c: $(o)cf-parse.y
+ echo $< $@ $(o)
+ $(BISON) -b$(@:.tab.c=) -dv -pcf_ $(BISON_DEBUG) $<
-cf-parse.y: $(conf-fragments) $(conf-src)/gen_parser.m4
- $(M4) -P $(conf-src)/gen_parser.m4 $(conf-fragments) >cf-parse.y
+$(conf-y-targets): $(s)confbase.Y
+ $(M4) -P $| $^ >$@
-keywords.h: $(conf-fragments) $(conf-src)/gen_keywords.m4
- $(M4) -P $(conf-src)/gen_keywords.m4 $(conf-fragments) >keywords.h
+$(o)cf-parse.y: | $(s)gen_parser.m4
+$(o)keywords.h: | $(s)gen_keywords.m4
+$(o)commands.h: | $(s)gen_commands.m4 $(srcdir)/client/cmds.m4
-commands.h: $(conf-fragments) $(conf-src)/gen_commands.m4 $(srcdir)/client/cmds.m4
- $(M4) -P $(conf-src)/gen_commands.m4 $(srcdir)/client/cmds.m4 $(conf-fragments) | sort >commands.h
+$(o)cf-lex.c: $(s)cf-lex.l $(o)cf-parse.tab.h $(o)keywords.h $(o)commands.h
+ $(FLEX) $(FLEX_DEBUG) -s -B -8 -o$@ -Pcf_ $<
-cf-lex.c: cf-lex.l
- $(FLEX) $(FLEX_DEBUG) -s -B -8 -ocf-lex.c -Pcf_ cf-lex.l
+$(addprefix $(o),cf-parse.tab.h cf-parse.tab.c cf-parse.y keywords.h commands.h cf-lex.c): $(objdir)/.dir-stamp
-depend: keywords.h commands.h cf-parse.tab.c cf-lex.c
+$(call clean,cf-parse.tab.h cf-parse.tab.c cf-parse.y keywords.h commands.h cf-lex.c cf-parse.output)
diff --git a/conf/conf.c b/conf/conf.c
index 3fd10ad8..8d4d28e3 100644
--- a/conf/conf.c
+++ b/conf/conf.c
@@ -52,7 +52,7 @@
#include "lib/resource.h"
#include "lib/string.h"
#include "lib/event.h"
-#include "lib/timer.h"
+#include "sysdep/unix/timer.h"
#include "conf/conf.h"
#include "filter/filter.h"
diff --git a/conf/conf.h b/conf/conf.h
index 8e490c7b..03fecd32 100644
--- a/conf/conf.h
+++ b/conf/conf.h
@@ -10,7 +10,7 @@
#define _BIRD_CONF_H_
#include "lib/resource.h"
-#include "lib/timer.h"
+#include "sysdep/unix/timer.h"
/* Configuration structure */
diff --git a/conf/confbase.Y b/conf/confbase.Y
index 22aee770..d5fd2133 100644
--- a/conf/confbase.Y
+++ b/conf/confbase.Y
@@ -14,7 +14,7 @@ CF_HDR
#include "conf/conf.h"
#include "lib/resource.h"
#include "lib/socket.h"
-#include "lib/timer.h"
+#include "sysdep/unix/timer.h"
#include "lib/string.h"
#include "nest/protocol.h"
#include "nest/iface.h"
diff --git a/configure.in b/configure.in
index 1c2c2fe1..f1697c12 100644
--- a/configure.in
+++ b/configure.in
@@ -23,24 +23,16 @@ AC_ARG_VAR([M4], [location of the M4 program])
if test "$srcdir" = . ; then
# Building in current directory => create obj directory holding all objects
objdir=obj
- mkdir -p obj
- srcdir_rel=..
- makefiles="Makefile:tools/Makefile-top.in obj/Makefile:tools/Makefile.in obj/Rules:tools/Rules.in"
- exedir=..
else
# Building in separate directory
objdir=.
- srcdir_rel=$srcdir
- makefiles="Makefile:tools/Makefile.in Rules:tools/Rules.in"
- exedir=.
fi
-case $srcdir_rel in
- /*) srcdir_rel_mf=$srcdir_rel ;;
- *) srcdir_rel_mf="\$(root-rel)$srcdir_rel" ;;
-esac
+
+exedir=.
+
AC_SUBST(objdir)
AC_SUBST(exedir)
-AC_SUBST(srcdir_rel_mf)
+AC_SUBST(srcdir)
AC_SUBST(runtimedir)
@@ -162,7 +154,7 @@ sysname=`echo $sysdesc | sed 's/\.h$//'`
AC_DEFINE_UNQUOTED(SYSCONF_INCLUDE, "$sysdesc")
AC_MSG_CHECKING([system-dependent directories])
-sysdep_dirs="`sed <$sysdesc '/^Link: /!d;s/^Link: \(.*\)$/\1/' | tr '\012' ' '` lib"
+sysdep_dirs="`sed <$sysdesc '/^Link: /!d;s/^Link: \(.*\)$/\1/' | tr '\012' ' '`"
AC_MSG_RESULT($sysdep_dirs)
AC_SUBST(sysdep_dirs)
@@ -234,10 +226,10 @@ if test "$enable_debug" = yes ; then
fi
fi
-CLIENT=
+CLIENT=birdcl
CLIENT_LIBS=
if test "$enable_client" = yes ; then
- CLIENT=birdc
+ CLIENT="$CLIENT birdc"
AC_CHECK_LIB(history, add_history, CLIENT_LIBS="-lhistory")
AC_CHECK_LIB(ncurses, tgetent, USE_TERMCAP_LIB=-lncurses,
AC_CHECK_LIB(curses, tgetent, USE_TERMCAP_LIB=-lcurses,
@@ -255,17 +247,9 @@ AC_SUBST(CLIENT_LIBS)
mkdir -p $objdir/sysdep
AC_CONFIG_HEADERS([$objdir/sysdep/autoconf.h:sysdep/autoconf.h.in])
-AC_CONFIG_COMMANDS([merge],[[export CPP="$CPP"
-$srcdir/tools/mergedirs $srcdir $srcdir_rel $objdir $sysdep_dirs]],
- [[srcdir=$srcdir]
- [srcdir_rel=$srcdir_rel]
- [objdir=$objdir]
- [sysdep_dirs="$sysdep_dirs"]])
-AC_CONFIG_FILES($makefiles)
+AC_CONFIG_FILES(Makefile:Makefile.in)
AC_OUTPUT
-rm -f $objdir/sysdep/paths.h
-
cat >&AC_FD_MSG <<EOF
BIRD was configured with the following options:
diff --git a/doc/LinuxDocTools.pm b/doc/LinuxDocTools.pm
index 51d4a04c..39bb401d 100644
--- a/doc/LinuxDocTools.pm
+++ b/doc/LinuxDocTools.pm
@@ -372,6 +372,8 @@ sub process_file
}
}
#
+
+ local $ENV{PATH} = "$ENV{PATH}:/usr/lib/linuxdoc-tools";
my($precmd) = "|sgmlpre output=$global->{format} $global->{define}";
#
diff --git a/doc/Makefile b/doc/Makefile
index f88c3205..3ff73389 100644
--- a/doc/Makefile
+++ b/doc/Makefile
@@ -1,46 +1,48 @@
-root-rel=../
-dir-name=doc
-
-ifneq ($(wildcard ../Rules),)
-include ../Rules
-else
-srcdir=$(shell cd $(root-rel) ; pwd)
-srcdir_abs=$(srcdir)
-endif
-
# Force rebuilds
-.PHONY: prog.sgml bird.sgml
+.PHONY: progspell docs progdocs userdocs
+
+doc-srcdir := $(shell cd $(s) && pwd)
+sgml2 := $(doc-srcdir)/sgml2
docs: progdocs userdocs
-progdocs: prog.html prog.ps
-userdocs: bird.html bird.ps
-prog.sgml:
- $(srcdir)/tools/progdoc $(srcdir_abs)
+doc-fmt = $(1): $(o)prog.$(1) $(o)bird.$(1)
+$(call doc-fmt,html)
+$(call doc-fmt,dvi)
+$(call doc-fmt,ps)
+$(call doc-fmt,pdf)
+
+progdocs: $(o)prog.html $(o)prog.pdf
+userdocs: $(o)bird.html $(o)bird.pdf
+progspell: $(o)prog.spell
+
+$(o)prog.sgml: $(srcdir)/tools/progdoc $(objdir)/.dir-stamp
+ $(srcdir)/tools/progdoc $(srcdir) $@
+
+$(o)%.sgml: $(s)%.sgml $(objdir)/.dir-stamp
+ cp $< $@
-%.html: %.sgml
- ./sgml2html $<
+$(o)%.html: $(o)%.sgml
+ cd $(dir $@) && $(sgml2)html $(notdir $<)
-%.dvi: %.tex
- latex $<
- latex $<
+$(o)%.dvi: $(o)%.tex
+ cd $(dir $@) && TEXINPUTS=$(TEXINPUTS):$(doc-srcdir)/tex latex $(notdir $<)
+ cd $(dir $@) && TEXINPUTS=$(TEXINPUTS):$(doc-srcdir)/tex latex $(notdir $<)
-%.ps: %.dvi
+$(o)%.ps: $(o)%.dvi
dvips -D600 -ta4 -o $@ $<
-%.tex: %.sgml
- ./sgml2latex --output=tex $<
+$(o)%.pdf: $(o)%.ps
+ ps2pdf $< $@
-%.txt: %.sgml
- ./sgml2txt $<
+$(o)%.tex: $(o)%.sgml
+ cd $(dir $@) && $(sgml2)latex --output=tex $(notdir $<)
-progspell: prog.sgml
- sed -f prog-spell.sed <prog.sgml >prog.spell
- ispell prog.spell
+$(o)%.txt: $(o)%.sgml
+ cd $(dir $@) && $(sgml2)txt $(notdir $<)
-clean:
- rm -f *.tex *.dvi *.log *.txt *.aux *.toc *.spell
- rm -f prog.sgml
+$(o)prog.spell: $(o)prog.sgml $(s)prog-spell.sed
+ sed -f $(lastword $^) <$< >$@
+ ispell $@
-distclean: clean
- rm -f *.html *.ps
+$(call clean,prog.spell $(addprefix *.,html dvi ps pdf sgml tex txt aux log toc))
diff --git a/doc/sgml2html b/doc/sgml2html
index 774a03d5..a5bbee9e 100755
--- a/doc/sgml2html
+++ b/doc/sgml2html
@@ -17,8 +17,10 @@ use strict;
use vars qw($prefix $DataDir $BinDir $progs);
+use FindBin;
+
$prefix = "/usr";
-$DataDir = "sbase";
+$DataDir = "$FindBin::Bin/sbase";
$BinDir = "/usr/bin";
use lib "/usr/share/linuxdoc-tools";
@@ -32,9 +34,9 @@ $progs = {
"GROFFMACRO" => "-ms",
"AWK" => "/usr/share/linuxdoc-tools/awkwhich"
};
-$ENV{"SGML_CATALOG_FILES"} = "sbase/dtd/catalog";
+$ENV{"SGML_CATALOG_FILES"} = "$DataDir/dtd/catalog";
-require "./LinuxDocTools.pm";
+require "$FindBin::Bin/LinuxDocTools.pm";
&LinuxDocTools::init;
my @FileList = LinuxDocTools::process_options ("html", @ARGV);
diff --git a/doc/sgml2latex b/doc/sgml2latex
index 27aae4c8..02b60d94 100755
--- a/doc/sgml2latex
+++ b/doc/sgml2latex
@@ -17,8 +17,10 @@ use strict;
use vars qw($prefix $DataDir $BinDir $progs);
+use FindBin;
+
$prefix = "/usr";
-$DataDir = "sbase";
+$DataDir = "$FindBin::Bin/sbase";
$BinDir = "/usr/bin";
use lib "/usr/share/linuxdoc-tools";
@@ -32,9 +34,9 @@ $progs = {
"GROFFMACRO" => "-ms",
"AWK" => "/usr/share/linuxdoc-tools/awkwhich"
};
-$ENV{"SGML_CATALOG_FILES"} = "sbase/dtd/catalog";
+$ENV{"SGML_CATALOG_FILES"} = "$DataDir/dtd/catalog";
-require "./LinuxDocTools.pm";
+require "$FindBin::Bin/LinuxDocTools.pm";
&LinuxDocTools::init;
my @FileList = LinuxDocTools::process_options ("latex", @ARGV);
diff --git a/doc/sgml2txt b/doc/sgml2txt
index 90dc4855..dfc017de 100755
--- a/doc/sgml2txt
+++ b/doc/sgml2txt
@@ -17,8 +17,10 @@ use strict;
use vars qw($prefix $DataDir $BinDir $progs);
+use FindBin;
+
$prefix = "/usr";
-$DataDir = "sbase";
+$DataDir = "$FindBin::Bin/sbase";
$BinDir = "/usr/bin";
use lib "/usr/share/linuxdoc-tools";
@@ -32,9 +34,9 @@ $progs = {
"GROFFMACRO" => "-ms",
"AWK" => "/usr/share/linuxdoc-tools/awkwhich"
};
-$ENV{"SGML_CATALOG_FILES"} = "sbase/dtd/catalog";
+$ENV{"SGML_CATALOG_FILES"} = "$DataDir/dtd/catalog";
-require "./LinuxDocTools.pm";
+require "$FindBin::Bin/LinuxDocTools.pm";
&LinuxDocTools::init;
my @FileList = LinuxDocTools::process_options ("txt", @ARGV);
diff --git a/filter/Makefile b/filter/Makefile
index 2de598da..f27befdf 100644
--- a/filter/Makefile
+++ b/filter/Makefile
@@ -1,5 +1,4 @@
-source=f-util.c filter.c tree.c trie.c
-root-rel=../
-dir-name=filter
-
-include ../Rules
+src := filter.c f-util.c tree.c trie.c
+obj := $(src-o-files)
+$(all-daemon)
+$(cf-local)
diff --git a/lib/Doc b/lib/Doc
index 8f513821..8af1c669 100644
--- a/lib/Doc
+++ b/lib/Doc
@@ -1,5 +1,5 @@
H Library functions
-S ip.c ipv4.c ipv6.c
+S ip.c
S lists.c
S checksum.c bitops.c patmatch.c printf.c xmalloc.c tbf.c
D resource.sgml
diff --git a/lib/Makefile b/lib/Makefile
new file mode 100644
index 00000000..a9aae66f
--- /dev/null
+++ b/lib/Makefile
@@ -0,0 +1,7 @@
+src := bitops.c checksum.c ip.c lists.c md5.c net.c patmatch.c printf.c sha1.c sha256.c sha512.c slists.c xmalloc.c
+obj := $(src-o-files)
+$(all-client)
+
+src := bitops.c checksum.c event.c idm.c ip.c lists.c md5.c mempool.c net.c patmatch.c printf.c resource.c sha1.c sha256.c sha512.c slab.c slists.c tbf.c xmalloc.c
+obj := $(src-o-files)
+$(all-daemon)
diff --git a/lib/Modules b/lib/Modules
deleted file mode 100644
index 6b9b4b0f..00000000
--- a/lib/Modules
+++ /dev/null
@@ -1,36 +0,0 @@
-sha256.c
-sha256.h
-sha512.c
-sha512.h
-sha1.c
-sha1.h
-birdlib.h
-bitops.c
-bitops.h
-idm.c
-idm.h
-ip.c
-ip.h
-lists.c
-lists.h
-md5.c
-md5.h
-mempool.c
-resource.c
-resource.h
-slab.c
-socket.h
-tbf.c
-unaligned.h
-xmalloc.c
-printf.c
-string.h
-patmatch.c
-slists.c
-slists.h
-event.c
-event.h
-checksum.c
-checksum.h
-alloca.h
-net.c
diff --git a/lib/birdlib.h b/lib/birdlib.h
index ece50dc2..78df81d6 100644
--- a/lib/birdlib.h
+++ b/lib/birdlib.h
@@ -9,8 +9,8 @@
#ifndef _BIRD_BIRDLIB_H_
#define _BIRD_BIRDLIB_H_
-#include "timer.h"
-#include "alloca.h"
+#include "sysdep/unix/timer.h"
+#include "lib/alloca.h"
/* Ugly structure offset handling macros */
diff --git a/lib/ip.h b/lib/ip.h
index 3191e307..ffc1b232 100644
--- a/lib/ip.h
+++ b/lib/ip.h
@@ -9,7 +9,7 @@
#ifndef _BIRD_IP_H_
#define _BIRD_IP_H_
-#include "lib/endian.h"
+#include "sysdep/unix/endian.h"
#include "lib/string.h"
#include "lib/bitops.h"
#include "lib/unaligned.h"
diff --git a/lib/unaligned.h b/lib/unaligned.h
index 130b2479..ad5811ab 100644
--- a/lib/unaligned.h
+++ b/lib/unaligned.h
@@ -17,7 +17,7 @@
* if possible.
*/
-#include "lib/endian.h"
+#include "sysdep/unix/endian.h"
#include "lib/string.h"
static inline u16
diff --git a/nest/Makefile b/nest/Makefile
index 478a82b7..6f0f9a08 100644
--- a/nest/Makefile
+++ b/nest/Makefile
@@ -1,6 +1,4 @@
-source=rt-table.c rt-fib.c rt-attr.c proto.c iface.c rt-dev.c password.c cli.c locks.c cmds.c neighbor.c \
- a-path.c a-set.c
-root-rel=../
-dir-name=nest
-
-include ../Rules
+src := a-path.c a-set.c cli.c cmds.c iface.c locks.c neighbor.c password.c proto.c rt-attr.c rt-dev.c rt-fib.c rt-table.c
+obj := $(src-o-files)
+$(all-daemon)
+$(cf-local)
diff --git a/nest/password.h b/nest/password.h
index 1d9de53c..cbf80b99 100644
--- a/nest/password.h
+++ b/nest/password.h
@@ -9,7 +9,7 @@
#ifndef PASSWORD_H
#define PASSWORD_H
-#include "lib/timer.h"
+#include "sysdep/unix/timer.h"
struct password_item {
node n;
diff --git a/nest/protocol.h b/nest/protocol.h
index 19f5d070..61919a54 100644
--- a/nest/protocol.h
+++ b/nest/protocol.h
@@ -12,7 +12,7 @@
#include "lib/lists.h"
#include "lib/resource.h"
#include "lib/event.h"
-#include "lib/timer.h"
+#include "sysdep/unix/timer.h"
#include "nest/route.h"
#include "conf/conf.h"
diff --git a/nest/route.h b/nest/route.h
index 22fca331..a893841f 100644
--- a/nest/route.h
+++ b/nest/route.h
@@ -11,7 +11,7 @@
#include "lib/lists.h"
#include "lib/resource.h"
-#include "lib/timer.h"
+#include "sysdep/unix/timer.h"
//#include "nest/protocol.h"
struct ea_list;
diff --git a/proto/bfd/Makefile b/proto/bfd/Makefile
index c28cedec..489216d8 100644
--- a/proto/bfd/Makefile
+++ b/proto/bfd/Makefile
@@ -1,5 +1,4 @@
-source=bfd.c packets.c io.c
-root-rel=../../
-dir-name=proto/bfd
-
-include ../../Rules
+src := bfd.c io.c packets.c
+obj := $(src-o-files)
+$(all-daemon)
+$(cf-local)
diff --git a/proto/bfd/io.h b/proto/bfd/io.h
index 641ee054..45836f84 100644
--- a/proto/bfd/io.h
+++ b/proto/bfd/io.h
@@ -12,7 +12,7 @@
#include "lib/resource.h"
#include "lib/event.h"
#include "lib/socket.h"
-// #include "lib/timer.h"
+// #include "sysdep/unix/timer.h"
typedef struct timer2
diff --git a/proto/bgp/Makefile b/proto/bgp/Makefile
index a634cf0d..f4958867 100644
--- a/proto/bgp/Makefile
+++ b/proto/bgp/Makefile
@@ -1,5 +1,4 @@
-source=bgp.c attrs.c packets.c
-root-rel=../../
-dir-name=proto/bgp
-
-include ../../Rules
+src := attrs.c bgp.c packets.c
+obj := $(src-o-files)
+$(all-daemon)
+$(cf-local)
diff --git a/proto/ospf/Makefile b/proto/ospf/Makefile
index f90222cf..fe52ed30 100644
--- a/proto/ospf/Makefile
+++ b/proto/ospf/Makefile
@@ -1,5 +1,4 @@
-source=ospf.c topology.c packet.c hello.c neighbor.c iface.c dbdes.c lsreq.c lsupd.c lsack.c lsalib.c rt.c
-root-rel=../../
-dir-name=proto/ospf
-
-include ../../Rules
+src := dbdes.c hello.c iface.c lsack.c lsalib.c lsreq.c lsupd.c neighbor.c ospf.c packet.c rt.c topology.c
+obj := $(src-o-files)
+$(all-daemon)
+$(cf-local)
diff --git a/proto/ospf/ospf.h b/proto/ospf/ospf.h
index 3d70df7b..4f445f07 100644
--- a/proto/ospf/ospf.h
+++ b/proto/ospf/ospf.h
@@ -18,7 +18,7 @@
#include "lib/lists.h"
#include "lib/slists.h"
#include "lib/socket.h"
-#include "lib/timer.h"
+#include "sysdep/unix/timer.h"
#include "lib/resource.h"
#include "nest/protocol.h"
#include "nest/iface.h"
diff --git a/proto/pipe/Makefile b/proto/pipe/Makefile
index 77de5b88..c258a3e5 100644
--- a/proto/pipe/Makefile
+++ b/proto/pipe/Makefile
@@ -1,6 +1,4 @@
-source=pipe.c
-root-rel=../../
-dir-name=proto/pipe
-
-include ../../Rules
-
+src := pipe.c
+obj := $(src-o-files)
+$(all-daemon)
+$(cf-local)
diff --git a/proto/radv/Makefile b/proto/radv/Makefile
index efc4d4af..3584a5f3 100644
--- a/proto/radv/Makefile
+++ b/proto/radv/Makefile
@@ -1,5 +1,4 @@
-source=radv.c packets.c
-root-rel=../../
-dir-name=proto/radv
-
-include ../../Rules
+src := packets.c radv.c
+obj := $(src-o-files)
+$(all-daemon)
+$(cf-local)
diff --git a/proto/radv/radv.h b/proto/radv/radv.h
index f8aa421d..735aa218 100644
--- a/proto/radv/radv.h
+++ b/proto/radv/radv.h
@@ -13,7 +13,7 @@
#include "lib/ip.h"
#include "lib/lists.h"
#include "lib/socket.h"
-#include "lib/timer.h"
+#include "sysdep/unix/timer.h"
#include "lib/resource.h"
#include "nest/protocol.h"
#include "nest/iface.h"
diff --git a/proto/rip/Makefile b/proto/rip/Makefile
index d2d3c987..6e645cc2 100644
--- a/proto/rip/Makefile
+++ b/proto/rip/Makefile
@@ -1,5 +1,4 @@
-source=rip.c packets.c
-root-rel=../../
-dir-name=proto/rip
-
-include ../../Rules
+src := packets.c rip.c
+obj := $(src-o-files)
+$(all-daemon)
+$(cf-local)
diff --git a/proto/rip/rip.h b/proto/rip/rip.h
index d1c9933c..7ec7e24d 100644
--- a/proto/rip/rip.h
+++ b/proto/rip/rip.h
@@ -24,7 +24,7 @@
#include "lib/resource.h"
#include "lib/socket.h"
#include "lib/string.h"
-#include "lib/timer.h"
+#include "sysdep/unix/timer.h"
#define RIP_V1 1
diff --git a/proto/static/Makefile b/proto/static/Makefile
index 61fadbea..3ace39cf 100644
--- a/proto/static/Makefile
+++ b/proto/static/Makefile
@@ -1,6 +1,4 @@
-source=static.c
-root-rel=../../
-dir-name=proto/static
-
-include ../../Rules
-
+src := static.c
+obj := $(src-o-files)
+$(all-daemon)
+$(cf-local)
diff --git a/sysdep/bsd/Makefile b/sysdep/bsd/Makefile
new file mode 100644
index 00000000..ddc87239
--- /dev/null
+++ b/sysdep/bsd/Makefile
@@ -0,0 +1,5 @@
+src := krt-sock.c
+obj := $(src-o-files)
+$(all-daemon)
+$(conf-y-targets): $(s)krt-sock.Y
+
diff --git a/sysdep/bsd/Modules b/sysdep/bsd/Modules
deleted file mode 100644
index 96455db7..00000000
--- a/sysdep/bsd/Modules
+++ /dev/null
@@ -1,4 +0,0 @@
-krt-sock.c
-krt-sock.Y
-krt-sys.h
-sysio.h
diff --git a/sysdep/bsd/krt-sock.c b/sysdep/bsd/krt-sock.c
index 5f2f1309..c6456838 100644
--- a/sysdep/bsd/krt-sock.c
+++ b/sysdep/bsd/krt-sock.c
@@ -28,9 +28,9 @@
#include "nest/route.h"
#include "nest/protocol.h"
#include "nest/iface.h"
-#include "lib/timer.h"
-#include "lib/unix.h"
-#include "lib/krt.h"
+#include "sysdep/unix/timer.h"
+#include "sysdep/unix/unix.h"
+#include "sysdep/unix/krt.h"
#include "lib/string.h"
#include "lib/socket.h"
diff --git a/sysdep/cf/bsd.h b/sysdep/cf/bsd.h
index 51beb42b..22c54277 100644
--- a/sysdep/cf/bsd.h
+++ b/sysdep/cf/bsd.h
@@ -15,6 +15,9 @@
#define CONFIG_NO_IFACE_BIND
#define CONFIG_USE_HDRINCL
+#define CONFIG_INCLUDE_SYSIO_H "sysdep/bsd/sysio.h"
+#define CONFIG_INCLUDE_KRTSYS_H "sysdep/bsd/krt-sys.h"
+
/*
Link: sysdep/unix
Link: sysdep/bsd
diff --git a/sysdep/cf/linux.h b/sysdep/cf/linux.h
index 9e34f869..cec9499c 100644
--- a/sysdep/cf/linux.h
+++ b/sysdep/cf/linux.h
@@ -14,7 +14,12 @@
#define CONFIG_MC_PROPER_SRC
#define CONFIG_UNIX_DONTROUTE
+#define CONFIG_INCLUDE_SYSIO_H "sysdep/linux/sysio.h"
+#define CONFIG_INCLUDE_KRTSYS_H "sysdep/linux/krt-sys.h"
+
#define CONFIG_RESTRICTED_PRIVILEGES
+#define CONFIG_INCLUDE_SYSPRIV_H "sysdep/linux/syspriv.h"
+
/*
Link: sysdep/linux
diff --git a/sysdep/linux/Makefile b/sysdep/linux/Makefile
new file mode 100644
index 00000000..23cf1d9d
--- /dev/null
+++ b/sysdep/linux/Makefile
@@ -0,0 +1,4 @@
+src := netlink.c
+obj := $(src-o-files)
+$(all-daemon)
+$(conf-y-targets): $(s)netlink.Y
diff --git a/sysdep/linux/Modules b/sysdep/linux/Modules
deleted file mode 100644
index 940660b6..00000000
--- a/sysdep/linux/Modules
+++ /dev/null
@@ -1,5 +0,0 @@
-krt-sys.h
-netlink.c
-netlink.Y
-sysio.h
-syspriv.h
diff --git a/sysdep/linux/netlink.c b/sysdep/linux/netlink.c
index 6240c177..6cf40484 100644
--- a/sysdep/linux/netlink.c
+++ b/sysdep/linux/netlink.c
@@ -20,9 +20,9 @@
#include "nest/protocol.h"
#include "nest/iface.h"
#include "lib/alloca.h"
-#include "lib/timer.h"
-#include "lib/unix.h"
-#include "lib/krt.h"
+#include "sysdep/unix/timer.h"
+#include "sysdep/unix/unix.h"
+#include "sysdep/unix/krt.h"
#include "lib/socket.h"
#include "lib/string.h"
#include "lib/hash.h"
diff --git a/sysdep/unix/Makefile b/sysdep/unix/Makefile
new file mode 100644
index 00000000..c5d55431
--- /dev/null
+++ b/sysdep/unix/Makefile
@@ -0,0 +1,5 @@
+src := io.c krt.c log.c main.c random.c
+obj := $(src-o-files)
+$(all-daemon)
+$(cf-local)
+$(conf-y-targets): $(s)krt.Y
diff --git a/sysdep/unix/Modules b/sysdep/unix/Modules
deleted file mode 100644
index 2c6514df..00000000
--- a/sysdep/unix/Modules
+++ /dev/null
@@ -1,12 +0,0 @@
-log.c
-main.c
-timer.h
-io.c
-unix.h
-endian.h
-config.Y
-random.c
-
-krt.c
-krt.h
-krt.Y
diff --git a/sysdep/unix/config.Y b/sysdep/unix/config.Y
index f9a92900..ebadd454 100644
--- a/sysdep/unix/config.Y
+++ b/sysdep/unix/config.Y
@@ -8,7 +8,7 @@
CF_HDR
-#include "lib/unix.h"
+#include "sysdep/unix/unix.h"
#include <stdio.h>
CF_DECLS
diff --git a/sysdep/unix/io.c b/sysdep/unix/io.c
index cbfb47d5..afa51be7 100644
--- a/sysdep/unix/io.c
+++ b/sysdep/unix/io.c
@@ -31,14 +31,14 @@
#include "nest/bird.h"
#include "lib/lists.h"
#include "lib/resource.h"
-#include "lib/timer.h"
+#include "sysdep/unix/timer.h"
#include "lib/socket.h"
#include "lib/event.h"
#include "lib/string.h"
#include "nest/iface.h"
-#include "lib/unix.h"
-#include "lib/sysio.h"
+#include "sysdep/unix/unix.h"
+#include CONFIG_INCLUDE_SYSIO_H
/* Maximum number of calls of tx handler for one socket in one
* select iteration. Should be small enough to not monopolize CPU by
diff --git a/sysdep/unix/krt.Y b/sysdep/unix/krt.Y
index 1cd73502..91317d97 100644
--- a/sysdep/unix/krt.Y
+++ b/sysdep/unix/krt.Y
@@ -8,7 +8,7 @@
CF_HDR
-#include "lib/krt.h"
+#include "sysdep/unix/krt.h"
CF_DEFINES
diff --git a/sysdep/unix/krt.c b/sysdep/unix/krt.c
index 6b3b4eee..38f31235 100644
--- a/sysdep/unix/krt.c
+++ b/sysdep/unix/krt.c
@@ -56,7 +56,7 @@
#include "nest/route.h"
#include "nest/protocol.h"
#include "filter/filter.h"
-#include "lib/timer.h"
+#include "sysdep/unix/timer.h"
#include "conf/conf.h"
#include "lib/string.h"
diff --git a/sysdep/unix/krt.h b/sysdep/unix/krt.h
index e968ad57..cb404de3 100644
--- a/sysdep/unix/krt.h
+++ b/sysdep/unix/krt.h
@@ -15,7 +15,8 @@ struct krt_proto;
struct kif_config;
struct kif_proto;
-#include "lib/krt-sys.h"
+#include "sysdep/config.h"
+#include CONFIG_INCLUDE_KRTSYS_H
/* Flags stored in net->n.flags, rest are in nest/route.h */
@@ -111,7 +112,7 @@ struct kif_proto {
struct kif_state sys; /* Sysdep state */
};
-struct kif_proto *kif_proto;
+extern struct kif_proto *kif_proto;
#define KIF_CF ((struct kif_config *)p->p.cf)
diff --git a/sysdep/unix/log.c b/sysdep/unix/log.c
index 7cb26360..8daff034 100644
--- a/sysdep/unix/log.c
+++ b/sysdep/unix/log.c
@@ -26,7 +26,7 @@
#include "nest/mrtdump.h"
#include "lib/string.h"
#include "lib/lists.h"
-#include "lib/unix.h"
+#include "sysdep/unix/unix.h"
static FILE *dbgf;
static list *current_log_list;
diff --git a/sysdep/unix/main.c b/sysdep/unix/main.c
index 8796ab9c..14b3b2f6 100644
--- a/sysdep/unix/main.c
+++ b/sysdep/unix/main.c
@@ -69,7 +69,7 @@ async_dump(void)
*/
#ifdef CONFIG_RESTRICTED_PRIVILEGES
-#include "lib/syspriv.h"
+#include CONFIG_INCLUDE_SYSPRIV_H
#else
static inline void
@@ -567,6 +567,10 @@ sysdep_shutdown_done(void)
* Signals
*/
+volatile int async_config_flag;
+volatile int async_dump_flag;
+volatile int async_shutdown_flag;
+
static void
handle_sighup(int sig UNUSED)
{
diff --git a/sysdep/unix/unix.h b/sysdep/unix/unix.h
index 414b6ca4..80c99350 100644
--- a/sysdep/unix/unix.h
+++ b/sysdep/unix/unix.h
@@ -91,9 +91,9 @@ int sockaddr_read(sockaddr *sa, int af, ip_addr *a, struct iface **ifa, uint *po
#define SUN_LEN(ptr) ((size_t) (((struct sockaddr_un *) 0)->sun_path) + strlen ((ptr)->sun_path))
#endif
-volatile int async_config_flag;
-volatile int async_dump_flag;
-volatile int async_shutdown_flag;
+extern volatile int async_config_flag;
+extern volatile int async_dump_flag;
+extern volatile int async_shutdown_flag;
void io_init(void);
void io_loop(void);
diff --git a/tools/Makefile-top.in b/tools/Makefile-top.in
deleted file mode 100644
index cf59f7a1..00000000
--- a/tools/Makefile-top.in
+++ /dev/null
@@ -1,20 +0,0 @@
-# Makefile for in place build of BIRD
-# (c) 1999--2000 Martin Mares <mj@ucw.cz>
-
-objdir=@objdir@
-
-all depend tags install install-docs:
- $(MAKE) -C $(objdir) $@
-
-docs userdocs progdocs:
- $(MAKE) -C doc $@
-
-clean:
- $(MAKE) -C $(objdir) clean
- find . -name "*~" -or -name "*.[oa]" -or -name "\#*\#" -or -name TAGS -or -name core -or -name depend -or -name ".#*" | xargs rm -f
-
-distclean: clean
- $(MAKE) -C doc distclean
- rm -rf $(objdir) autom4te.cache
- rm -f config.* configure sysdep/autoconf.h sysdep/paths.h Makefile
-
diff --git a/tools/Makefile.in b/tools/Makefile.in
deleted file mode 100644
index 5de323ab..00000000
--- a/tools/Makefile.in
+++ /dev/null
@@ -1,97 +0,0 @@
-# Makefile for the BIRD Internet Routing Daemon
-# (c) 1999--2000 Martin Mares <mj@ucw.cz>
-
-include Rules
-
-.PHONY: all daemon birdc birdcl subdir depend clean distclean tags docs userdocs progdocs
-
-all: sysdep/paths.h .dep-stamp subdir daemon birdcl @CLIENT@
-
-daemon: $(exedir)/bird
-
-birdc: $(exedir)/birdc
-
-birdcl: $(exedir)/birdcl
-
-bird-dep := $(addsuffix /all.o, $(static-dirs)) conf/all.o lib/birdlib.a
-
-$(bird-dep): sysdep/paths.h .dep-stamp subdir
-
-birdc-dep := client/birdc.o client/all.o lib/birdlib.a
-
-$(birdc-dep): sysdep/paths.h .dep-stamp subdir
-
-birdcl-dep := client/birdcl.o client/all.o lib/birdlib.a
-
-$(birdcl-dep): sysdep/paths.h .dep-stamp subdir
-
-
-export client := @CLIENT@
-
-depend: sysdep/paths.h .dir-stamp
- set -e ; for a in $(dynamic-dirs) ; do $(MAKE) -C $$a $@ ; done
- set -e ; for a in $(static-dirs) $(client-dirs) ; do $(MAKE) -C $$a -f $(srcdir_abs)/$$a/Makefile $@ ; done
-
-subdir: sysdep/paths.h .dir-stamp .dep-stamp
- set -e ; for a in $(dynamic-dirs) ; do $(MAKE) -C $$a $@ ; done
- set -e ; for a in $(static-dirs) $(client-dirs) ; do $(MAKE) -C $$a -f $(srcdir_abs)/$$a/Makefile $@ ; done
-
-$(exedir)/bird: $(bird-dep)
- @echo LD $(LDFLAGS) -o $@ $^ $(LIBS)
- @$(CC) $(LDFLAGS) -o $@ $^ $(LIBS)
-
-$(exedir)/birdc: $(birdc-dep)
- @echo LD $(LDFLAGS) -o $@ $^ $(LIBS) $(CLIENT_LIBS)
- @$(CC) $(LDFLAGS) -o $@ $^ $(LIBS) $(CLIENT_LIBS)
-
-$(exedir)/birdcl: $(birdcl-dep)
- @echo LD $(LDFLAGS) -o $@ $^ $(LIBS)
- @$(CC) $(LDFLAGS) -o $@ $^ $(LIBS)
-
-.dir-stamp: sysdep/paths.h
- mkdir -p $(static-dirs) $(client-dirs) $(doc-dirs)
- touch .dir-stamp
-
-.dep-stamp:
- $(MAKE) depend
- touch .dep-stamp
-
-docs: userdocs progdocs
-
-userdocs progdocs: .dir-stamp
- $(MAKE) -C doc -f $(srcdir_abs)/doc/Makefile $@
-
-sysdep/paths.h:
- echo >sysdep/paths.h "/* Generated by Makefile, don't edit manually! */"
- echo >>sysdep/paths.h "#define PATH_CONFIG_FILE \"@CONFIG_FILE@\""
- echo >>sysdep/paths.h "#define PATH_CONTROL_SOCKET \"@CONTROL_SOCKET@\""
- if test -n "@iproutedir@" ; then echo >>sysdep/paths.h "#define PATH_IPROUTE_DIR \"@iproutedir@\"" ; fi
-
-tags:
- cd $(srcdir) ; etags -lc `find $(static-dirs) $(addprefix $(objdir)/,$(dynamic-dirs)) $(client-dirs) -name *.[chY]`
-
-install: all
- $(INSTALL) -d $(DESTDIR)/$(sbindir) $(DESTDIR)/$(sysconfdir) $(DESTDIR)/@runtimedir@
- $(INSTALL_PROGRAM) $(exedir)/bird $(DESTDIR)/$(sbindir)/bird
- $(INSTALL_PROGRAM) $(exedir)/birdcl $(DESTDIR)/$(sbindir)/birdcl
- if test -n "@CLIENT@" ; then \
- $(INSTALL_PROGRAM) $(exedir)/birdc $(DESTDIR)/$(sbindir)/birdc ; \
- fi
- if ! test -f $(DESTDIR)/@CONFIG_FILE@ ; then \
- $(INSTALL_DATA) $(srcdir)/doc/bird.conf.example $(DESTDIR)/@CONFIG_FILE@ ; \
- else \
- echo "Not overwriting old bird.conf" ; \
- fi
-
-install-docs:
- $(INSTALL) -d $(DESTDIR)/$(docdir)
- $(INSTALL_DATA) $(srcdir)/doc/{bird,prog}{,-*}.html $(DESTDIR)/$(docdir)/
-
-clean:
- find . -name "*.[oa]" -o -name core -o -name depend -o -name "*.html" | xargs rm -f
- rm -f conf/cf-lex.c conf/cf-parse.* conf/commands.h conf/keywords.h
- rm -f $(exedir)/bird $(exedir)/birdcl $(exedir)/birdc $(exedir)/bird.ctl $(exedir)/bird6.ctl .dep-stamp
-
-distclean: clean
- rm -f config.* configure sysdep/autoconf.h sysdep/paths.h Makefile Rules
- rm -rf .dir-stamp $(clean-dirs)
diff --git a/tools/Rules.in b/tools/Rules.in
deleted file mode 100644
index f00c85d1..00000000
--- a/tools/Rules.in
+++ /dev/null
@@ -1,91 +0,0 @@
-# Makefile fragments for the BIRD Internet Routing Daemon
-# (c) 1999--2000 Martin Mares <mj@ucw.cz>
-
-srcdir=@srcdir_rel_mf@
-srcdir_abs := $(shell cd $(srcdir) ; pwd)
-objdir=@objdir@
-exedir=@exedir@
-
-protocols=@protocols@
-static-dirs := nest filter $(addprefix proto/,$(protocols))
-static-dir-paths := $(addprefix $(srcdir)/,$(static-dirs))
-dynamic-dirs := lib conf
-dynamic-dir-paths := $(dynamic-dirs)
-client-dirs := client
-client-dir-paths := $(client-dirs)
-doc-dirs := doc
-doc-dir-paths := $(doc-dirs)
-
-all-dirs:=$(static-dirs) $(dynamic-dirs) $(client-dirs) $(doc-dirs)
-clean-dirs:=$(all-dirs) proto sysdep
-
-CPPFLAGS=-I$(root-rel) -I$(srcdir) @CPPFLAGS@
-CFLAGS=$(CPPFLAGS) @CFLAGS@
-LDFLAGS=@LDFLAGS@
-LIBS=@LIBS@
-CLIENT_LIBS=@CLIENT_LIBS@
-CC=@CC@
-M4=@M4@
-BISON=@BISON@
-FLEX=@FLEX@
-RANLIB=@RANLIB@
-INSTALL=@INSTALL@
-INSTALL_PROGRAM=@INSTALL_PROGRAM@
-INSTALL_DATA=@INSTALL_DATA@
-
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-bindir=@bindir@
-sbindir=@sbindir@
-sysconfdir=@sysconfdir@
-localstatedir=@localstatedir@
-docdir=@prefix@/doc
-
-ifdef source
-
-objs := $(subst .c,.o,$(source))
-
-ifdef dir-name
-src-path := $(srcdir)/$(dir-name)/
-endif
-
-all:
- cd $(root-rel) && make
-
-ifdef lib-dest
-
-subdir: $(lib-dest)
-
-$(lib-dest): $(objs)
- rm -f $@
- ar rcs $@ $^
- $(RANLIB) $@
-
-else
-
-subdir: all.o
-
-all.o: $(objs)
-# $(LD) -r -o $@ $^
-# Changed to $(CC) because $(LD) has problems with crosscompiling
- @echo LD -r -o $@ $^
- @$(CC) -nostdlib -r -o $@ $^
-
-endif
-
-%.o: $(src-path)%.c
- @echo CC -o $@ -c $<
- @$(CC) $(CFLAGS) -o $@ -c $<
-
-ifndef source-dep
-source-dep := $(source)
-endif
-
-depend:
- $(CC) $(CPPFLAGS) -MM $(addprefix $(src-path),$(source-dep)) >depend
-
-ifneq ($(wildcard depend),)
-include depend
-endif
-
-endif
diff --git a/tools/mergedirs b/tools/mergedirs
deleted file mode 100755
index fb48c6c7..00000000
--- a/tools/mergedirs
+++ /dev/null
@@ -1,63 +0,0 @@
-#!/bin/sh
-
-if [ -z "$4" ] ; then
- echo "Usage: mergedirs <src-dir> <src-dir-rel> <obj-dir> <list-of-dirs>"
- exit 1
- fi
-cpp=${CPP:-cc -E}
-SRCDIR=$1
-shift
-SRCREL=$1
-case $SRCDIR in
- /*) ;;
- *) SRCREL="../$SRCREL" ;;
- esac
-shift
-OBJDIR=$1
-LIBDIR=$OBJDIR/lib
-CONFDIR=$OBJDIR/conf
-shift
-
-echo "Merging system-dependent modules ($@)"
-MODULES=`for a in $@ ; do
- cat $SRCDIR/sysdep/config.h $SRCDIR/$a/Modules |
- $cpp -U unix -D MACROS_ONLY -I $OBJDIR - |
- sed "/^[ ]*\$/d;/^#/d;s@\\(.*\\)@\\1 $a/\\1@"
- done |
- sort -k1,1 -u |
- cut -d ' ' -f 2`
-rm -rf $LIBDIR $CONFDIR
-mkdir -p $LIBDIR $CONFDIR
-for a in $MODULES ; do
- b=`basename $a`
- case $b in
- *.h) ln -s $SRCREL/$a $LIBDIR/$b
- ;;
- *.c) OBJ=`echo $b | sed 's/\.c$/\.o/'`
- OBJS="$OBJS $OBJ"
- SRCS="$SRCS \\
- $b"
- ln -s $SRCREL/$a $LIBDIR/$b
- ;;
- *.Y) CONFS="$CONFS\$(srcdir)/$a "
- ln -s $SRCREL/$a $CONFDIR/$b
- ;;
- *) echo "$b: Unknown file type"
- exit 1
- ;;
- esac
- done
-
-cat >$LIBDIR/Makefile <<EOF
-source=$SRCS
-lib-dest=birdlib.a
-root-rel=../
-
-include ../Rules
-EOF
-
-sed <$SRCDIR/conf/Makefile >$CONFDIR/Makefile "s|@CONFS@|$CONFS|"
-CONFS=`cd $SRCDIR ; ls conf/*.[chl]`
-for a in $CONFS ; do
- ln -s $SRCREL/$a $CONFDIR/
-done
diff --git a/tools/progdoc b/tools/progdoc
index ef44d3aa..fc4024bf 100755
--- a/tools/progdoc
+++ b/tools/progdoc
@@ -1,17 +1,18 @@
#!/usr/bin/perl
$srcdir = $ARGV[0];
+$out = $ARGV[1];
-open(OUT, ">prog.sgml") || die "Cannot create output file";
-include("doc/prog-head.sgml");
-process("");
-include("doc/prog-foot.sgml");
+open(OUT, ">", $out) || die "Cannot create output file";
+process($srcdir);
close OUT;
+gen_deps();
exit 0;
sub include {
my $f = shift @_;
- open(IN, "$srcdir/$f") || die "Unable to find $f";
+ open(IN, "$f") || die "Unable to find $f";
+ push(@deps, "$f");
while (<IN>) {
print OUT;
}
@@ -21,7 +22,8 @@ sub include {
sub process {
my $dir = shift @_;
print "$dir/Doc\n";
- open(IN, "$srcdir/$dir/Doc") || die "Unable to read $dir/Doc";
+ open(IN, "$dir/Doc") || die "Unable to read $dir/Doc";
+ push(@deps, "$dir/Doc");
my @docfile = <IN>;
close IN;
foreach $_ (@docfile) {
@@ -36,7 +38,10 @@ sub process {
print OUT "<chapt>$arg\n";
} elsif ($cmd eq "S") {
print " $arg\n";
- open(DOC, "cd $srcdir/$dir ; $srcdir/doc/kernel-doc -bird $arg |") || die "Unable to start kernel-doc";
+ my @files = map("$dir/$_", split(' ', $arg));
+ my $fargs = join(' ', @files);
+ open(DOC, "$srcdir/doc/kernel-doc -bird $fargs |") || die "Unable to start kernel-doc";
+ push(@deps, @files);
while (<DOC>) { print OUT; }
close DOC;
} elsif ($cmd eq "D") {
@@ -45,3 +50,17 @@ sub process {
} else { die "Unknown command: $cmd"; }
}
}
+
+sub gen_deps {
+ open(DEP, ">", "$out.d");
+ print DEP "$out:";
+ foreach $f (@deps) {
+ print DEP " \\\n $f";
+ }
+ print DEP "\n\n";
+
+ foreach $f (@deps) {
+ print DEP "$f:\n\n";
+ }
+ close DEP;
+}