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