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 #
  23 # Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
  24 # Use is subject to license terms.
  25 #
  26 # Copyright (c) 2018, Joyent, Inc.
  27 
  28 PROG:sh = basename `cd ..; pwd`
  29 
  30 OBJS = $(PROG).o
  31 
  32 SRCS = ../$(PROG).c
  33 
  34 FILEMODE = 0555
  35 
  36 # libproc is added individually as pwait doesn't need it.
  37 # These are defined this way so lint can use them
  38 LDLIBS_pargs            = -lproc
  39 LDLIBS_pcred            = -lproc
  40 LDLIBS_pfiles           = -lproc -lnsl
  41 LDLIBS_pflags           = -lproc
  42 LDLIBS_pldd             = -lproc
  43 LDLIBS_plgrp            = -lproc -llgrp
  44 LDLIBS_pmap             = -lproc
  45 LDLIBS_pmadvise         = -lproc
  46 LDLIBS_ppriv            = -lproc
  47 LDLIBS_preap            = -lproc
  48 LDLIBS_prun             = -lproc
  49 LDLIBS_psecflags        = -lproc -lproject
  50 LDLIBS_psig             = -lproc
  51 LDLIBS_pstack           = -lproc -lc_db
  52 LDLIBS_pstop            = -lproc
  53 LDLIBS_ptime            = -lproc
  54 LDLIBS_ptree            = -lproc -lcontract
  55 LDLIBS_pwdx             = -lproc
  56 
  57 LDLIBS += $(LDLIBS_$(PROG))
  58 
  59 CERRWARN_plgrp  += -_gcc=-Wno-parentheses
  60 CERRWARN_plgrp  += -_smatch=off
  61 
  62 CERRWARN_pmadvise += -_smatch=off
  63 
  64 CERRWARN_ppriv  += -_gcc=-Wno-parentheses
  65 CERRWARN_ppriv  += $(CNOWARN_UNINIT)
  66 
  67 CERRWARN_ptree  += -_gcc=-Wno-parentheses
  68 CERRWARN_ptree  += -_smatch=off
  69 
  70 CERRWARN_pstack += $(CNOWARN_UNINIT)
  71 CERRWARN_pstack += -_gcc=-Wno-clobbered
  72 
  73 CERRWARN_pargs  += -_gcc=-Wno-clobbered
  74 CERRWARN_pargs  += -_gcc=-Wno-type-limits
  75 
  76 CERRWARN_pwait  += -_smatch=off
  77 
  78 CERRWARN += $(CERRWARN_$(PROG))
  79 
  80 # pargs depends on ../../common/elfcap components
  81 # pmadvise depends on pmap components
  82 
  83 ELFCAP =        $(SRC)/common/elfcap
  84 PMAP =          $(SRC)/cmd/ptools/pmap
  85 
  86 CPPFLAGS_pargs =        -I$(ELFCAP)
  87 OBJS_pargs =            elfcap.o
  88 SRCS_pargs =            $(ELFCAP)/elfcap.c
  89 
  90 CPPFLAGS_pmap =         -I$(PMAP)
  91 OBJS_pmap =             pmap_common.o
  92 SRCS_pmap =             $(PMAP)/pmap_common.c
  93 
  94 CPPFLAGS_pmadvise =     -I$(PMAP)
  95 OBJS_pmadvise =         pmap_common.o
  96 SRCS_pmadvise =         $(PMAP)/pmap_common.c
  97 
  98 LN_pargs =              penv pauxv
  99 
 100 CPPFLAGS +=     $(CPPFLAGS_$(PROG))
 101 OBJS +=         $(OBJS_$(PROG))
 102 SRCS +=         $(SRCS_$(PROG))
 103 
 104 INSTALL_NEW=
 105 INSTALL_LEGACY=$(RM) $(ROOTPROCBINSYMLINK) ; \
 106         $(LN) -s ../../bin/$(PROG) $(ROOTPROCBINSYMLINK)
 107 
 108 .KEEP_STATE:
 109 
 110 elfcap.o:       $(ELFCAP)/elfcap.c
 111                 $(COMPILE.c) -o $@ $(ELFCAP)/elfcap.c
 112 
 113 pmap_common.o:  $(PMAP)/pmap_common.c
 114                 $(COMPILE.c) -o $@ $(PMAP)/pmap_common.c
 115 
 116 %.o:    ../%.c
 117         $(COMPILE.c) $<
 118 
 119 all:    $(PROG) $(LN_$(PROG))
 120 
 121 ROOTBINLN=$(LN_$(PROG):%=$(ROOTBIN)/%)
 122 ROOTBINPROG=$(ROOTBIN)/$(PROG)
 123 ROOTPROCBINSYMLINK=$(ROOT)/usr/proc/bin/$(PROG)
 124 
 125 $(PROG): $$(OBJS)
 126         $(LINK.c) $(OBJS) -o $@ $(LDLIBS)
 127         $(POST_PROCESS)
 128 
 129 #
 130 # Install the ptool, symlinking it into /usr/proc/bin if PTOOL_TYPE is set
 131 # to LEGACY.
 132 #
 133 install: all $(ROOTISAPROG) $(ROOTISALN) $(ROOTBINLN)
 134         -$(RM) $(ROOTBINPROG)
 135         -$(LN) $(ISAEXEC) $(ROOTBINPROG)
 136         -$(INSTALL_$(PTOOL_TYPE))
 137 
 138 $(ROOTBINLN): $(ROOTISAPROG)
 139         -$(RM) $@
 140         -$(LN) $(ISAEXEC) $@
 141 
 142 $(ROOTISALN): $(ROOTISAPROG)
 143         -$(RM) $@
 144         -$(LN) $(ROOTISAPROG) $@
 145 
 146 $(LN_$(PROG)): $(PROG)
 147         -$(RM) $@
 148         -$(LN) $(PROG) $@
 149 
 150 clean:
 151         $(RM) $(OBJS)
 152 
 153 lint:
 154         $(LINT.c) $(SRCS) $(LDLIBS)