Hello,
I had difficulties building some boost libraries (system, thread, date_time, regex) I use in an API project for devices running Windows Mobile 6 / Windows CE. As I found close to no information on how to get the libs built for this platform and I struggled for a couple days to get this working, I would like to share my build environment as a reference for people with similar problems.
Below I have included my user-config.jam and my environment setup batch file cesetup.bat. I also enclosed a bit of info on host and target systems used and the call i used to b2.exe.
Build Info:
- Host OS: Windows 7 SP1 (32-bit)
- Target OS: Windows Mobile Professional 6.1
- Target CPU:
Marvell PXA310 806MHz (ARMv5 XScale arch)
- Toolset: msvc-9.0~wm6 using stdlib stlport-5.2.1~wm6 for arm
- SW Versions used:
- Boost v1.4.7
- STLPort 5.2.1
-
Windows Mobile 6 SDK (for ARMv4I)
user-config.jam:
using msvc : 9.0~wm6 :
"cl.exe" :
<compileflags>-D_CRT_SECURE_NO_WARNINGS
<compileflags>-D_STLP_USE_WINCE_CRT_FUNCTIONS
<compileflags>-DUNDER_CE
<compileflags>-DWINCE
<compileflags>-D_WINDOWS
<compileflags>-DUNICODE
<compileflags>-D_UNICODE
<compileflags>-D_WIN32
<compileflags>-DWIN32_PLATFROM_PSPC
<compileflags>-DARMV4I
<compileflags>-D_ARMV4I_
<compileflags>-Darmv4i
<compileflags>-D_ARM_
<compileflags>-DARM
<compileflags>-D__arm__
<compileflags>-DQ_OS_WINCE_WM
<compileflags>-D_WIN32_WCE=0x502
<compileflags>-Zm200
<compileflags>-w34100
<compileflags>-w34189
<cxxflags>/QRarch4
<cxxflags>/GL
<linkflags>/INCREMENTAL:NO
<linkflags>/NOLOGO
<linkflags>/MANIFEST:NO
<linkflags>/NODEFAULTLIB:"OLDNAMES.LIB"
<linkflags>/DELAY:UNLOAD
<linkflags>/SUBSYSTEM:WINDOWSCE,5.02
<linkflags>/MACHINE:THUMB
<linkflags>/ENTRY:mainACRTStartup
<linkflags>/STACK:262144,4096
<linkflags>coredll.lib
<linkflags>corelibc.lib
<linkflags>ole32.lib
<linkflags>oleaut32.lib
<linkflags>uuid.lib
<linkflags>commctrl.lib
<architecture>arm
<interface>wince
<setup>"C:/some/path/here/cesetup.bat"
;
using stlport : 5.2.1~wm6 :
C:/some/path/here/stlport_5_2_1/stlport :
C:/some/path/here/stlport_5_2_1/lib/evc9-wm6
;
Environment setup cesetup.sh:
@echo off
echo Environment Selection:Windows Mobile 6 Professional SDK (ARMV4I)
set PATH=C:\Program Files\Microsoft Visual Studio 9.0\VC\ce\bin\x86_arm;C:\Program Files\Microsoft Visual Studio 9.0\VC\bin;$(WindowsSdkDir)\bin;\Common7\Tools;\Common7\IDE;\Common\Tools;\Common\IDE;\;$(FrameworkSDKDir)Bin;%PATH%
set INCLUDE=C:\Program Files\Microsoft Visual Studio 9.0\VC\ce\include;C:\Program Files\Windows Mobile 6 SDK\PocketPC\include\ARMV4I;C:\Program Files\Windows Mobile 6 SDK\PocketPC\include;C:\Program Files\Microsoft Visual Studio 9.0\VC\ce\atlmfc\include;\SmartDevices\SDK\SQL Server\Mobile\v3.0
set LIB=C:\Program Files\Windows Mobile 6 SDK\PocketPC\lib\ARMV4I;C:\Program Files\Microsoft Visual Studio 9.0\VC\ce\atlmfc\lib\ARMV4I;C:\Program Files\Microsoft Visual Studio 9.0\VC\ce\lib\ARMV4I
Command line:
C:\some\path\boost_1_47_0>
b2 --debug--configuration --debug-building -d+2 \
variant=release toolset=msvc-9.0~wm6 \
stdlib=stlport-5.2.1~wm6
--with-system \
--with-thread \
--with-date_time \
--with-regex \
stage
Hope this can help some people out there.
Greets,
Benjamin