1 # 2 # This file and its contents are supplied under the terms of the 3 # Common Development and Distribution License ("CDDL"), version 1.0. 4 # You may only use this file in accordance with the terms of version 5 # 1.0 of the CDDL. 6 # 7 # A full copy of the text of the CDDL should have accompanied this 8 # source. A copy of the CDDL is also available via the Internet at 9 # http://www.illumos.org/license/CDDL. 10 # 11 12 # 13 # Copyright (c) 2013 by Chelsio Communications, Inc. All rights reserved. 14 # 15 # Copyright (c) 2018, Joyent, Inc. 16 17 # 18 # This makefile drives the production of the Chelsio Terminator 4 10G Ethernet 19 # (CXGBE) driver nexus modules on x86 systems. 20 # 21 22 # 23 # Paths to the base of the uts directory trees 24 # 25 UTSBASE = ../../.. 26 27 # 28 # Define the module and object file sets. 29 # 30 MODULE = t4nex 31 OBJECTS = $(CXGBE_COM_OBJS:%=$(OBJS_DIR)/%) \ 32 $(CXGBE_FW_OBJS:%=$(OBJS_DIR)/%) \ 33 $(CXGBE_NEX_OBJS:%=$(OBJS_DIR)/%) 34 LINTS = $(CXGBE_COM_OBJS:%.o=$(LINTS_DIR)/%.ln) \ 35 $(CXGBE_FW_OBJS:%.o=$(LINTS_DIR)/%.ln) \ 36 $(CXGBE_NEX_OBJS:%.o=$(LINTS_DIR)/%.ln) 37 ROOTMODULE = $(ROOT_DRV_DIR)/$(MODULE) 38 39 # 40 # Include common rules 41 # 42 include $(UTSBASE)/intel/Makefile.intel 43 44 # 45 # Define targets 46 # 47 ALL_TARGET = $(BINARY) 48 LINT_TARGET = $(MODULE).lint 49 INSTALL_TARGET = $(BINARY) $(ROOTMODULE) 50 51 CFLAGS += -g -I$(UTSBASE)/common/io/cxgbe -I$(UTSBASE)/common/io/cxgbe/common \ 52 -I$(UTSBASE)/common/io/cxgbe/t4nex -I$(UTSBASE)/common/io/cxgbe/shared \ 53 -I$(UTSBASE)/common/io/cxgbe/firmware 54 55 # 56 # Driver depends 57 # 58 LDFLAGS += -dy -N misc/mac -N drv/ip 59 60 # 61 # Lint 62 # 63 LINTFLAGS += -I$(UTSBASE)/common/io/cxgbe -I$(UTSBASE)/common/io/cxgbe/common \ 64 -I$(UTSBASE)/common/io/cxgbe/t4nex -I$(UTSBASE)/common/io/cxgbe/shared \ 65 -I$(UTSBASE)/common/io/cxgbe/firmware 66 LINTFLAGS += -Xc99=%all 67 68 # 69 # A lot of these come from the fact that there are static inlines and 70 # that this driver leverages various C99 and some GNU C extensions. 71 # 72 LINTTAGS += -erroff=E_STATIC_UNUSED 73 LINTTAGS += -erroff=E_FUNC_ARG_UNUSED 74 LINTTAGS += -erroff=E_ZERO_OR_NEGATIVE_SUBSCRIPT 75 LINTTAGS += -erroff=E_ZERO_SIZED_STRUCT_UNION 76 LINTTAGS += -erroff=E_ANONYMOUS_UNION_DECL 77 LINTTAGS += -erroff=E_CONSTANT_CONDITION 78 79 # 80 # These have been manually verified at the moment. When updating this 81 # driver, please manually check the following lint warnings. Note some 82 # of these are due to limitations in Sun Studio. 83 # 84 LINTTAGS += -erroff=E_BAD_PTR_CAST_ALIGN 85 LINTTAGS += -erroff=E_ENUM_VAL_OVERFLOWS_INT_MAX 86 LINTTAGS += -erroff=E_FUNC_NO_RET_VAL 87 LINTTAGS += -erroff=E_NOP_IF_STMT 88 LINTTAGS += -erroff=E_FUNC_SET_NOT_USED 89 LINTTAGS += -erroff=E_FUNC_RET_ALWAYS_IGNOR2 90 LINTTAGS += -erroff=E_FUNC_RET_MAYBE_IGNORED2 91 LINTTAGS += -erroff=E_CASE_FALLTHRU 92 LINTTAGS += -erroff=E_ASSIGN_NARROW_CONV 93 94 # needs work 95 SMATCH=off 96 97 # 98 # Default build targets. 99 # 100 .KEEP_STATE: 101 102 def: $(DEF_DEPS) 103 104 all: $(ALL_DEPS) 105 106 clean: $(CLEAN_DEPS) 107 108 clobber: $(CLOBBER_DEPS) 109 110 lint: $(LINT_DEPS) 111 112 modlintlib: $(MODLINTLIB_DEPS) 113 114 clean.lint: $(CLEAN_LINT_DEPS) 115 116 install: $(INSTALL_DEPS) 117 118 # 119 # Include common targets. 120 # 121 include $(UTSBASE)/intel/Makefile.targ