README.compileopts revision 1.13 1 $NetBSD: README.compileopts,v 1.13 2015/06/17 11:48:06 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> / <undefined>
22 defval: <undefined>
23 effect: Iff defined, build with -DDEBUG.
24
25
26 RUMP_LOCKDEBUG
27
28 values: <defined> / <undefined>
29 defval: <undefined>
30 effect: Iff defined, build with -DLOCKDEBUG.
31
32
33 RUMP_KTRACE
34
35 values: yes|no
36 defval: yes
37 effect: Iff "yes", build with -DKTRACE.
38
39
40 RUMP_LOCKS_UP
41
42 values: yes|no
43 defval: no
44 effect: 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
51 values: yes|no
52 defval: yes
53 effect: 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
60 values: hypercall/__thread/register or <undefined>
61 defval: <undefined>
62 effect: 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
74 values: 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)
77 defval: all
78 effect: 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
85 Rumpuser options:
86
87 RUMPUSER_THREADS
88
89 values: pthread/none/fiber or <undefined>
90 defval: <undefined>
91 effect: 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
101 Per-component options:
102
103 RUMP_SYM_NORENAME
104
105 values: regexp matching symbol names
106 defval: <undefined>
107 effect: 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
121 The rest of the options described in this file are not intended to be
122 set by users, but by the package building rump kernels.
123
124
125 RUMP_KERNEL_IS_LIBC
126
127 values: defined / not defined
128 effect: 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
137 values: no/GNU/sun/ctor
138 defval: GNU
139 effect: 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