[Qt-wince-interest] OpenSSL failing to build for a Qt 4.6/WinCE 5.0 target

Andreas Unger andi.unger05 at gmail.com
Sat Jan 23 14:04:44 CET 2010


I got to the point where I was able to compile both wcecompat and
subsequently, OpenSSL. The last OpenSSL test did fail as you mentioned but
the libs were built alright. Now, when I configure Qt adding the flags -I
C:\Qt\openssl-0.9.8l\inc32 -L C:\Qt\openssl-0.9.8l\out32_MIPSII -openssl ,
the configure part goes well, but when I run nmake, I get an error saying
the 'errno.h' cannot be found.

Line 87 of err.h in the OpenSSL include folder contains this
statement #include <errno.h>. The issue is that errno.h is contained in the
wcecompat include folder. Since I can't include wcecompat when I'm building
Qt libraries because of the conflicts between the files in wcecompat and the
Qt source, errno.h cannot be found.

Any idea how I should go about fixing this?

Thanks,
Andreas

On Fri, Jan 22, 2010 at 11:58 AM, Maurice Kalinowski <
maurice.kalinowski at nokia.com> wrote:

> Hi,
>
> you're lucky that Friday has not ended yet :)
>
> Attached you can find some patches to both wcecompat and openssl to get at
> least the libraries compiling. The build process stops when compiling one of
> its tests, but I hope that the libraries are ok.
>
> Steps which need to be done after patching and compilation of wcecompat:
> 1. set WCECOMPAT=<path to wcecompat>
> 2. set PLATFORM=STANDARDSDK // you can basically use anything, it is
> getting ignored
> 3. ensure that ActiveState Perl is being used, not any perl used by mingw
> or such
> 4. perl Configure VC-CE
> 5. ms\do_ms.bat
> 6. nmake -f ms\cedll.mak
>
> This compiles the libraries dynamically. Might work for static version as
> well, haven't tried.
>
> In addition I would like to emphasize, that this is a spare time hack, not
> supported at all. Also it has only been tested for the MIPS II platform from
> Standard SDK for Windows CE 5.0. In case it works for you, I hope that
> someone is willing to provide a proper patch after cleanup :)
>
> Generally I think that we should remove the winsock stuff from wcecompat as
> basically all Windows CE 5 SDKs seem to have it. So my guess is, that this
> is some legacy code for Windows CE 4.2, which I guess nobody is using
> anymore these days.
>
> Hope it works for you and have fun with the patch.
>
> Best Regards,
> Maurice
>
> Andreas Unger wrote:
>
>>
>>
>> On Fri, Jan 22, 2010 at 9:51 AM, Maurice Kalinowski <
>> maurice.kalinowski at nokia.com <mailto:maurice.kalinowski at nokia.com>>
>> wrote:
>>
>>    Could you please point me to the OpenSSL version you are using, so
>>    that
>>    I can have a look at it?
>>    Download link would be perfect.
>>
>>    Best Regards,
>>    Maurice
>>
>>
>> Here it is: http://www.openssl.org/source/openssl-0.9.8l.tar.gz
>>
>> It's basically the latest release from this page:
>> http://www.openssl.org/source/
>>
>>    >
>>    > C:\Program Files (x86)\Windows CE
>>    > Tools\wce500\STANDARDSDK_500\include\MIPSII\winsock2.h(233) : error
>>    > C2011: 'servent' : 'struct' type redefinition
>>    >
>>    > C:\Qt\mauricek-wcecompat/include\winsock_extras.h(30) : see
>>    > declaration of 'servent'
>>    >
>>    > C:\Program Files (x86)\Windows CE
>>    > Tools\wce500\STANDARDSDK_500\include\MIPSII\winsock2.h(2186) : error
>>    > C2375: 'getservbyname' : redefinition; different linkage
>>    >
>>    > C:\Qt\mauricek-wcecompat/include\winsock_extras.h(37) : see
>>    > declaration of 'getservbyname' NMAKE : fatal error U1077:
>>    '"C:\Program
>>    > Files (x86)\Microsoft Visual Studio
>>    9.0\VC\ce\bin\x86_mips\cl.EXE"' :
>>    > return code '0x2'
>>    > Stop.
>>    >
>>    > On Fri, Jan 22, 2010 at 9:27 AM, Pablo Rogina <pablojr at gmail.com
>>    <mailto:pablojr at gmail.com>
>>    > <mailto:pablojr at gmail.com <mailto:pablojr at gmail.com>>> wrote:
>>    >
>>    >     > Maurice, I can't thank you enough! It works :-)
>>    >
>>    >     Kudos for Maurice, and the one who approved the Creative
>>    Fridays!
>>    >
>>    >     Andreas, I understand that you are now able to build Qt with
>>    OpenSSL
>>    >     support for WinCE, aren't you?
>>    >
>>    >     If so, could it be possibel that you document all the steps done
>>    >     so far?
>>    >
>>    >     Thanks.
>>    >
>>    >     Pablo Rogina
>>    >     _______________________________________________
>>    >     Qt-wince-interest mailing list
>>    >     Qt-wince-interest at trolltech.com
>>    <mailto:Qt-wince-interest at trolltech.com>
>>    >     <mailto:Qt-wince-interest at trolltech.com
>>    <mailto:Qt-wince-interest at trolltech.com>>
>>    >     http://lists.trolltech.com/mailman/listinfo/qt-wince-interest
>>    >
>>    >
>>    >
>>
>>  ------------------------------------------------------------------------
>>    >
>>    > _______________________________________________
>>    > Qt-wince-interest mailing list
>>    > Qt-wince-interest at trolltech.com
>>    <mailto:Qt-wince-interest at trolltech.com>
>>    > http://lists.trolltech.com/mailman/listinfo/qt-wince-interest
>>    >
>>
>>
>>    --
>>    Maurice Kalinowski
>>    Nokia, Qt Development Frameworks
>>    Rudower Chaussee 13, 12489 Berlin, Germany
>>    Email  : maurice.kalinowski at nokia.com
>>    <mailto:maurice.kalinowski at nokia.com>
>>
>>    Phone  : (+49) 30 6392 3255
>>    Fax    : (+49) 30 6392 3256
>>    http://qt.nokia.com/
>>
>>    Nokia gate5 GmbH
>>    Firmensitz: Invalidenstr. 117, 10115 Berlin, Germany
>>    Registergericht: Amtsgericht Charlottenburg, Berlin: HRB 106443 B
>>    Umsatzsteueridentifikationsnummer: DE 812 845 193
>>    Geschäftsführer: Dr. Michael Halbherr, Karim Tähtivuori
>>
>>    _______________________________________________
>>    Qt-wince-interest mailing list
>>    Qt-wince-interest at trolltech.com
>>    <mailto:Qt-wince-interest at trolltech.com>
>>    http://lists.trolltech.com/mailman/listinfo/qt-wince-interest
>>
>>
>> ------------------------------------------------------------------------
>>
>> _______________________________________________
>> Qt-wince-interest mailing list
>> Qt-wince-interest at trolltech.com
>> http://lists.trolltech.com/mailman/listinfo/qt-wince-interest
>>
>>
>
>
> --
> Maurice Kalinowski
> Nokia, Qt Development Frameworks
> Rudower Chaussee 13, 12489 Berlin, Germany
> Email  : maurice.kalinowski at nokia.com
> Phone  : (+49) 30 6392 3255
> Fax    : (+49) 30 6392 3256
> http://qt.nokia.com/
>
> Nokia gate5 GmbH
> Firmensitz: Invalidenstr. 117, 10115 Berlin, Germany
> Registergericht: Amtsgericht Charlottenburg, Berlin: HRB 106443 B
> Umsatzsteueridentifikationsnummer: DE 812 845 193
> Geschäftsführer: Dr. Michael Halbherr, Karim Tähtivuori
>
>
> diff --git a/include/errno.h b/include/errno.h
> index 5ec05ff..41158df 100644
> --- a/include/errno.h
> +++ b/include/errno.h
> @@ -124,18 +124,18 @@ extern int errno;
>  #define EDEADLK         36
>  #define EDEADLOCK EDEADLK
>  #endif
> -#ifndef ENAMETOOLONG
> -#define ENAMETOOLONG    38
> -#endif
> +//#ifndef ENAMETOOLONG
> +//#define ENAMETOOLONG    38
> +//#endif
>  #ifndef ENOLCK
>  #define ENOLCK          39
>  #endif
>  #ifndef ENOSYS
>  #define ENOSYS          40
>  #endif
> -#ifndef ENOTEMPTY
> -#define ENOTEMPTY       41
> -#endif
> +//#ifndef ENOTEMPTY
> +//#define ENOTEMPTY       41
> +//#endif
>
>  #ifndef EINVAL
>  #define EINVAL          22
> diff --git a/include/io.h b/include/io.h
> index 27faeb4..7691856 100644
> --- a/include/io.h
> +++ b/include/io.h
> @@ -43,7 +43,9 @@ FILE* _wcefdopen( int handle, const char *mode );
>  #define _open _wceopen
>  #define close _wceclose
>  #define read _wceread
> +#define _read _wceread
>  #define write _wcewrite
> +#define _write _wcewrite
>  #define lseek _wcelseek
>  #define _lseek _wcelseek
>  #define unlink _wceunlink
> diff --git a/include/winsock_extras.h b/include/winsock_extras.h
> index 62f0f5b..9bb4a00 100644
> --- a/include/winsock_extras.h
> +++ b/include/winsock_extras.h
> @@ -22,25 +22,16 @@
>  #ifndef __wcecompat__WINSOCK_EXTRAS_H__
>  #define __wcecompat__WINSOCK_EXTRAS_H__
>
> -
>  #ifdef __cplusplus
>  extern "C" {
>  #endif
>
> -struct servent {
> -    char* s_name;
> -    char** s_aliases;
> -    short int s_port;
> -    char* s_proto;
> -} servent;
> -
> -struct servent* getservbyname(const char* name, const char* proto);
> -
> +#include <winsock2.h>
>
> +//struct servent* getservbyname(const char* name, const char* proto);
>
>  #ifdef __cplusplus
>  }
>  #endif
>
> -
>  #endif // __wcecompat__WINSOCK_EXTRAS_H__
> diff --git a/src/winsock_extras.cpp b/src/winsock_extras.cpp
> index c7ff990..16affdb 100644
> --- a/src/winsock_extras.cpp
> +++ b/src/winsock_extras.cpp
> @@ -173,6 +173,7 @@ static struct sserv _serv_table[142]={
>         10012, "udp", "qmaster",
>  };
>
> +#if 0
>  struct servent* getservbyname(const char* name,
>                               const char* proto)
>  {
> @@ -204,3 +205,4 @@ struct servent* getservbyname(const char* name,
>
>         return &se;
>  }
> +#endif
>
> diff --git a/crypto/rand/randfile.c b/crypto/rand/randfile.c
> index d108353..35da0c3 100644
> --- a/crypto/rand/randfile.c
> +++ b/crypto/rand/randfile.c
> @@ -72,6 +72,9 @@
>  #ifdef OPENSSL_SYS_VMS
>  #include <unixio.h>
>  #endif
> +#ifdef OPENSSL_SYS_WINCE
> +#include <io.h>
> +#endif
>  #ifndef NO_SYS_TYPES_H
>  # include <sys/types.h>
>  #endif
> @@ -81,7 +84,7 @@
>  # include <sys/stat.h>
>  #endif
>
> -#ifdef _WIN32
> +#if defined(_WIN32) && !defined(OPENSSL_SYS_WINCE)
>  #define stat   _stat
>  #define chmod  _chmod
>  #define open   _open
> diff --git a/crypto/x509/by_dir.c b/crypto/x509/by_dir.c
> index 341e0ba..ef0201f 100644
> --- a/crypto/x509/by_dir.c
> +++ b/crypto/x509/by_dir.c
> @@ -74,7 +74,7 @@
>  #include <openssl/lhash.h>
>  #include <openssl/x509.h>
>
> -#ifdef _WIN32
> +#if defined(_WIN32) && !defined(OPENSSL_SYS_WINCE)
>  #define stat   _stat
>  #endif
>
> diff --git a/e_os.h b/e_os.h
> index 9c5c6fd..f4cab37 100644
> --- a/e_os.h
> +++ b/e_os.h
> @@ -322,6 +322,8 @@ static unsigned int _strlen31(const char *str)
>  #  include <fcntl.h>
>
>  #  ifdef OPENSSL_SYS_WINCE
> +#    include <winsock2.h>
> +#    include <errno.h>
>  #    include <winsock_extras.h>
>  #  endif
>
> @@ -480,7 +482,11 @@ static unsigned int _strlen31(const char *str)
>  #      define SHUTDOWN(fd)             close(fd)
>  #      define SHUTDOWN2(fd)            close(fd)
>  #    elif !defined(__DJGPP__)
> +#      if !defined(_WIN32_WCE)
>  #      include <winsock.h>
> +#      else
> +#        include <winsock2.h>
> +#      endif
>  extern HINSTANCE _hInstance;
>  #      ifdef _WIN64
>  /*
> diff --git a/ssl/ssltest.c b/ssl/ssltest.c
> index b09c542..4dd96a3 100644
> --- a/ssl/ssltest.c
> +++ b/ssl/ssltest.c
> @@ -161,8 +161,12 @@
>                                  */
>
>  #ifdef OPENSSL_SYS_WINDOWS
> +# ifndef OPENSSL_SYS_WINCE
>  #include <winsock.h>
>  #else
> +#  include <winsock2.h>
> +# endif
> +#else
>  #include OPENSSL_UNISTD
>  #endif
>
> diff --git a/util/pl/VC-32.pl b/util/pl/VC-32.pl
> index 85121c8..06e6cf6 100644
> --- a/util/pl/VC-32.pl
> +++ b/util/pl/VC-32.pl
> @@ -65,6 +65,7 @@ elsif ($FLAVOR =~ /CE/)
>     die '%OSVERSION% value is insane'  if ($wcevers !~
> /^WCE([1-9])([0-9]{2})$/);
>     $wcecdefs = "-D_WIN32_WCE=$1$2 -DUNDER_CE=$1$2";   # -D_WIN32_WCE=NNN
>     $wcelflag = "/subsystem:windowsce,$1.$2";          # ...,N.NN
> +    $wcelflag .= " /NODEFAULTLIB:OLDNAMES.LIB coredll.lib ws2.lib
> corelibc.lib";
>
>     $wceplatf =  $ENV{'PLATFORM'};
>     $wceplatf =~ tr/a-z0-9 /A-Z0-9_/d;
>
> _______________________________________________
> Qt-wince-interest mailing list
> Qt-wince-interest at trolltech.com
> http://lists.trolltech.com/mailman/listinfo/qt-wince-interest
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.qt.nokia.com/pipermail/qt-wince-interest/attachments/20100123/15772e40/attachment.html 


More information about the Qt-wince-interest mailing list