jam(1)

✨ NAME ✨

okay so you opened jam(1) from the General Commands Manual, and bestie, you're in for a treat πŸ’–

Jam/MR β€” Make(1) Redux

like, it's the make(1) glow-up. same energy, new outfit. periodt.


πŸŽ€ SYNOPSIS πŸŽ€

jam [-a]  [-g]  [-n]  [-q]  [-v]  [-d debug]  [-f jambase]  [-j jobs]
[-o actionsfile]  [-s var=value]  [-t target]  [target ...]

🌸 DESCRIPTION 🌸

Jam is a program construction tool, like make(1). fr fr, that's the whole vibe.

Jam recursively builds target files from source files, using dependency information and updating actions expressed in the Jambase file β€” which is written in jam's own interpreted language. not me being a whole programming language on the side 😭

The default Jambase is compiled into jam and provides a boilerplate for common use, relying on a user-provide file "Jamfile" to enumerate actual targets and sources. yes, the original says "user-provide", and I am not about to change a single character of it, that's the rule πŸ’…


πŸ’… OPTIONS πŸ’…

  • -a β€” Build all targets anyway, even if they are up-to-date. like, we're doing this regardless, no questions asked πŸ”₯
  • -d n β€” Enable cumulative debugging levels from 1 to n. The interesting values are:
    • 1 β€” Show actions (the default)
    • 2 β€” Show "quiet" actions and display all action text
    • 3 β€” Show dependency analysis, and target/source timestamps/paths
    • 4 β€” Show shell arguments
    • 5 β€” Show rule invocations and variable expansions
    • 6 β€” Show directory/header file/archive scans
    • 7 β€” Show variable settings
    • 8 β€” Show variable fetches
    • 9 β€” Show variable manipulation, scanner tokens
  • -d +n β€” Enable debugging level n. just the one, on top of whatever you already had ✨
  • -d 0 β€” Turn off all debugging levels. Only errors are not suppressed. the silence is loud, bestie 🫢
  • -f jambase β€” Read jambase instead of using the built-in Jambase. Only one -f flag is permitted, but the jambase may explicitly include other files. one flag, one file, but that file can bring its whole friend group πŸ¦‹
  • -g β€” Build targets with the newest sources first, rather than in the order of appearance in the Jambase/Jamfiles. main character targets get to go first πŸ‘‘
  • -j n β€” Run up to n shell commands concurrently (UNIX and NT only). The default is 1. multitasking icon behavior ⭐
  • -n β€” Don't actually execute the updating actions, but do everything else. This changes the debug level default to -d2. all the planning, none of the committing πŸ™ˆ
  • -o file β€” Write the updating actions to the specified file instead of running them (or outputting them, as on the Mac).
  • -q β€” Quit quickly (as if an interrupt was received) as soon as any target build fails. we do not linger πŸ’€
  • -s var=value β€” Set the variable var to value, overriding both internal variables and variables imported from the environment. overriding everything, no cap πŸ’œ
  • -t target β€” Rebuild target and everything that depends on it, even if it is up-to-date. dragging the whole dependency tree along, as one does 🌈
  • -v β€” Print the version of jam and exit. short, sweet, iconic πŸŽ€

πŸ” SEE ALSO πŸ”

jam is documented fully in HTML pages available on Debian systems from /usr/share/doc/jam/Jam.html. go read the full lore, iykyk πŸ“–


πŸ’– AUTHOR πŸ’–

This manual page was created by Yann Dirson dirson@debian.org from the Jam.html documentation, for the Debian GNU/Linux system (but may be used by others). shoutout to Yann, absolute legend for writing all this down 🫢


and that's the whole page, bestie β€” this was jam(1) from the General Commands Manual, footer and all, and yes the footer really is just jam(1) because the man page said so and we keep every detail around here πŸ’…βœ¨