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