The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/conf/kern.pre.mk

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 #
    2 # This Makefile covers the top part of the MI kernel build instructions
    3 #
    4 
    5 # Can be overridden by makeoptions or /etc/make.conf
    6 KERNEL?=        kernel
    7 
    8 # build this target if none is specified on the command line
    9 .MAIN:  all
   10 
   11 # Set the platform and machine architectures
   12 #
   13 P=      ${MACHINE_PLATFORM}
   14 M=      ${MACHINE_ARCH}
   15 
   16 SIZE?=          size
   17 OBJCOPY?=       objcopy
   18 
   19 COPTFLAGS?=-O -pipe
   20 #COPTFLAGS?=-O -fthread-jumps -fcse-follow-jumps -fcrossjumping -frerun-cse-after-loop -fno-guess-branch-probability --param min-crossjump-insns=1 -pipe
   21 #COPTFLAGS?=-O -fcrossjumping -pipe
   22 #COPTFLAGS?=-Os -fno-strict-aliasing -pipe
   23 #COPTFLAGS?=-O2 -fno-strict-aliasing -pipe
   24 .if !defined(NO_CPU_COPTFLAGS)
   25 COPTFLAGS+= ${_CPUCFLAGS}
   26 .endif
   27 # don't use -I- so we can use proper source-relative locality for local 
   28 # includes.
   29 #
   30 # -I.  - this is to access the opt_*.h and use_*.h header files generated
   31 #        in the kernel build directory.
   32 #
   33 # -Iinclude
   34 #       - this is used to access forwarding header files for
   35 #         <machine/*.h> that exist in the cpu architecture but do not
   36 #         exist in the platform (machine/) architecture.  This allows
   37 #         the platform to trivially override the cpu header files.
   38 #
   39 INCLUDES= -nostdinc -I. -Iinclude -I$S
   40 # This hack is to allow kernel compiles to succeed on machines w/out srcdist
   41 .if exists($S/../include)
   42 INCLUDES+= -I$S/../include
   43 .else
   44 INCLUDES+= -I/usr/include
   45 .endif
   46 
   47 # This hack lets us use the Intel ACPICA code without spamming a new
   48 # include path into 100+ source files.
   49 .include "$S/conf/acpi.mk"
   50 INCLUDES+= -I${.OBJDIR} -I"$S/${OSACPI_MI_DIR}" -I"$S/${ACPICA_DIR}/include"
   51 
   52 # ... and the same for Atheros HAL
   53 INCLUDES+= -I$S/dev/netif/ath/hal -I$S/dev/netif/ath/hal/ath_hal
   54 
   55 # Same thing for drm includes
   56 INCLUDES+= -I$S/dev/drm/include
   57 
   58 COPTS=  ${INCLUDES} ${IDENT} -D_KERNEL -include opt_global.h
   59 CFLAGS= ${COPTFLAGS} ${CWARNFLAGS} ${DEBUG} ${COPTS}
   60 
   61 # XXX LOCORE means "don't declare C stuff" not "for locore.s".
   62 ASM_CFLAGS= -x assembler-with-cpp -DLOCORE ${CFLAGS}
   63 
   64 DEFINED_PROF=   ${PROF}
   65 .if defined(PROF)
   66 CFLAGS+=        -falign-functions=16
   67 .if ${PROFLEVEL} >= 2
   68 IDENT+= -DGPROF4 -DGUPROF
   69 PROF+=  -mprofiler-epilogue
   70 .endif
   71 .endif
   72 
   73 # Put configuration-specific C flags last (except for ${PROF}) so that they
   74 # can override the others.
   75 CFLAGS+=        ${CONF_CFLAGS}
   76 
   77 NORMAL_C= ${CC} -c ${CFLAGS} ${PROF} ${.IMPSRC}
   78 NORMAL_C_C= ${CC} -c ${CFLAGS} ${PROF} ${.IMPSRC}
   79 NORMAL_S= ${CC} -c ${ASM_CFLAGS} ${.IMPSRC}
   80 PROFILE_C= ${CC} -c ${CFLAGS} ${.IMPSRC}
   81 
   82 NORMAL_M= awk -f $S/tools/makeobjops.awk -- -c $<; \
   83         ${CC} -c ${CFLAGS} ${PROF} ${.PREFIX}.c
   84 
   85 NORMAL_FW= uudecode -o ${.TARGET} ${.ALLSRC}
   86 NORMAL_FWO= ${LD} -b binary -d -warn-common -r -o ${.TARGET} ${.ALLSRC:M*.fw}
   87 
   88 .if !defined(NO_WERROR) && (${CCVER} == "gcc44" || ${CCVER} == "gcc47")
   89 WERROR=-Werror
   90 .endif
   91 
   92 GEN_CFILES= $S/platform/$P/$M/genassym.c
   93 SYSTEM_CFILES= ioconf.c config.c
   94 SYSTEM_SFILES= $S/platform/$P/$M/locore.s
   95 SYSTEM_DEP= Makefile ${SYSTEM_OBJS}
   96 SYSTEM_OBJS= locore.o ${OBJS} ioconf.o config.o hack.So
   97 SYSTEM_LD= @${LD} -Bdynamic -T $S/platform/$P/conf/ldscript.$M \
   98         -export-dynamic -dynamic-linker /red/herring \
   99         -o ${.TARGET} -X ${SYSTEM_OBJS} vers.o
  100 
  101 # The max-page-size for gnu ld is 0x200000 on x86_64
  102 # For the gold linker, it is only 0x1000 on both x86_64 and i386
  103 # The penalty for changing the gold default for x86_64 is larger binaries
  104 # and shared libraries, and forcing them to use more address space than
  105 # required.  The only application that needs such a large page size is the
  106 # kernel itself, so leave the gold default alone and treat the kernel
  107 # page size as an exception.
  108 #
  109 .if ${P} == "pc64" || ${P} == "vkernel64"
  110 SYSTEM_LD+= -z max-page-size=0x200000
  111 .elif ${P} == "pc32" || ${P} == "vkernel"
  112 SYSTEM_LD+= -z max-page-size=0x1000
  113 .endif
  114 
  115 SYSTEM_LD_TAIL= @${OBJCOPY} --strip-symbol gcc2_compiled. ${.TARGET} ; \
  116         ${SIZE} ${.TARGET} ; chmod 755 ${.TARGET}
  117 SYSTEM_DEP+= $S/platform/$P/conf/ldscript.$M
  118 
  119 # Normalize output files to make it absolutely crystal clear to
  120 # anyone examining the build directory.
  121 #
  122 .if defined(DEBUG)
  123 FULLKERNEL=     ${KERNEL}.debug
  124 .if defined(INSTALLSTRIPPED)
  125 SELECTEDKERNEL= ${KERNEL}.stripped
  126 .else
  127 SELECTEDKERNEL= ${KERNEL}.debug
  128 .endif
  129 .else
  130 FULLKERNEL=     ${KERNEL}.nodebug
  131 SELECTEDKERNEL= ${KERNEL}.stripped
  132 .endif
  133 
  134 
  135 MKMODULESENV=   MAKEOBJDIRPREFIX=${.OBJDIR} BUILDING_WITH_KERNEL=${.OBJDIR}
  136 .if defined(MODULES_OVERRIDE)
  137 MKMODULESENV+=  MODULES_OVERRIDE="${MODULES_OVERRIDE}"
  138 .endif
  139 .if defined(DEBUG)
  140 MKMODULESENV+=  DEBUG="${DEBUG}" DEBUG_FLAGS="${DEBUG}"
  141 .endif
  142 .if defined(INSTALLSTRIPPED) || defined(INSTALLSTRIPPEDMODULES)
  143 MKMODULESENV+=  INSTALLSTRIPPEDMODULES=1
  144 .endif
  145 MKMODULESENV+=  MACHINE_ARCH=${MACHINE_ARCH} MACHINE=${MACHINE} MACHINE_PLATFORM=${MACHINE_PLATFORM}
  146 

Cache object: 8a55bdccc4e60c03f17576d3b247b17c


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.