Boost logo

Boost-Build :

Subject: Re: [Boost-build] Boost 1.56 Cross-compile Build FAILS using mingw on Linux with Windows Target
From: Jürgen Hunold (jhunold_at_[hidden])
Date: 2014-09-08 05:07:23


Hi!

Am Sonntag, 7. September 2014, 22:26:17 schrieb boostqa:
> Cross compiling using mingw on ubuntu 14.04.
>
> I do:
>
> ./bootstrap.sh --without-icu
> echo "using gcc : 4.9 : i686-w64-mingw32-g++ : <rc>i686-w64-mingw32-windres
> <archiver>i686-w64-mingw32-ar ;" > user-config.jam
> ./bjam toolset=gcc target-os=windows variant=release threading=multi
> threadapi=win32 --user-config=user-config.jam --without-mpi
> --without-python -sNO_BZIP2=1 --layout=tagged stage

Setup is ok.

> ERROR IS:
>
> gcc.compile.asm
> bin.v2/libs/context/build/gcc-mingw-4.9/release/architecture-x86/link-static
> /target-os-windows/threadapi-win32/threading-multi/asm/make_i386_sysv_elf_ga
> s.o libs/context/src/asm/make_i386_sysv_elf_gas.S: Assembler messages:
> libs/context/src/asm/make_i386_sysv_elf_gas.S:23: Warning: .type pseudo-op
> used outside of .def/.endef ignored.
> libs/context/src/asm/make_i386_sysv_elf_gas.S:23: Error: junk at end of
> line, first unrecognized character is `m'
> libs/context/src/asm/make_i386_sysv_elf_gas.S:74: Warning: .size pseudo-op
> used outside of .def/.endef ignored.
> libs/context/src/asm/make_i386_sysv_elf_gas.S:74: Error: junk at end of
> line, first unrecognized character is `m'
> libs/context/src/asm/make_i386_sysv_elf_gas.S:77: Error: junk at end of
> line, first unrecognized character is `-'
>
> "i686-w64-mingw32-g++" -x assembler-with-cpp -O3 -finline-functions
> -Wno-inline -Wall -DBOOST_ALL_NO_LIB=1 -DBOOST_CONTEXT_SOURCE -DNDEBUG -I"."
> -c -o
> "bin.v2/libs/context/build/gcc-mingw-4.9/release/architecture-x86/link-stati
> c/target-os-windows/threadapi-win32/threading-multi/asm/make_i386_sysv_elf_g
> as.o" "libs/context/src/asm/make_i386_sysv_elf_gas.S"
>
> ...failed gcc.compile.asm
> bin.v2/libs/context/build/gcc-mingw-4.9/release/architecture-x86/link-static
> /target-os-windows/threadapi-win32/threading-multi/asm/make_i386_sysv_elf_ga
> s.o...
>
>
> Question:
> What is 'junk at end of line' ?

The gnu assembler is probably using the linux implementation.

> This is very strange... I need to setup a Qt5 cross-compile environment in
> linux, and need boost. Any suggestions?

This is only Boost.Context failing. It can't be cross-compiled because it only
has microsoft assembler files. See the mailing lists archives about the
numerous complaints about Boost.Context not having a gnu assembler
implementation for Windows.

This is not a Boost.Build problem, but a Boost.Context setup/implementation
problem.

If you don't need Boost.Context, everything is fine. Else try porting the
windows implementation from microsoft assembler to gas and submit a pull
request for it.

Yours,

Jürgen

-- 
* Dipl.-Math. Jürgen Hunold  ! 
* voice: ++49 4257 300       ! Fährstraße 1
* fax  : ++49 4257 300       ! 31609 Balge/Sebbenhausen
* jhunold_at_gmx.eu             ! Germany

Boost-Build list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk