123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175 |
- # $OpenBSD: Makefile.i386,v 1.92 2015/01/13 01:12:49 deraadt Exp $
- # For instructions on building kernels consult the config(8) and options(4)
- # manual pages.
- #
- # N.B.: NO DEPENDENCIES ON FOLLOWING FLAGS ARE VISIBLE TO MAKEFILE
- # IF YOU CHANGE THE DEFINITION OF ANY OF THESE RECOMPILE EVERYTHING
- # DEBUG is set to -g by config if debugging is requested (config -g).
- # PROF is set to -pg by config if profiling is requested (config -p).
- .include <bsd.own.mk>
- SIZE?= size
- STRIP?= strip
- # source tree is located via $S relative to the compilation directory
- .ifndef S
- S!= cd ../../../..; pwd
- .endif
- _machdir?= $S/arch/${_mach}
- _archdir?= $S/arch/${_arch}
- INCLUDES= -nostdinc -I$S -I. -I$S/arch
- CPPFLAGS= ${INCLUDES} ${IDENT} ${PARAM} -D_KERNEL -MD -MP
- CWARNFLAGS= -Werror -Wall -Wimplicit-function-declaration \
- -Wno-main -Wno-uninitialized \
- -Wframe-larger-than=2047
- CMACHFLAGS=
- CMACHFLAGS+= -fno-builtin-printf -fno-builtin-snprintf \
- -fno-builtin-vsnprintf -fno-builtin-log \
- -fno-builtin-log2 -fno-builtin-malloc ${NOPIE_FLAGS}
- .if ${IDENT:M-DNO_PROPOLICE}
- CMACHFLAGS+= -fno-stack-protector
- .endif
- COPTS?= -O2
- CFLAGS= ${DEBUG} ${CWARNFLAGS} ${CMACHFLAGS} ${COPTS} ${PIPE}
- AFLAGS= -D_LOCORE -x assembler-with-cpp ${CWARNFLAGS} ${CMACHFLAGS}
- LINKFLAGS= -Ttext 0xD0200120 -e start -N --warn-common -nopie
- .if ${MACHINE} == "amd64"
- CFLAGS+= -m32
- AFLAGS+= -m32
- LINKFLAGS+= -melf_i386_obsd
- .endif
- .if ${IDENT:M-DDDB_STRUCT}
- DB_STRUCTINFO= db_structinfo.h
- .else
- DB_STRUCTINFO=
- .endif
- HOSTCC?= ${CC}
- HOSTED_CPPFLAGS=${CPPFLAGS:S/^-nostdinc$//}
- HOSTED_CFLAGS= ${CFLAGS}
- HOSTED_C= ${HOSTCC} ${HOSTED_CFLAGS} ${HOSTED_CPPFLAGS} -c $<
- NORMAL_C_NOP= ${CC} ${CFLAGS} ${CPPFLAGS} -c $<
- NORMAL_C= ${CC} ${CFLAGS} ${CPPFLAGS} ${PROF} -c $<
- NORMAL_S= ${CC} ${AFLAGS} ${CPPFLAGS} -c $<
- %OBJS
- %CFILES
- %SFILES
- # load lines for config "xxx" will be emitted as:
- # xxx: ${SYSTEM_DEP} swapxxx.o
- # ${SYSTEM_LD_HEAD}
- # ${SYSTEM_LD} swapxxx.o
- # ${SYSTEM_LD_TAIL}
- SYSTEM_HEAD= locore.o param.o ioconf.o
- SYSTEM_OBJ= ${SYSTEM_HEAD} ${OBJS}
- SYSTEM_DEP= Makefile ${SYSTEM_OBJ}
- SYSTEM_LD_HEAD= @rm -f $@
- SYSTEM_LD= @echo ${LD} ${LINKFLAGS} -o $@ '$${SYSTEM_HEAD} vers.o $${OBJS}'; \
- ${LD} ${LINKFLAGS} -o $@ ${SYSTEM_HEAD} vers.o ${OBJS}
- SYSTEM_LD_TAIL= @${SIZE} $@; chmod 755 $@
- DEBUG?=
- .if ${DEBUG} == "-g"
- LINKFLAGS+= -X
- STRIPFLAGS= -g -x
- SYSTEM_LD_TAIL+=; \
- echo mv $@ $@.gdb; rm -f $@.gdb; mv $@ $@.gdb; \
- echo ${STRIP} ${STRIPFLAGS} -o $@ $@.gdb; \
- ${STRIP} ${STRIPFLAGS} -o $@ $@.gdb
- .else
- LINKFLAGS+= -S -x
- .endif
- %LOAD
- # cc's -MD puts the source and output paths in the dependency file;
- # since those are temp files here we need to fix it up. It also
- # puts the file in /tmp, so we use -MF to put it in the current
- # directory as assym.P and then generate assym.d from it with a
- # good target name
- assym.h: $S/kern/genassym.sh Makefile \
- ${_archdir}/${_arch}/genassym.cf ${_machdir}/${_mach}/genassym.cf
- cat ${_archdir}/${_arch}/genassym.cf ${_machdir}/${_mach}/genassym.cf | \
- sh $S/kern/genassym.sh ${CC} ${CFLAGS} ${CPPFLAGS} -MF assym.P > assym.h.tmp
- sed '1s/.*/assym.h: \\/' assym.P > assym.d
- sort -u assym.h.tmp > assym.h
- param.c: $S/conf/param.c
- rm -f param.c
- cp $S/conf/param.c .
- param.o: param.c Makefile
- ${NORMAL_C}
- mcount.o: $S/lib/libkern/mcount.c Makefile
- ${NORMAL_C_NOP}
- ioconf.o: ioconf.c
- ${NORMAL_C}
- vers.o: ${SYSTEM_DEP} ${SYSTEM_SWAP_DEP}
- sh $S/conf/newvers.sh
- ${CC} ${CFLAGS} ${CPPFLAGS} ${PROF} -c vers.c
- clean::
- rm -f eddep *bsd *bsd.gdb tags *.[dio] [a-z]*.s \
- [Ee]rrs linterrs assym.h ${DB_STRUCTINFO}
- lint:
- @lint -hbxncez -Dvolatile= ${CPPFLAGS} -UKGDB \
- ${CFILES} ioconf.c param.c | \
- grep -v 'static function .* unused'
- depend:
- @touch $@
- tags:
- @echo "see $S/kern/Makefile for tags"
- db_structinfo.h: $S/ddb/db_structinfo.c $S/ddb/parse_structinfo.pl
- ${CC} ${CFLAGS} ${CPPFLAGS} -MT $@ -gstabs -c $S/ddb/db_structinfo.c
- objdump -g db_structinfo.o | perl $S/ddb/parse_structinfo.pl > $@
- rm -f db_structinfo.o
- locore.o: ${_machdir}/${_mach}/locore.s assym.h
- in_cksum.o mptramp.o kvm86call.o acpi_wakecode.o: assym.h
- # The install target can be redefined by putting a
- # install-kernel-${MACHINE_NAME} target into /etc/mk.conf
- MACHINE_NAME!= uname -n
- install: install-kernel-${MACHINE_NAME}
- .if !target(install-kernel-${MACHINE_NAME}})
- install-kernel-${MACHINE_NAME}:
- cmp -s bsd /bsd || ln -f /bsd /obsd
- cp bsd /nbsd
- mv /nbsd /bsd
- .endif
- # pull in the dependency information
- .if !empty(DB_STRUCTINFO) && !exists(${DB_STRUCTINFO})
- ${SYSTEM_OBJ}: ${DB_STRUCTINFO}
- .endif
- .ifnmake clean
- . for o in ${SYSTEM_OBJ} assym.h ${DB_STRUCTINFO}
- . if exists(${o:R}.d)
- . include "${o:R}.d"
- . elif exists($o)
- .PHONY: $o
- . endif
- . endfor
- .endif
- %RULES
|