1# udhcp makefile
2
3prefix=/usr
4SBINDIR=/sbin
5USRSBINDIR=${prefix}/sbin
6USRBINDIR=${prefix}/bin
7USRSHAREDIR=${prefix}/share
8
9# Uncomment this to get a shared binary. Call as udhcpd for the server,
10# and udhcpc for the client
11COMBINED_BINARY=1
12
13# Uncomment this for extra output and to compile with debugging symbols
14# DEBUG=1
15
16# Uncomment this to output messages to syslog, otherwise, messages go to stdout
17#CFLAGS += -DSYSLOG
18
19#CROSS_COMPILE=arm-uclibc-
20CC = $(CROSS_COMPILE)gcc
21LD = $(CROSS_COMPILE)gcc
22LDFLAGS = -L$(TOP)/nvram -lnvram
23
24INSTALL = install
25
26VER := 0.9.8
27
28
29OBJS_SHARED = options.o socket.o packet.o pidfile.o uptime.o
30DHCPD_OBJS = dhcpd.o arpping.o files.o leases.o serverpacket.o
31DHCPC_OBJS = dhcpc.o clientpacket.o script.o
32
33ifdef COMBINED_BINARY
34EXEC1 = udhcpd
35OBJS1 = $(DHCPD_OBJS) $(DHCPC_OBJS) $(OBJS_SHARED) frontend.o
36CFLAGS += -DCOMBINED_BINARY
37else
38EXEC1 = udhcpd
39OBJS1 = $(DHCPD_OBJS) $(OBJS_SHARED)
40
41EXEC2 = udhcpc
42OBJS2 = $(DHCPC_OBJS) $(OBJS_SHARED)
43endif
44
45EXEC3 = dumpleases
46OBJS3 = dumpleases.o
47
48BOOT_PROGRAMS = udhcpc
49DAEMONS = udhcpd
50COMMANDS = dumpleases
51
52ifdef SYSLOG
53CFLAGS += -DSYSLOG
54endif
55
56CFLAGS += -W -Wall -Wstrict-prototypes -DVERSION='"$(VER)"'
57
58ifdef DEBUG
59CFLAGS += -g -DDEBUG
60STRIP=true
61else
62CFLAGS += -O2 -fomit-frame-pointer
63STRIP=$(CROSS_COMPILE)strip
64endif
65CFLAGS += -I$(SRCBASE)/include
66
67all: $(EXEC1) $(EXEC2) $(EXEC3)
68	$(STRIP) --remove-section=.note --remove-section=.comment $(EXEC1) $(EXEC2) $(EXEC3)
69
70$(OBJS1) $(OBJS2) $(OBJS3): *.h Makefile
71$(EXEC1) $(EXEC2) $(EXEC3): Makefile
72
73.c.o:
74	$(CC) -c $(CFLAGS) $<
75
76$(EXEC1): $(OBJS1)
77	$(LD) $(LDFLAGS) $(OBJS1) -o $(EXEC1)
78
79$(EXEC2): $(OBJS2)
80	$(LD) $(LDFLAGS) $(OBJS2) -o $(EXEC2)
81
82$(EXEC3): $(OBJS3)
83	$(LD) $(LDFLAGS) $(OBJS3) -o $(EXEC3)
84
85
86install: all
87
88	$(INSTALL) $(DAEMONS) $(USRSBINDIR)
89	$(INSTALL) $(COMMANDS) $(USRBINDIR)
90ifdef COMBINED_BINARY
91	ln -sf $(USRSBINDIR)/$(DAEMONS) $(SBINDIR)/$(BOOT_PROGRAMS)
92else
93	$(INSTALL) $(BOOT_PROGRAMS) $(SBINDIR)
94endif
95	mkdir -p $(USRSHAREDIR)/udhcpc
96	for name in bound deconfig renew script ; do \
97		$(INSTALL) samples/sample.$$name \
98			$(USRSHAREDIR)/udhcpc/default.$$name ; \
99	done
100	mkdir -p $(USRSHAREDIR)/man/man1
101	$(INSTALL) dumpleases.1 $(USRSHAREDIR)/man/man1
102	mkdir -p $(USRSHAREDIR)/man/man5
103	$(INSTALL) udhcpd.conf.5 $(USRSHAREDIR)/man/man5
104	mkdir -p $(USRSHAREDIR)/man/man8
105	$(INSTALL) udhcpc.8 udhcpd.8 $(USRSHAREDIR)/man/man8
106
107clean:
108	-rm -f udhcpd udhcpc dumpleases *.o core
109
110