1 #
   2 #
   3 # Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
   4 # Use is subject to license terms.
   5 #
   6 # Copyright (c) 2018, Joyent, Inc.
   7 
   8 ROUTEDPROG=     in.routed
   9 ROUTEDOBJS=     common.o if.o input.o main.o output.o parms.o radix.o \
  10                 rdisc.o table.o trace.o
  11 ROUTEDSRCS=     $(ROUTEDOBJS:.o=.c)
  12 RTQUERYPROG=    rtquery
  13 RTQUERYOBJS=    common.o rtquery.o
  14 RTQUERYSRCS=    $(RTQUERYOBJS:.o=.c)
  15 POFILEOBJS=     $(ROUTEDOBJS) $(RTQUERYOBJS)    
  16 
  17 PROG=           $(ROUTEDPROG) $(RTQUERYPROG)
  18 SRCS=           $(ROUTEDSRCS) $(RTQUERYSRCS)
  19 
  20 MANIFEST=               route.xml
  21 SVCMETHOD=              svc-route
  22 
  23 include         ../../../Makefile.cmd
  24 
  25 ROOTMANIFESTDIR=        $(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.
  36 LINTFLAGS += -erroff=E_FUNC_DECL_VAR_ARG2 -erroff=E_INCONS_VAL_TYPE_DECL2 \
  37              -erroff=E_INCONS_ARG_DECL2 -erroff=E_INCONS_ARG_USED2
  38 
  39 CPPFLAGS +=     $(_D_XOPEN_EXTN)
  40 CFLAGS +=       $(CCVERBOSE)
  41 CERRWARN +=     -_gcc=-Wno-parentheses
  42 CERRWARN +=     -_gcc=-Wno-uninitialized
  43 # not linted
  44 SMATCH=off
  45 
  46 LDLIBS +=       -lxnet -lmd -lsocket
  47 CLEAN_FILES +=  $(ROUTEDOBJS) $(RTQUERYOBJS)
  48 CLOBBERFILES += $(ROUTEDPROG) $(RTQUERYPROG)
  49 #
  50 # Message catalog
  51 #
  52 POFILE=         in.routed.po
  53 POFILES=  $(POFILEOBJS:.o=.po)
  54 #
  55 $(ROUTEDPROG):= LDLIBS += -lkstat
  56 lint    :=      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.
  63 LINTFLAGS +=    -erroff=E_SUPPRESSION_DIRECTIVE_UNUSED
  64 
  65 CTFCONVERT_HOOK = && $(CTFCONVERT_O)
  66 CTFMERGE_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 
  74 all:    $(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 
  88 lint:
  89         $(LINT.c) $(ROUTEDSRCS) $(LDLIBS)
  90         $(LINT.c) $(RTQUERYSRCS) $(LDLIBS)
  91 
  92 install:        all $(ROOTUSRSBINPROG) $(ROOTMANIFEST) $(ROOTSVCMETHOD)
  93 
  94 check:          $(CHKMANIFEST)
  95 
  96 clean:
  97         $(RM) $(CLEAN_FILES)
  98 
  99 include         ../../../Makefile.targ