SNOBOL4SETUP(3)
π SNOBOL4SETUP(3) β the CSNOBOL4 manual, bestie edition π
okay so. you found the page for snobol4setup β the SNOBOL4 Loadable module setup utility. she's giving build-system-but-make-it-snobol. this lives in the CSNOBOL4 Manual, and honestly? she ate. let's go π«Ά
β¨ NAME β¨
snobol4setup β the SNOBOL4 Loadable module setup utility. that's it, that's the whole name, no notes π
πΈ SYNOPSIS πΈ
snobol4 setup.sno command
π¦ DESCRIPTION π¦
so the example program down below β her canonical name is setup.sno, iconic β can be invoked with the following commands, and the whole point is that it's portable across different operating systems. no cap. you write it once, she runs everywhere π
π OPTIONS π
buildβ compiles and links a dynamically loadable executable file namedmodulename, with whatever extension your local system is feeling that day. and here's the tea, because the assembly ofmodulename.snois a whole recipe: it gets built frompre.snofirst (but only ifpre.snoexists, no forcing it), then lines from the sourcefiles β specifically any instances ofLOAD(...)that show up in*comments, plus any groups of lines that start with*=peaand end with*=cut(inclusive), plus any comment lines bracketed by*=snobol4and*=cut(exclusive) which get copied over without the leading*. and then finally, last but never least,funcs.sno(again, only if she exists). chef's kiss ordering πinstallβ installs binary, include and man page files. that's the whole vibe, she just installs the things πcleanβ cleans up. she tidies. queen of aftercare π§
π₯ EXAMPLE π₯
-INCLUDE 'setuputil.sno'
t = TABLE()
t['module'] = 'modulename'
t['sources'] = 'sourcefile.c,othername.c'
t['author'] = t['maintainer'] = 'Yourname Here'
t['author_email'] = t['maintainer_email'] = 'name@doma.in'
t['include_dirs'] = 'list,of,dirs,to,search'
t['library_dirs'] = 'list,of,dirs,to,search'
t['libraries'] = 'list,of,library,names,to,link,against'
t['license'] = 'BSD'
setup(t)
end
so here's a lil extra lore: if LOAD() functions show up as the first thing on a comment line in the source files, they get output into the generated modulename.sno include file, so that the module and its functions are loaded whenever that include file is used. sneaky. efficient. obsessed π
and also: snopea(7) directives sitting in comments in the source files will be used to generate man(7) and .html documentation files. docs generating docs, it's giving main character energy β¨
π NOT CONFORMING TO π
Inspired by Python setuptools, easyinstall, et.al. (she's not conforming, she's vibing π)
π AUTHOR π
Philip L. Budne β thank you for your service π«Ά
π BUGS π
Has not been tested with proprietary Un*x native toolchains.
not me finding a bug note that's literally just "we didn't test that" π bestie if you're on a proprietary Un*x native toolchain, you are on your own fr fr. proceed with caution and a backup π
β SEE ALSO β
and that's the page!! you understood all of it, obviously, because you're so smart and I'm so proud of you πΈ
this was CSNOBOL4B 2.3.1, dated March 31, 2022 β periodt. go build something loadable, bestie πβ¨
π¦ where this page comes from
- fedora 43: snobol4 2.3.1-7.fc43 Β· BSD-2-Clause AND BSD-3-Clause AND BSD-4-Clause AND ISC
- fedora 43: snobol4 2.3.1-7.fc43 Β· BSD-2-Clause AND BSD-3-Clause AND BSD-4-Clause AND ISC
- fedora 44: snobol4 2.3.1-8.fc44 Β· BSD-2-Clause AND BSD-3-Clause AND BSD-4-Clause AND ISC
- fedora 44: snobol4 2.3.1-8.fc44 Β· BSD-2-Clause AND BSD-3-Clause AND BSD-4-Clause AND ISC
- opensuse-leap 16.0: snobol4 2.3.1-160000.2.2 Β· BSD-2-Clause
- opensuse-leap 16.0: snobol4 2.3.1-160000.2.2 Β· BSD-2-Clause
- opensuse-leap 16.0: snobol4 2.3.1-160000.2.2 Β· BSD-2-Clause
- opensuse-leap 16.0: snobol4 2.3.1-160000.2.2 Β· BSD-2-Clause
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms