Nat Goodspeed
2016-12-22 20:46:48 UTC
Building Boost 1.57 on OS X 10.11, but building it *for* OS X down to
10.9, we're passing bjam a cxxflags command-line argument including
-mmacosx-version-min=10.9.
We see that switch (along with our other cxxflags switches) in most
"g++" lines in the build output, since we also pass -d2 -d+4.
But for the assembly source files in Boost.Context, the lines do not
contain our requested -mmacosx-version-min switch. In fact they don't
seem to contain any of our cxxflags switches. As a result, the
assembly object files are built for the OS X version on the build
host, 10.11.
At executable link time, this produces messages:
ld: warning: object file
(packages/lib/Release/libboost_context-mt.a(jump_x86_64_sysv_macho_gas.o))
was built for newer OSX version (10.11) than being linked (10.9)
ld: warning: object file
(packages/lib/Release/libboost_context-mt.a(make_x86_64_sysv_macho_gas.o))
was built for newer OSX version (10.11) than being linked (10.9)
(These are the only two .o files producing such messages.)
I'm afraid that the resulting executable won't run on OS X 10.9 or
10.10, and that segment of the population is still interesting to us.
How should we propagate the cxxflags=-mmacosx-version-min=10.9 feature
to the assembler command for Boost.Context?
10.9, we're passing bjam a cxxflags command-line argument including
-mmacosx-version-min=10.9.
We see that switch (along with our other cxxflags switches) in most
"g++" lines in the build output, since we also pass -d2 -d+4.
But for the assembly source files in Boost.Context, the lines do not
contain our requested -mmacosx-version-min switch. In fact they don't
seem to contain any of our cxxflags switches. As a result, the
assembly object files are built for the OS X version on the build
host, 10.11.
At executable link time, this produces messages:
ld: warning: object file
(packages/lib/Release/libboost_context-mt.a(jump_x86_64_sysv_macho_gas.o))
was built for newer OSX version (10.11) than being linked (10.9)
ld: warning: object file
(packages/lib/Release/libboost_context-mt.a(make_x86_64_sysv_macho_gas.o))
was built for newer OSX version (10.11) than being linked (10.9)
(These are the only two .o files producing such messages.)
I'm afraid that the resulting executable won't run on OS X 10.9 or
10.10, and that segment of the population is still interesting to us.
How should we propagate the cxxflags=-mmacosx-version-min=10.9 feature
to the assembler command for Boost.Context?