11.55Smrg#	$NetBSD: Makefile,v 1.55 2025/09/18 03:36:00 mrg Exp $
21.5Scgd#	from: @(#)Makefile	8.1 (Berkeley) 6/4/93
31.1Scgd
41.49SmattWARNS=	3
51.49Smatt
61.44StlsUSE_FORT?= yes	# used primarily by setgid programs
71.44Stls
81.38SlukemUSE_SHLIBDIR=	yes
91.38Slukem
101.1ScgdLIB=	kvm
111.47SmattCPPFLAGS+=-DLIBC_SCCS -I${NETBSDSRCDIR}/sys -D_KMEMUSER
121.6Schopps
131.12SgwrSRCS=	kvm.c kvm_file.c kvm_getloadavg.c kvm_proc.c
141.12Sgwr
151.12Sgwr# This library should compile to the same thing on all variants of
161.12Sgwr# ${MACHINE} with the same ${MACHINE_ARCH} so shared /usr works.
171.13Sgwr# If it is necessary to run different code based on ${MACHINE} then
181.12Sgwr# the dispatch on ${MACHINE} should be done at run time (see m68k).
191.12Sgwr
201.34Sitojun.include <bsd.own.mk>
211.45Smrg.if exists(kvm_${KVM_MACHINE_ARCH}.c)
221.45SmrgSRCS+=	kvm_${KVM_MACHINE_ARCH}.c
231.50Smatt.elif exists(kvm_${KVM_MACHINE_CPU}.c)
241.50SmattSRCS+=	kvm_${KVM_MACHINE_CPU}.c
251.45Smrg.elif exists(kvm_${MACHINE_ARCH}.c)
261.34SitojunSRCS+=	kvm_${MACHINE_ARCH}.c
271.34Sitojun.elif  exists(kvm_${MACHINE_CPU}.c)
281.34SitojunSRCS+=	kvm_${MACHINE_CPU}.c
291.28Sdrochner.else
301.34Sitojun.BEGIN:
311.34Sitojun	@echo no kvm_xx.c for ${MACHINE_ARCH} nor ${MACHINE_CPU}
321.34Sitojun	@false
331.28Sdrochner.endif
341.12Sgwr
351.46Sjym.if ${MACHINE_ARCH} == "i386"
361.46SjymLINTFLAGS+=-w
371.52SrilligLINTFLAGS+=	-X 351		# 'extern' declaration outside header
381.52SrilligLINTFLAGS+=	-X 352		# 'extern' declaration in function body
391.46SjymSRCS+=	kvm_i386pae.c # Hook PAE support in the i386 build
401.46Sjym.endif
411.46Sjym
421.12Sgwr# Additional modules needed for m68k
431.36Sfredette.if (${MACHINE_ARCH} == "m68k" || ${MACHINE_CPU} == "m68k")
441.36SfredetteSRCS+=	kvm_m68k_cmn.c kvm_sun2.c kvm_sun3.c kvm_sun3x.c
451.14Smrg.endif
461.4Scgd
471.10SleoMAN=	kvm.3 kvm_dump.3 kvm_geterr.3 kvm_getfiles.3 kvm_getloadavg.3 \
481.48Schristos	kvm_getkernelname.3 \
491.39Sthorpej	kvm_getprocs.3 kvm_nlist.3 kvm_open.3 kvm_read.3 kvm_getlwps.3
501.4Scgd
511.4ScgdMLINKS+=kvm_getprocs.3 kvm_getargv.3 kvm_getprocs.3 kvm_getenvv.3
521.32SsimonbMLINKS+=kvm_getprocs.3 kvm_getproc2.3
531.32SsimonbMLINKS+=kvm_getprocs.3 kvm_getargv2.3 kvm_getprocs.3 kvm_getenvv2.3
541.4ScgdMLINKS+=kvm_open.3 kvm_openfiles.3 kvm_open.3 kvm_close.3
551.4ScgdMLINKS+=kvm_read.3 kvm_write.3
561.10SleoMLINKS+=kvm_dump.3 kvm_dump_mkheader.3 kvm_dump.3 kvm_dump_wrtheader.3
571.10SleoMLINKS+=kvm_dump.3 kvm_dump_inval.3
581.40Slukem
591.40Slukem# This fixes building with MACHINE==sparc64, MACHINE_ARCH==sparc
601.40Slukem# XXX:	this is a hack, but until the sparc MD headers are separated
611.40Slukem#	out from the sparc AD headers, it's the easiest solution.
621.40Slukem#
631.40Slukem.if (${MACHINE_ARCH} == "sparc")	# {
641.40Slukem.if !make(obj) && !make(clean) && !make(cleandir)
651.40Slukem.BEGIN:
661.40Slukem	@([ -h machine ] || \
671.40Slukem	    ln -fs ${NETBSDSRCDIR}/sys/arch/sparc/include machine)
681.40Slukem	@([ -h sparc ] || ln -fs ${NETBSDSRCDIR}/sys/arch/sparc/include sparc)
691.40Slukem.NOPATH: machine sparc
701.40Slukem.endif
711.40SlukemCLEANFILES+=	machine sparc
721.40SlukemCPPFLAGS+=	-I.
731.40Slukem.endif					# }
741.40Slukem
751.51Schristos.if (${MACHINE_ARCH} == "mips")
761.51SchristosCPPFLAGS+=	-D_KMEMUSER
771.51Schristos.endif
781.51Schristos
791.55SmrgCOPTS.kvm_x86_64.c+=	${CC_WNO_CALLOC_TRANSPOSED_ARGS}
801.1Scgd
811.1Scgd.include <bsd.lib.mk>
82