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