Home | History | Annotate | Download | only in genunix
      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 usr/src/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 usr/src/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 #
     23 # Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
     24 # Use is subject to license terms.
     25 #
     26 
     27 #
     28 #	This makefile drives the production of the generic
     29 #	unix kernel module.
     30 #
     31 #	x86 implementation architecture dependent
     32 #
     33 
     34 #
     35 #	Path to the base of the uts directory tree (usually /usr/src/uts).
     36 #
     37 UTSBASE	= ../..
     38 
     39 #
     40 #	Define the module and object file sets.
     41 #
     42 MODULE		= genunix
     43 GENUNIX		= $(OBJS_DIR)/$(MODULE)
     44 
     45 OBJECTS		= $(GENUNIX_OBJS:%=$(OBJS_DIR)/%) \
     46 		  $(NOT_YET_KMODS:%=$(OBJS_DIR)/%)
     47 
     48 LINTS		= $(GENUNIX_OBJS:%.o=$(LINTS_DIR)/%.ln) \
     49 		  $(NOT_YET_KMODS:%.o=$(LINTS_DIR)/%.ln)
     50 
     51 ROOTMODULE	= $(ROOT_KERN_DIR)/$(MODULE)
     52 
     53 LIBGEN		= $(OBJS_DIR)/libgenunix.so
     54 LIBSTUBS	= $(GENSTUBS_OBJS:%=$(OBJS_DIR)/%)
     55 
     56 #
     57 #	Include common rules.
     58 #
     59 include $(UTSBASE)/intel/Makefile.intel
     60 
     61 #
     62 #	Define targets
     63 #
     64 ALL_TARGET	= $(LIBGEN)
     65 LINT_TARGET	= $(MODULE).lint
     66 INSTALL_TARGET	= $(GENUNIX) $(ROOTMODULE)
     67 
     68 #
     69 #	Overrides
     70 #
     71 CLEANFILES	+= $(LIBSTUBS) $(LIBGEN)
     72 BINARY		=
     73 
     74 #
     75 # Non-patch genunix builds merge a version of the ip module called ipctf.  This
     76 # is to ensure that the common network-related types are included in genunix and
     77 # can thus be uniquified out of other modules.  We don't want to do this for
     78 # patch builds, since we can't guarantee that ip and genunix will be in the same
     79 # patch.
     80 #
     81 IPCTF_TARGET	= $(IPCTF)
     82 $(PATCH_BUILD)IPCTF_TARGET =
     83 
     84 CPPFLAGS	+= -I$(SRC)/common
     85 CPPFLAGS	+= -I$(SRC)/uts/common/fs/zfs
     86 
     87 CPPFLAGS	+= -I$(UTSBASE)/i86pc
     88 
     89 #
     90 # For now, disable these lint checks; maintainers should endeavor
     91 # to investigate and remove these for maximum lint coverage.
     92 # Please do not carry these forward to new Makefiles.
     93 #
     94 LINTTAGS	+= -erroff=E_SUSPICIOUS_COMPARISON
     95 LINTTAGS	+= -erroff=E_BAD_PTR_CAST_ALIGN
     96 LINTTAGS	+= -erroff=E_SUPPRESSION_DIRECTIVE_UNUSED
     97 LINTTAGS	+= -erroff=E_STATIC_UNUSED
     98 LINTTAGS	+= -erroff=E_PTRDIFF_OVERFLOW
     99 LINTTAGS	+= -erroff=E_ASSIGN_NARROW_CONV
    100 
    101 #
    102 # Ensure that lint sees 'struct cpu' containing a fully declared
    103 # embedded 'struct machcpu'
    104 #
    105 LINTFLAGS	+= -D_MACHDEP -I../../i86pc
    106 
    107 #
    108 #	Default build targets.
    109 #
    110 .KEEP_STATE:
    111 
    112 def:		$(DEF_DEPS)
    113 
    114 all:		$(ALL_DEPS)
    115 
    116 clean:		$(CLEAN_DEPS)
    117 
    118 clobber:	$(CLOBBER_DEPS)
    119 
    120 lint:		$(LINT_DEPS)
    121 
    122 modlintlib:	$(MODLINTLIB_DEPS)
    123 
    124 clean.lint:	$(CLEAN_LINT_DEPS)
    125 
    126 install:	$(INSTALL_DEPS)
    127 
    128 $(LIBGEN):	$(GENUNIX) $(LIBSTUBS)
    129 	$(BUILD.SO) $(GENUNIX) $(LIBSTUBS)
    130 
    131 $(IPCTF_TARGET) ipctf_target: FRC
    132 	@cd $(IPDRV_DIR); pwd; $(MAKE) ipctf.$(OBJS_DIR)
    133 	@pwd
    134 
    135 $(GENUNIX): $(IPCTF_TARGET) $(OBJECTS)
    136 	$(LD) -r $(LDFLAGS) -o $@ $(OBJECTS)
    137 	$(CTFMERGE_GENUNIX_MERGE)
    138 	$(POST_PROCESS)
    139 
    140 #
    141 #	Include common targets.
    142 #
    143 include $(UTSBASE)/intel/Makefile.targ
    144 
    145 #
    146 #	Software workarounds for hardware "features".
    147 #
    148 include	$(UTSBASE)/i86pc/Makefile.workarounds
    149 
    150 ALL_DEFS += $(WORKAROUND_DEFS)
    151 
    152 #
    153 # Override.
    154 #
    155 $(MODULE).lint := GEN_LINT_LIB =
    156