README.compileopts revision 1.13
11.13Spooka	$NetBSD: README.compileopts,v 1.13 2015/06/17 11:48:06 pooka Exp $
21.1Spooka
31.1SpookaThis file describes compile-time options for rump kernels.  Additionally,
41.1SpookaNetBSD build options will have an effect.  See src/share/mk/bsd.README
51.1Spookafor a desciption of NetBSD build options.
61.1Spooka
71.2SpookaNote: after changing an option, do a clean build.
81.2Spooka
91.5SpookaGlobal options:
101.5Spooka
111.1Spooka
121.1Spooka    RUMP_DIAGNOSTIC
131.1Spooka
141.1Spookavalues:	yes|no
151.1Spookadefval:	yes
161.1Spookaeffect:	Iff "yes", build with -DDIAGNOSTIC.
171.1Spooka
181.1Spooka
191.1Spooka    RUMP_DEBUG
201.1Spooka
211.13Spookavalues:	<defined> / <undefined>
221.13Spookadefval:	<undefined>
231.1Spookaeffect:	Iff defined, build with -DDEBUG.
241.1Spooka
251.1Spooka
261.1Spooka    RUMP_LOCKDEBUG
271.1Spooka
281.13Spookavalues:	<defined> / <undefined>
291.13Spookadefval:	<undefined>
301.1Spookaeffect:	Iff defined, build with -DLOCKDEBUG.
311.1Spooka
321.1Spooka
331.1Spooka    RUMP_KTRACE
341.1Spooka
351.1Spookavalues:	yes|no
361.1Spookadefval:	yes
371.1Spookaeffect:	Iff "yes", build with -DKTRACE.
381.1Spooka
391.1Spooka
401.1Spooka    RUMP_LOCKS_UP
411.1Spooka
421.1Spookavalues: yes|no
431.1Spookadefval:	no
441.1Spookaeffect: If "yes", build rump kernel with uniprocess-optimized locking.
451.1Spooka	An implication of this is that RUMP_NCPU==1 is required at
461.1Spooka	runtime.  If "no", build with multiprocessor-capable locking.
471.1Spooka
481.1Spooka
491.1Spooka    RUMP_VIRTIF
501.1Spooka
511.1Spookavalues:	yes|no
521.1Spookadefval:	yes
531.1Spookaeffect:	Iff "yes", build the virt(4) network interface.  Turning this
541.1Spooka	off may be necessary on systems that lack the necessary headers,
551.1Spooka	e.g. musl libc based Linux.
561.1Spooka
571.1Spooka
581.3Spooka    RUMP_CURLWP
591.3Spooka
601.3Spookavalues: hypercall/__thread/register or <undefined>
611.3Spookadefval: <undefined>
621.3Spookaeffect: Control how curlwp is obtained in a rump kernel.  This is
631.3Spooka	a very frequently accessed thread-local variable, and optimizing
641.3Spooka	access has a significant performance impact.  Note that all
651.3Spooka	options are not available on hosts/machine architectures.
661.3Spooka	<undefined> - use default implementation (currently "hypercall")
671.3Spooka	hypercall   - use a hypercall to fetch the value
681.3Spooka	__thread    - use the __thread feature to fetch value via TLS
691.3Spooka	register    - use a dedicated register (implies -ffixed)
701.3Spooka
711.3Spooka
721.8Spooka    RUMP_NBCOMPAT
731.7Spooka
741.11Spookavalues: comma-separated list of releases; e.g. "60,70";
751.11Spooka	or "all" or "default" or "none".  Currently default == all (but
761.11Spooka	might not be so in the future)
771.9Spookadefval:	all
781.8Spookaeffect:	Builds NetBSD COMPAT_nn code for each of the elements in the list.
791.8Spooka	This option is useful only when building rump kernels for
801.8Spooka	NetBSD userspace, and an empty value may be supplied elsewhere.
811.7Spooka
821.7Spooka
831.1Spooka================================================================================
841.1Spooka
851.6SjustinRumpuser options:
861.6Sjustin
871.6Sjustin    RUMPUSER_THREADS
881.6Sjustin
891.6Sjustinvalues: pthread/none/fiber or <undefined>
901.6Sjustindefval: <undefined>
911.6Sjustineffect: Define the way threading is implemented in the rumpuser hypercall
921.6Sjustin	implmentation.
931.6Sjustin	<undefined> - use default implementation (currently "pthread")
941.6Sjustin	pthread     - use pthreads to implement threading
951.6Sjustin	none        - do not support kernel threads at all
961.6Sjustin	fiber       - user a fiber interface, cooperatively scheduled contexts
971.6Sjustin
981.6Sjustin
991.6Sjustin================================================================================
1001.6Sjustin
1011.5SpookaPer-component options:
1021.5Spooka
1031.5Spooka    RUMP_SYM_NORENAME
1041.5Spooka
1051.5Spookavalues: regexp matching symbol names
1061.5Spookadefval: <undefined>
1071.5Spookaeffect: Causes matching symbols from the component to not be renamed
1081.5Spooka	into the rump kernel symbol namespace (rumpns_).  This option
1091.5Spooka	can only be used in embedded environments where there is full
1101.5Spooka	control over the platform's namespace.	Conversely, this option
1111.5Spooka	cannot be used in kernel components which are not meant to be
1121.5Spooka	tied to a specific platform.  Note: the value is processed by
1131.5Spooka	make and must be appropriately escaped.  example:
1141.5Spooka	RUMP_SYM_NORENAME=HYPERVISOR_|block$$
1151.5Spooka	will not rename "^HYPERVISOR_" or "^block$"
1161.5Spooka
1171.5Spooka
1181.5Spooka================================================================================
1191.5Spooka
1201.1Spooka
1211.1SpookaThe rest of the options described in this file are not intended to be
1221.1Spookaset by users, but by the package building rump kernels.
1231.1Spooka
1241.1Spooka
1251.1Spooka    RUMP_KERNEL_IS_LIBC
1261.1Spooka
1271.1Spookavalues:	defined / not defined
1281.1Spookaeffect: Iff defined, export normal system call symbols from libc.
1291.1Spooka	For example, without this option rump_sys_open() is exported.
1301.1Spooka	With this option, both open() and rump_sys_open() are exported.
1311.1Spooka	This option is meant for building systems where a rump kernel
1321.1Spooka	is the only operating system like component.
1331.1Spooka
1341.1Spooka
1351.1Spooka    RUMP_LDSCRIPT
1361.1Spooka
1371.4Spookavalues: no/GNU/sun/ctor
1381.1Spookadefval: GNU
1391.1Spookaeffect: Select the linker script to be used for linking rump kernel shared
1401.1Spooka	library components.
1411.4Spooka	no	- do not use a linker script
1421.4Spooka	GNU	- use a linker script for GNU ld 2.18 and later
1431.4Spooka	sun	- use a linker script for the Solaris linker
1441.4Spooka	ctor	- do not use a linker script, make the code
1451.4Spooka		  generate __attribute__((constructor))
146