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  += -_gcc=-Wno-uninitialized
  66 
  67 CERRWARN_ptree  += -_gcc=-Wno-parentheses
  68 CERRWARN_ptree  += -_smatch=off
  69 
  70 CERRWARN_pstack += -_gcc=-Wno-uninitialized
  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 CPPFLAGS +=     $(CPPFLAGS_$(PROG))
  99 OBJS +=         $(OBJS_$(PROG))
 100 SRCS +=         $(SRCS_$(PROG))
 101 
 102 INSTALL_NEW=
 103 INSTALL_LEGACY=$(RM) $(ROOTPROCBINSYMLINK) ; \
 104         $(LN) -s ../../bin/$(PROG) $(ROOTPROCBINSYMLINK)
 105 
 106 .KEEP_STATE:
 107 
 108 elfcap.o:       $(ELFCAP)/elfcap.c
 109                 $(COMPILE.c) -o $@ $(ELFCAP)/elfcap.c
 110 
 111 pmap_common.o:  $(PMAP)/pmap_common.c
 112                 $(COMPILE.c) -o $@ $(PMAP)/pmap_common.c
 113 
 114 %.o:    ../%.c
 115         $(COMPILE.c) $<
 116 
 117 all:    $(PROG)
 118 
 119 ROOTBINPROG=$(ROOTBIN)/$(PROG)
 120 ROOTPROCBINSYMLINK=$(ROOT)/usr/proc/bin/$(PROG)
 121 
 122 $(PROG): $$(OBJS)
 123         $(LINK.c) $(OBJS) -o $@ $(LDLIBS)
 124         $(POST_PROCESS)
 125 
 126 #
 127 # Install the ptool, symlinking it into /usr/proc/bin if PTOOL_TYPE is set
 128 # to LEGACY.
 129 #
 130 install: all $(ROOTISAPROG)
 131         -$(RM) $(ROOTBINPROG)
 132         -$(LN) $(ISAEXEC) $(ROOTBINPROG)
 133         -$(INSTALL_$(PTOOL_TYPE))
 134 
 135 clean:
 136         $(RM) $(OBJS)
 137 
 138 lint:
 139         $(LINT.c) $(SRCS) $(LDLIBS)