NetBSD/sys/rump/librump/rumpkern/Makefile.rumpkern
pooka cd3e4f8ebc Reinstate the blanket pmap.h for archs which do not conform to the
kernel ABI (i.e. not i386 or amd64).  Due to the "half function,
half macro, all noodles" nature of pmap.h, it's too entangling and
too brittle to keep up with an ifdeffy MI implementation.
2010-06-16 11:45:21 +00:00

146 lines
4.3 KiB
Makefile

# $NetBSD: Makefile.rumpkern,v 1.91 2010/06/16 11:45:21 pooka Exp $
#
.include "${RUMPTOP}/Makefile.rump"
LIB= rump
.PATH: ${RUMPTOP}/librump/rumpkern \
${RUMPTOP}/../kern \
${RUMPTOP}/../uvm \
${RUMPTOP}/../conf \
${RUMPTOP}/../dev \
${RUMPTOP}/../secmodel/suser
#
# Source modules, first the ones specifically implemented for librump.
#
SRCS= rump.c rumpcopy.c emul.c intr.c klock.c kobj_rename.c \
ltsleep.c memalloc.c scheduler.c signals.c sleepq.c \
sysproxy_socket.c threads.c vm.c
# Multiprocessor or uniprocessor locking. TODO: select right
# locking at runtime.
SRCS+= locks.c
#SRCS+= locks_up.c
vers.c: ${RUMPTOP}/../conf/newvers.sh ${RUMPTOP}/../conf/osrelease.sh ${RUMPTOP}/../sys/param.h
${_MKMSG_CREATE} vers.c
${HOST_SH} ${RUMPTOP}/../conf/newvers.sh -i RUMP-ROAST -n
SRCS+= vers.c
CLEANFILES+= vers.c version
# use MI pmap for archs not conforming to kernel ABI
.ifndef RUMPKMOD
SRCS+= pmap_stub.c
.endif
# autogenerated
#
SRCS+= rump_syscalls.c rumpkern_if_wrappers.c
# "auto"generated
SRCS+= devsw.c
#
# Rest are from the std kernel sources.
#
# sys/kern
SRCS+= init_sysctl_base.c kern_auth.c kern_descrip.c kern_event.c \
kern_hook.c kern_ksyms.c kern_malloc_stdtype.c kern_module.c \
kern_mutex_obj.c kern_ntptime.c kern_proc.c kern_rate.c \
kern_resource.c kern_stub.c kern_syscall.c kern_sysctl.c \
kern_tc.c kern_timeout.c kern_uidinfo.c param.c sys_descrip.c \
sys_generic.c sys_module.c sys_pipe.c sys_select.c syscalls.c
# sys/kern subr (misc)
SRCS+= subr_devsw.c subr_callback.c subr_copy.c subr_device.c \
subr_evcnt.c subr_extent.c subr_hash.c subr_humanize.c \
subr_iostat.c subr_kobj.c subr_log.c subr_lwp_specificdata.c \
subr_once.c subr_prf.c subr_specificdata.c subr_time.c \
subr_workqueue.c subr_xcall.c
# sys/uvm
SRCS+= uvm_readahead.c
# 4.4BSD secmodel. selection is hardcoded for now
SRCS+= secmodel_suser.c
# the funny bit. this doesn't really belong here, but helps with the
# needs of kern_descrip.c. And since it's a fully dynamic interface,
# it doesn't pull in other gunk.
SRCS+= vnode_if.c
# sys/dev
SRCS+= clock_subr.c
# Flip the comment to the other line if you want to use malloc(3)
# directly instead of the kernel allocators backed by malloc(3)/mmap(2).
# Libc malloc is a few percent faster, but doesn't emulate all kernel
# corner cases as well (not to mention if you want to debug the
# allocators themselves).
#CPPFLAGS+= -DRUMP_USE_UNREAL_ALLOCATORS
SRCS+= subr_kmem.c subr_percpu.c subr_pool.c subr_vmem.c
# no shlib_version because this is automatically in sync with lib/librump
SHLIB_MAJOR= 0
SHLIB_MINOR= 0
CPPFLAGS+= -I${RUMPTOP}/librump/rumpkern -I${RUMPTOP}/librump/rumpvfs
CPPFLAGS+= -I${RUMPTOP}/librump/rumpnet -I${RUMPTOP}/librump/rumpdev
AFLAGS+= -D_LOCORE -Wa,-fatal-warnings
#
# If archdir exists, it is required to provide:
# 1) kobj_reloc() and kobj_machdep()
# 2) rump_cpu_bootstrap()
# 3) ...?
# 4) PROFIT!
#
#
# Check if we are building compat. In compat mode we need to provide
# the kernel of our compat target (amd64->i386 & sparc64->sparc), so
# take MD stuff from the right arch.
#
.ifdef MLIBDIR
ARCHDIR= ${RUMPTOP}/librump/rumpkern/arch/${MLIBDIR}
LIBKERN_ARCH= ${MLIBDIR}
.elif exists(${RUMPTOP}/librump/rumpkern/arch/${MACHINE_CPU})
ARCHDIR= ${RUMPTOP}/librump/rumpkern/arch/${MACHINE_CPU}
.else
ARCHDIR= ${RUMPTOP}/librump/rumpkern/arch/${MACHINE_ARCH}
.endif
.if exists(${ARCHDIR})
.include "${ARCHDIR}/Makefile.inc"
.PATH: ${ARCHDIR}
.else
SRCS+= kobj_stubs.c rumpcpu_generic.c
.endif
.if ${MACHINE} == "sun3"
CPPFLAGS+= -Dsun3
.endif
# include libkern source files
KERNDIR=${RUMPTOP}/../lib/libkern
.ifdef RUMPKMOD
KERNMISCCPPFLAGS+= -D_RUMPKERNEL
.endif
.include "${RUMPTOP}/../lib/libkern/Makefile.libkern"
# Some architectures require a little special massage with atomic
# compare-and-swap. This is because the kernel version is using
# instructions or routines unavailable to us in userspace. We
# use effectively the multiprocessor version of the userspace ops.
#
.if ${MACHINE_CPU} == "arm" || ${MACHINE_CPU} == "hppa" \
|| ${MACHINE_CPU} == "mips" || ${MACHINE_CPU} == "sh3" \
|| ${MACHINE_CPU} == "vax" || ${MACHINE_ARCH} == "m68000"
CPPFLAGS+= -I${RUMPTOP}/../../common/lib/libc/atomic
SRCS+= atomic_cas_generic.c
.endif
.include <bsd.lib.mk>
.include <bsd.klinks.mk>