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