SNOBOL4SETUP(3)

πŸ“¦
version 2.3.1 Β· 3 versions
, in fedora 43, fedora 44, opensuse-leap 16.0

πŸ’– 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 named modulename, with whatever extension your local system is feeling that day. and here's the tea, because the assembly of modulename.sno is a whole recipe: it gets built from pre.sno first (but only if pre.sno exists, no forcing it), then lines from the sourcefiles β€” specifically any instances of LOAD(...) that show up in * comments, plus any groups of lines that start with *=pea and end with *=cut (inclusive), plus any comment lines bracketed by *=snobol4 and *=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