diff options
Diffstat (limited to 'sys/arch/powerpc64/conf/Makefile.powerpc64')
-rw-r--r-- | sys/arch/powerpc64/conf/Makefile.powerpc64 | 183 |
1 files changed, 183 insertions, 0 deletions
diff --git a/sys/arch/powerpc64/conf/Makefile.powerpc64 b/sys/arch/powerpc64/conf/Makefile.powerpc64 new file mode 100644 index 00000000000..7c339bc98fa --- /dev/null +++ b/sys/arch/powerpc64/conf/Makefile.powerpc64 @@ -0,0 +1,183 @@ +# $OpenBSD: Makefile.powerpc64,v 1.1 2020/05/16 17:11:14 kettenis 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> + +# XXX cross compiler +CC= /usr/local/bin/clang -target powerpc64-openbsd +LD= ld.lld + +SIZE?= size +STRIP?= ctfstrip + +# 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${.OBJDIR} -I$S/arch \ + -I$S/dev/pci/drm/include \ + -I$S/dev/pci/drm/include/uapi \ + -I$S/dev/pci/drm/amd/include/asic_reg \ + -I$S/dev/pci/drm/amd/include \ + -I$S/dev/pci/drm/amd/amdgpu \ + -I$S/dev/pci/drm/amd/display \ + -I$S/dev/pci/drm/amd/display/include \ + -I$S/dev/pci/drm/amd/display/dc \ + -I$S/dev/pci/drm/amd/display/amdgpu_dm \ + -I$S/dev/pci/drm/amd/powerplay/inc \ + -I$S/dev/pci/drm/amd/powerplay/smumgr \ + -I$S/dev/pci/drm/amd/powerplay/hwmgr \ + -I$S/dev/pci/drm/amd/display/dc/inc \ + -I$S/dev/pci/drm/amd/display/dc/inc/hw \ + -I$S/dev/pci/drm/amd/display/modules/inc +CPPFLAGS= ${INCLUDES} ${IDENT} ${PARAM} -D_KERNEL -MD -MP +CWARNFLAGS= -Werror -Wall -Wimplicit-function-declaration \ + -Wno-uninitialized -Wno-pointer-sign \ + -Wno-constant-conversion -Wno-address-of-packed-member \ + -Wframe-larger-than=2047 + +CMACHFLAGS= -mabi=elfv2 +CMACHFLAGS+= -ffreestanding +SORTR= sort -R +.if ${IDENT:M-DNO_PROPOLICE} +CMACHFLAGS+= -fno-stack-protector +.endif +.if ${IDENT:M-DSMALL_KERNEL} +SORTR= cat +COPTS?= -Oz +.endif + +DEBUG?= -g +COPTS?= -O2 +CFLAGS= ${DEBUG} ${CWARNFLAGS} ${CMACHFLAGS} ${COPTS} ${PIPE} +AFLAGS= -D_LOCORE -x assembler-with-cpp ${CWARNFLAGS} ${CMACHFLAGS} +LINKFLAGS= -T ld.script -X --warn-common -pie + +HOSTCC?= ${CC} +HOSTED_CPPFLAGS=${CPPFLAGS:S/^-nostdinc$//} +HOSTED_CFLAGS= ${CFLAGS} +HOSTED_C= ${HOSTCC} ${HOSTED_CFLAGS} ${HOSTED_CPPFLAGS} -c $< + +NORMAL_C_NOP= ${CC} ${CFLAGS} ${CPPFLAGS} -fno-ret-protector -c $< +NORMAL_C= ${CC} ${CFLAGS} ${CPPFLAGS} ${PROF} -c $< +NORMAL_S= ${CC} ${AFLAGS} ${CPPFLAGS} ${PROF} -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= locore0.o gap.o +SYSTEM_OBJ= ${SYSTEM_HEAD} ${OBJS} param.o ioconf.o +SYSTEM_DEP= Makefile ${SYSTEM_OBJ} ld.script +SYSTEM_LD_HEAD= @rm -f $@ +SYSTEM_LD= @echo ${LD} ${LINKFLAGS} -o $@ '$${SYSTEM_HEAD} vers.o $${OBJS}'; \ + umask 007; \ + echo ${OBJS} param.o ioconf.o vers.o | tr " " "\n" | ${SORTR} > lorder; \ + ${LD} ${LINKFLAGS} -o $@ ${SYSTEM_HEAD} `cat lorder` +SYSTEM_LD_TAIL= @${SIZE} $@ + +.if ${DEBUG} == "-g" +STRIPFLAGS= -S +SYSTEM_LD_TAIL+=; umask 007; \ + echo mv $@ $@.gdb; rm -f $@.gdb; mv $@ $@.gdb; \ + echo ${STRIP} ${STRIPFLAGS} -o $@ $@.gdb; \ + ${STRIP} ${STRIPFLAGS} -o $@ $@.gdb +.else +LINKFLAGS+= -S +.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} -no-integrated-as -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} + +ld.script: ${_machdir}/conf/ld.script + cp ${_machdir}/conf/ld.script $@ + +gapdummy.o: + echo '__asm(".section .rodata,\"a\"");' > gapdummy.c + ${CC} -c ${CFLAGS} ${CPPFLAGS} gapdummy.c -o $@ + +makegap.sh: + cp $S/conf/makegap.sh $@ + +MAKE_GAP = LD="${LD}" sh makegap.sh 0x00000000 gapdummy.o + +gap.o: Makefile makegap.sh gapdummy.o vers.o + ${MAKE_GAP} + +vers.o: ${SYSTEM_DEP:Ngap.o} + sh $S/conf/newvers.sh + ${CC} ${CFLAGS} ${CPPFLAGS} ${PROF} -c vers.c + +clean: + rm -f *bsd *bsd.gdb *.[dio] [a-z]*.s assym.* \ + gap.link gapdummy.c ld.script lorder makegap.sh param.c + +cleandir: clean + rm -f Makefile *.h ioconf.c options machine ${_mach} vers.c + +depend obj: + +locore0.o: ${_machdir}/${_mach}/locore0.S assym.h + +hardlink-obsd: + [[ ! -f /bsd ]] || cmp -s bsd /bsd || ln -f /bsd /obsd + +newinstall: + install -F -m 700 bsd /bsd && sha256 -h /var/db/kernel.SHA256 /bsd + +install: update-link hardlink-obsd newinstall + +# pull in the dependency information +.ifnmake clean +. for o in ${SYSTEM_OBJ:Ngap.o} assym.h +. if exists(${o:R}.d) +. include "${o:R}.d" +. elif exists($o) + .PHONY: $o +. endif +. endfor +.endif + +%RULES |