11.17Slukem	$NetBSD: README.compileopts,v 1.17 2023/07/05 16:40:34 lukem Exp $
21.1Spooka
31.17SlukemThis file describes compile-time options for rump kernels.
41.17Slukem
51.17SlukemAdditionally, NetBSD build options will have an effect; see mk.conf(5)
61.17Slukemand src/share/mk/bsd.README for a description of NetBSD build options.
71.1Spooka
81.2SpookaNote: after changing an option, do a clean build.
91.2Spooka
101.5SpookaGlobal options:
111.5Spooka
121.1Spooka
131.1Spooka    RUMP_DIAGNOSTIC
141.1Spooka
151.1Spookavalues:	yes|no
161.1Spookadefval:	yes
171.1Spookaeffect:	Iff "yes", build with -DDIAGNOSTIC.
181.1Spooka
191.1Spooka
201.1Spooka    RUMP_DEBUG
211.1Spooka
221.13Spookavalues:	<defined> / <undefined>
231.13Spookadefval:	<undefined>
241.1Spookaeffect:	Iff defined, build with -DDEBUG.
251.1Spooka
261.1Spooka
271.1Spooka    RUMP_LOCKDEBUG
281.1Spooka
291.13Spookavalues:	<defined> / <undefined>
301.13Spookadefval:	<undefined>
311.1Spookaeffect:	Iff defined, build with -DLOCKDEBUG.
321.1Spooka
331.1Spooka
341.15Shannken    RUMP_VNODE_LOCKDEBUG
351.15Shannken
361.15Shannkenvalues:	<defined> / <undefined>
371.15Shannkendefval:	<undefined>
381.15Shannkeneffect:	Iff defined, build with -DVNODE_LOCKDEBUG.
391.15Shannken
401.15Shannken
411.1Spooka    RUMP_KTRACE
421.1Spooka
431.1Spookavalues:	yes|no
441.1Spookadefval:	yes
451.1Spookaeffect:	Iff "yes", build with -DKTRACE.
461.1Spooka
471.1Spooka
481.1Spooka    RUMP_LOCKS_UP
491.1Spooka
501.1Spookavalues: yes|no
511.1Spookadefval:	no
521.1Spookaeffect: If "yes", build rump kernel with uniprocess-optimized locking.
531.1Spooka	An implication of this is that RUMP_NCPU==1 is required at
541.1Spooka	runtime.  If "no", build with multiprocessor-capable locking.
551.1Spooka
561.1Spooka
571.1Spooka    RUMP_VIRTIF
581.1Spooka
591.1Spookavalues:	yes|no
601.1Spookadefval:	yes
611.1Spookaeffect:	Iff "yes", build the virt(4) network interface.  Turning this
621.1Spooka	off may be necessary on systems that lack the necessary headers,
631.1Spooka	e.g. musl libc based Linux.
641.1Spooka
651.1Spooka
661.3Spooka    RUMP_CURLWP
671.3Spooka
681.3Spookavalues: hypercall/__thread/register or <undefined>
691.3Spookadefval: <undefined>
701.3Spookaeffect: Control how curlwp is obtained in a rump kernel.  This is
711.3Spooka	a very frequently accessed thread-local variable, and optimizing
721.3Spooka	access has a significant performance impact.  Note that all
731.3Spooka	options are not available on hosts/machine architectures.
741.3Spooka	<undefined> - use default implementation (currently "hypercall")
751.3Spooka	hypercall   - use a hypercall to fetch the value
761.3Spooka	__thread    - use the __thread feature to fetch value via TLS
771.3Spooka	register    - use a dedicated register (implies -ffixed)
781.3Spooka
791.3Spooka
801.8Spooka    RUMP_NBCOMPAT
811.7Spooka
821.11Spookavalues: comma-separated list of releases; e.g. "60,70";
831.11Spooka	or "all" or "default" or "none".  Currently default == all (but
841.11Spooka	might not be so in the future)
851.9Spookadefval:	all
861.8Spookaeffect:	Builds NetBSD COMPAT_nn code for each of the elements in the list.
871.8Spooka	This option is useful only when building rump kernels for
881.8Spooka	NetBSD userspace, and an empty value may be supplied elsewhere.
891.7Spooka
901.7Spooka
911.1Spooka================================================================================
921.1Spooka
931.5SpookaPer-component options:
941.5Spooka
951.5Spooka    RUMP_SYM_NORENAME
961.5Spooka
971.5Spookavalues: regexp matching symbol names
981.5Spookadefval: <undefined>
991.5Spookaeffect: Causes matching symbols from the component to not be renamed
1001.5Spooka	into the rump kernel symbol namespace (rumpns_).  This option
1011.5Spooka	can only be used in embedded environments where there is full
1021.5Spooka	control over the platform's namespace.	Conversely, this option
1031.5Spooka	cannot be used in kernel components which are not meant to be
1041.5Spooka	tied to a specific platform.  Note: the value is processed by
1051.5Spooka	make and must be appropriately escaped.  example:
1061.5Spooka	RUMP_SYM_NORENAME=HYPERVISOR_|block$$
1071.5Spooka	will not rename "^HYPERVISOR_" or "^block$"
1081.5Spooka
1091.5Spooka
1101.5Spooka================================================================================
1111.5Spooka
1121.1Spooka
1131.1SpookaThe rest of the options described in this file are not intended to be
1141.1Spookaset by users, but by the package building rump kernels.
1151.1Spooka
1161.1Spooka
1171.1Spooka    RUMP_KERNEL_IS_LIBC
1181.1Spooka
1191.1Spookavalues:	defined / not defined
1201.1Spookaeffect: Iff defined, export normal system call symbols from libc.
1211.1Spooka	For example, without this option rump_sys_open() is exported.
1221.1Spooka	With this option, both open() and rump_sys_open() are exported.
1231.1Spooka	This option is meant for building systems where a rump kernel
1241.1Spooka	is the only operating system like component.
1251.1Spooka
1261.1Spooka
1271.1Spooka    RUMP_LDSCRIPT
1281.1Spooka
1291.4Spookavalues: no/GNU/sun/ctor
1301.1Spookadefval: GNU
1311.1Spookaeffect: Select the linker script to be used for linking rump kernel shared
1321.1Spooka	library components.
1331.4Spooka	no	- do not use a linker script
1341.4Spooka	GNU	- use a linker script for GNU ld 2.18 and later
1351.4Spooka	sun	- use a linker script for the Solaris linker
1361.4Spooka	ctor	- do not use a linker script, make the code
1371.4Spooka		  generate __attribute__((constructor))
138