Boost 1.57 hot-out-of-Git fails to compile for Windows Phone
I cloned Boost 1.57 from GitHub, intending to run b2 with the appropriate options to build libraries for Windows Phone. I understand that Steven Gates's pull requests for Windows Phone have already been merged in. Running the appropriate "b2" command fails with an error message. Can you help?
Here are the steps I took (I'm running MSVC 2013, so I've got all required libs etc.):
(*) Clone Boost 1.57 from GitHub
(*) cd to the boost folder
(*) Execute "bootstrap"
(*) Execute "b2 headers"
(*) Execute "b2 toolset=msvc-12.0 windows-api=phone architecture=arm link=static variant=debug debug-symbols=on debug-store=database stage"
I get the following output:
=============================================================================
Performing configuration checks
- symlinks supported : no (cached)
- junctions supported : yes (cached)
- hardlinks supported : yes (cached)
- 32-bit : yes
- has_icu builds : no
warning: Graph library does not contain MPI-based parallel components.
note: to enable them, add "using mpi ;" to your user-config.jam
- zlib : no
- iconv (libc) : no
- iconv (separate) : no
- icu : no
- icu (lib64) : no
- message-compiler : yes
- gcc visibility : no
- long double support : no
warning: skipping optional Message Passing Interface (MPI) library.
note: to enable MPI support, add "using mpi ;" to user-config.jam.
note: to suppress this message, pass "--without-mpi" to bjam.
note: otherwise, you can safely ignore this message.
error: Name clash for '
Hi Moshe, it is a change in Boost.Context which is causing this. Am Mittwoch, 3. Dezember 2014, 15:06:39 schrieb Moshe Rubin:
I cloned Boost 1.57 from GitHub, intending to run b2 with the appropriate options to build libraries for Windows Phone. I understand that Steven Gates's pull requests for Windows Phone have already been merged in. Running the appropriate "b2" command fails with an error message. Can you help?
I think I have a workaround. See below.
Here are the steps I took (I'm running MSVC 2013, so I've got all required libs etc.):
(*) Clone Boost 1.57 from GitHub (*) cd to the boost folder (*) Execute "bootstrap" (*) Execute "b2 headers" (*) Execute "b2 toolset=msvc-12.0 windows-api=phone architecture=arm link=static variant=debug debug-symbols=on debug-store=database stage"
Looks fine and used to work until last week.
I get the following output:
[snipped]
(1) Why are the first three statements duplicated for windows-api=phone?
The hardlinks issue is a red herring.
(2) Why does <warnings> differ between them?
No idea, but does not matter
(3) Where in Boost.Build is this generated?
By Boost.Context's Jamfile.
(4) How can I solve the problem and move forward?
Add "address-model=32" to your commandline. Explanation: Since sometime last week, Boost.Context depends on Boost.System. Unfortunately, Boost.Context has to explicitly calculate the <address-model> and <architecture> properties in order to select the assembler needed, as those properties have no default value (yet). It so happens that Boost.System is once requested without those properties and a second time with them. And the <layout> rule is asked to build both target with the same effective name in stage/lib. => clash. So explicitly specifying the properties leads to the right solution. I cross-mail this to the Boost.Build list to see if someone has a solution. Yours, Jürgen -- * Dipl.-Math. Jürgen Hunold ! * voice: ++49 4257 300 ! Fährstraße 1 * fax : ++49 4257 300 ! 31609 Balge/Sebbenhausen * jhunold@gmx.eu ! Germany
please use code from branch develop cross-compiling requires to specify following properties at b2 command-line: adress-model=32 architectue=arm binary-format=pe abi=aapcs in build/Jamfile.v2 you have to remove untested.cpp please execute the unit tests (directory libs/context/test) Oliver
participants (3)
-
Jürgen Hunold
-
Moshe Rubin
-
Oliver Kowalke