1 #
   2 # CDDL HEADER START
   3 #
   4 # The contents of this file are subject to the terms of the
   5 # Common Development and Distribution License (the "License").
   6 # You may not use this file except in compliance with the License.
   7 #
   8 # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
   9 # or http://www.opensolaris.org/os/licensing.
  10 # See the License for the specific language governing permissions
  11 # and limitations under the License.
  12 #
  13 # When distributing Covered Code, include this CDDL HEADER in each
  14 # file and include the License file at usr/src/OPENSOLARIS.LICENSE.
  15 # If applicable, add the following below this CDDL HEADER, with the
  16 # fields enclosed by brackets "[]" replaced with your own identifying
  17 # information: Portions Copyright [yyyy] [name of copyright owner]
  18 #
  19 # CDDL HEADER END
  20 #
  21 #
  22 # Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
  23 # Use is subject to license terms.
  24 #
  25 # Copyright (c) 2018, Joyent, Inc.
  26 
  27 #
  28 # These are the objects associated with the overall vgrind command.
  29 #
  30 VFONTEDPR=      vfontedpr
  31 RETEST=         retest
  32 MACROS=         tmac.vgrind
  33 LANGDEFS=       vgrindefs
  34 KSHPROG=        vgrind
  35 
  36 #
  37 # These macros captures objects that ultimately will be installed in
  38 # (respectively) /usr/bin, /usr/lib, and /usr/share/lib.
  39 #
  40 # Note also that retest is used strictly as a test program and is never
  41 # installed.  We omit it here, so that the NSE doesn't spend cycles
  42 # on it when acquiring and reconciling.
  43 #
  44 PROG=           $(KSHPROG)
  45 LIBPROG=        $(VFONTEDPR) $(LANGDEFS)
  46 TMACPROG=       $(MACROS)
  47 
  48 VFONTEDPROBJS=  vfontedpr.o vgrindefs.o regexp.o
  49 RETESTOBJS=     retest.o regexp.o
  50 
  51 RETESTSRC=      $(RETESTOBJS:%.o=%.c)
  52 
  53 OBJS= $(VFONTEDPROBJS) $(RETESTOBJS)
  54 SRCS= $(OBJS:%.o=%.c)
  55 
  56 #
  57 # We can get away simply with omitting TMACPROGS to protect
  58 # tmac.vgrind, since it's the only entry in that macro.
  59 #
  60 CLOBBERFILES=   $(LIBPROG) $(RETEST)
  61 
  62 include ../Makefile.cmd
  63 
  64 CERRWARN += -_gcc=-Wno-implicit-function-declaration
  65 CERRWARN += -_gcc=-Wno-parentheses
  66 CERRWARN += -_gcc=-Wno-unused-variable
  67 CERRWARN += -_gcc=-Wno-unused-function
  68 
  69 # not linted
  70 SMATCH=off
  71 
  72 #
  73 # Message catalog
  74 #
  75 POFILES= $(OBJS:%.o=%.po)
  76 POFILE= vgrind.po
  77 POFILE_KSH= vgrind_ksh.po
  78 
  79 #
  80 # Abbreviation for future use.
  81 #
  82 ROOTTMAC= $(ROOT)/usr/share/lib/tmac
  83 
  84 #
  85 # Override macro definitions from Makefile.cmd.  Necessary because
  86 # we're building targets for multiple destinations.
  87 #
  88 ROOTLIBPROG= $(LIBPROG:%=$(ROOT)/usr/lib/%)
  89 ROOTTMACPROG= $(TMACPROG:%=$(ROOTTMAC)/%)
  90 
  91 #
  92 # Conditional assignments pertinent to installation.
  93 #
  94 $(ROOTLIB)/$(LANGDEFS)  := FILEMODE= $(LIBFILEMODE)
  95 $(ROOTTMACPROG)         := FILEMODE= 0644
  96 
  97 #
  98 # The standard set of rules doesn't know about installing into
  99 # subdirectories of /usr/share/lib, so we have to roll our own.
 100 #
 101 $(ROOTTMAC)/%: %
 102         $(INS.file)
 103 
 104 .KEEP_STATE:
 105 
 106 #
 107 # retest appears here only in source form; see comment above for PROG.
 108 #
 109 all:    $(PROG) $(LIBPROG) $(TMACPROG) $(RETESTSRC)
 110 
 111 #
 112 # message catalog
 113 #
 114 $(POFILE): $(POFILES) $(POFILE_KSH)
 115         rm -f $@
 116         cat $(POFILES) $(POFILE_KSH) > $@
 117 
 118 $(VFONTEDPR): $(VFONTEDPROBJS)
 119         $(CC) -o $@ $(VFONTEDPROBJS) $(LDFLAGS) $(LDLIBS)
 120         $(POST_PROCESS)
 121 
 122 $(LANGDEFS):    $(LANGDEFS).src
 123         $(CP) $? $@
 124 
 125 $(RETEST): $(RETESTOBJS)
 126         $(CC) -o $@ $(RETESTOBJS) $(LDFLAGS) $(LDLIBS)
 127         $(POST_PROCESS)
 128 
 129 #
 130 # We add all as a dependent to make sure that the install pattern
 131 # matching rules see everything they should.  (This is a safety net.)
 132 #
 133 # XXX:  ROOTTMAC shouldn't appear as a dependent; it's here as a
 134 #       bandaid(TM) until /usr/lib/tmac becomes a symlink to
 135 #       /usr/share/lib/tmac.
 136 #
 137 install: all $(ROOTTMAC) $(ROOTPROG) $(ROOTLIBPROG) $(ROOTTMACPROG)
 138 
 139 # XXX: see above.
 140 $(ROOTTMAC):
 141         $(INS.dir)
 142 
 143 clean:
 144         $(RM) $(OBJS)
 145 
 146 #
 147 # Don't worry about linting retest.
 148 #
 149 lint:=  SRCS = $(VFONTEDPROBJS:%.o=%.c)
 150 lint: lint_SRCS
 151 
 152 include ../Makefile.targ