11.17Slukem $NetBSD: README.compileopts,v 1.17 2023/07/05 16:40:34 lukem Exp $ 21.1Spooka 31.17SlukemThis file describes compile-time options for rump kernels. 41.17Slukem 51.17SlukemAdditionally, NetBSD build options will have an effect; see mk.conf(5) 61.17Slukemand src/share/mk/bsd.README for a description of NetBSD build options. 71.1Spooka 81.2SpookaNote: after changing an option, do a clean build. 91.2Spooka 101.5SpookaGlobal options: 111.5Spooka 121.1Spooka 131.1Spooka RUMP_DIAGNOSTIC 141.1Spooka 151.1Spookavalues: yes|no 161.1Spookadefval: yes 171.1Spookaeffect: Iff "yes", build with -DDIAGNOSTIC. 181.1Spooka 191.1Spooka 201.1Spooka RUMP_DEBUG 211.1Spooka 221.13Spookavalues: <defined> / <undefined> 231.13Spookadefval: <undefined> 241.1Spookaeffect: Iff defined, build with -DDEBUG. 251.1Spooka 261.1Spooka 271.1Spooka RUMP_LOCKDEBUG 281.1Spooka 291.13Spookavalues: <defined> / <undefined> 301.13Spookadefval: <undefined> 311.1Spookaeffect: Iff defined, build with -DLOCKDEBUG. 321.1Spooka 331.1Spooka 341.15Shannken RUMP_VNODE_LOCKDEBUG 351.15Shannken 361.15Shannkenvalues: <defined> / <undefined> 371.15Shannkendefval: <undefined> 381.15Shannkeneffect: Iff defined, build with -DVNODE_LOCKDEBUG. 391.15Shannken 401.15Shannken 411.1Spooka RUMP_KTRACE 421.1Spooka 431.1Spookavalues: yes|no 441.1Spookadefval: yes 451.1Spookaeffect: Iff "yes", build with -DKTRACE. 461.1Spooka 471.1Spooka 481.1Spooka RUMP_LOCKS_UP 491.1Spooka 501.1Spookavalues: yes|no 511.1Spookadefval: no 521.1Spookaeffect: If "yes", build rump kernel with uniprocess-optimized locking. 531.1Spooka An implication of this is that RUMP_NCPU==1 is required at 541.1Spooka runtime. If "no", build with multiprocessor-capable locking. 551.1Spooka 561.1Spooka 571.1Spooka RUMP_VIRTIF 581.1Spooka 591.1Spookavalues: yes|no 601.1Spookadefval: yes 611.1Spookaeffect: Iff "yes", build the virt(4) network interface. Turning this 621.1Spooka off may be necessary on systems that lack the necessary headers, 631.1Spooka e.g. musl libc based Linux. 641.1Spooka 651.1Spooka 661.3Spooka RUMP_CURLWP 671.3Spooka 681.3Spookavalues: hypercall/__thread/register or <undefined> 691.3Spookadefval: <undefined> 701.3Spookaeffect: Control how curlwp is obtained in a rump kernel. This is 711.3Spooka a very frequently accessed thread-local variable, and optimizing 721.3Spooka access has a significant performance impact. Note that all 731.3Spooka options are not available on hosts/machine architectures. 741.3Spooka <undefined> - use default implementation (currently "hypercall") 751.3Spooka hypercall - use a hypercall to fetch the value 761.3Spooka __thread - use the __thread feature to fetch value via TLS 771.3Spooka register - use a dedicated register (implies -ffixed) 781.3Spooka 791.3Spooka 801.8Spooka RUMP_NBCOMPAT 811.7Spooka 821.11Spookavalues: comma-separated list of releases; e.g. "60,70"; 831.11Spooka or "all" or "default" or "none". Currently default == all (but 841.11Spooka might not be so in the future) 851.9Spookadefval: all 861.8Spookaeffect: Builds NetBSD COMPAT_nn code for each of the elements in the list. 871.8Spooka This option is useful only when building rump kernels for 881.8Spooka NetBSD userspace, and an empty value may be supplied elsewhere. 891.7Spooka 901.7Spooka 911.1Spooka================================================================================ 921.1Spooka 931.5SpookaPer-component options: 941.5Spooka 951.5Spooka RUMP_SYM_NORENAME 961.5Spooka 971.5Spookavalues: regexp matching symbol names 981.5Spookadefval: <undefined> 991.5Spookaeffect: Causes matching symbols from the component to not be renamed 1001.5Spooka into the rump kernel symbol namespace (rumpns_). This option 1011.5Spooka can only be used in embedded environments where there is full 1021.5Spooka control over the platform's namespace. Conversely, this option 1031.5Spooka cannot be used in kernel components which are not meant to be 1041.5Spooka tied to a specific platform. Note: the value is processed by 1051.5Spooka make and must be appropriately escaped. example: 1061.5Spooka RUMP_SYM_NORENAME=HYPERVISOR_|block$$ 1071.5Spooka will not rename "^HYPERVISOR_" or "^block$" 1081.5Spooka 1091.5Spooka 1101.5Spooka================================================================================ 1111.5Spooka 1121.1Spooka 1131.1SpookaThe rest of the options described in this file are not intended to be 1141.1Spookaset by users, but by the package building rump kernels. 1151.1Spooka 1161.1Spooka 1171.1Spooka RUMP_KERNEL_IS_LIBC 1181.1Spooka 1191.1Spookavalues: defined / not defined 1201.1Spookaeffect: Iff defined, export normal system call symbols from libc. 1211.1Spooka For example, without this option rump_sys_open() is exported. 1221.1Spooka With this option, both open() and rump_sys_open() are exported. 1231.1Spooka This option is meant for building systems where a rump kernel 1241.1Spooka is the only operating system like component. 1251.1Spooka 1261.1Spooka 1271.1Spooka RUMP_LDSCRIPT 1281.1Spooka 1291.4Spookavalues: no/GNU/sun/ctor 1301.1Spookadefval: GNU 1311.1Spookaeffect: Select the linker script to be used for linking rump kernel shared 1321.1Spooka library components. 1331.4Spooka no - do not use a linker script 1341.4Spooka GNU - use a linker script for GNU ld 2.18 and later 1351.4Spooka sun - use a linker script for the Solaris linker 1361.4Spooka ctor - do not use a linker script, make the code 1371.4Spooka generate __attribute__((constructor)) 138