README.compileopts revision 1.12 1 $NetBSD: README.compileopts,v 1.12 2015/06/17 11:46:33 pooka Exp $
2
3 This file describes compile-time options for rump kernels. Additionally,
4 NetBSD build options will have an effect. See src/share/mk/bsd.README
5 for a desciption of NetBSD build options.
6
7 Note: after changing an option, do a clean build.
8
9 Global options:
10
11
12 RUMP_DIAGNOSTIC
13
14 values: yes|no
15 defval: yes
16 effect: Iff "yes", build with -DDIAGNOSTIC.
17
18
19 RUMP_DEBUG
20
21 values: defined / not defined
22 effect: Iff defined, build with -DDEBUG.
23
24
25 RUMP_LOCKDEBUG
26
27 values: defined / not defined
28 effect: Iff defined, build with -DLOCKDEBUG.
29
30
31 RUMP_KTRACE
32
33 values: yes|no
34 defval: yes
35 effect: Iff "yes", build with -DKTRACE.
36
37
38 RUMP_LOCKS_UP
39
40 values: yes|no
41 defval: no
42 effect: 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
49 values: yes|no
50 defval: yes
51 effect: 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
58 values: hypercall/__thread/register or <undefined>
59 defval: <undefined>
60 effect: 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
72 values: 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)
75 defval: all
76 effect: 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
83 Rumpuser options:
84
85 RUMPUSER_THREADS
86
87 values: pthread/none/fiber or <undefined>
88 defval: <undefined>
89 effect: 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
99 Per-component options:
100
101 RUMP_SYM_NORENAME
102
103 values: regexp matching symbol names
104 defval: <undefined>
105 effect: 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
119 The rest of the options described in this file are not intended to be
120 set by users, but by the package building rump kernels.
121
122
123 RUMP_KERNEL_IS_LIBC
124
125 values: defined / not defined
126 effect: 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
135 values: no/GNU/sun/ctor
136 defval: GNU
137 effect: 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