On Tue, Aug 19, 2008 at 11:21 PM, David Deakins <ddeakins@veeco.com> wrote:
Paul Heil wrote:
I'd like to use the Boost library in my Windows Mobile / WinCE projects. I've made some progress compiling Boost 1.36.0
with STLport-5.1.5 for that platform, but I've run in to some issues.

During my research, I've found e-mails dating from 2005 to 2007 that report varying degrees of success, but nothing
conclusive. Has anybody put together a guide for compiling for the ARMV4I WM5/WM6 platforms using Visual Studio 9?

Although we haven't exactly put together a guide, my group has been using Boost with STLport-5.1.5 and Visual C++ 8 (VS2005) for several years.  We compile for a WinCE 5.0 x86 target and also cross-compile for WM5 ARMV4I.  A great deal of the Boost libraries work quite well under WinCE.



My specific problem is that when I attempt to link against the Boost libraries I've compiled, I get a linker error:
fatal error LNK1112: module machine type 'X86' conflicts with target machine type 'THUMB'
when linking against: libboost_system-vc90-mt-sp-1_36.lib


I believe this has to do with how the linkflags settings are configured in your user-config.jam file.  You'll need to explicitly ask for /machine:THUMB to be passed to the linker or else it will default to building the libraries for X86.  For an example of the compile and link flags we included in our builds you look at the summary of the VeecoFTC regression test platform under the Windows section of the trunk regression tests:

http://beta.boost.org/development/tests/trunk/developer/summary.html

Just click on the VeecoFTC link in the header and you'll see the user-config.jam info we use for WM5.

-Dave

_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost-build

The VeecoFTC user-config.jam is a good part of the reason I've gotten as far as I have. If that's yours, then thank you. It's been very helpful. Below is the my addition to my user-config.jam file that I based on the VeecoFTC one.

using msvc : WM5 :
    "cl.exe" :
    <compileflags>-D_CRT_SECURE_NO_WARNINGS
    <compileflags>-D_WIN32_WCE=0x501
    <compileflags>-DUNDER_CE=0x501
    <compileflags>-DWIN32_WCE_PSPC
    <compileflags>-DWINCE
    <compileflags>-DARM
    <compileflags>-D_ARM_
    <compileflags>-DARMV4I
    <compileflags>-D_LITTLE_ENDIAN
    <compileflags>-DUNICODE
    <compileflags>-D_UNICODE
    <compileflags>-DPOCKETPC2003_UI_MODEL   
    <linkflags>/subsystem:windowsce,5.01
    <linkflags>/machine:THUMB
    <linkflags>/NODEFAULTLIB:oldnames.lib
    <linkflags>/STACK:262144,4096
    <linkflags>coredll.lib
    <linkflags>corelibc.lib
    <linkflags>ole32.lib
    <linkflags>oleaut32.lib
    <linkflags>uuid.lib
    <linkflags>commctrl.lib
    <architecture>arm
    <instruction-set>armv4
    <interface>wince
    <assembler>"armasm.exe "
;

I've been using this command line to compile:
bjam --without-python --without-mpi msvc-WM5/variant=debug,release/threading=multi/stdlib=stlport/link=shared,static/runtime-link=static stage

Obviously, I'm still missing something, though. Can you tell from this what that is?

Thanks,
PaulH