README.compileopts revision 1.8
1 $NetBSD: README.compileopts,v 1.8 2015/04/23 14:49:26 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_UNREAL_ALLOCATORS 48 49values: yes|no 50defval: no 51effect: If "yes", build version of kmem_alloc, pool and pool_cache 52 that directly relegate allocation to a hypercall. If "no", 53 build the regular NetBSD memory allocators which use 54 page-sized memory allocation hypercalls. 55 56 57 RUMP_VIRTIF 58 59values: yes|no 60defval: yes 61effect: Iff "yes", build the virt(4) network interface. Turning this 62 off may be necessary on systems that lack the necessary headers, 63 e.g. musl libc based Linux. 64 65 66 RUMP_CURLWP 67 68values: hypercall/__thread/register or <undefined> 69defval: <undefined> 70effect: Control how curlwp is obtained in a rump kernel. This is 71 a very frequently accessed thread-local variable, and optimizing 72 access has a significant performance impact. Note that all 73 options are not available on hosts/machine architectures. 74 <undefined> - use default implementation (currently "hypercall") 75 hypercall - use a hypercall to fetch the value 76 __thread - use the __thread feature to fetch value via TLS 77 register - use a dedicated register (implies -ffixed) 78 79 80 RUMP_NBCOMPAT 81 82values: either a comma-separated list of releases (e.g. 50,60), or "all" 83defval: two previous NetBSD releases; check Makefile.rump 84effect: Builds NetBSD COMPAT_nn code for each of the elements in the list. 85 This option is useful only when building rump kernels for 86 NetBSD userspace, and an empty value may be supplied elsewhere. 87 88 89================================================================================ 90 91Rumpuser options: 92 93 RUMPUSER_THREADS 94 95values: pthread/none/fiber or <undefined> 96defval: <undefined> 97effect: Define the way threading is implemented in the rumpuser hypercall 98 implmentation. 99 <undefined> - use default implementation (currently "pthread") 100 pthread - use pthreads to implement threading 101 none - do not support kernel threads at all 102 fiber - user a fiber interface, cooperatively scheduled contexts 103 104 105================================================================================ 106 107Per-component options: 108 109 RUMP_SYM_NORENAME 110 111values: regexp matching symbol names 112defval: <undefined> 113effect: Causes matching symbols from the component to not be renamed 114 into the rump kernel symbol namespace (rumpns_). This option 115 can only be used in embedded environments where there is full 116 control over the platform's namespace. Conversely, this option 117 cannot be used in kernel components which are not meant to be 118 tied to a specific platform. Note: the value is processed by 119 make and must be appropriately escaped. example: 120 RUMP_SYM_NORENAME=HYPERVISOR_|block$$ 121 will not rename "^HYPERVISOR_" or "^block$" 122 123 124================================================================================ 125 126 127The rest of the options described in this file are not intended to be 128set by users, but by the package building rump kernels. 129 130 131 RUMP_KERNEL_IS_LIBC 132 133values: defined / not defined 134effect: Iff defined, export normal system call symbols from libc. 135 For example, without this option rump_sys_open() is exported. 136 With this option, both open() and rump_sys_open() are exported. 137 This option is meant for building systems where a rump kernel 138 is the only operating system like component. 139 140 141 RUMP_LDSCRIPT 142 143values: no/GNU/sun/ctor 144defval: GNU 145effect: Select the linker script to be used for linking rump kernel shared 146 library components. 147 no - do not use a linker script 148 GNU - use a linker script for GNU ld 2.18 and later 149 sun - use a linker script for the Solaris linker 150 ctor - do not use a linker script, make the code 151 generate __attribute__((constructor)) 152