gcc -MM can be used to separate them from the system ones.
Added automatic generation of dependencies.
# (c) 1998 Martin Mares <mj@ucw.cz>
TOPDIR=$(shell pwd)
-CFLAGS=-O2 -Wall -W -Wstrict-prototypes -Wno-unused -Wno-parentheses -I$(TOPDIR)
+CPPFLAGS=-I$(TOPDIR)
+CFLAGS=-O2 -Wall -W -Wstrict-prototypes -Wno-unused -Wno-parentheses $(CPPFLAGS)
PROTOCOLS=
-DIRS=sysdep/linux nest $(protocols) lib
+DIRS=sysdep/linux nest $(PROTOCOLS) lib
ARCHS=$(join $(addsuffix /,$(DIRS)),$(subst /,_,$(addsuffix .a,$(DIRS))))
export
-all: all-dirs bird
+all: .dep all-dirs bird
all-dirs:
set -e ; for a in $(DIRS) ; do $(MAKE) -C $$a ; done
bird: $(ARCHS)
$(CC) $(LDFLAGS) -o $@ $^
+.dep:
+ $(MAKE) dep
+ touch .dep
+
+dep:
+ set -e ; for a in $(DIRS) ; do $(MAKE) -C $$a dep ; done
+
clean:
- rm -f `find . -name "*~" -or -name "*.[oa]" -or -name "\#*\#" -or -name TAGS -or -name core`
- rm -f bird
+ rm -f `find . -name "*~" -or -name "*.[oa]" -or -name "\#*\#" -or -name TAGS -or -name core -or -name .depend`
+ rm -f bird .dep
THISDIR=$(shell pwd)
RELDIR=$(subst $(TOPDIR)/,,$(THISDIR))
ANAME=$(subst /,_,$(RELDIR)).a
+SRCS=$(subst .o,.c,$(OBJS))
all: $(ANAME)
$(ANAME): $(OBJS)
rm -f $(ANAME)
ar rcs $(ANAME) $(OBJS)
+
+ifdef OBJS
+
+dep: $(SRCS)
+ rm -f .depend
+ for a in $(SRCS) ; do gcc $(CPPFLAGS) -MM $$a >>.depend ; done
+
+else
+
+dep:
+
+endif
+
+ifneq ($(wildcard .depend),)
+include .depend
+endif
#define _BIRD_IP_H_
#ifndef IPV6
-#include <lib/ipv4.h>
+#include "ipv4.h"
#else
-#include <lib/ipv6.h>
+#include "ipv6.h"
#endif
#endif
#define _I(x) (x).addr
#define _MI(x) ((struct ip_addr) { x })
-#define IPA_NONE(_MI(0))
+#define IPA_NONE (_MI(0))
#define ipa_equal(x,y) (_I(x) == _I(y))
#define ipa_and(x,y) _MI(_I(x) & _I(y))
#define _BIRD_LISTS_C_
-#include <nest/bird.h>
-#include <lib/lists.h>
+#include "nest/bird.h"
+#include "lib/lists.h"
LIST_INLINE void
add_tail(list *l, node *n)
#ifndef _BIRD_RESOURCE_H_
#define _BIRD_RESOURCE_H_
-#include <lib/lists.h>
+#include "lib/lists.h"
/* Resource */
#ifndef _BIRD_SOCKET_H_
#define _BIRD_SOCKET_H_
-#include <lib/resource.h>
+#include "lib/resource.h"
typedef struct birdsock socket;
#ifndef _BIRD_TIMER_H_
#define _BIRD_TIMER_H_
-#include <lib/resource.h>
+#include "lib/resource.h"
typedef struct timer {
resource r;
#ifndef _BIRD_BIRD_H_
#define _BIRD_BIRD_H_
-#include <sysdep/config.h>
-#include <lib/birdlib.h>
-#include <lib/ip.h>
+#include "sysdep/config.h"
+#include "lib/birdlib.h"
+#include "lib/ip.h"
extern u32 router_id; /* Our Router ID */
extern u16 this_as; /* Our Autonomous System Number */
#ifndef _BIRD_IFACE_H_
#define _BIRD_IFACE_H_
-#include <lib/lists.h>
+#include "lib/lists.h"
struct iface {
node n;
* Can be freely distributed and used under the terms of the GNU GPL.
*/
-#include <nest/bird.h>
-#include <lib/lists.h>
-
-#include <nest/resource.h>
+#include "nest/bird.h"
+#include "lib/lists.h"
+#include "lib/resource.h"
int
main(void)
#ifndef _BIRD_PROTOCOL_H_
#define _BIRD_PROTOCOL_H_
-#include <lib/resource.h>
+#include "lib/resource.h"
/*
* Routing Protocol
#ifndef _BIRD_ROUTE_H_
#define _BIRD_ROUTE_H_
-#include <lib/resource.h>
+#include "lib/resource.h"
/*
* Generic data structure for storing network prefixes. Also used
/* System-dependent configuration */
-#include <sysdep/cf/linux-20.h>
+#include "sysdep/cf/linux-20.h"
/* Include debugging code */