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