xref: /netbsd-src/sys/rump/README.compileopts (revision c38e7cc395b1472a774ff828e46123de44c628e9)
1	$NetBSD: README.compileopts,v 1.14 2016/01/25 00:24:23 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
85Per-component options:
86
87    RUMP_SYM_NORENAME
88
89values: regexp matching symbol names
90defval: <undefined>
91effect: Causes matching symbols from the component to not be renamed
92	into the rump kernel symbol namespace (rumpns_).  This option
93	can only be used in embedded environments where there is full
94	control over the platform's namespace.	Conversely, this option
95	cannot be used in kernel components which are not meant to be
96	tied to a specific platform.  Note: the value is processed by
97	make and must be appropriately escaped.  example:
98	RUMP_SYM_NORENAME=HYPERVISOR_|block$$
99	will not rename "^HYPERVISOR_" or "^block$"
100
101
102================================================================================
103
104
105The rest of the options described in this file are not intended to be
106set by users, but by the package building rump kernels.
107
108
109    RUMP_KERNEL_IS_LIBC
110
111values:	defined / not defined
112effect: Iff defined, export normal system call symbols from libc.
113	For example, without this option rump_sys_open() is exported.
114	With this option, both open() and rump_sys_open() are exported.
115	This option is meant for building systems where a rump kernel
116	is the only operating system like component.
117
118
119    RUMP_LDSCRIPT
120
121values: no/GNU/sun/ctor
122defval: GNU
123effect: Select the linker script to be used for linking rump kernel shared
124	library components.
125	no	- do not use a linker script
126	GNU	- use a linker script for GNU ld 2.18 and later
127	sun	- use a linker script for the Solaris linker
128	ctor	- do not use a linker script, make the code
129		  generate __attribute__((constructor))
130