Makefile.rumpkern revision 1.84
11.84Spooka#	$NetBSD: Makefile.rumpkern,v 1.84 2010/05/11 22:21:05 pooka Exp $
21.1Spooka#
31.1Spooka
41.1Spooka.include "${RUMPTOP}/Makefile.rump"
51.1Spooka
61.1SpookaLIB=		rump
71.1Spooka
81.1Spooka.PATH:	${RUMPTOP}/librump/rumpkern				\
91.31Spooka	${RUMPTOP}/../kern					\
101.55Spooka	${RUMPTOP}/../uvm					\
111.31Spooka	${RUMPTOP}/../conf					\
121.43Spooka	${RUMPTOP}/../dev					\
131.50Selad	${RUMPTOP}/../secmodel/suser
141.1Spooka
151.11Spooka#
161.14Spooka# Source modules, first the ones specifically implemented for librump.
171.11Spooka# 
181.81SpookaSRCS=	rump.c rumpcopy.c emul.c intr.c kobj_rename.c locks.c	\
191.81Spooka	ltsleep.c memalloc.c scheduler.c signals.c sleepq.c	\
201.78Spooka	sysproxy_socket.c threads.c vm.c
211.20Spooka
221.69Spookavers.c: ${RUMPTOP}/../conf/newvers.sh ${RUMPTOP}/../conf/osrelease.sh
231.69Spooka	${_MKMSG_CREATE} vers.c
241.70Spooka	${HOST_SH} ${RUMPTOP}/../conf/newvers.sh -i RUMP-ROAST -n
251.69SpookaSRCS+=		vers.c
261.69SpookaCLEANFILES+=	vers.c version
271.69Spooka
281.14Spooka# stubs
291.20Spooka#
301.62SpookaSRCS+=	pmap_stub.c
311.20Spooka
321.20Spooka# autogenerated
331.20Spooka#
341.56SpookaSRCS+=	rump_syscalls.c rumpkern_if_wrappers.c
351.1Spooka
361.82Spooka# "auto"generated
371.82SpookaSRCS+=	devsw.c
381.82Spooka
391.11Spooka#
401.11Spooka# Rest are from the std kernel sources.
411.11Spooka#
421.1Spooka# sys/kern
431.48SpookaSRCS+=	init_sysctl_base.c kern_auth.c kern_descrip.c kern_event.c	\
441.72Spooka	kern_hook.c kern_ksyms.c kern_malloc_stdtype.c kern_module.c	\
451.79Spooka	kern_mutex_obj.c kern_ntptime.c kern_rate.c kern_resource.c	\
461.79Spooka	kern_stub.c kern_syscall.c kern_sysctl.c kern_tc.c		\
471.79Spooka	kern_timeout.c kern_uidinfo.c param.c sys_descrip.c		\
481.80Spooka	sys_generic.c sys_module.c sys_pipe.c sys_select.c syscalls.c
491.11Spooka
501.11Spooka# sys/kern subr (misc)
511.73SpookaSRCS+=	subr_devsw.c subr_callback.c subr_copy.c subr_device.c		\
521.73Spooka	subr_evcnt.c subr_extent.c subr_hash.c subr_humanize.c		\
531.75Spooka	subr_iostat.c subr_kobj.c subr_log.c subr_lwp_specificdata.c	\
541.75Spooka	subr_once.c subr_prf.c subr_specificdata.c subr_time.c		\
551.75Spooka	subr_workqueue.c subr_xcall.c
561.11Spooka
571.55Spooka# sys/uvm
581.55SpookaSRCS+=	uvm_readahead.c
591.55Spooka
601.43Spooka# 4.4BSD secmodel.  selection is hardcoded for now
611.50SeladSRCS+=	secmodel_suser.c
621.43Spooka
631.20Spooka# the funny bit.  this doesn't really belong here, but helps with the
641.20Spooka# needs of kern_descrip.c.  And since it's a fully dynamic interface,
651.20Spooka# it doesn't pull in other gunk.
661.20SpookaSRCS+=	vnode_if.c
671.1Spooka
681.11Spooka# sys/dev
691.11SpookaSRCS+=	clock_subr.c
701.11Spooka
711.65Spooka# Flip the comment to the other line if you want to use malloc(3)
721.65Spooka# directly instead of the kernel allocators backed by malloc(3)/mmap(2).
731.65Spooka# Libc malloc is a few percent faster, but doesn't emulate all kernel
741.65Spooka# corner cases as well (not to mention if you want to debug the
751.65Spooka# allocators themselves).
761.65Spooka#CPPFLAGS+=	-DRUMP_USE_UNREAL_ALLOCATORS
771.71SpookaSRCS+=		subr_kmem.c subr_percpu.c subr_pool.c subr_vmem.c
781.6Spooka
791.1Spooka# no shlib_version because this is automatically in sync with lib/librump
801.1SpookaSHLIB_MAJOR=    0
811.1SpookaSHLIB_MINOR=    0
821.1Spooka
831.47SpookaCPPFLAGS+=	-I${RUMPTOP}/librump/rumpkern -I${RUMPTOP}/librump/rumpvfs
841.47SpookaCPPFLAGS+=	-I${RUMPTOP}/librump/rumpnet -I${RUMPTOP}/librump/rumpdev
851.32SpookaAFLAGS+=	-D_LOCORE -Wa,-fatal-warnings
861.1Spooka
871.27Spooka#
881.27Spooka# If archdir exists, it is required to provide:
891.27Spooka# 1) kobj_reloc() and kobj_machdep()
901.52Spooka# 2) rump_cpu_bootstrap()
911.52Spooka# 3) ...?
921.52Spooka# 4) PROFIT!
931.27Spooka#
941.30Spooka
951.30Spooka#
961.34Spooka# Check if we are building compat.  In compat mode we need to provide
971.34Spooka# the kernel of our compat target (amd64->i386 & sparc64->sparc), so
981.34Spooka# take MD stuff from the right arch.
991.30Spooka#
1001.67Smrg.ifdef MLIBDIR
1011.67SmrgARCHDIR=	${RUMPTOP}/librump/rumpkern/arch/${MLIBDIR}
1021.67SmrgLIBKERN_ARCH=	${MLIBDIR}
1031.68Smatt.elif exists(${RUMPTOP}/librump/rumpkern/arch/${MACHINE_CPU})
1041.68SmattARCHDIR=	${RUMPTOP}/librump/rumpkern/arch/${MACHINE_CPU}
1051.30Spooka.else
1061.24SpookaARCHDIR=	${RUMPTOP}/librump/rumpkern/arch/${MACHINE_ARCH}
1071.30Spooka.endif
1081.24Spooka.if exists(${ARCHDIR})
1091.24Spooka.include "${ARCHDIR}/Makefile.inc"
1101.24Spooka.PATH:	${ARCHDIR}
1111.27Spooka.else
1121.52SpookaSRCS+=	kobj_stubs.c rumpcpu_generic.c
1131.24Spooka.endif
1141.24Spooka
1151.31Spooka# include libkern source files
1161.31SpookaKERNDIR=${RUMPTOP}/../lib/libkern
1171.84Spooka.ifdef RUMPKMOD
1181.84SpookaKERNMISCCPPFLAGS+=	-D_RUMPKERNEL
1191.84Spooka.endif
1201.31Spooka.include "${RUMPTOP}/../lib/libkern/Makefile.libkern"
1211.31Spooka
1221.36Spooka# Some architectures require a little special massage with atomic
1231.36Spooka# compare-and-swap.  This is because the kernel version is using
1241.36Spooka# instructions or routines unavailable to us in userspace.  We
1251.36Spooka# use effectively the multiprocessor version of the userspace ops.
1261.36Spooka#
1271.36Spooka.if ${MACHINE_CPU} == "arm" || ${MACHINE_CPU} == "hppa" \
1281.37Spooka    || ${MACHINE_CPU} == "mips" || ${MACHINE_CPU} == "sh3" \
1291.54Schristos    || ${MACHINE_CPU} == "vax" || ${MACHINE_ARCH} == "m68000"
1301.36SpookaCPPFLAGS+=	-I${RUMPTOP}/../../common/lib/libc/atomic
1311.36SpookaSRCS+=		atomic_cas_generic.c
1321.36Spooka.endif
1331.36Spooka
1341.1Spooka.include <bsd.lib.mk>
1351.1Spooka.include <bsd.klinks.mk>
136