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/i386/conf/Makefile.i386

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 # Makefile.i386 -- with config changes.
    2 # Copyright 1990 W. Jolitz
    3 #       from: @(#)Makefile.i386 7.1 5/10/91
    4 # $FreeBSD$
    5 #
    6 # Makefile for FreeBSD
    7 #
    8 # This makefile is constructed from a machine description:
    9 #       config machineid
   10 # Most changes should be made in the machine description
   11 #       /sys/i386/conf/``machineid''
   12 # after which you should do
   13 #        config machineid
   14 # Generic makefile changes should be made in
   15 #       /sys/i386/conf/Makefile.i386
   16 # after which config should be rerun for all machines.
   17 #
   18 
   19 # Which version of config(8) is required.
   20 %VERSREQ=       300009
   21 
   22 KERNFORMAT?=    elf
   23 
   24 STD8X16FONT?=   iso
   25 
   26 .if exists(./@/.)
   27 S=      ./@
   28 .else
   29 S=      ../..
   30 .endif
   31 I386=   ${S}/i386
   32 
   33 COPTFLAGS?=-O
   34 INCLUDES= -nostdinc -I- -I. -I$S
   35 # This hack is to allow kernel compiles to succeed on machines w/out srcdist
   36 .if exists($S/../include)
   37 INCLUDES+= -I$S/../include
   38 .else
   39 INCLUDES+= -I/usr/include
   40 .endif
   41 COPTS=  ${INCLUDES} ${IDENT} -DKERNEL -DVM_STACK -include opt_global.h 
   42 CFLAGS= ${COPTFLAGS} ${CWARNFLAGS} ${DEBUG} ${COPTS}
   43 
   44 # XXX LOCORE means "don't declare C stuff" not "for locore.s".
   45 ASM_CFLAGS= -x assembler-with-cpp -DLOCORE ${CFLAGS}
   46 
   47 # Use the default object format for genassym, etc.
   48 GEN_CFLAGS= ${COPTFLAGS} ${CWARNFLAGS} ${DEBUG} ${COPTS}
   49 
   50 # Select the correct set of tools. Can't set OBJFORMAT here because it
   51 # doesn't get exported into the environment, and if it were exported
   52 # then it might break building of genassym, etc.
   53 .if ${KERNFORMAT} == "elf"
   54 CFLAGS+=        -elf
   55 .else
   56 CFLAGS+=        -aout
   57 .endif
   58 
   59 LOAD_ADDRESS?=  C0100000
   60 DEFINED_PROF=   ${PROF}
   61 .if defined(PROF)
   62 CFLAGS+=        -malign-functions=4
   63 .if ${PROFLEVEL} >= 2
   64 IDENT+= -DGPROF4 -DGUPROF
   65 PROF+=  -mprofiler-epilogue
   66 .endif
   67 .endif
   68 
   69 NORMAL_C= ${CC} -c ${CFLAGS} ${PROF} $<
   70 NORMAL_C_C= ${CC} -c ${CFLAGS} ${PROF} $<
   71 NORMAL_S= ${CC} -c ${ASM_CFLAGS} $<
   72 DRIVER_C= ${CC} -c ${CFLAGS} ${PROF} $<
   73 DRIVER_C_C= ${CC} -c ${CFLAGS} ${PROF} $<
   74 DRIVER_S= ${CC} -c -x ${ASM_CFLAGS} $<
   75 PROFILE_C= ${CC} -c ${CFLAGS} $<
   76 
   77 GEN_CFILES= ${I386}/i386/genassym.c
   78 # setdef0.c and setdef1.c are intentionally
   79 # omitted from SYSTEM_CFILES.  They include setdefs.h, a header which
   80 # is generated from all of ${OBJS}.  We don't want to have to compile
   81 # everything just to do a make depend.
   82 SYSTEM_CFILES= ioconf.c param.c vnode_if.c config.c
   83 SYSTEM_SFILES= ${I386}/i386/locore.s
   84 SYSTEM_DEP= Makefile symbols.exclude symbols.sort ${SYSTEM_OBJS}
   85 .if ${CFLAGS:M-g} == ""
   86 SYMORDER_EXCLUDE=-x symbols.exclude
   87 .endif
   88 SYSTEM_LD_HEAD= @echo loading ${.TARGET}; rm -f ${.TARGET}
   89 .if ${KERNFORMAT} == aout || ${KERNFORMAT} == aoutkld
   90 SYSTEM_OBJS= locore.o vnode_if.o ${OBJS} ioconf.o param.o config.o
   91 SYSTEM_LD= @${LD} -aout -Bforcedynamic -Z -T ${LOAD_ADDRESS} -o ${.TARGET} -X ${SYSTEM_OBJS} vers.o
   92 SYSTEM_LD_TAIL= @echo rearranging symbols; \
   93         symorder -m ${SYMORDER_EXCLUDE} symbols.sort ${.TARGET}; \
   94         size -aout ${.TARGET} ; chmod 755 ${.TARGET}
   95 .endif
   96 .if ${KERNFORMAT} == elf
   97 SYSTEM_OBJS= locore.o setdef0.o vnode_if.o ${OBJS} ioconf.o param.o config.o \
   98         setdef1.o hack.So
   99 SYSTEM_LD= @${LD} -elf -Bdynamic -T $S/i386/conf/kernel.script \
  100         -export-dynamic -dynamic-linker /red/herring \
  101         -o ${.TARGET} -X ${SYSTEM_OBJS} vers.o
  102 SYSTEM_LD_TAIL= @size -elf ${.TARGET} ; chmod 755 ${.TARGET}
  103 SYSTEM_DEP+= $S/i386/conf/kernel.script
  104 .endif
  105 
  106 %BEFORE_DEPEND
  107 
  108 %OBJS
  109 
  110 %CFILES
  111 
  112 %SFILES
  113 
  114 %MFILES
  115 
  116 %LOAD
  117 
  118 %CLEAN
  119 
  120 .if !exists(.depend)
  121 ${SYSTEM_OBJS}: vnode_if.h ${BEFORE_DEPEND:M*.h}
  122 .endif
  123 
  124 clean:
  125         rm -f *.o *.so *.So *.ko *.s eddep errs genassym gensetdefs \
  126               kernel linterrs makelinks param.c setdef[01].c setdefs.h \
  127               symbols.exclude symbols.sort tags \
  128               vers.c vnode_if.c vnode_if.h ${CLEAN}
  129 
  130 #lint: /tmp param.c
  131 #       @lint -hbxn -DGENERIC -Dvolatile= ${COPTS} \
  132 #         ${I386}/i386/Locore.c ${CFILES} ioconf.c param.c | \
  133 #           grep -v 'struct/union .* never defined' | \
  134 #           grep -v 'possible pointer alignment problem'
  135 
  136 symbols.exclude:
  137         echo "gcc2_compiled." >symbols.exclude
  138         echo "___gnu_compiled_c" >>symbols.exclude
  139 
  140 symbols.sort: ${I386}/i386/symbols.raw
  141         grep -v '^#' ${I386}/i386/symbols.raw \
  142             | sed 's/^  //' | sort -u > symbols.sort
  143 
  144 locore.o: ${I386}/i386/locore.s assym.s
  145         ${NORMAL_S}
  146 
  147 .if ${KERNFORMAT} == elf
  148 # This is a hack.  BFD "optimizes" away dynamic mode if there are no
  149 # dynamic references.  We could probably do a '-Bforcedynamic' mode like
  150 # in the a.out ld.  For now, this works.
  151 hack.So: Makefile
  152         touch hack.c
  153         ${CC} -elf -shared -nostdlib hack.c -o hack.So
  154         rm -f hack.c
  155 .endif
  156 
  157 .ORDER: setdefs.h setdef0.c setdef1.c
  158 
  159 setdef0.o: setdef0.c setdefs.h
  160         ${NORMAL_C}
  161 
  162 setdef1.o: setdef1.c setdefs.h
  163         ${NORMAL_C}
  164 
  165 setdef0.c setdef1.c setdefs.h: ${OBJS}
  166         @gensetdefs ${OBJS}
  167 
  168 # this rule stops ./assym.s in .depend from causing problems
  169 ./assym.s: assym.s
  170 
  171 assym.s: genassym
  172         ./genassym >assym.s
  173 
  174 genassym.o: ${I386}/i386/genassym.c
  175         ${CC} -c ${GEN_CFLAGS} ${I386}/i386/genassym.c
  176 
  177 genassym: genassym.o
  178         ${CC} ${GEN_CFLAGS} genassym.o -o ${.TARGET}
  179 
  180 ${SYSTEM_OBJS} genassym.o vers.o: opt_global.h
  181 
  182 # XXX this assumes that the options for NORMAL_C* and DRIVER_C* are identical.
  183 depend: assym.s param.c vnode_if.h ${BEFORE_DEPEND}
  184         rm -f .newdep
  185         mkdep -a -f .newdep ${CFLAGS} ${CFILES} ${SYSTEM_CFILES}
  186         mkdep -a -f .newdep ${GEN_CFLAGS} ${GEN_CFILES}
  187         env MKDEP_CPP="${CC} -E" \
  188             mkdep -a -f .newdep ${ASM_CFLAGS} ${SFILES} ${SYSTEM_SFILES}
  189         rm -f .depend
  190         mv -f .newdep .depend
  191 
  192 cleandepend:
  193         rm -f .depend
  194 
  195 links:
  196         egrep '#if' ${CFILES} | sed -f $S/conf/defines | \
  197           sed -e 's/:.*//' -e 's/\.c/.o/' | sort -u > dontlink
  198         echo ${CFILES} | tr -s ' ' '\12' | sed 's/\.c/.o/' | \
  199           sort -u | comm -23 - dontlink | \
  200           sed 's,../.*/\(.*.o\),rm -f \1;ln -s ../GENERIC/\1 \1,' > makelinks
  201         sh makelinks && rm -f dontlink
  202 
  203 tags:
  204         @[ -f .depend ] || { echo "you must make depend first"; exit 1; }
  205         sh $S/conf/systags.sh
  206         rm -f tags1
  207         sed -e 's,      ../,    ,' tags > tags1
  208 
  209 install:
  210         @if [ ! -f kernel ] ; then \
  211                 echo "You must first build your kernel before trying to install." ; \
  212                 exit 1 ; \
  213         fi
  214 .if ${KERNFORMAT} == "elf" && !defined(FORCE)
  215         @if [ -f /kernel -a "`file /kernel 2>/dev/null | grep ELF`" = "" ]; then \
  216                 echo "WARNING: You are about to install an ELF kernel for the first time!" ; \
  217                 echo "Please be sure you have upgraded your bootblocks and/or /boot/loader so" ; \
  218                 echo "that you can boot it.  Old bootblocks WILL NOT WORK!  Please read:" ; \
  219                 echo "http://www.freebsd.org/~peter/elfday.html for information." ; \
  220                 echo "If you are satisfied you can boot an ELF kernel, type:  make -DFORCE install" ; \
  221                 exit 1 ; \
  222         fi
  223 .endif
  224 .if exists(${DESTDIR}/kernel)
  225         -chflags noschg ${DESTDIR}/kernel
  226         mv ${DESTDIR}/kernel ${DESTDIR}/kernel.old
  227 .endif
  228         PATH=$${PATH}:/sbin:/usr/sbin; \
  229         if [ `sysctl -n kern.bootfile` = ${DESTDIR}/kernel ] ; then \
  230                 sysctl -w kern.bootfile=${DESTDIR}/kernel.old ; \
  231                 if [ -f /var/db/kvm_kernel.db ] ; then \
  232                         mv -f /var/db/kvm_kernel.db /var/db/kvm_kernel.old.db ; \
  233                 fi \
  234         fi
  235         install -c -m 555 -o root -g wheel -fschg kernel ${DESTDIR}/
  236 
  237 config.o:
  238         ${NORMAL_C}
  239 
  240 ioconf.o:
  241         ${NORMAL_C}
  242 
  243 param.c: $S/conf/param.c
  244         -rm -f param.c
  245         cp $S/conf/param.c .
  246 
  247 param.o:
  248         ${NORMAL_C}
  249 
  250 vers.c: $S/conf/newvers.sh $S/sys/param.h ${SYSTEM_DEP}
  251         sh $S/conf/newvers.sh ${KERN_IDENT} ${IDENT}
  252 
  253 # XXX strictly, everything depends on Makefile because changes to ${PROF}
  254 # only appear there, but we don't handle that.
  255 vers.o:
  256         ${NORMAL_C}
  257 
  258 .ORDER: vnode_if.c vnode_if.h
  259 vnode_if.c vnode_if.h: $S/kern/vnode_if.sh $S/kern/vnode_if.src
  260         sh $S/kern/vnode_if.sh $S/kern/vnode_if.src
  261 
  262 vnode_if.o:
  263         ${NORMAL_C}
  264 
  265 .if exists($S/../share/mk)
  266 .include "$S/../share/mk/bsd.kern.mk"
  267 .else
  268 .include <bsd.kern.mk>
  269 .endif
  270 
  271 %RULES
  272 
  273 # DO NOT DELETE THIS LINE -- make depend uses it

Cache object: ad5553ea75a9bdb00593ab9872daa64c


[ 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.