README.compileopts revision 1.13
1	$NetBSD: README.compileopts,v 1.13 2015/06/17 11:48:06 pooka Exp $
2
3This file describes compile-time options for rump kernels.  Additionally,
4NetBSD build options will have an effect.  See src/share/mk/bsd.README
5for a desciption of NetBSD build options.
6
7Note: after changing an option, do a clean build.
8
9Global options:
10
11
12    RUMP_DIAGNOSTIC
13
14values:	yes|no
15defval:	yes
16effect:	Iff "yes", build with -DDIAGNOSTIC.
17
18
19    RUMP_DEBUG
20
21values:	<defined> / <undefined>
22defval:	<undefined>
23effect:	Iff defined, build with -DDEBUG.
24
25
26    RUMP_LOCKDEBUG
27
28values:	<defined> / <undefined>
29defval:	<undefined>
30effect:	Iff defined, build with -DLOCKDEBUG.
31
32
33    RUMP_KTRACE
34
35values:	yes|no
36defval:	yes
37effect:	Iff "yes", build with -DKTRACE.
38
39
40    RUMP_LOCKS_UP
41
42values: yes|no
43defval:	no
44effect: If "yes", build rump kernel with uniprocess-optimized locking.
45	An implication of this is that RUMP_NCPU==1 is required at
46	runtime.  If "no", build with multiprocessor-capable locking.
47
48
49    RUMP_VIRTIF
50
51values:	yes|no
52defval:	yes
53effect:	Iff "yes", build the virt(4) network interface.  Turning this
54	off may be necessary on systems that lack the necessary headers,
55	e.g. musl libc based Linux.
56
57
58    RUMP_CURLWP
59
60values: hypercall/__thread/register or <undefined>
61defval: <undefined>
62effect: Control how curlwp is obtained in a rump kernel.  This is
63	a very frequently accessed thread-local variable, and optimizing
64	access has a significant performance impact.  Note that all
65	options are not available on hosts/machine architectures.
66	<undefined> - use default implementation (currently "hypercall")
67	hypercall   - use a hypercall to fetch the value
68	__thread    - use the __thread feature to fetch value via TLS
69	register    - use a dedicated register (implies -ffixed)
70
71
72    RUMP_NBCOMPAT
73
74values: comma-separated list of releases; e.g. "60,70";
75	or "all" or "default" or "none".  Currently default == all (but
76	might not be so in the future)
77defval:	all
78effect:	Builds NetBSD COMPAT_nn code for each of the elements in the list.
79	This option is useful only when building rump kernels for
80	NetBSD userspace, and an empty value may be supplied elsewhere.
81
82
83================================================================================
84
85Rumpuser options:
86
87    RUMPUSER_THREADS
88
89values: pthread/none/fiber or <undefined>
90defval: <undefined>
91effect: Define the way threading is implemented in the rumpuser hypercall
92	implmentation.
93	<undefined> - use default implementation (currently "pthread")
94	pthread     - use pthreads to implement threading
95	none        - do not support kernel threads at all
96	fiber       - user a fiber interface, cooperatively scheduled contexts
97
98
99================================================================================
100
101Per-component options:
102
103    RUMP_SYM_NORENAME
104
105values: regexp matching symbol names
106defval: <undefined>
107effect: Causes matching symbols from the component to not be renamed
108	into the rump kernel symbol namespace (rumpns_).  This option
109	can only be used in embedded environments where there is full
110	control over the platform's namespace.	Conversely, this option
111	cannot be used in kernel components which are not meant to be
112	tied to a specific platform.  Note: the value is processed by
113	make and must be appropriately escaped.  example:
114	RUMP_SYM_NORENAME=HYPERVISOR_|block$$
115	will not rename "^HYPERVISOR_" or "^block$"
116
117
118================================================================================
119
120
121The rest of the options described in this file are not intended to be
122set by users, but by the package building rump kernels.
123
124
125    RUMP_KERNEL_IS_LIBC
126
127values:	defined / not defined
128effect: Iff defined, export normal system call symbols from libc.
129	For example, without this option rump_sys_open() is exported.
130	With this option, both open() and rump_sys_open() are exported.
131	This option is meant for building systems where a rump kernel
132	is the only operating system like component.
133
134
135    RUMP_LDSCRIPT
136
137values: no/GNU/sun/ctor
138defval: GNU
139effect: Select the linker script to be used for linking rump kernel shared
140	library components.
141	no	- do not use a linker script
142	GNU	- use a linker script for GNU ld 2.18 and later
143	sun	- use a linker script for the Solaris linker
144	ctor	- do not use a linker script, make the code
145		  generate __attribute__((constructor))
146