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 2009 Sun Microsystems, Inc.  All rights reserved.
  23 # Use is subject to license terms.
  24 #
  25 
  26 #
  27 # Copyright 2011 Nexenta Systems, Inc.  All rights reserved.
  28 # Copyright (c) 2012 by Delphix. All rights reserved.
  29 # Copyright (c) 2012 Joyent, Inc. All rights reserved.
  30 # Copyright 2018 Jason King
  31 #
  32 
  33 .KEEP_STATE:
  34 .SUFFIXES:
  35 
  36 SRCS += \
  37         ffs.c \
  38         mdb.c \
  39         mdb_addrvec.c \
  40         mdb_argvec.c \
  41         mdb_callb.c \
  42         mdb_cmdbuf.c \
  43         mdb_cmds.c \
  44         mdb_conf.c \
  45         mdb_context.c \
  46         mdb_create.c \
  47         mdb_ctf.c \
  48         mdb_ctf_open.c \
  49         mdb_debug.c \
  50         mdb_demangle.c \
  51         mdb_disasm.c \
  52         mdb_dump.c \
  53         mdb_err.c \
  54         mdb_evset.c \
  55         mdb_fdio.c \
  56         mdb_fmt.c \
  57         mdb_frame.c \
  58         mdb_gelf.c \
  59         mdb_help.c \
  60         mdb_io.c \
  61         mdb_kb_kvm.c \
  62         mdb_kproc.c \
  63         mdb_kvm.c \
  64         mdb_logio.c \
  65         mdb_list.c \
  66         mdb_macalias.c \
  67         mdb_main.c \
  68         mdb_memio.c \
  69         mdb_modapi.c \
  70         mdb_module.c \
  71         mdb_module_load.c \
  72         mdb_nm.c \
  73         mdb_nv.c \
  74         mdb_pipeio.c \
  75         mdb_print.c \
  76         mdb_proc.c \
  77         mdb_pservice.c \
  78         mdb_rawfile.c \
  79         mdb_set.c \
  80         mdb_shell.c \
  81         mdb_signal.c \
  82         mdb_stdlib.c \
  83         mdb_string.c \
  84         mdb_strio.c \
  85         mdb_tab.c \
  86         mdb_target.c \
  87         mdb_tdb.c \
  88         mdb_termio.c \
  89         mdb_typedef.c \
  90         mdb_umem.c \
  91         mdb_value.c \
  92         mdb_vcb.c \
  93         mdb_wcb.c \
  94         mdb_whatis.c
  95 
  96 $(NOT_RELEASE_BUILD)CPPFLAGS += -DDEBUG
  97 CPPFLAGS += -D_MDB -I. -I../.. -I../../../common
  98 
  99 CSTD=   $(CSTD_GNU99)
 100 C99LMODE=       -Xc99=%all
 101 
 102 LDLIBS += -lcurses -lkvm -lproc -lrtld_db -lctf -lumem -ldisasm -lscf
 103 LDLIBS += -ldemangle-sys
 104 
 105 CERRWARN += -_gcc=-Wno-uninitialized
 106 CERRWARN += -_gcc=-Wno-char-subscripts
 107 CERRWARN += -_gcc=-Wno-clobbered
 108 CERRWARN += -_gcc=-Wno-parentheses
 109 CERRWARN += -_gcc=-Wno-unused-label
 110 CERRWARN += -_gcc=-Wno-unused-variable
 111 
 112 #
 113 # -erroff=E_INCONS_ARG_DECL2 works around a problem where lint gets confused
 114 # about how struct mdb_tgt_gregset is used in mdb_tgt_stack_f() and
 115 # mdb_tgt_stack_iter_f(). Will be resolved as part of fix for CR 6749868.
 116 #
 117 LINTFLAGS += -n -errtags=yes -erroff=E_INCONS_ARG_DECL2
 118 LINTFILES = $(SRCS:%.c=%.ln)
 119 
 120 PROG = mdb
 121 OBJS = $(SRCS:%.c=%.o) mdb_lex.o mdb_grammar.o
 122 
 123 LINK = adb
 124 ROOTLINK = $(ROOTBIN)/$(LINK)
 125 ROOTLINK32 = $(LINK:%=$(ROOTBIN32)/%)
 126 ROOTLINK64 = $(LINK:%=$(ROOTBIN64)/%)
 127 
 128 .NO_PARALLEL:
 129 .PARALLEL: $(OBJS) $(LINTFILES)
 130 
 131 all: $(PROG)
 132 
 133 $(PROG): $(OBJS)
 134         $(LINK.c) $(OBJS) -o $@ $(LDLIBS)
 135         $(CTFMERGE) -L VERSION -o $@ $(OBJS)
 136         $(POST_PROCESS)
 137 
 138 $(ROOTLINK32): $(ROOTPROG32)
 139         $(RM) $@
 140         $(LN) $(ROOTPROG32) $@
 141 
 142 $(ROOTLINK64): $(ROOTPROG64)
 143         $(RM) $@
 144         $(LN) $(ROOTPROG64) $@
 145 
 146 mdb_lex.c: ../../../common/mdb/mdb_lex.l mdb_grammar.h
 147         $(LEX) $(LFLAGS) ../../../common/mdb/mdb_lex.l > $@
 148 
 149 mdb_grammar.h mdb_grammar.c: ../../../common/mdb/mdb_grammar.y
 150         $(YACC) $(YFLAGS) ../../../common/mdb/mdb_grammar.y
 151         @$(MV) y.tab.h mdb_grammar.h
 152         @$(MV) y.tab.c mdb_grammar.c
 153 
 154 mdb_lex.o mdb_grammar.o := CCVERBOSE =
 155 
 156 mdb_conf.o := CPPFLAGS += -DMDB_VERSION='$(MDB_VERSION)'
 157 
 158 inet_ntop.o := CPPFLAGS += -Dsnprintf=mdb_snprintf
 159 
 160 ffs.o ffs.ln := CPPFLAGS += -Dffs=mdb_ffs
 161 
 162 %.o: ../../../common/mdb/%.c
 163         $(COMPILE.c) $<
 164         $(CTFCONVERT_O)
 165 
 166 %.o: ../../mdb/%.c
 167         $(COMPILE.c) $<
 168         $(CTFCONVERT_O)
 169 
 170 %.o: %.c
 171         $(COMPILE.c) $<
 172         $(CTFCONVERT_O)
 173 
 174 %.o: $(SRC)/common/net/util/%.c
 175         $(COMPILE.c) $<
 176         $(CTFCONVERT_O)
 177 
 178 %.o: $(SRC)/common/util/%.c
 179         $(COMPILE.c) $<
 180         $(CTFCONVERT_O)
 181 
 182 clean.lint:
 183         $(RM) $(LINTFILES)
 184 
 185 clean:
 186         $(RM) $(OBJS)
 187         $(RM) mdb_lex.c mdb_grammar.c mdb_grammar.h y.tab.h y.tab.c y.output
 188 
 189 clobber: clean clean.lint
 190         $(RM) $(PROG)
 191 
 192 %.ln: ../../../common/mdb/%.c
 193         $(LINT.c) -c $<
 194 
 195 %.ln: ../../mdb/%.c
 196         $(LINT.c) -c $<
 197 
 198 %.ln: %.c
 199         $(LINT.c) -c $<
 200 
 201 %.ln: $(SRC)/common/net/util/%.c
 202         $(LINT.c) -c $<
 203 
 204 %.ln: $(SRC)/common/util/%.c
 205         $(LINT.c) -c $<
 206 
 207 lint: $(LINTFILES)
 208         $(LINT) $(LINTFLAGS) $(LINTFILES)
 209 
 210 dmods: