README.compileopts revision 1.12
1 $NetBSD: README.compileopts,v 1.12 2015/06/17 11:46:33 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 / not defined 22effect: Iff defined, build with -DDEBUG. 23 24 25 RUMP_LOCKDEBUG 26 27values: defined / not defined 28effect: Iff defined, build with -DLOCKDEBUG. 29 30 31 RUMP_KTRACE 32 33values: yes|no 34defval: yes 35effect: Iff "yes", build with -DKTRACE. 36 37 38 RUMP_LOCKS_UP 39 40values: yes|no 41defval: no 42effect: 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 49values: yes|no 50defval: yes 51effect: 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 58values: hypercall/__thread/register or <undefined> 59defval: <undefined> 60effect: 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 72values: 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) 75defval: all 76effect: 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 83Rumpuser options: 84 85 RUMPUSER_THREADS 86 87values: pthread/none/fiber or <undefined> 88defval: <undefined> 89effect: 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 99Per-component options: 100 101 RUMP_SYM_NORENAME 102 103values: regexp matching symbol names 104defval: <undefined> 105effect: 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 119The rest of the options described in this file are not intended to be 120set by users, but by the package building rump kernels. 121 122 123 RUMP_KERNEL_IS_LIBC 124 125values: defined / not defined 126effect: 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 135values: no/GNU/sun/ctor 136defval: GNU 137effect: 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