1# $FreeBSD: head/sys/conf/kern.post.mk 301284 2016-06-03 19:25:36Z bdrewery $ |
2 3# Part of a unified Makefile for building kernels. This part includes all 4# the definitions that need to be after all the % directives except %RULES 5# and ones that act like they are part of %RULES. 6# 7# Most make variables should not be defined in this file. Instead, they 8# should be defined in the kern.pre.mk so that port makefiles can 9# override or augment them. --- 93 unchanged lines hidden (view full) --- 103modules-all modules-depend: modules-obj 104.endif 105.endif 106 107.if !defined(DEBUG) 108FULLKERNEL= ${KERNEL_KO} 109.else 110FULLKERNEL= ${KERNEL_KO}.full |
111${KERNEL_KO}: ${FULLKERNEL} ${KERNEL_KO}.debug |
112 ${OBJCOPY} --strip-debug --add-gnu-debuglink=${KERNEL_KO}.debug \ 113 ${FULLKERNEL} ${.TARGET} |
114${KERNEL_KO}.debug: ${FULLKERNEL} |
115 ${OBJCOPY} --only-keep-debug ${FULLKERNEL} ${.TARGET} 116install.debug reinstall.debug: gdbinit 117 cd ${.CURDIR}; ${MAKE} ${.TARGET:R} 118 119# Install gdbinit files for kernel debugging. 120gdbinit: 121 grep -v '# XXX' ${S}/../tools/debugscripts/dot.gdbinit | \ 122 sed "s:MODPATH:${.OBJDIR}/modules:" > .gdbinit 123 cp ${S}/../tools/debugscripts/gdbinit.kernel ${.CURDIR} 124.if exists(${S}/../tools/debugscripts/gdbinit.${MACHINE_CPUARCH}) 125 cp ${S}/../tools/debugscripts/gdbinit.${MACHINE_CPUARCH} \ 126 ${.CURDIR}/gdbinit.machine 127.endif 128.endif 129 |
130${FULLKERNEL}: ${SYSTEM_DEP} vers.o |
131 @rm -f ${.TARGET} 132 @echo linking ${.TARGET} 133 ${SYSTEM_LD} 134.if !empty(MD_ROOT_SIZE_CONFIGURED) && defined(MFS_IMAGE) 135 @sh ${S}/tools/embed_mfs.sh ${.TARGET} ${MFS_IMAGE} 136.endif 137.if ${MK_CTF} != "no" 138 @echo ${CTFMERGE} ${CTFFLAGS} -o ${.TARGET} ... --- 6 unchanged lines hidden (view full) --- 145 146OBJS_DEPEND_GUESS+= assym.s vnode_if.h ${BEFORE_DEPEND:M*.h} \ 147 ${MFILES:T:S/.m$/.h/} 148LNFILES= ${CFILES:T:S/.c$/.ln/} 149 150.for mfile in ${MFILES} 151# XXX the low quality .m.o rules gnerated by config are normally used 152# instead of the .m.c rules here. |
153${mfile:T:S/.m$/.c/}: ${mfile} |
154 ${AWK} -f $S/tools/makeobjops.awk ${mfile} -c |
155${mfile:T:S/.m$/.h/}: ${mfile} |
156 ${AWK} -f $S/tools/makeobjops.awk ${mfile} -h 157.endfor 158 159kernel-clean: 160 rm -f *.o *.so *.So *.ko *.s eddep errs \ 161 ${FULLKERNEL} ${KERNEL_KO} ${KERNEL_KO}.debug \ 162 linterrs tags vers.c \ 163 vnode_if.c vnode_if.h vnode_if_newproto.h vnode_if_typedef.h \ 164 ${MFILES:T:S/.m$/.c/} ${MFILES:T:S/.m$/.h/} \ 165 ${CLEAN} 166 167lint: ${LNFILES} 168 ${LINT} ${LINTKERNFLAGS} ${CFLAGS:M-[DILU]*} ${.ALLSRC} 2>&1 | \ 169 tee -a linterrs 170 171# This is a hack. BFD "optimizes" away dynamic mode if there are no 172# dynamic references. We could probably do a '-Bforcedynamic' mode like 173# in the a.out ld. For now, this works. 174HACK_EXTRA_FLAGS?= -shared |
175hack.So: Makefile |
176 :> hack.c 177 ${CC} ${HACK_EXTRA_FLAGS} -nostdlib hack.c -o hack.So 178 rm -f hack.c 179 |
180assym.s: $S/kern/genassym.sh genassym.o |
181 NM='${NM}' NMFLAGS='${NMFLAGS}' sh $S/kern/genassym.sh genassym.o > ${.TARGET} 182 |
183genassym.o: $S/$M/$M/genassym.c |
184 ${CC} -c ${CFLAGS:N-fno-common} $S/$M/$M/genassym.c 185 |
186${SYSTEM_OBJS} genassym.o vers.o: opt_global.h |
187 188# Skip reading .depend when not needed to speed up tree-walks 189# and simple lookups. 190.if !empty(.MAKEFLAGS:M-V${_V_READ_DEPEND}) || make(obj) || make(clean*) || \ 191 make(install*) || make(kernel-obj) || make(kernel-clean*) || \ 192 make(kernel-install*) 193_SKIP_READ_DEPEND= 1 194.MAKE.DEPENDFILE= /dev/null --- 60 unchanged lines hidden (view full) --- 255${__obj}: ${OBJS_DEPEND_GUESS:N*.h} 256.endif 257${__obj}: ${OBJS_DEPEND_GUESS.${__obj}:N*.h} 258.endif 259.endfor 260 261.NOPATH: .depend ${DEPENDFILES_OBJS} 262 |
263.depend: .PRECIOUS ${SRCS} |
264 265_ILINKS= machine 266.if ${MACHINE} != ${MACHINE_CPUARCH} && ${MACHINE} != "arm64" 267_ILINKS+= ${MACHINE_CPUARCH} 268.endif 269.if ${MACHINE_CPUARCH} == "i386" || ${MACHINE_CPUARCH} == "amd64" 270_ILINKS+= x86 271.endif --- 62 unchanged lines hidden (view full) --- 334 335kernel-reinstall: 336 @-chflags -R noschg ${DESTDIR}${KODIR} 337 ${INSTALL} -p -m 555 -o ${KMODOWN} -g ${KMODGRP} ${KERNEL_KO} ${DESTDIR}${KODIR}/ 338.if defined(DEBUG) && !defined(INSTALL_NODEBUG) && ${MK_KERNEL_SYMBOLS} != "no" 339 ${INSTALL} -p -m 555 -o ${KMODOWN} -g ${KMODGRP} ${KERNEL_KO}.debug ${DESTDIR}${KERN_DEBUGDIR}${KODIR}/ 340.endif 341 |
342config.o env.o hints.o vers.o vnode_if.o: |
343 ${NORMAL_C} 344 ${NORMAL_CTFCONVERT} 345 |
346config.ln env.ln hints.ln vers.ln vnode_if.ln: |
347 ${NORMAL_LINT} 348 |
349vers.c: $S/conf/newvers.sh $S/sys/param.h ${SYSTEM_DEP} |
350 MAKE=${MAKE} sh $S/conf/newvers.sh ${KERN_IDENT} 351 |
352vnode_if.c: $S/tools/vnode_if.awk $S/kern/vnode_if.src |
353 ${AWK} -f $S/tools/vnode_if.awk $S/kern/vnode_if.src -c 354 355vnode_if.h vnode_if_newproto.h vnode_if_typedef.h: $S/tools/vnode_if.awk \ |
356 $S/kern/vnode_if.src 357vnode_if.h: vnode_if_newproto.h vnode_if_typedef.h |
358 ${AWK} -f $S/tools/vnode_if.awk $S/kern/vnode_if.src -h |
359vnode_if_newproto.h: |
360 ${AWK} -f $S/tools/vnode_if.awk $S/kern/vnode_if.src -p |
361vnode_if_typedef.h: |
362 ${AWK} -f $S/tools/vnode_if.awk $S/kern/vnode_if.src -q 363 364.if ${MFS_IMAGE:Uno} != "no" 365.if empty(MD_ROOT_SIZE_CONFIGURED) 366# Generate an object file from the file system image to embed in the kernel 367# via linking. Make sure the contents are in the mfs section and rename the 368# start/end/size variables to __start_mfs, __stop_mfs, and mfs_size, 369# respectively. |
370embedfs_${MFS_IMAGE:T:R}.o: ${MFS_IMAGE} |
371 ${OBJCOPY} --input-target binary \ 372 --output-target ${EMBEDFS_FORMAT.${MACHINE_ARCH}} \ 373 --binary-architecture ${EMBEDFS_ARCH.${MACHINE_ARCH}} \ 374 ${MFS_IMAGE} ${.TARGET} 375 ${OBJCOPY} \ 376 --rename-section .data=mfs,contents,alloc,load,readonly,data \ 377 --redefine-sym \ 378 _binary_${MFS_IMAGE:C,[^[:alnum:]],_,g}_size=__mfs_root_size \ --- 12 unchanged lines hidden --- |