diff options
Diffstat (limited to 'sys/arch/armv7/conf/Makefile.armv7')
-rw-r--r-- | sys/arch/armv7/conf/Makefile.armv7 | 189 |
1 files changed, 189 insertions, 0 deletions
diff --git a/sys/arch/armv7/conf/Makefile.armv7 b/sys/arch/armv7/conf/Makefile.armv7 new file mode 100644 index 00000000000..684267cd716 --- /dev/null +++ b/sys/arch/armv7/conf/Makefile.armv7 @@ -0,0 +1,189 @@ +# $OpenBSD: Makefile.armv7,v 1.1 2013/09/04 14:38:25 patrick 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 -D__${_mach}__ -MD -MP +CWARNFLAGS= -Werror -Wall -Wstrict-prototypes -Wmissing-prototypes \ + -Wno-main -Wno-uninitialized -Wno-format \ + -Wstack-larger-than-2047 + +CMACHFLAGS= -ffreestanding -msoft-float -march=armv6 +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= -T ldscript --warn-common -nopie + +.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= ${_mach}_start.o locore.o param.o ioconf.o +SYSTEM_OBJ= ${SYSTEM_HEAD} ${OBJS} +SYSTEM_DEP= Makefile ${SYSTEM_OBJ} +SYSTEM_LD_HEAD= @rm -f $@ +SYSTEM_LD_HEAD+=; \ + cat ${_archdir}/conf/ldscript.head ${_archdir}/conf/ldscript.tail | \ + sed -e 's/@KERNEL_BASE_PHYS@/${KERNEL_BASE_PHYS}/' \ + -e 's/@KERNEL_BASE_VIRT@/${KERNEL_BASE_VIRT}/' > ldscript + +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+= -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.awk + ${CC} ${CFLAGS} ${CPPFLAGS} -MT $@ -gstabs -c $S/ddb/db_structinfo.c + objdump -g db_structinfo.o | awk -f $S/ddb/parse_structinfo.awk > $@ + rm -f db_structinfo.o + +${_mach}_start.o: ${_machdir}/${_mach}/${_mach}_start.S +locore.o: ${_archdir}/${_arch}/locore.S assym.h +in_cksum_arm.o fiq_subr.o bcopyinout.o copystr.o sigcode.o: assym.h +vectors.o cpuswitch7.o exception.o bcopy_page.o irq_dispatch.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}: + rm -f /obsd + ln /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 + + +# until we get native booting working, put this in the tree. + +bsdrd.umg: bsd.rd + mkuboot -a arm -o linux -e ${KERNEL_BASE_PHYS} -l ${KERNEL_BASE_PHYS} bsd.rd bsdrd.umg + +bsd.umg: bsd + mkuboot -a arm -o linux -e ${KERNEL_BASE_PHYS} -l ${KERNEL_BASE_PHYS} bsd bsd.umg + +bsd.rd: bsd + cp bsd bsd.rd + $S/../distrib/${_mach}/ramdisk/rdsetroot < $S/../distrib/${_mach}/ramdisk/mr.fs bsd.rd + +%RULES |