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
16 #
17 # This makefile drives the production of the Chelsio Terminator 4 10G Ethernet
18 # (CXGBE) driver nexus modules on x86 systems.
19 #
20
21 #
22 # Paths to the base of the uts directory trees
23 #
24 UTSBASE = ../../..
25
26 #
27 # Define the module and object file sets.
28 #
29 MODULE = t4nex
30 OBJECTS = $(CXGBE_COM_OBJS:%=$(OBJS_DIR)/%) \
31 $(CXGBE_FW_OBJS:%=$(OBJS_DIR)/%) \
32 $(CXGBE_NEX_OBJS:%=$(OBJS_DIR)/%)
33 LINTS = $(CXGBE_COM_OBJS:%.o=$(LINTS_DIR)/%.ln) \
34 $(CXGBE_FW_OBJS:%.o=$(LINTS_DIR)/%.ln) \
35 $(CXGBE_NEX_OBJS:%.o=$(LINTS_DIR)/%.ln)
36 ROOTMODULE = $(ROOT_DRV_DIR)/$(MODULE)
37
38 #
39 # Include common rules
40 #
41 include $(UTSBASE)/intel/Makefile.intel
42
43 #
44 # Define targets
45 #
46 ALL_TARGET = $(BINARY)
47 LINT_TARGET = $(MODULE).lint
48 INSTALL_TARGET = $(BINARY) $(ROOTMODULE)
49
50 CFLAGS += -g -I$(UTSBASE)/common/io/cxgbe -I$(UTSBASE)/common/io/cxgbe/common \
51 -I$(UTSBASE)/common/io/cxgbe/t4nex -I$(UTSBASE)/common/io/cxgbe/shared \
52 -I$(UTSBASE)/common/io/cxgbe/firmware
53
54 #
55 # Driver depends
56 #
57 LDFLAGS += -dy -N misc/mac -N drv/ip
58
59 #
60 # Lint
61 #
62 LINTFLAGS += -I$(UTSBASE)/common/io/cxgbe -I$(UTSBASE)/common/io/cxgbe/common \
63 -I$(UTSBASE)/common/io/cxgbe/t4nex -I$(UTSBASE)/common/io/cxgbe/shared \
64 -I$(UTSBASE)/common/io/cxgbe/firmware
65 LINTFLAGS += -Xc99=%all
66
67 #
68 # A lot of these come from the fact that there are static inlines and
69 # that this driver leverages various C99 and some GNU C extensions.
70 #
71 LINTTAGS += -erroff=E_STATIC_UNUSED
72 LINTTAGS += -erroff=E_FUNC_ARG_UNUSED
73 LINTTAGS += -erroff=E_ZERO_OR_NEGATIVE_SUBSCRIPT
74 LINTTAGS += -erroff=E_ZERO_SIZED_STRUCT_UNION
75 LINTTAGS += -erroff=E_ANONYMOUS_UNION_DECL
76 LINTTAGS += -erroff=E_CONSTANT_CONDITION
77
78 #
79 # These have been manually verified at the moment. When updating this
80 # driver, please manually check the following lint warnings. Note some
81 # of these are due to limitations in Sun Studio.
82 #
83 LINTTAGS += -erroff=E_BAD_PTR_CAST_ALIGN
84 LINTTAGS += -erroff=E_ENUM_VAL_OVERFLOWS_INT_MAX
85 LINTTAGS += -erroff=E_FUNC_NO_RET_VAL
86 LINTTAGS += -erroff=E_NOP_IF_STMT
87 LINTTAGS += -erroff=E_FUNC_SET_NOT_USED
88 LINTTAGS += -erroff=E_FUNC_RET_ALWAYS_IGNOR2
89 LINTTAGS += -erroff=E_FUNC_RET_MAYBE_IGNORED2
90 LINTTAGS += -erroff=E_CASE_FALLTHRU
91 LINTTAGS += -erroff=E_ASSIGN_NARROW_CONV
92
93 #
94 # Default build targets.
95 #
96 .KEEP_STATE:
97
98 def: $(DEF_DEPS)
99
100 all: $(ALL_DEPS)
101
102 clean: $(CLEAN_DEPS)
103
104 clobber: $(CLOBBER_DEPS)
105
106 lint: $(LINT_DEPS)
107
108 modlintlib: $(MODLINTLIB_DEPS)
109
110 clean.lint: $(CLEAN_LINT_DEPS)
111
112 install: $(INSTALL_DEPS)
113
114 #
115 # Include common targets.
116 #
117 include $(UTSBASE)/intel/Makefile.targ