1#
2#
3# Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
4# Use is subject to license terms.
5#
6# Copyright 2020 Joyent, Inc.
7
8ROUTEDPROG=	in.routed
9ROUTEDOBJS=	common.o if.o input.o main.o output.o parms.o radix.o \
10                rdisc.o table.o trace.o
11ROUTEDSRCS=	$(ROUTEDOBJS:.o=.c)
12RTQUERYPROG=	rtquery
13RTQUERYOBJS=	common.o rtquery.o
14RTQUERYSRCS=	$(RTQUERYOBJS:.o=.c)
15POFILEOBJS=	$(ROUTEDOBJS) $(RTQUERYOBJS)
16
17PROG=		$(ROUTEDPROG) $(RTQUERYPROG)
18SRCS=		$(ROUTEDSRCS) $(RTQUERYSRCS)
19
20MANIFEST=		route.xml
21SVCMETHOD=		svc-route
22
23include		../../../Makefile.cmd
24
25ROOTMANIFESTDIR=	$(ROOTSVCNETWORKROUTING)
26
27#
28# in.routed uses ancillary data features available through
29# the Open Group's Networking Services standard.  The following
30# pre-processor definitions enable these features.
31#
32_D_XOPEN_EXTN = -D_XOPEN_SOURCE=500 -D__EXTENSIONS__
33
34# Turning on __EXTENSIONS__ breaks lint, and we need __EXTENSIONS__.
35# This is really a lint problem, so around the breakage.
36LINTFLAGS += -erroff=E_FUNC_DECL_VAR_ARG2 -erroff=E_INCONS_VAL_TYPE_DECL2 \
37	     -erroff=E_INCONS_ARG_DECL2 -erroff=E_INCONS_ARG_USED2
38
39CPPFLAGS +=	$(_D_XOPEN_EXTN)
40CFLAGS +=	$(CCVERBOSE)
41CERRWARN +=	-_gcc=-Wno-parentheses
42CERRWARN +=	$(CNOWARN_UNINIT)
43# not linted
44SMATCH=off
45
46LDLIBS +=	-lxnet -lmd
47CLEAN_FILES +=	$(ROUTEDOBJS) $(RTQUERYOBJS)
48CLOBBERFILES +=	$(ROUTEDPROG) $(RTQUERYPROG)
49#
50# Message catalog
51#
52POFILE=		in.routed.po
53POFILES=  $(POFILEOBJS:.o=.po)
54#
55$(ROUTEDPROG):=	LDLIBS += -lkstat
56lint	:=	LDLIBS += -lkstat
57
58# This needs to be done because of SPARC/x86 differences.  On x86,
59# double has required alignment of only 4 bytes, but on SPARC it's 8
60# bytes.  This means that sockaddr_in can be casted to
61# sockaddr_storage without complaint on x86, but requires a
62# suppression directive on SPARC.
63LINTFLAGS +=	-erroff=E_SUPPRESSION_DIRECTIVE_UNUSED
64
65CTFCONVERT_HOOK = && $(CTFCONVERT_O)
66CTFMERGE_HOOK = && $(CTFMERGE) -L VERSION -o $@ $(ROUTEDOBJS)
67$(ROUTEDOBJS) := CFLAGS += $(CTF_FLAGS)
68$(RTQUERYOBJS) := CFLAGS += $(CTF_FLAGS)
69
70.KEEP_STATE:
71
72.PARALLEL: $(ROUTEDPROG) $(RTQUERYOBJS)
73
74all:	$(PROG)
75
76$(POFILE): $(POFILES)
77	$(RM) $@
78	cat $(POFILES) > $@
79
80$(ROUTEDPROG):	$(ROUTEDOBJS)
81	$(LINK.c) -o $@ $(ROUTEDOBJS) $(LDLIBS) $(CTFMERGE_HOOK)
82	$(POST_PROCESS)
83
84$(RTQUERYPROG): $(RTQUERYOBJS)
85	$(LINK.c) -o $@ $(RTQUERYOBJS) $(LDLIBS) -lresolv $(CTFMERGE_HOOK)
86	$(POST_PROCESS)
87
88lint:
89	$(LINT.c) $(ROUTEDSRCS) $(LDLIBS)
90	$(LINT.c) $(RTQUERYSRCS) $(LDLIBS)
91
92install:	all $(ROOTUSRSBINPROG) $(ROOTMANIFEST) $(ROOTSVCMETHOD)
93
94check:		$(CHKMANIFEST)
95
96clean:
97	$(RM) $(CLEAN_FILES)
98
99include		../../../Makefile.targ
100