aboutsummaryrefslogtreecommitdiffstats
path: root/Makefile.in
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 /Makefile.in
parent4bdf1881dc6230b742d7efcaad8eeac4ed25f445 (diff)
downloadbird-7152e5efbb0fade868d5f2d2c7bc10ed52b3d19d.tar.gz
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.
Diffstat (limited to 'Makefile.in')
-rw-r--r--Makefile.in156
1 files changed, 156 insertions, 0 deletions
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