Boost: why "--layout==tagged"?

Michael Dickens michaelld at
Thu Jan 17 20:17:26 UTC 2019

I've been trying to get Boost 1.69.0 working, without much luck yet because the default installed library names as installed by MacPorts are changed from "libboost_COMP-mt.dylib" to "libboost_COMP-mt-ARCH.dylib", where "COMP" is the component name (e.g., "system", "thread") and "ARCH" is the abbreviated architecture (e.g., "x64" for Intel x86 64-bit, "p32" for PPC 32-bit).

None of the build systems that I've checked (cmake and autotools) recognizes this style of library name. I think I can coerce CMake into working, but it's a bit of a hack & may not work work universally. I'd guess I can do the same for other build systems, but each is unique & hence I'd rather get rid of the ARCH part of the library names. Which got me wondering about why the whole "mt" part too.

After some sleuthing, I find that one reason for the library name change is that in the Boost Portfile we're using build.args of "--layout=tagged" rather than the default of "--layout=system". When using the latter, I get just the basic library names: "libboost_COMP.dylib", which to me actually makes the most sense: the goal of "tagged" is to allow simultaneous / parallel installation of multiple Boost libraries: single ("") & multi-threaded "-mt"; different ARCH ("-x64", "-p32" etc); different compilers and compiler versions ("clang10", "gcc8", etc)... you get the idea.

For all practical purposes, we in MacPorts-land just install Boost ... one version, and that's it. We don't need all of the tagged naming for multiple versions installed -- at least not in my experience or opinion.

The commit that moves from "system" to "tagged" goes -way- back: < > ... by Anthony Ramine committed on Jun 19, 2009.

So .... wondering what folks think about moving back to "system" here and just the basic library names. I'm all for it; if you're not, I'd wonder why not? - MLD

More information about the macports-dev mailing list