@@ -482,6 +482,19 @@ Linux either.
482482A ` kind = "lib" ` / ` "shared" ` target packs normally on macOS — a library package
483483never runs the artifact. This restriction is only for programs.
484484
485+ The dependency closure can now be ** read** rather than run — ` mcpp.pack.binfmt `
486+ walks a Mach-O's load commands (` LC_LOAD_DYLIB ` and its weak/re-export/upward
487+ siblings for names, ` LC_RPATH ` for search entries) the same way it already
488+ reads a PE's import table, and resolves ` @executable_path ` , ` @loader_path ` and
489+ ` @rpath ` the way ` dyld ` would, without loading anything. ` mcpp pack ` does not
490+ call it yet: bundling a resolved dylib beside the program needs an editor for
491+ ` LC_RPATH ` (a load command has no free space to grow into), and that editor is
492+ designed once resolution is measured on a real macOS build, not before. Until
493+ then a Mach-O program still stages without its closure — see [ Producing a
494+ distributable] ( 30-build-mcpp.md#producing-a-distributable-pack_format--stage_dir-20269111 )
495+ for what a dispatched format (` .app ` , ` .ipa ` ) can already do with a tree that
496+ has a program and no closure.
497+
485498## Configuration
486499
487500Packaging behavior is configured via the ` [pack] ` section in ` mcpp.toml ` . The
@@ -513,11 +526,12 @@ The `static` mode additionally requires a musl toolchain configured under
513526
514527## Planned Support
515528
516- macOS ** program** bundling (the Mach-O dependency closure, via ` otool -L ` /
517- ` LC_LOAD_DYLIB ` , and ` install_name_tool ` for relocation) is still on the
518- roadmap; until it lands ` mcpp pack <program> ` refuses on that format rather than
519- producing something that only looks like a bundle. Windows DLL bundling beyond
520- the current ` .zip ` is also on the roadmap.
529+ macOS ** program** bundling is still on the roadmap. The closure is read now
530+ (` mcpp.pack.binfmt ` 's Mach-O load-command walk — no ` otool ` needed), but
531+ bundling a resolved dylib beside the program and rewriting ` LC_RPATH ` for it
532+ is not; until that lands ` mcpp pack <program> ` still refuses on that format
533+ rather than producing something that only looks like a bundle. Windows DLL
534+ bundling beyond the current ` .zip ` is also on the roadmap.
521535
522536Distribution formats such as ` .deb ` , ` .rpm ` , AppImage and ` .msi ` are ** not** on
523537this list, and that is a decision rather than an omission: they live in
0 commit comments