OK, I downloaded wcecompat 1.1 and openssl-0.9.8-stable-SNAP-20050810
and rebuilt everything again.  Things are much, much better now.  Of
the items below, I think only #2 and #5 suggest a fix is needed in
wcecompat and openssl.  The others itmes are responses to previous
emails.

1. I fixed my %INCLUDE% and %LIB% environment variables to point to
the right places.  Maybe I installed my SDK in the wrong place or I
moved stuff around, I don't remember.  But I'm happy to be able to set
these environment variables to the right place and the various
makefiles find the files they are looking for.

2. wcecompat/wcedefs.mak: I had to add the extra "if" test for
TARGETCPU=ARMV4I which I mentioned in a previous email.  As to whether
the same thing needs to be done if TARGETCPU=ARMV4T, I assume so. 
i.e. if TARGETCPU is ARMV4T, then ARM, _ARM_, and ARMV4T must be
defined.  The auto generated ce.mak and cedll.mak seem to do this
already.

3. The -DTHUMBSUPPORT I mentioned for the openssl makefile.  I don't
know where I got that from.  I can't find any reference to it.  I
compiled and ran without it, and it was fine. I think we can forget
about this option.

4. The -QRarch4T and -QRinterwork-return I mentioned for the openssl
makefile.  I was able to build and run without them.  However, my both
my platformbuilder and embedded visual C++ uses those options for my
auto-generated projects, so it seems to me that it would be safer to
include them when TARGETCPU=ARMV4I.  (-QRarch4T tells the compiler to
target code to the ARMV4T architecture.  Other options are arch4,
arch5, arch5T.  I don't know the default.  -QRinterwork-return allows
function calls to be made across ARM and THUMB code.)

5. I still needed to change the MLFLAGS and LFLAGS in cedll.mak and
ce.mak from machine:ARM to machine:thumb.  Otherwise, the compiler
compains about an incompatibility with winsock.lib (winsock.dll),
which was linked with machine:thumb.

The compiles go very smoothly now.  Its a great improvement over the
0.9.8 release.  Thanks for all your help guys!

Michael

p.s. While I was looking around to figure out the differences among
ARM, ARMV4, ARMV4I, and ARMV4T, I found the following, which you may
already know:

One thing that was really confusing me was that the above monikers are
used to describe architectures, as defined by the ARM corporation, and
a set of "compilation styles", for a lack of better description,
defined by Microsoft.

ARM is just a general term.
ARMV4 is the oldest supported ARM architecture.  It defines a 32 bit
instruction set.
ARMV4T supports the 32 bit ARMV4 instruction set, plus a new compact
16 bit instruction set called Thumb.  ARM processors based on the
ARMV4T architecture can switch between the 16-bit thumb instruction
set and 32-bit ARM instruction sets.  (see
http://www.arm.com/products/CPUs/archi-thum.html).

WinCE is aware of 3 TARGETCPU types: ARMV4, ARMV4T, and ARMV4I
I assumeTARGETCPU=ARMV4 is for the 32 bit ARM processors without the
Thumb extensions.
I'm not sure exactly when TARGETCPU=ARMV4T is used.  Maybe when
executables are required to be completely comprised of 32 bit ARM
instructions or completely of 16 bit thumb instructions?  Or maybe
when the entire OS image have to be one or the other?
TARGETCPU=ARMV4I allows 32 bit ARM and 16 bit thumb instructions to be
mixed at a function level.  This TARGETCPU type seems to be meant for
ARM CPU's that support the ARMV4T architecture.

As of WinCE .NET 4.2, the ARMV4T kernel has been merged into the ARMV4I kernel.
As of WinCE 5.0, the ARMV4 kernel has been merged into the ARMV4I kernel.
______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
User Support Mailing List                    openssl-users@openssl.org
Automated List Manager                           [EMAIL PROTECTED]

Reply via email to