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