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