Home | History | Annotate | Download | only in qlc
      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 src/sun_nws/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 src/sun_nws/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 #ident	"@(#)Makefile	1.3	08/02/27 SMI"
     26 #
     27 # src/sun_nws/qlc/Makefile
     28 #
     29 
     30 include ../Makefile.config
     31 include ../Makefile.drvrs
     32 
     33 # The following two lines make sure that on sparc the 64 bit version is the
     34 # only one built (sparcv9) and or x86 the 32 bit and 64 bit versions are both
     35 # built.
     36 BUILD32	= $(MACH32:sparc=$(POUND_SIGN))
     37 BUILD32	= $(MACH32:i386=)
     38 
     39 .KEEP_STATE:
     40 
     41 # Staging Areas
     42 # -------------
     43 sparc_STAGING32	        = $(PROTO_ROOT)/kernel/drv
     44 sparc_STAGING64	        = $(STAGING32)/sparcv9
     45 
     46 i386_STAGING32	        = $(PROTO_ROOT)/kernel/drv
     47 i386_STAGING64	        = $(STAGING32)/amd64
     48 
     49 STAGING32	        = $($(MACH)_STAGING32)
     50 STAGING64	        = $($(MACH)_STAGING64)
     51 
     52 STAGINGMDB32		= $(PROTO_ROOT)/usr/lib/mdb/kvm
     53 sparc_STAGINGMDB64	= $(STAGINGMDB32)/sparcv9
     54 i386_STAGINGMDB64	= $(STAGINGMDB32)/amd64
     55 STAGINGMDB64		= $($(MACH)_STAGINGMDB64)
     56 
     57 STAGINGMISC32		= $(PROTO_ROOT)/kernel/misc/qlc
     58 sparc_STAGINGMISC64	= $(STAGINGMISC32)/sparcv9
     59 i386_STAGINGMISC64	= $(STAGINGMISC32)/amd64
     60 STAGINGMISC64		= $($(MACH)_STAGINGMISC64)
     61 
     62 
     63 all:
     64 	@if [ -f src/qlc.conf ]; then \
     65 		/usr/bin/rm -f src/qlc.conf ; \
     66 	fi
     67 	@if [ -f src/ql.conf ] ; then \
     68 		$(CP) src/ql.conf src/qlc.conf ; \
     69 	fi
     70 
     71 # Module Macros
     72 # -------------
     73 MODULE  	 = qlc
     74 CONFFILE	 = qlc.conf
     75 MODULE_PKGS	 = SUNWqlc
     76 MODULE_PKGS     += SUNWqlcu
     77 CLASS_ACTIONS	 = $(CLASS_ACTIONS_DIR)/i.qlc
     78 PKG_PROJ_DEPENDS = fctl
     79 
     80 FWTABLE		 = ql_fw_table.c
     81 FWIMAGES	 = 2200
     82 FWIMAGES	+= 2300
     83 FWIMAGES	+= 2400
     84 FWIMAGES	+= 2500
     85 FWIMAGES	+= 6322
     86 
     87 MODULE_SRC	 = ql_api.c
     88 MODULE_SRC	+= ql_debug.c
     89 MODULE_SRC	+= ql_fw_table.c
     90 MODULE_SRC	+= ql_hba_fru.c
     91 MODULE_SRC	+= ql_init.c
     92 MODULE_SRC	+= ql_iocb.c
     93 MODULE_SRC	+= ql_ioctl.c
     94 MODULE_SRC	+= ql_isr.c
     95 MODULE_SRC	+= ql_mbx.c
     96 MODULE_SRC	+= ql_xioctl.c
     97 
     98 MDBMOD_LIST     += ql_mdb
     99 
    100 FWMODULES	 = $(FWIMAGES:%=$(MODULE)_fw_%)
    101 FWMODULES_SRC	 = $(FWIMAGES:%=src/ql_fw_%.c)
    102 
    103 MISCMODULES	 = $(FWMODULES)
    104 
    105 #
    106 #       Qlogic Specific CFLAGS
    107 #
    108 CFLAGS32           += -D_KERNEL
    109 LFLAGS32           += -Xc99=all
    110 
    111 LFLAGS64           += -Xc99=all
    112 
    113 C99MODE            += -xc99=all
    114 sparc_C_PICFLAGS    = -K pic
    115 i386_C_PICFLAGS     = -K pic
    116 
    117 # Kernel Module Dependencies
    118 # --------------------------
    119 LDFLAGS += -dy -Nmisc/fctl
    120 
    121 # Module Object Files
    122 # -------------------
    123 $(BUILD32)MODULE_OBJ_32	 = $(MODULE_SRC:%.c=$(OBJ32)/%.o)
    124 $(BUILD64)MODULE_OBJ_64	 = $(MODULE_SRC:%.c=$(OBJ64)/%.o)
    125 
    126 MDBMODS32	         = $(MDBMOD_LIST:%=$(OBJ32)/%.so)
    127 MDBMODS64	         = $(MDBMOD_LIST:%=$(OBJ64)/%.so)
    128 
    129 # Handle creating our directories when needed
    130 DIRS		        += $(STAGINGMDB32)
    131 $(BUILD64)DIRS	        += $(STAGINGMDB64)
    132 DIRS		        += $(STAGINGMISC32)
    133 $(BUILD64)DIRS	        += $(STAGINGMISC64)
    134 
    135 # Module Binary Files
    136 # -------------------
    137 $(BUILD32)BINARY32	 = $(OBJ32)/$(MODULE) $(OBJ32)/$(MODULE).so
    138 $(BUILD32)BINARY32	+= $(MISCMODULES:%=$(OBJ32)/%)
    139 $(BUILD64)BINARY64	 = $(OBJ64)/$(MODULE) $(OBJ64)/$(MODULE).so
    140 $(BUILD64)BINARY64	+= $(MISCMODULES:%=$(OBJ64)/%)
    141 BINARIES		 = $(BINARY32) $(BINARY64)
    142 
    143 $(BUILD32)LINT_TARGETS	 = lint32
    144 $(BUILD64)LINT_TARGETS  += lint64
    145 
    146 COMMON_INCLUDES	         = -I$(MOD_INC_FCTL)
    147 COMMON_INCLUDES	        += -I$(COM_INC_FC)
    148 COMMON_INCLUDES	        += -I$(COMMON_FC_IMPL_HDRS_DIR)
    149 
    150 MDB_INCLUDES             = -I$(MOD_INC_QLC)
    151 MDB_INCLUDES            += $(COMMON_INCLUDES)
    152 MDB_INCLUDES            += -I$(ON_REF_GATE)/proto/root_sparc-nd/usr/include/
    153 
    154 $(BUILD32)ALLPREQ 	+= $(OBJ32)
    155 $(BUILD64)ALLPREQ 	+= $(OBJ64)
    156 ALLPREQ			+= .WAIT
    157 ALLPREQ			+= $(BINARIES)
    158 
    159 INSTALLPREQ		 = all
    160 INSTALLPREQ		+= .WAIT
    161 $(BUILD32)INSTALLPREQ	+= $(STAGING32)
    162 $(BUILD64)INSTALLPREQ	+= $(STAGING64)
    163 $(BUILD32)INSTALLPREQ	+= $(STAGINGMDB32)
    164 $(BUILD64)INSTALLPREQ	+= $(STAGINGMDB64)
    165 $(BUILD32)INSTALLPREQ	+= $(STAGINGMISC32)
    166 $(BUILD64)INSTALLPREQ	+= $(STAGINGMISC64)
    167 INSTALLPREQ		+= .WAIT
    168 INSTALLPREQ		+= $(STAGING32)/$(CONFFILE)
    169 $(BUILD32)INSTALLPREQ	+= $(STAGING32)/$(MODULE)
    170 $(BUILD64)INSTALLPREQ	+= $(STAGING64)/$(MODULE)
    171 $(BUILD32)INSTALLPREQ	+= $(MISCMODULES:%=$(STAGINGMISC32)/%)
    172 $(BUILD64)INSTALLPREQ	+= $(MISCMODULES:%=$(STAGINGMISC64)/%)
    173 INSTALLPREQ		+= .WAIT
    174 $(BUILD32)INSTALLPREQ	+= $(STAGINGMDB32)/$(MODULE).so
    175 $(BUILD64)INSTALLPREQ	+= $(STAGINGMDB64)/$(MODULE).so
    176 
    177 PKGPREQ			 = install 
    178 PKGPREQ			+= $(PKGAREA) 
    179 PKGPREQ			+= .WAIT
    180 PKGPREQ			+= $(MODULE_PKGS:%=$(PKGAREA)/%)
    181 PKGPREQ 	        += $(PKG_PROJ_DEPENDS:%=%_installed)
    182 PKGPREQ 	        += $(MODULE_PKGS:%=$(PKGAREA)/%)
    183 
    184 #
    185 #	Qlogic MDB Specifications
    186 #
    187 
    188 MDB_CFLAGS          = -v
    189 MDB_CFLAGS         += -xstrconst
    190 MDB_CFLAGS         += -Kpic
    191 MDB_CFLAGS         += -xc99=all
    192 MDB_CFLAGS         += -D_KERNEL
    193 MDB_CFLAGS         += -dy
    194 MDB_CFLAGS         += -xO3
    195 MDB_LDFLAGS         = -Wl,-z,text
    196 
    197 sparc_MDB_CFLAGS64  = $(MDB_CFLAGS) -xarch=v9
    198 sparc_MDB_LDFLAGS64  = $(MDB_LDFLAGS)
    199 
    200 i386_MDB_CFLAGS64   = $(MDB_CFLAGS) -xarch=amd64
    201 i386_MDB_LDFLAGS64   = $(MDB_LDFLAGS)
    202 
    203 MDB_CFLAGS64        = $($(MACH)_MDB_CFLAGS64)
    204 MDB_LDFLAGS64       = $($(MACH)_MDB_LDFLAGS64)
    205 
    206 # Special QLogic MDB compile commands
    207 
    208 $(OBJ32)/$(MODULE).so: src/$(MDBMOD_LIST).c
    209 	$(CC) $(MDB_CFLAGS) $(MDB_INCLUDES) -c -o $(OBJ32)/$(@F:%.so=%.o) \
    210 		src/$(MDBMOD_LIST).c
    211 	$(CC) $(MDB_CFLAGS) -G $(MDB_LDFLAGS) -o $@ $(OBJ32)/$(@F:%.so=%.o)
    212 
    213 $(OBJ64)/$(MODULE).so: src/$(MDBMOD_LIST).c
    214 	$(CC) $(MDB_CFLAGS64) $(MDB_INCLUDES) -c -o $(OBJ64)/$(@F:%.so=%.o) \
    215 		src/$(MDBMOD_LIST).c
    216 	$(CC) $(MDB_CFLAGS64) -G $(MDB_LDFLAGS64) -o $@ $(OBJ64)/$(@F:%.so=%.o)
    217 
    218 # Special QLogic FW compile commands
    219 
    220 $(OBJ32)/qlc_fw_%: $(OBJ32)/ql_fw_%.o
    221 	$(LD) -r $(LDFLAGS) -o $@ $<
    222 
    223 $(OBJ64)/qlc_fw_%: $(OBJ64)/ql_fw_%.o
    224 	$(LD) -r $(LDFLAGS) -o $@ $<
    225 
    226 # Form ql_fw_table.c source file containing firmware images names and versions
    227 # for use in driver-firmware version match checking
    228 
    229 src/$(FWTABLE): $(FWMODULES_SRC)
    230 	/usr/bin/rm -f $@
    231 	echo '#include <ql_apps.h>'		>> $@
    232 	echo '#include <ql_api.h>'		>> $@
    233 	echo 'struct fw_table fw_table[] = {'	>> $@
    234 	grep FW_VERSION_STRING $(FWMODULES_SRC)	|\
    235 	grep '#define'				|\
    236 	sed 's/[0-9]"/& },/'			|\
    237 	sed 's/src\/ql_fw_/{ 0x/'		|\
    238 	sed 's/.c:#define/,/'			|\
    239 	sed 's/FW_VERSION_STRING//'		>> $@
    240 	echo '};'				>> $@
    241 
    242 
    243 CLEANFILES               = $(MODULE_OBJ_32) $(MODULE_OBJ_64)
    244 CLEANFILES              += src/$(CONFFILE) src/$(FWTABLE)
    245 CLEANFILES  	        += $(OBJ)*/*.so
    246 CLEANFILES  	        += $(OBJ)*/*.o
    247 
    248 CLEANWARFILES            = 
    249 
    250 CLOBBERFILES             = $(CLEANFILES)
    251 CLOBBERFILES            += $(CLEANWARFILES)
    252 CLOBBERFILES            += $(MOD_LINT_LIB)
    253 
    254 NUKEFILES                = $(CLOBBERFILES)
    255 NUKEFILES               += $(STAGING32)/$(CONFFILE)
    256 NUKEFILES               += $(STAGING32)/$(MODULE)
    257 NUKEFILES               += $(STAGING64)/$(MODULE)
    258 NUKEFILES               += $(MISCMODULES:%=$(STAGINGMISC32)/%
    259 NUKEFILES               += $(MISCMODULES:%=$(STAGINGMISC64)/%
    260 NUKEFILES               += $(MDBMOD_LIST:%=$(STAGINGMDB32)/%.so)
    261 NUKEFILES               += $(MDBMOD_LIST:%=$(STAGINGMDB64)/%.so)
    262 NUKEFILES               += $(MODULE_PKGS:%=$(PKGAREA)/%)
    263 
    264 include ../Makefile.common
    265