Makefile.riscv revision 1.7
1# $NetBSD: Makefile.riscv,v 1.7 2021/05/01 07:13:21 skrll Exp $ 2 3# Makefile for NetBSD 4# 5# This makefile is constructed from a machine description: 6# config machineid 7# Most changes should be made in the machine description 8# /sys/arch/<machine>/conf/``machineid'' 9# after which you should do 10# config machineid 11# Machine generic makefile changes should be made in 12# /sys/arch/riscv/conf/Makefile.riscv 13# after which config should be rerun for all machines of that type. 14# 15# To specify debugging, add the config line: makeoptions DEBUG="-g" 16# A better way is to specify -g only for a few files. 17# 18# makeoptions DEBUGLIST="uvm* trap if_*" 19 20USETOOLS?= no 21NEED_OWN_INSTALL_TARGET?=no 22.include <bsd.own.mk> 23 24## 25## (1) port identification 26## 27.ifndef S 28S= ../../../.. 29.endif 30THISRISCV= $S/arch/${MACHINE} 31RISCV= $S/arch/riscv 32GENASSYM_CONF= ${RISCV}/riscv/genassym.cf 33.-include "${THISRISCV}/conf/Makefile.${MACHINE}.inc" 34 35## 36## (2) compile settings 37## 38## Note: -ffixed-?? must be kept in sync with cpu.h. 39## 40CPPFLAGS+= -D${MACHINE} 41CFLAGS+= -mcmodel=medany 42.if !defined(LP64) || ${LP64} == "no" 43CFLAGS+= -m32 44AFLAGS+= -m32 45LDFLAGS+= -m elf32lriscv 46LINKFORMAT+= -m elf32lriscv 47SYSTEM_LD_TAIL_EXTRA+= \ 48 ;echo ${OBJCOPY} -O elf32-littleriscv $@ $@.elf32; \ 49 ${OBJCOPY} -O elf32-littleriscv $@ $@.elf32 50.endif # LP64=no 51AFLAGS+= -x assembler-with-cpp ${AOPTS} 52 53## 54## (3) libkern and compat 55## 56OPT_MODULAR= %MODULAR% 57 58## 59## (4) local objects, compile rules, and dependencies 60## 61MD_OBJS= locore.o 62MD_CFILES= 63MD_SFILES= ${RISCV}/riscv/locore.S 64 65locore.o: ${RISCV}/riscv/locore.S assym.h 66 ${NORMAL_S} 67 68## 69## (5) link settings 70## 71.if ${MACHINE_ARCH} == "riscv64" && ${LP64:Uyes} == "yes" 72TEXTADDR?= 0xFFFFFFC000000000 73.else 74TEXTADDR?= 0xC0001000 75.endif 76KERNLDSCRIPT?= ${RISCV}/conf/kern.ldscript 77EXTRA_LINKFLAGS= ${LDOPTS} --relax 78LINKFLAGS_NORMAL= -X 79STRIPFLAGS= -g -X 80 81# Set the physical load address (aka LMA) to the address that OpenSBI's 82# fw_jump jumps to. This allows us to load the kernel with the -kernel flag 83# in QEMU without having to embed it inside BBL or OpenSBI's fw_payload first. 84# 85KERNEL_PHYS?= 0x80200000 86EXTRA_LINKFLAGS+= --defsym='KERNEL_PHYS=${KERNEL_PHYS}' 87 88## 89## (6) port specific target dependencies 90## 91 92# depend on CPU configuration 93machdep.o mainbus.o trap.o: Makefile 94 95# depend on System V IPC/shmem options 96riscv_machdep.o pmap.o: Makefile 97 98# various assembly files that depend on assym.h 99locore.o: assym.h 100 101## 102## (7) misc settings 103## 104RAMDISKDIR!= cd ${NETBSDSRCDIR}/distrib/riscv/ramdisk && ${PRINTOBJDIR} 105 106.if defined(NEED_MDSETIMAGE) && ${NEED_MDSETIMAGE} != "no" \ 107 && defined(RAMDISKDIR) && exists(${RAMDISKDIR}/ramdisk.fs) 108SYSTEM_DEP+= ${RAMDISKDIR}/ramdisk.fs 109SYSTEM_LD_TAIL_EXTRA+=; \ 110 echo ${TOOL_MDSETIMAGE} -s $@ ${RAMDISKDIR}/ramdisk.fs; \ 111 ${TOOL_MDSETIMAGE} -s $@ ${RAMDISKDIR}/ramdisk.fs 112.if !empty(DEBUG:M-g*) 113SYSTEM_LD_TAIL_EXTRA+=; \ 114 echo ${TOOL_MDSETIMAGE} -s $@.gdb ${RAMDISKDIR}/ramdisk.fs; \ 115 ${TOOL_MDSETIMAGE} -s $@.gdb ${RAMDISKDIR}/ramdisk.fs 116.endif 117.endif 118 119## 120## (8) config(8) generated machinery 121## 122%INCLUDES 123 124%OBJS 125 126%CFILES 127 128%SFILES 129 130%LOAD 131 132%RULES 133 134## 135## (9) port independent kernel machinery 136## 137.include "$S/conf/Makefile.kern.inc" 138 139## 140## (10) Appending make options. 141## 142%MAKEOPTIONSAPPEND 143