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 # uts/sparc/st/Makefile
  22 #
  23 # Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
  24 # Use is subject to license terms.
  25 # Copyright (c) 2011 Bayard G. Bell. All rights reserved.
  26 #
  27 #       This makefile drives the production of the st driver kernel module.
  28 #
  29 #       sparc architecture dependent
  30 #
  31 
  32 #
  33 #       Path to the base of the uts directory tree (usually /usr/src/uts).
  34 #
  35 UTSBASE = ../..
  36 
  37 #
  38 #       Define the module and object file sets.
  39 #
  40 MODULE          = st
  41 OBJECTS         = $(ST_OBJS:%=$(OBJS_DIR)/%)
  42 LINTS           = $(ST_OBJS:%.o=$(LINTS_DIR)/%.ln)
  43 ROOTMODULE      = $(ROOT_DRV_DIR)/$(MODULE)
  44 CONF_SRCDIR     = $(UTSBASE)/sun/io/scsi/targets
  45 WARLOCK_OUT     = $(ST_OBJS:%.o=%.ll)
  46 WARLOCK_OK      = $(MODULE).ok
  47 WLCMD_DIR       = $(UTSBASE)/common/io/warlock
  48 
  49 #
  50 #       Include common rules.
  51 #
  52 include $(UTSBASE)/sparc/Makefile.sparc
  53 
  54 #
  55 #       Define targets
  56 #
  57 ALL_TARGET      = $(BINARY) $(SRC_CONFILE)
  58 LINT_TARGET     = $(MODULE).lint
  59 INSTALL_TARGET  = $(BINARY) $(ROOTMODULE) $(ROOT_CONFFILE)
  60 
  61 # 
  62 # lint pass one enforcement 
  63 # 
  64 CFLAGS += $(CCVERBOSE)
  65 
  66 #
  67 # Define dependency on scsi
  68 #
  69 LDFLAGS += -dy -N misc/scsi
  70 
  71 #
  72 # For now, disable these lint checks; maintainers should endeavor
  73 # to investigate and remove these for maximum lint coverage.
  74 # Please do not carry these forward to new Makefiles.
  75 #
  76 LINTTAGS        += -erroff=E_BAD_PTR_CAST_ALIGN
  77 LINTTAGS        += -erroff=E_ASSIGN_NARROW_CONV
  78 LINTTAGS        += -erroff=E_SUSPICIOUS_COMPARISON
  79 
  80 CERRWARN        += -_gcc=-Wno-parentheses
  81 CERRWARN        += -_gcc=-Wno-switch
  82 CERRWARN        += -_gcc=-Wno-uninitialized
  83 
  84 #
  85 #       Default build targets.
  86 #
  87 .KEEP_STATE:
  88 
  89 all:            $(ALL_DEPS)
  90 
  91 def:            $(DEF_DEPS)
  92 
  93 clean:          $(CLEAN_DEPS)
  94                 $(RM) $(WARLOCK_OUT) $(WARLOCK_OK)
  95 
  96 clobber:        $(CLOBBER_DEPS)
  97                 $(RM) $(WARLOCK_OUT) $(WARLOCK_OK)
  98 
  99 lint:           $(LINT_DEPS)
 100 
 101 modlintlib:     $(MODLINTLIB_DEPS)
 102 
 103 clean.lint:     $(CLEAN_LINT_DEPS)
 104 
 105 install:        $(INSTALL_DEPS)
 106 
 107 #       Include common targets.
 108 #
 109 include $(UTSBASE)/sparc/Makefile.targ
 110 
 111 #
 112 #       Defines for local commands.
 113 #
 114 WARLOCK         = warlock
 115 WLCC            = wlcc
 116 TOUCH           = touch
 117 TEST            = test
 118 
 119 #
 120 # Warlock targets
 121 #
 122 # Note that in warlock_with_{esp,isp} it is important to load st.ll
 123 # before {isp,esp}.ll; the reason is that both have _init/_info/_fini
 124 # and warlock can only handle one extern function by a given name;
 125 # any loaded after the first are ignored.
 126 
 127 SCSI_FILES = $(SCSI_OBJS:%.o=-l ../scsi/%.ll)
 128 
 129 WARLOCK_TARGETS =  warlock_alone warlock_with_esp warlock_with_fas
 130 
 131 warlock: $(WARLOCK_TARGETS)
 132 
 133 warlock_alone: $(WARLOCK_OK)
 134 
 135 warlock_with_esp: $(WLCMD_DIR)/st_with_esp.wlcmd $(WARLOCK_OUT) scsi_files \
 136         esp_files warlock_ddi.files
 137         $(WARLOCK) -c $(WLCMD_DIR)/st_with_esp.wlcmd \
 138                 $(WARLOCK_OUT) ../esp/esp $(SCSI_FILES)  \
 139                 -l ../warlock/ddi_dki_impl.ll
 140 
 141 warlock_with_fas: $(WLCMD_DIR)/st_with_fas.wlcmd $(WARLOCK_OUT) scsi_files \
 142         fas_files warlock_ddi.files
 143         $(WARLOCK) -c $(WLCMD_DIR)/st_with_fas.wlcmd \
 144                 $(WARLOCK_OUT) \
 145                 ../fas/fas ../fas/fas_callbacks \
 146                 $(SCSI_FILES)  \
 147                 -l ../warlock/ddi_dki_impl.ll
 148 
 149 scsi_files:
 150         @cd ../scsi; pwd; $(MAKE) warlock
 151 
 152 esp_files:
 153         @cd ../esp; pwd; $(MAKE) warlock
 154 
 155 fas_files:
 156         @cd ../fas; pwd; $(MAKE) warlock
 157 
 158 st.ok: $(WLCMD_DIR)/st.wlcmd st.ll st_conf.ll  scsi_files warlock_ddi.files
 159         $(WARLOCK) -c $(WLCMD_DIR)/st.wlcmd $(WARLOCK_OUT) $(SCSI_FILES) \
 160         -l ../warlock/ddi_dki_impl.ll
 161         $(TOUCH) $@
 162 
 163 %.ll: $(UTSBASE)/common/io/scsi/targets/%.c
 164         $(WLCC) $(CPPFLAGS) -DDEBUG -o $@ $<
 165 
 166 warlock_ddi.files:
 167         @cd ../warlock; pwd; $(MAKE) warlock
 168 
 169 scsi.files:
 170         @cd ../scsi; pwd; $(MAKE) warlock