少し前に、boost 1.53.0 と 1.54.0 の間のすべての jam ファイルの差分を読んで、これを理解しました。これは大変な作業でした。パッチを投稿するつもりだったのですが、原因を見つけるだけで時間がかかり、それが何だったのか思い出せません。
いずれにせよ、前に進んで締め切りに間に合わせるために使用したクイックフィックスを覚えています。ブースト 1.54.0 の場合、bjam に「toolset=darwin-[version]~iphonesim」引数を指定します。arm builds toolset=darwin-[version]~iphone を指定することもできますが、必要ありません。
たとえば、iOS 6.1 SDK を使用すると、次のようになります。
./b2 toolset=darwin-6.1~iphonesim architecture=x86 target-os=iphone macosx-version=iphonesim-6.1 link=static variant=debug define=BOOST_TEST_NO_MAIN define=BOOST_TEST_ALTERNATIVE_INIT_API linkflags="-stdlib=libc++" -j2 -d+2 -sICU_PATH=/usr/local/icu --without-python --layout=tagged --build-dir="/Users/wix/Desktop/boost_1_54_0/_build/simd_build" --stagedir="/Users/wix/Desktop/boost_1_54_0/_build/simd_stage" --debug-configuration stage
これでうまくいかない場合はお知らせください。時間があれば、バックアップから古いビルドディレクトリを取得して、他に何かしたことがあるかどうかを確認します。上記のコマンドは、私の histfile からのものです。
また、参考までに、同様にビルドされた ICU ライブラリを使用して v7 および v7 のみをターゲットとするアーム ビルドの ICU チェック パスを作成するには、tools/build/v2/tools/darwin.jam に次のパッチを適用します。
460,464c460,465
< if $(instruction-set) {
< options = -arch$(_)$(instruction-set) ;
< } else {
< options = -arch arm ;
< }
---
> #if $(instruction-set) {
> # options = -arch$(_)$(instruction-set) ;
> #} else {
> # options = -arch arm ;
> #}
> options = -arch armv7 ;
また、より一般的には、~/user-config.jam に次のようなものが必要になる場合があります。
using clang : : : <cxxflags>"-std=c++11 -stdlib=libc++" <linkflags>"-stdlib=libc++" ;
using darwin : 6.1~iphone
: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -arch armv7 -arch armv7s -fvisibility=hidden -fvisibility-inlines-hidden -std=c++11 -stdlib=libc++ -miphoneos-version-min=5.1 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk
: <striper> <root>/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer
: <architecture>arm <target-os>iphone
;
using darwin : 6.1~iphonesim
: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -arch i386 -fvisibility=hidden -fvisibility-inlines-hidden -std=c++11 -stdlib=libc++ -miphoneos-version-min=5.1 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator6.1.sdk
: <striper> <root>/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer
: <architecture>x86 <target-os>iphone
;
また、boost::context をシミュレーター用に正しくビルドするには、libs/context/build/Jamfile.v2 に以下を追加する必要がありました。
alias asm_context_sources
: asm/make_i386_sysv_macho_gas.S
asm/jump_i386_sysv_macho_gas.S
: <address-model>32
<architecture>x86
<binary-format>mach-o
<target-os>iphone
<toolset>darwin
;