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