1# $OpenBSD: Makefile.amd64,v 1.132 2023/04/21 13:24:20 bluhm Exp $ 2 3# For instructions on building kernels consult the config(8) and options(4) 4# manual pages. 5# 6# N.B.: NO DEPENDENCIES ON FOLLOWING FLAGS ARE VISIBLE TO MAKEFILE 7# IF YOU CHANGE THE DEFINITION OF ANY OF THESE RECOMPILE EVERYTHING 8# DEBUG is set to -g by config if debugging is requested (config -g). 9# PROF is set to -pg by config if profiling is requested (config -p). 10 11.include <bsd.own.mk> 12 13SIZE?= size 14STRIP?= ctfstrip 15 16# source tree is located via $S relative to the compilation directory 17.ifndef S 18S!= cd ../../../..; pwd 19.endif 20 21_machdir?= $S/arch/${_mach} 22_archdir?= $S/arch/${_arch} 23 24INCLUDES= -nostdinc -I$S -I${.OBJDIR} -I$S/arch \ 25 -I$S/dev/pci/drm/include \ 26 -I$S/dev/pci/drm/include/uapi \ 27 -I$S/dev/pci/drm/amd/include/asic_reg \ 28 -I$S/dev/pci/drm/amd/include \ 29 -I$S/dev/pci/drm/amd/amdgpu \ 30 -I$S/dev/pci/drm/amd/display \ 31 -I$S/dev/pci/drm/amd/display/include \ 32 -I$S/dev/pci/drm/amd/display/dc \ 33 -I$S/dev/pci/drm/amd/display/amdgpu_dm \ 34 -I$S/dev/pci/drm/amd/pm/inc \ 35 -I$S/dev/pci/drm/amd/pm/legacy-dpm \ 36 -I$S/dev/pci/drm/amd/pm/swsmu \ 37 -I$S/dev/pci/drm/amd/pm/swsmu/inc \ 38 -I$S/dev/pci/drm/amd/pm/swsmu/smu11 \ 39 -I$S/dev/pci/drm/amd/pm/swsmu/smu12 \ 40 -I$S/dev/pci/drm/amd/pm/swsmu/smu13 \ 41 -I$S/dev/pci/drm/amd/pm/powerplay/inc \ 42 -I$S/dev/pci/drm/amd/pm/powerplay/hwmgr \ 43 -I$S/dev/pci/drm/amd/pm/powerplay/smumgr \ 44 -I$S/dev/pci/drm/amd/pm/swsmu/inc \ 45 -I$S/dev/pci/drm/amd/pm/swsmu/inc/pmfw_if \ 46 -I$S/dev/pci/drm/amd/display/dc/inc \ 47 -I$S/dev/pci/drm/amd/display/dc/inc/hw \ 48 -I$S/dev/pci/drm/amd/display/dc/clk_mgr \ 49 -I$S/dev/pci/drm/amd/display/modules/inc \ 50 -I$S/dev/pci/drm/amd/display/modules/hdcp \ 51 -I$S/dev/pci/drm/amd/display/dmub/inc \ 52 -I$S/dev/pci/drm/i915 53CPPFLAGS= ${INCLUDES} ${IDENT} ${PARAM} -D_KERNEL -MD -MP 54CWARNFLAGS= -Werror -Wall -Wimplicit-function-declaration \ 55 -Wno-pointer-sign \ 56 -Wframe-larger-than=2047 57 58CMACHFLAGS= -mcmodel=kernel -mno-red-zone -mno-sse2 -mno-sse -mno-3dnow \ 59 -mno-mmx -msoft-float -fno-omit-frame-pointer 60CMACHFLAGS+= -ffreestanding ${NOPIE_FLAGS} 61SORTR= sort -R 62.if ${IDENT:M-DNO_PROPOLICE} 63CMACHFLAGS+= -fno-stack-protector 64.endif 65.if ${IDENT:M-DDDB} 66CMACHFLAGS+= -msave-args 67.endif 68.if ${IDENT:M-DSMALL_KERNEL} 69SORTR= cat 70COPTIMIZE= -Oz 71.if ${COMPILER_VERSION:Mclang} 72CMACHFLAGS+= -mno-retpoline -fcf-protection=none 73.endif 74.else 75CMACHFLAGS+= -fcf-protection=branch 76.endif 77.if ${COMPILER_VERSION:Mclang} 78NO_INTEGR_AS= -no-integrated-as 79CWARNFLAGS+= -Wno-address-of-packed-member -Wno-constant-conversion \ 80 -Wno-unused-but-set-variable -Wno-gnu-folding-constant 81# XXX Workaround for zlib + clang 15 82# https://github.com/madler/zlib/issues/633 83CWARNFLAGS+= -Wno-deprecated-non-prototype -Wno-unknown-warning-option 84.endif 85 86DEBUG?= -g 87COPTIMIZE?= -O2 88CFLAGS= ${DEBUG} ${CWARNFLAGS} ${CMACHFLAGS} ${COPTIMIZE} ${COPTS} ${PIPE} 89AFLAGS= -D_LOCORE -x assembler-with-cpp ${CWARNFLAGS} ${CMACHFLAGS} 90LINKFLAGS= -T ld.script -X --warn-common -nopie 91 92HOSTCC?= ${CC} 93HOSTED_CPPFLAGS=${CPPFLAGS:S/^-nostdinc$//} 94HOSTED_CFLAGS= ${CFLAGS} 95HOSTED_C= ${HOSTCC} ${HOSTED_CFLAGS} ${HOSTED_CPPFLAGS} -c $< 96 97NORMAL_C_NOP= ${CC} ${CFLAGS} ${CPPFLAGS} -fno-ret-protector -c $< 98NORMAL_C= ${CC} ${CFLAGS} ${CPPFLAGS} ${PROF} -c $< 99NORMAL_S= ${CC} ${AFLAGS} ${CPPFLAGS} ${PROF} -c $< 100 101%OBJS 102 103%CFILES 104 105%SFILES 106 107# load lines for config "xxx" will be emitted as: 108# xxx: ${SYSTEM_DEP} swapxxx.o 109# ${SYSTEM_LD_HEAD} 110# ${SYSTEM_LD} swapxxx.o 111# ${SYSTEM_LD_TAIL} 112SYSTEM_HEAD= locore0.o gap.o 113SYSTEM_OBJ= ${SYSTEM_HEAD} ${OBJS} param.o ioconf.o 114SYSTEM_DEP= Makefile ${SYSTEM_OBJ} ld.script 115SYSTEM_LD_HEAD= @rm -f $@ 116SYSTEM_LD= @echo ${LD} ${LINKFLAGS} -o $@ '$${SYSTEM_HEAD} vers.o $${OBJS}'; \ 117 umask 007; \ 118 echo ${OBJS} param.o ioconf.o vers.o | tr " " "\n" | ${SORTR} > lorder; \ 119 ${LD} ${LINKFLAGS} -o $@ ${SYSTEM_HEAD} `cat lorder` 120SYSTEM_LD_TAIL= @${SIZE} $@ 121 122.if ${DEBUG} == "-g" 123STRIPFLAGS= -S 124SYSTEM_LD_TAIL+=; umask 007; \ 125 echo mv $@ $@.gdb; rm -f $@.gdb; mv $@ $@.gdb; \ 126 echo ${STRIP} ${STRIPFLAGS} -o $@ $@.gdb; \ 127 ${STRIP} ${STRIPFLAGS} -o $@ $@.gdb 128.else 129LINKFLAGS+= -S 130.endif 131 132.if ${SYSTEM_OBJ:Mkcov.o} && ${COMPILER_VERSION:Mclang} 133PROF= -fsanitize-coverage=trace-pc,trace-cmp 134.endif 135 136.if ${IDENT:M-DKUBSAN} && ${COMPILER_VERSION:Mclang} 137CFLAGS+= -fsanitize=undefined 138CFLAGS+= -fno-wrapv 139.endif 140 141%LOAD 142 143# cc's -MD puts the source and output paths in the dependency file; 144# since those are temp files here we need to fix it up. It also 145# puts the file in /tmp, so we use -MF to put it in the current 146# directory as assym.P and then generate assym.d from it with a 147# good target name 148assym.h: $S/kern/genassym.sh Makefile \ 149 ${_archdir}/${_arch}/genassym.cf ${_machdir}/${_mach}/genassym.cf 150 cat ${_archdir}/${_arch}/genassym.cf ${_machdir}/${_mach}/genassym.cf | \ 151 sh $S/kern/genassym.sh ${CC} ${NO_INTEGR_AS} ${CFLAGS} ${CPPFLAGS} -MF assym.P > assym.h.tmp 152 sed '1s/.*/assym.h: \\/' assym.P > assym.d 153 sort -u assym.h.tmp > assym.h 154 155param.c: $S/conf/param.c 156 rm -f param.c 157 cp $S/conf/param.c . 158 159param.o: param.c Makefile 160 ${NORMAL_C} 161 162mcount.o: $S/lib/libkern/mcount.c Makefile 163 ${NORMAL_C_NOP} 164 165ioconf.o: ioconf.c 166 ${NORMAL_C} 167 168locore.o: assym.h 169 ${NORMAL_S} 170 @[[ -n `objdump -D $@ | grep -A1 doreti_iret | grep -v ^-- | sort | \ 171 uniq -d` ]] || \ 172 { rm -f $@; echo "ERROR: overlaid iretq instructions don't line up"; \ 173 echo "#GP-on-iretq fault handling would be broken"; exit 1; } 174 175ld.script: ${_machdir}/conf/ld.script 176 cp ${_machdir}/conf/ld.script $@ 177 178gapdummy.o: 179 echo '__asm(".section .rodata,\"a\"");' > gapdummy.c 180 ${CC} -c ${CFLAGS} ${CPPFLAGS} -fcf-protection=none gapdummy.c -o $@ 181 182makegap.sh: 183 cp $S/conf/makegap.sh $@ 184 185MAKE_GAP = LD="${LD}" sh makegap.sh 0xcccccccc gapdummy.o 186 187gap.o: Makefile makegap.sh gapdummy.o vers.o 188 ${MAKE_GAP} 189 190vers.o: ${SYSTEM_DEP:Ngap.o} 191 sh $S/conf/newvers.sh 192 ${CC} ${CFLAGS} ${CPPFLAGS} ${PROF} -c vers.c 193 194.if ${SYSTEM_OBJ:Mkcov.o} && ${COMPILER_VERSION:Mclang} 195kcov.o: $S/dev/kcov.c 196 ${NORMAL_C} -fno-sanitize-coverage=trace-pc,trace-cmp 197.endif 198 199HARDFLOAT_CFLAGS= -msse -msse2 200 201display_mode_vba.o: $S/dev/pci/drm/amd/display/dc/dml/display_mode_vba.c 202 ${NORMAL_C} ${HARDFLOAT_CFLAGS} 203dcn10_fpu.o: $S/dev/pci/drm/amd/display/dc/dml/dcn10/dcn10_fpu.c 204 ${NORMAL_C} ${HARDFLOAT_CFLAGS} 205dcn20_fpu.o: $S/dev/pci/drm/amd/display/dc/dml/dcn20/dcn20_fpu.c 206 ${NORMAL_C} ${HARDFLOAT_CFLAGS} 207display_mode_vba_20.o: $S/dev/pci/drm/amd/display/dc/dml/dcn20/display_mode_vba_20.c 208 ${NORMAL_C} ${HARDFLOAT_CFLAGS} 209display_rq_dlg_calc_20.o: $S/dev/pci/drm/amd/display/dc/dml/dcn20/display_rq_dlg_calc_20.c 210 ${NORMAL_C} ${HARDFLOAT_CFLAGS} 211display_mode_vba_20v2.o: $S/dev/pci/drm/amd/display/dc/dml/dcn20/display_mode_vba_20v2.c 212 ${NORMAL_C} ${HARDFLOAT_CFLAGS} 213display_rq_dlg_calc_20v2.o: $S/dev/pci/drm/amd/display/dc/dml/dcn20/display_rq_dlg_calc_20v2.c 214 ${NORMAL_C} ${HARDFLOAT_CFLAGS} 215display_mode_vba_21.o: $S/dev/pci/drm/amd/display/dc/dml/dcn21/display_mode_vba_21.c 216 ${NORMAL_C} ${HARDFLOAT_CFLAGS} 217display_rq_dlg_calc_21.o: $S/dev/pci/drm/amd/display/dc/dml/dcn21/display_rq_dlg_calc_21.c 218 ${NORMAL_C} ${HARDFLOAT_CFLAGS} 219display_mode_vba_30.o: $S/dev/pci/drm/amd/display/dc/dml/dcn30/display_mode_vba_30.c 220 ${NORMAL_C} ${HARDFLOAT_CFLAGS} 221display_rq_dlg_calc_30.o: $S/dev/pci/drm/amd/display/dc/dml/dcn30/display_rq_dlg_calc_30.c 222 ${NORMAL_C} ${HARDFLOAT_CFLAGS} 223display_mode_vba_31.o: $S/dev/pci/drm/amd/display/dc/dml/dcn31/display_mode_vba_31.c 224 ${NORMAL_C} ${HARDFLOAT_CFLAGS} 225display_rq_dlg_calc_31.o: $S/dev/pci/drm/amd/display/dc/dml/dcn31/display_rq_dlg_calc_31.c 226 ${NORMAL_C} ${HARDFLOAT_CFLAGS} 227display_mode_vba_314.o: $S/dev/pci/drm/amd/display/dc/dml/dcn314/display_mode_vba_314.c 228 ${NORMAL_C} ${HARDFLOAT_CFLAGS} 229display_rq_dlg_calc_314.o: $S/dev/pci/drm/amd/display/dc/dml/dcn314/display_rq_dlg_calc_314.c 230 ${NORMAL_C} ${HARDFLOAT_CFLAGS} 231dcn314_fpu.o: $S/dev/pci/drm/amd/display/dc/dml/dcn314/dcn314_fpu.c 232 ${NORMAL_C} ${HARDFLOAT_CFLAGS} 233dcn30_fpu.o: $S/dev/pci/drm/amd/display/dc/dml/dcn30/dcn30_fpu.c 234 ${NORMAL_C} ${HARDFLOAT_CFLAGS} 235dcn32_fpu.o: $S/dev/pci/drm/amd/display/dc/dml/dcn32/dcn32_fpu.c 236 ${NORMAL_C} ${HARDFLOAT_CFLAGS} 237display_mode_vba_32.o: $S/dev/pci/drm/amd/display/dc/dml/dcn32/display_mode_vba_32.c 238 ${NORMAL_C} ${HARDFLOAT_CFLAGS} 239display_rq_dlg_calc_32.o: $S/dev/pci/drm/amd/display/dc/dml/dcn32/display_rq_dlg_calc_32.c 240 ${NORMAL_C} ${HARDFLOAT_CFLAGS} 241display_mode_vba_util_32.o: $S/dev/pci/drm/amd/display/dc/dml/dcn32/display_mode_vba_util_32.c 242 ${NORMAL_C} ${HARDFLOAT_CFLAGS} 243dcn321_fpu.o: $S/dev/pci/drm/amd/display/dc/dml/dcn321/dcn321_fpu.c 244 ${NORMAL_C} ${HARDFLOAT_CFLAGS} 245dcn31_fpu.o: $S/dev/pci/drm/amd/display/dc/dml/dcn31/dcn31_fpu.c 246 ${NORMAL_C} ${HARDFLOAT_CFLAGS} 247dcn301_fpu.o: $S/dev/pci/drm/amd/display/dc/dml/dcn301/dcn301_fpu.c 248 ${NORMAL_C} ${HARDFLOAT_CFLAGS} 249dcn302_fpu.o: $S/dev/pci/drm/amd/display/dc/dml/dcn302/dcn302_fpu.c 250 ${NORMAL_C} ${HARDFLOAT_CFLAGS} 251dcn303_fpu.o: $S/dev/pci/drm/amd/display/dc/dml/dcn303/dcn303_fpu.c 252 ${NORMAL_C} ${HARDFLOAT_CFLAGS} 253rc_calc_fpu.o: $S/dev/pci/drm/amd/display/dc/dml/dsc/rc_calc_fpu.c 254 ${NORMAL_C} ${HARDFLOAT_CFLAGS} 255dcn_calcs.o: $S/dev/pci/drm/amd/display/dc/dml/calcs/dcn_calcs.c 256 ${NORMAL_C} ${HARDFLOAT_CFLAGS} 257dcn_calc_auto.o: $S/dev/pci/drm/amd/display/dc/dml/calcs/dcn_calc_auto.c 258 ${NORMAL_C} ${HARDFLOAT_CFLAGS} 259dcn_calc_math.o: $S/dev/pci/drm/amd/display/dc/dml/calcs/dcn_calc_math.c 260 ${NORMAL_C} ${HARDFLOAT_CFLAGS} 261dml1_display_rq_dlg_calc.o: $S/dev/pci/drm/amd/display/dc/dml/dml1_display_rq_dlg_calc.c 262 ${NORMAL_C} ${HARDFLOAT_CFLAGS} 263display_rq_dlg_helpers.o: $S/dev/pci/drm/amd/display/dc/dml/display_rq_dlg_helpers.c 264 ${NORMAL_C} ${HARDFLOAT_CFLAGS} 265 266clean: 267 rm -f *bsd *bsd.gdb *.[dio] [a-z]*.s assym.* \ 268 gap.link gapdummy.c ld.script lorder makegap.sh param.c 269 270cleandir: clean 271 rm -f Makefile *.h ioconf.c options machine ${_mach} vers.c 272 273depend obj: 274 275locore0.o: ${_machdir}/${_mach}/locore0.S assym.h 276mutex.o vector.o copy.o spl.o mds.o: assym.h 277mptramp.o acpi_wakecode.o vmm_support.o: assym.h 278 279hardlink-obsd: 280 [[ ! -f /bsd ]] || cmp -s bsd /bsd || ln -f /bsd /obsd 281 282newinstall: 283 install -F -m 700 bsd /bsd && sha256 -h /var/db/kernel.SHA256 /bsd 284 285install: update-link hardlink-obsd newinstall 286 287# pull in the dependency information 288.ifnmake clean 289. for o in ${SYSTEM_OBJ:Ngap.o} assym.h 290. if exists(${o:R}.d) 291. include "${o:R}.d" 292. elif exists($o) 293 .PHONY: $o 294. endif 295. endfor 296.endif 297 298%RULES 299