Home | History | Annotate | Line # | Download | only in conf
Makefile.aarch64 revision 1.23.12.1
      1  1.23.12.1    martin #	$NetBSD: Makefile.aarch64,v 1.23.12.1 2023/09/11 13:35:37 martin 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/<arch>/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/arm/conf/Makefile.arm
     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.1      matt ##
     25        1.1      matt ## (1) port identification
     26        1.1      matt ##
     27        1.9       ryo THISARM=	$S/arch/${MACHINE}
     28       1.11     skrll ARM=		$S/arch/aarch64
     29       1.11     skrll GENASSYM_CONF=	${ARM}/aarch64/genassym.cf
     30        1.1      matt .-include "$S/arch/${MACHINE}/conf/Makefile.${MACHINE}.inc"
     31        1.1      matt 
     32        1.1      matt ##
     33        1.1      matt ## (2) compile settings
     34        1.1      matt ##
     35        1.1      matt # CPPFLAGS set by platform-specific Makefile fragment.
     36        1.9       ryo CFLAGS+=	-march=armv8-a+nofp+nosimd
     37        1.9       ryo #CFLAGS+=	-fomit-frame-pointer
     38        1.9       ryo CFLAGS+=	-fno-omit-frame-pointer
     39        1.9       ryo CFLAGS+=	-mno-omit-leaf-frame-pointer
     40        1.9       ryo #CFLAGS+=	-mno-unaligned-access
     41        1.9       ryo 
     42       1.22       ryo .if defined(PROF) && ${HAVE_GCC:U0} > 0
     43       1.22       ryo # For accurate profiling, it is better to suppress the tail call.
     44       1.22       ryo CFLAGS+=	-fno-optimize-sibling-calls
     45       1.22       ryo .endif
     46       1.22       ryo 
     47       1.19      maxv .if ${ARMV83_PAC:U0} > 0 && ${ARMV85_BTI:U0} > 0
     48       1.19      maxv CFLAGS+=	-mbranch-protection=pac-ret+bti
     49       1.19      maxv .else
     50       1.19      maxv .if ${ARMV83_PAC:U0} > 0
     51       1.18      maxv CFLAGS+=	-mbranch-protection=pac-ret
     52       1.18      maxv .endif
     53       1.19      maxv .if ${ARMV85_BTI:U0} > 0
     54       1.19      maxv CFLAGS+=	-mbranch-protection=bti
     55       1.19      maxv .endif
     56       1.19      maxv .endif
     57       1.21       ryo 
     58       1.13      maxv .if ${KASAN:U0} > 0 && ${HAVE_GCC:U0} > 0
     59       1.13      maxv KASANFLAGS=	-fsanitize=kernel-address \
     60       1.14      maxv 		--param asan-globals=1 --param asan-stack=1 \
     61       1.20      maxv 		--param asan-instrument-allocas=1 \
     62       1.15      maxv 		-fsanitize-address-use-after-scope \
     63       1.17       ryo 		-fasan-shadow-offset=0xDFFF600000000000
     64       1.13      maxv .for f in subr_asan.c
     65       1.13      maxv KASANFLAGS.${f}=	# empty
     66       1.13      maxv .endfor
     67       1.13      maxv CFLAGS+=	${KASANFLAGS.${.IMPSRC:T}:U${KASANFLAGS}}
     68       1.13      maxv .endif
     69        1.1      matt 
     70        1.1      matt ##
     71        1.1      matt ## (3) libkern and compat
     72        1.1      matt ##
     73       1.12       rin OPT_MODULAR=	%MODULAR%
     74        1.1      matt 
     75        1.1      matt ##
     76        1.1      matt ## (4) local objects, compile rules, and dependencies
     77        1.1      matt ##
     78        1.1      matt MD_OBJS+=	${SYSTEM_FIRST_OBJ} locore.o
     79        1.1      matt MD_CFILES+=
     80       1.11     skrll MD_SFILES+=	${SYSTEM_FIRST_SFILE} ${ARM}/aarch64/locore.S
     81        1.1      matt 
     82        1.1      matt .if defined(SYSTEM_FIRST_OBJ)
     83        1.1      matt ${SYSTEM_FIRST_OBJ}: ${SYSTEM_FIRST_SFILE} assym.h
     84        1.1      matt 	${NORMAL_S}
     85        1.1      matt .endif
     86        1.1      matt 
     87       1.11     skrll locore.o: ${ARM}/aarch64/locore.S assym.h
     88        1.1      matt 	${NORMAL_S}
     89        1.1      matt 
     90        1.1      matt ##
     91        1.1      matt ## (5) link settings
     92        1.1      matt ##
     93       1.11     skrll KERNLDSCRIPT?=	${ARM}/conf/kern.ldscript
     94       1.17       ryo LOADADDRESS?=	0xffffc00000000000
     95        1.1      matt LINKFLAGS_NORMAL=	-X
     96        1.1      matt 
     97        1.1      matt # Strip AArch64 mapping symbols from the kernel image, as they interfere
     98  1.23.12.1    martin # with ddb, but don't strip them in netbsd.gdb. See Makefile.kern.inc.
     99  1.23.12.1    martin ARCH_STRIP_SYMBOLS=	--strip-symbol='[$$][dx]' \
    100  1.23.12.1    martin 			--strip-symbol='[$$][dx]\.*'
    101        1.1      matt 
    102        1.1      matt ##
    103        1.1      matt ## (6) port specific target dependencies
    104        1.1      matt ##
    105        1.1      matt 
    106        1.1      matt # depend on DIAGNOSTIC etc.
    107        1.1      matt cpuswitch.o fault.o machdep.o: Makefile
    108        1.1      matt 
    109        1.1      matt # various assembly files that depend on assym.h
    110        1.1      matt atomic.o bcopy_page.o bcopyinout.o copystr.o cpuswitch.o cpu_in_cksum.o: assym.h
    111        1.1      matt exception.o sigcode.o: assym.h
    112        1.1      matt spl.o vectors.o: assym.h
    113        1.1      matt 
    114        1.1      matt ##
    115        1.1      matt ## (7) misc settings
    116        1.1      matt ##
    117        1.1      matt 
    118        1.7       rjs # define .MAIN _before_ the make() check, so that implicit target
    119        1.7       rjs # would be defined
    120        1.7       rjs .MAIN: all
    121        1.7       rjs 
    122        1.8  christos .if !make(obj) && !make(clean) && !make(cleandir)
    123        1.8  christos .BEGIN::
    124        1.8  christos 	-@rm -f arm && \
    125        1.7       rjs 		ln -s $S/arch/arm/include arm
    126        1.7       rjs .endif
    127        1.7       rjs 
    128        1.1      matt ##
    129        1.1      matt ## (8) config(8) generated machinery
    130        1.1      matt ##
    131        1.1      matt %INCLUDES
    132        1.1      matt 
    133        1.1      matt %OBJS
    134        1.1      matt 
    135        1.1      matt %CFILES
    136        1.1      matt 
    137        1.1      matt %SFILES
    138        1.1      matt 
    139        1.1      matt %LOAD
    140        1.1      matt 
    141        1.1      matt %RULES
    142        1.1      matt 
    143        1.1      matt ##
    144        1.1      matt ## (9) after the config file is inserted
    145        1.1      matt ##
    146        1.1      matt 
    147        1.1      matt ##
    148        1.1      matt ## (10) port independent kernel machinery
    149        1.1      matt ##
    150        1.1      matt 
    151        1.1      matt .include "$S/conf/Makefile.kern.inc"
    152        1.1      matt 
    153        1.1      matt ##
    154        1.1      matt ## (11) Appending make options.
    155        1.1      matt ##
    156        1.1      matt %MAKEOPTIONSAPPEND
    157