]> git.ipfire.org Git - thirdparty/bird.git/blame - Makefile.in
Merge branch 'master' into int-new
[thirdparty/bird.git] / Makefile.in
CommitLineData
7152e5ef
JMM
1# Makefile for the BIRD Internet Routing Daemon
2# (c) 1999--2000 Martin Mares <mj@ucw.cz>
3# (c) 2016 Jan Moskyto Matejka <mq@ucw.cz>
4
5# Disable build-in rules
6MAKEFLAGS += -r
7
8# Variable definitions
9CPPFLAGS=-I$(objdir) -I$(srcdir) @CPPFLAGS@
10CFLAGS=$(CPPFLAGS) @CFLAGS@
11LDFLAGS=@LDFLAGS@
12LIBS=@LIBS@
65d2a88d 13DAEMON_LIBS=@DAEMON_LIBS@
7152e5ef
JMM
14CLIENT_LIBS=@CLIENT_LIBS@
15CC=@CC@
16M4=@M4@
17BISON=@BISON@
18FLEX=@FLEX@
19RANLIB=@RANLIB@
20INSTALL=@INSTALL@
21INSTALL_PROGRAM=@INSTALL_PROGRAM@
22INSTALL_DATA=@INSTALL_DATA@
23
24client=$(addprefix $(exedir)/,@CLIENT@)
25daemon=$(exedir)/bird
9b0a0ba9 26protocols=@protocols@
7152e5ef
JMM
27
28prefix=@prefix@
29exec_prefix=@exec_prefix@
30bindir=@bindir@
31sbindir=@sbindir@
32sysconfdir=@sysconfdir@
33localstatedir=@localstatedir@
34docdir=@prefix@/doc
35
36srcdir := @srcdir@
37objdir := @objdir@
38exedir := @exedir@
39
40ifeq ($(objdir),.)
41 objdir := $(realpath .)
42endif
43
44ifeq ($(VERBOSE),)
d6f027ef 45 E:=@
7152e5ef
JMM
46 Q:=@
47else
d6f027ef 48 E:=@\#
7152e5ef
JMM
49 Q:=
50endif
51
52# Meta rules
7152e5ef 53docgoals := docs userdocs progdocs
9b0a0ba9
OZ
54testgoals := check test tests tests_run
55cleangoals := clean distclean testsclean
56.PHONY: all daemon cli $(docgoals) $(testgoals) $(cleangoals) tags
7152e5ef
JMM
57all: daemon cli
58
59daemon: $(daemon)
60cli: $(client)
61
65d2a88d
PT
62$(daemon): LIBS += $(DAEMON_LIBS)
63
7152e5ef 64# Include directories
9b0a0ba9 65dirs := client conf doc filter lib nest test $(addprefix proto/,$(protocols)) @sysdep_dirs@
7152e5ef
JMM
66
67conf-y-targets := $(addprefix $(objdir)/conf/,cf-parse.y keywords.h commands.h)
68cf-local = $(conf-y-targets): $(s)config.Y
69
70src-o-files = $(patsubst %.c,$(o)%.o,$(src))
9b0a0ba9 71tests-target-files = $(patsubst %.c,$(o)%,$(tests_src))
7152e5ef 72
9b0a0ba9
OZ
73all-daemon = $(daemon): $(obj)
74all-client = $(client): $(obj)
7152e5ef
JMM
75
76s = $(dir $(lastword $(MAKEFILE_LIST)))
77ifeq ($(srcdir),.)
78 o = $(objdir)/$(s)
79else
80 o = $(patsubst $(srcdir)%,$(objdir)%,$(s))
81endif
82
83define clean_in =
84clean::
85 rm -f $(addprefix $(o),$(1))
86endef
87
88clean = $(eval $(call clean_in,$(1)))
89
90include $(addsuffix /Makefile,$(addprefix $(srcdir)/,$(dirs)))
91
92# Generic rules
93
94$(objdir)/%.o: $(srcdir)/%.c $(objdir)/.dir-stamp $(objdir)/sysdep/paths.h
d6f027ef 95 $(E)echo CC -o $@ -c $<
7152e5ef
JMM
96 $(Q)$(CC) $(CFLAGS) -MMD -MP -o $@ -c $<
97
98$(objdir)/%.o: $(objdir)/%.c $(objdir)/.dir-stamp $(objdir)/sysdep/paths.h
d6f027ef 99 $(E)echo CC -o $@ -c $<
7152e5ef
JMM
100 $(Q)$(CC) $(CFLAGS) -MMD -MP -o $@ -c $<
101
a2fd34f8
JMM
102
103$(objdir)/%.S: $(srcdir)/%.c $(objdir)/.dir-stamp $(objdir)/sysdep/paths.h
104 $(E)echo CC -o $@ -S $<
105 $(Q)$(CC) $(CFLAGS) -MMD -MP -o $@ -S $<
106
107$(objdir)/%.S: $(objdir)/%.c $(objdir)/.dir-stamp $(objdir)/sysdep/paths.h
108 $(E)echo CC -o $@ -S $<
109 $(Q)$(CC) $(CFLAGS) -MMD -MP -o $@ -S $<
110
111
112
7152e5ef 113$(objdir)/.dir-stamp:
d6f027ef 114 $(E)echo MKDIR -p $(addprefix $(objdir)/,$(dirs) doc)
7152e5ef
JMM
115 $(Q)mkdir -p $(addprefix $(objdir)/,$(dirs) doc)
116 $(Q)touch $@
117
118$(client) $(daemon):
d6f027ef 119 $(E)echo LD $(LDFLAGS) -o $@ $^ $(LIBS)
7152e5ef
JMM
120 $(Q)$(CC) $(LDFLAGS) -o $@ $^ $(LIBS)
121
122$(objdir)/sysdep/paths.h: Makefile
123 echo >$@ "/* Generated by Makefile, don't edit manually! */"
124 echo >>$@ "#define PATH_CONFIG_FILE \"@CONFIG_FILE@\""
125 echo >>$@ "#define PATH_CONTROL_SOCKET \"@CONTROL_SOCKET@\""
126 if test -n "@iproutedir@" ; then echo >>$@ "#define PATH_IPROUTE_DIR \"@iproutedir@\"" ; fi
127
9b0a0ba9
OZ
128# Unit tests rules
129
130tests_targets_ok = $(addsuffix .ok,$(tests_targets))
131
132$(tests_targets): %: %.o $(tests_objs)
7d5e61a6 133 $(E)echo LD $(LDFLAGS) -o $@ $< "..." $(LIBS)
9b0a0ba9
OZ
134 $(Q)$(CC) $(LDFLAGS) -o $@ $^ $(LIBS)
135
7d5e61a6
OZ
136# Hack to avoid problems with tests linking everything
137$(tests_targets): LIBS += $(DAEMON_LIBS)
138
9b0a0ba9
OZ
139$(tests_targets_ok): %.ok: %
140 $(Q)$* 2>/dev/null && touch $*.ok
141
142test: testsclean check
143check: tests tests_run
144tests: $(tests_targets)
145tests_run: $(tests_targets_ok)
146
7152e5ef
JMM
147# Finally include the computed dependencies
148
149ifneq ($(filter-out $(cleangoals),$(MAKECMDGOALS)),)
150-include $(shell find $(objdir) -name "*.d")
151endif
152
153ifeq ($(MAKECMDGOALS),)
154-include $(shell find $(objdir) -name "*.d")
155endif
156
157tags:
158 cd $(srcdir) ; etags -lc `find $(dirs) -name *.[chY]`
159
160# Install
161
162install: all
163 $(INSTALL) -d $(DESTDIR)/$(sbindir) $(DESTDIR)/$(sysconfdir) $(DESTDIR)/@runtimedir@
164 $(INSTALL_PROGRAM) $(exedir)/bird $(DESTDIR)/$(sbindir)/bird
165 $(INSTALL_PROGRAM) $(exedir)/birdcl $(DESTDIR)/$(sbindir)/birdcl
166 if test -n "@CLIENT@" ; then \
167 $(INSTALL_PROGRAM) $(exedir)/birdc $(DESTDIR)/$(sbindir)/birdc ; \
168 fi
169 if ! test -f $(DESTDIR)/@CONFIG_FILE@ ; then \
170 $(INSTALL_DATA) $(srcdir)/doc/bird.conf.example $(DESTDIR)/@CONFIG_FILE@ ; \
171 else \
172 echo "Not overwriting old bird.conf" ; \
173 fi
174
175install-docs:
176 $(INSTALL) -d $(DESTDIR)/$(docdir)
177 $(INSTALL_DATA) $(objdir)/doc/{bird,prog}{,-*}.html $(DESTDIR)/$(docdir)/
178
179# Cleanup
180clean::
181 rm -f $(objdir)/sysdep/paths.h
182 rm -f $(addprefix $(exedir)/,bird birdc birdcl)
183 find $(objdir) -name "*.[od]" -exec rm -f '{}' '+'
184
9b0a0ba9
OZ
185testsclean:
186 rm -f $(tests_targets_ok)
187
7152e5ef
JMM
188ifeq ($(objdir),obj)
189distclean: clean
190 rm -rf $(objdir)
191 rm -f config.log config.status configure Makefile
192else
193distclean: clean
194 rm -rf * .dir-stamp
195 rm -f config.log config.status configure Makefile
196endif