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