setup VC8 for CE:
------------------

- VC8 doesn't have any setup batchfiles that prepare the environment for compiling
with CE. You can take those from eVC4 and adapt them or write your own. This snippet
should get you going:

  rem you need to adapt at least these three
  set OSVERSION=WCE500
  set PLATFORM=MY_OWN_PLATFORM
  set TARGETCPU=MIPSII

  rem the compiler is always cl.exe, different compilers are in different paths
  set CC=cl.exe
  rem obviously, these need to be adjusted to where you installed VS2005 and the SDKs
  set VSINSTALLDIR=C:\Programme\Microsoft Visual Studio 8
  set SDKROOT=C:\Programme\Windows CE Tools

  set PATH=%VSINSTALLDIR%\VC\ce\bin\x86_mips;%VSINSTALLDIR%\VC\bin;%VSINSTALLDIR%\Common7\IDE;%PATH%
  set PLATFORMROOT=%SDKROOT%\%OSVERSION%\%PLATFORM%

  rem add libs and includes from the SDK
  set INCLUDE=%PLATFORMROOT%\include\%TARGETCPU%;%PLATFORMROOT%\MFC\include;%PLATFORMROOT%\ATL\include
  set LIB=%PLATFORMROOT%\lib\%TARGETCPU%;%PLATFORMROOT%\MFC\lib\%TARGETCPU%;%PLATFORMROOT%\ATL\lib\%TARGETCPU%

  rem add libs that came with VC8
  rem Note: there are more libs and includes under ce\atlmfc, not sure if these are needed.
  set LIB=%LIB%;%VSINSTALLDIR%\VC\ce\lib\%TARGETCPU%
  
  
- The snippet below can be used to build STLport for Pocket PC 2003 (using the
  Pocket PC 2003 SDK shipped with Visual Studio 2005, this is the SDK used when
  compiling programs from within the IDE):

  set OSVERSION=WCE420
  set PLATFORM=POCKET PC 2003
  set TARGETCPU=ARMV4

  rem the compiler is always cl.exe, different compilers are in different paths
  set CC=cl.exe

  rem obviously, these need to be adjusted to where you installed VS2005
  set VSINSTALLDIR=C:\Program Files\Microsoft Visual Studio 8
  set SDKROOT=%VSINSTALLDIR%\SmartDevices\SDK

  set PATH=%VSINSTALLDIR%\VC\ce\bin\x86_arm;%VSINSTALLDIR%\VC\bin;%VSINSTALLDIR%\Common7\IDE;%PATH%
  set PLATFORMROOT=%SDKROOT%\PocketPC2003

  rem add libs and includes from the SDK
  set INCLUDE=%PLATFORMROOT%\include
  set LIB=%PLATFORMROOT%\lib\%TARGETCPU%

  rem add libs that came with VC8
  set INCLUDE=%INCLUDE%;%VSINSTALLDIR%\VC\ce\atlmfc\include
  set LIB=%LIB%;%VSINSTALLDIR%\VC\ce\lib\%TARGETCPU%;%VSINSTALLDIR%\VC\ce\atlmfc\lib\%TARGETCPU%


You should now be able to run cl.exe for the target you expected.

- The cross compilers of VC8 are the same version as for the native target, i.e. MSC14.

- The cross compiler for MIPS has the same bug as mentioned in doc/README.evc4 and
the same workaround applies. However, using 'whole program optimization', it results
in an error in the link phase.

- In order for STLport to recognize which target you are compiling for, you need to have
some macros defined, e.g. for the target architecture. The compilers do that partially on
their own, but not sufficiently. Therefore, STLport requires these defines:

 -- These are generally set for CE:
  _UNICODE;UNICODE;_WIN32;WIN32;UNDER_CE;WINCE;
 -- This one uses an environment variable to set the CE version:
  _WIN32_WCE=$(CEVER);
 -- These are used to help STLport recognise the target architecture:
  $(ARCHFAM);$(_ARCHFAM_);$(INSTRUCTIONSET)
 Note that the instructionset is not strictly needed for x86 but definitely for ARM. It
 doesn't hurt for x86 though, so I'd always set these in any new project.
 -- For release builds:
  NDEBUG;
 -- For debug builds:
  DEBUG;_DEBUG;
 -- For debug builds with additional STLport diagnostics:
  DEBUG;_DEBUG;_STLP_DEBUG;
 -- For MFC applications:
  _AFXDLL;

- Further settings:
 Code generation: Multithreaded [Debug] DLL
 Language: enable RTTI
 Optimization: maximise speed and enable whole program optimization for release builds

- Linker settings:
 Ignore specific libraries: libc.lib;libcd.lib
 Commandline: /SUBSYSTEM:WINDOWSCE
 Optimisation: /LTCG for release builds

- Resource compiler:
 Define: UNDER_CE;WINCE;_WIN32_WCE=$(CEVER)

