Home | History | Annotate | Line # | Download | only in rump
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