Openembedded Core Discussions
 help / color / mirror / Atom feed
* Re: Yocto toolchain for Windows
       [not found]       ` <6741EAAB26B57F4995668065CB62D86B33934034@IRSMSX102.ger.corp.intel.com>
@ 2013-08-12 13:34         ` Francois Retief
  2013-08-13 16:17           ` Khem Raj
  0 siblings, 1 reply; 6+ messages in thread
From: Francois Retief @ 2013-08-12 13:34 UTC (permalink / raw)
  To: Sywula, Krzysztof M, openembedded-core

[-- Attachment #1: Type: text/plain, Size: 7595 bytes --]

Hi Krzysztof,

My understanding is that MinGW is the libc library for Win32 environments.
So we need to "replace" eglibc with mingw for all code that execute on the
Win32 platform.  In the case of OpenEmbedded, it is all packages that start
with "nativesdk-" when is SDKMACHINE="x86_64-mingw32".

Over the weekend I worked on this by disabling the eglibc recipes and
seeing what packages are missing.  The eglibc recipe provides the
"virtual/nativesdk-libc" package. My understanding is that this virtual
package must be implemented by MingGW.  In the process I also found that
pthreads-win32 was needed and added a recipe for this.

I ended up at a point where nativesdk-zlib is actually looking for libc and
not finding it.  Currently I am trying to understand exactly what is
required by "nativesdk-*" packages, and what mingw provides, in the hope of
understanding where the mismatch is or where my understanding of the system
breaks down.  ;-)

Will keep you posted.

Cheers,
  Francois

$ SDKMACHINE=x86_64-mingw32 bitbake nativesdk-zlib
...
Log data follows:
| DEBUG: Executing shell function do_compile
| NOTE: make -j2 -e MAKEFLAGS=
| x86_64-oesdk-mingw32-gcc
--sysroot=/opt/tmp-eglibc/sysroots/x86_64-nativesdk-oesdk-mingw32 -shared
-Wl,-soname,libz.so.1,--version-script,zlib.map
-isystem/opt/tmp-eglibc/sysroots/x86_64-nativesdk-oesdk-mingw32/usr/local/oecore-x86_64/sysroots/x86_64-oesdk-mingw32/usr/include
-O2 -pipe  -fPIC -D_LARGEFILE64_SOURCE=1 -o libz.so.1.2.8 adler32.lo
crc32.lo deflate.lo infback.lo inffast.lo inflate.lo inftrees.lo trees.lo
zutil.lo compress.lo uncompr.lo gzclose.lo gzlib.lo gzread.lo gzwrite.lo
-lc -L/opt/tmp-eglibc/sysroots/x86_64-nativesdk-oesdk-mingw32/usr/local/oecore-x86_64/sysroots/x86_64-oesdk-mingw32/usr/lib
-Wl,-rpath-link,/opt/tmp-eglibc/sysroots/x86_64-nativesdk-oesdk-mingw32/usr/local/oecore-x86_64/sysroots/x86_64-oesdk-mingw32/usr/lib
-Wl,-rpath,/usr/local/oecore-x86_64/sysroots/x86_64-oesdk-mingw32/usr/lib
-Wl,-O1 -L/opt/tmp-eglibc/sysroots/x86_64-nativesdk-oesdk-mingw32/usr/local/oecore-x86_64/sysroots/x86_64-oesdk-mingw32/lib
-Wl,-rpath-link,/opt/tmp-eglibc/sysroots/x86_64-nativesdk-oesdk-mingw32/usr/local/oecore-x86_64/sysroots/x86_64-oesdk-mingw32/lib
-Wl,-rpath,/usr/local/oecore-x86_64/sysroots/x86_64-oesdk-mingw32/lib
-Wl,-O1
| x86_64-oesdk-mingw32-gcc
--sysroot=/opt/tmp-eglibc/sysroots/x86_64-nativesdk-oesdk-mingw32
-isystem/opt/tmp-eglibc/sysroots/x86_64-nativesdk-oesdk-mingw32/usr/local/oecore-x86_64/sysroots/x86_64-oesdk-mingw32/usr/include
-O2 -pipe -o minigzip64 minigzip64.o -L. libz.a
| /opt/tmp-eglibc/sysroots/x86_64-linux/usr/libexec/x86_64-oesdk-mingw32/gcc/x86_64-oesdk-mingw32/4.8.1/ld:
cannot find -lc
| collect2: error: ld returned 1 exit status
| make: *** [libz.so.1.2.8] Error 1
| make: *** Waiting for unfinished jobs....
| ERROR: oe_runmake failed
...


On 12 August 2013 12:13, Sywula, Krzysztof M
<krzysztof.m.sywula@intel.com>wrote:

>  Francois,****
>
> I tried compiling the same eglibc version as Yocto uses under
> mingw32/Cygwin. Apparently there is no port for these.****
>
> ** **
>
> Mingw32:****
>
> $ ../eglibc-2.17/libc/configure****
>
> checking build system type... i686-pc-mingw32****
>
> checking host system type... i686-pc-mingw32****
>
> checking for gcc... gcc****
>
> checking for suffix of object files... o****
>
> checking whether we are using the GNU C compiler... yes****
>
> checking whether gcc accepts -g... yes****
>
> checking for gcc option to accept ISO C89... none needed****
>
> checking how to run the C preprocessor... gcc -E****
>
> checking for g++... g++****
>
> checking whether we are using the GNU C++ compiler... yes****
>
> checking whether g++ accepts -g... yes****
>
> checking for readelf... readelf****
>
> checking for sysdeps preconfigure fragments... x86_64****
>
> configure: running configure fragment for add-on libidn****
>
> configure: running configure fragment for add-on nptl****
>
> checking add-on ports for preconfigure fragments... aarch64 alpha am33 arm
> hppa****
>
> ia64 m68k mips powerpc tile****
>
> *** The GNU C library is currently not available for this platform.****
>
> *** So far nobody cared to port it and if there is no volunteer it****
>
> *** might never happen.  So, if you have interest to see glibc on****
>
> *** this platform visit****
>
> ***     http://www.gnu.org/software/libc/porting.html****
>
> *** and join the group of porters****
>
> ** **
>
> Cygwin:****
>
> $ ../eglibc-2.17/libc/configure****
>
> checking build system type... i686-pc-cygwin****
>
> checking host system type... i686-pc-cygwin****
>
> checking for gcc... gcc****
>
> checking for suffix of object files... o****
>
> checking whether we are using the GNU C compiler... yes****
>
> checking whether gcc accepts -g... yes****
>
> checking for gcc option to accept ISO C89... none needed****
>
> checking how to run the C preprocessor... gcc -E****
>
> checking for g++... g++****
>
> checking whether we are using the GNU C++ compiler... yes****
>
> checking whether g++ accepts -g... yes****
>
> checking for readelf... readelf****
>
> checking for sysdeps preconfigure fragments... x86_64****
>
> configure: running configure fragment for add-on libidn****
>
> configure: running configure fragment for add-on nptl****
>
> checking add-on ports for preconfigure fragments... aarch64 alpha am33 arm
> hppa ia64 m68k mips powerpc tile****
>
> *** The GNU C library is currently not available for this platform.****
>
> *** So far nobody cared to port it and if there is no volunteer it****
>
> *** might never happen.  So, if you have interest to see glibc on****
>
> *** this platform visit****
>
> ***     http://www.gnu.org/software/libc/porting.html****
>
> *** and join the group of porters****
>
> ** **
>
> ** **
>
> To see why is eglibc needed do:****
>
> bitbake <recipe> -c populate_sdk –g****
>
> and:****
>
> less package-depends.dot****
>
> ** **
>
> That’s what it gives:****
>
> "nativesdk-eglibc-initial" [label="nativesdk-eglibc-initial
> :2.17-r3\nvirtual:nativesdk:/build/kmsywula****
>
> 3/poky/meta/recipes-core/eglibc/eglibc-initial_2.17.bb"]****
>
> "nativesdk-eglibc-initial" ->
> "virtual/x86_64-pokysdk-mingw32-gcc-initial-crosssdk"****
>
> "nativesdk-eglibc-initial" -> "nativesdk-linux-libc-headers"****
>
> "nativesdk-eglibc-initial" -> "chrpath-replacement-native"****
>
> "nativesdk-eglibc-initial" -> "autoconf-native"****
>
> "nativesdk-eglibc-initial" -> "automake-native"****
>
> "nativesdk-eglibc-initial" -> "libtool-native"****
>
> "nativesdk-eglibc-initial" -> "kconfig-frontends-native"****
>
> "nativesdk-eglibc-initial" -> "gnu-config-native"****
>
> ** **
>
> ** **
>
> So as long as there is no port for mingw32/Cygwin we are blocked. Any
> ideas?****
>
> ** **
>
> Thanks,****
>
> Krzysztof****
>
> ** **
>
> *From:* Francois Retief [mailto:fgretief@gmail.com]
> *Sent:* Friday, August 09, 2013 6:33 PM
>
> *To:* Sywula, Krzysztof M
> *Subject:* Re: Yocto toolchain for Windows****
>
> ** **
>
> Hi Krzysztof,****
>
> Yup, that is the same point where I am stuck at the moment. I sent an
> email to oe-core mailing list about this issue.
>
>
> http://lists.openembedded.org/pipermail/openembedded-core/2013-August/082509.html
> ****
>
> Hoping for a response from the OE community soon.****
>
> Cheers,****
>
>   Francois****
>
> ** **
>

[-- Attachment #2: Type: text/html, Size: 21060 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Yocto toolchain for Windows
  2013-08-12 13:34         ` Yocto toolchain for Windows Francois Retief
@ 2013-08-13 16:17           ` Khem Raj
  2013-08-13 20:11             ` Richard Purdie
  0 siblings, 1 reply; 6+ messages in thread
From: Khem Raj @ 2013-08-13 16:17 UTC (permalink / raw)
  To: Francois Retief; +Cc: Sywula, Krzysztof M, openembedded-core

[-- Attachment #1: Type: text/plain, Size: 7933 bytes --]


On Aug 12, 2013, at 6:34 AM, Francois Retief <fgretief@gmail.com> wrote:

> Hi Krzysztof,
> 
> My understanding is that MinGW is the libc library for Win32 environments. So we need to "replace" eglibc with mingw for all code that execute on the Win32 platform.  In the case of OpenEmbedded, it is all packages that start with "nativesdk-" when is SDKMACHINE="x86_64-mingw32".
> 
> Over the weekend I worked on this by disabling the eglibc recipes and seeing what packages are missing.  The eglibc recipe provides the "virtual/nativesdk-libc" package. My understanding is that this virtual package must be implemented by MingGW.  In the process I also found that pthreads-win32 was needed and added a recipe for this.

Not really but if you stub eglibc from nativesdk out then make sure the host libc is plugged in correctly at all places where its expected. Its safer to let it
build its own nativesdk eglibc. Since we also modify the shared library load paths in dynamic linker to use own nativesdk libraries first if available

> 
> I ended up at a point where nativesdk-zlib is actually looking for libc and not finding it.  Currently I am trying to understand exactly what is required by "nativesdk-*" packages, and what mingw provides, in the hope of understanding where the mismatch is or where my understanding of the system breaks down.  ;-) 
> 
> Will keep you posted.
> 
> Cheers,
>   Francois
> 
> $ SDKMACHINE=x86_64-mingw32 bitbake nativesdk-zlib
> ...
> Log data follows:
> | DEBUG: Executing shell function do_compile
> | NOTE: make -j2 -e MAKEFLAGS=
> | x86_64-oesdk-mingw32-gcc  --sysroot=/opt/tmp-eglibc/sysroots/x86_64-nativesdk-oesdk-mingw32 -shared -Wl,-soname,libz.so.1,--version-script,zlib.map -isystem/opt/tmp-eglibc/sysroots/x86_64-nativesdk-oesdk-mingw32/usr/local/oecore-x86_64/sysroots/x86_64-oesdk-mingw32/usr/include -O2 -pipe  -fPIC -D_LARGEFILE64_SOURCE=1 -o libz.so.1.2.8 adler32.lo crc32.lo deflate.lo infback.lo inffast.lo inflate.lo inftrees.lo trees.lo zutil.lo compress.lo uncompr.lo gzclose.lo gzlib.lo gzread.lo gzwrite.lo  -lc -L/opt/tmp-eglibc/sysroots/x86_64-nativesdk-oesdk-mingw32/usr/local/oecore-x86_64/sysroots/x86_64-oesdk-mingw32/usr/lib -Wl,-rpath-link,/opt/tmp-eglibc/sysroots/x86_64-nativesdk-oesdk-mingw32/usr/local/oecore-x86_64/sysroots/x86_64-oesdk-mingw32/usr/lib -Wl,-rpath,/usr/local/oecore-x86_64/sysroots/x86_64-oesdk-mingw32/usr/lib -Wl,-O1 -L/opt/tmp-eglibc/sysroots/x86_64-nativesdk-oesdk-mingw32/usr/local/oecore-x86_64/sysroots/x86_64-oesdk-mingw32/lib -Wl,-rpath-link,/opt/tmp-eglibc/sysroots/x86_64-nativesdk-oesdk-mingw32/usr/local/oecore-x86_64/sysroots/x86_64-oesdk-mingw32/lib -Wl,-rpath,/usr/local/oecore-x86_64/sysroots/x86_64-oesdk-mingw32/lib -Wl,-O1
> | x86_64-oesdk-mingw32-gcc  --sysroot=/opt/tmp-eglibc/sysroots/x86_64-nativesdk-oesdk-mingw32 -isystem/opt/tmp-eglibc/sysroots/x86_64-nativesdk-oesdk-mingw32/usr/local/oecore-x86_64/sysroots/x86_64-oesdk-mingw32/usr/include -O2 -pipe -o minigzip64 minigzip64.o -L. libz.a
> | /opt/tmp-eglibc/sysroots/x86_64-linux/usr/libexec/x86_64-oesdk-mingw32/gcc/x86_64-oesdk-mingw32/4.8.1/ld: cannot find -lc
> | collect2: error: ld returned 1 exit status
> | make: *** [libz.so.1.2.8] Error 1
> | make: *** Waiting for unfinished jobs....
> | ERROR: oe_runmake failed
> ...
> 
> 
> On 12 August 2013 12:13, Sywula, Krzysztof M <krzysztof.m.sywula@intel.com> wrote:
> Francois,
> 
> I tried compiling the same eglibc version as Yocto uses under mingw32/Cygwin. Apparently there is no port for these.
> 
>  
> 
> Mingw32:
> 
> $ ../eglibc-2.17/libc/configure
> 
> checking build system type... i686-pc-mingw32
> 
> checking host system type... i686-pc-mingw32
> 
> checking for gcc... gcc
> 
> checking for suffix of object files... o
> 
> checking whether we are using the GNU C compiler... yes
> 
> checking whether gcc accepts -g... yes
> 
> checking for gcc option to accept ISO C89... none needed
> 
> checking how to run the C preprocessor... gcc -E
> 
> checking for g++... g++
> 
> checking whether we are using the GNU C++ compiler... yes
> 
> checking whether g++ accepts -g... yes
> 
> checking for readelf... readelf
> 
> checking for sysdeps preconfigure fragments... x86_64
> 
> configure: running configure fragment for add-on libidn
> 
> configure: running configure fragment for add-on nptl
> 
> checking add-on ports for preconfigure fragments... aarch64 alpha am33 arm hppa
> 
> ia64 m68k mips powerpc tile
> 
> *** The GNU C library is currently not available for this platform.
> 
> *** So far nobody cared to port it and if there is no volunteer it
> 
> *** might never happen.  So, if you have interest to see glibc on
> 
> *** this platform visit
> 
> ***     http://www.gnu.org/software/libc/porting.html
> 
> *** and join the group of porters
> 
>  
> 
> Cygwin:
> 
> $ ../eglibc-2.17/libc/configure
> 
> checking build system type... i686-pc-cygwin
> 
> checking host system type... i686-pc-cygwin
> 
> checking for gcc... gcc
> 
> checking for suffix of object files... o
> 
> checking whether we are using the GNU C compiler... yes
> 
> checking whether gcc accepts -g... yes
> 
> checking for gcc option to accept ISO C89... none needed
> 
> checking how to run the C preprocessor... gcc -E
> 
> checking for g++... g++
> 
> checking whether we are using the GNU C++ compiler... yes
> 
> checking whether g++ accepts -g... yes
> 
> checking for readelf... readelf
> 
> checking for sysdeps preconfigure fragments... x86_64
> 
> configure: running configure fragment for add-on libidn
> 
> configure: running configure fragment for add-on nptl
> 
> checking add-on ports for preconfigure fragments... aarch64 alpha am33 arm hppa ia64 m68k mips powerpc tile
> 
> *** The GNU C library is currently not available for this platform.
> 
> *** So far nobody cared to port it and if there is no volunteer it
> 
> *** might never happen.  So, if you have interest to see glibc on
> 
> *** this platform visit
> 
> ***     http://www.gnu.org/software/libc/porting.html
> 
> *** and join the group of porters
> 
>  
> 
>  
> 
> To see why is eglibc needed do:
> 
> bitbake <recipe> -c populate_sdk –g
> 
> and:
> 
> less package-depends.dot
> 
>  
> 
> That’s what it gives:
> 
> "nativesdk-eglibc-initial" [label="nativesdk-eglibc-initial :2.17-r3\nvirtual:nativesdk:/build/kmsywula
> 
> 3/poky/meta/recipes-core/eglibc/eglibc-initial_2.17.bb"]
> 
> "nativesdk-eglibc-initial" -> "virtual/x86_64-pokysdk-mingw32-gcc-initial-crosssdk"
> 
> "nativesdk-eglibc-initial" -> "nativesdk-linux-libc-headers"
> 
> "nativesdk-eglibc-initial" -> "chrpath-replacement-native"
> 
> "nativesdk-eglibc-initial" -> "autoconf-native"
> 
> "nativesdk-eglibc-initial" -> "automake-native"
> 
> "nativesdk-eglibc-initial" -> "libtool-native"
> 
> "nativesdk-eglibc-initial" -> "kconfig-frontends-native"
> 
> "nativesdk-eglibc-initial" -> "gnu-config-native"
> 
>  
> 
>  
> 
> So as long as there is no port for mingw32/Cygwin we are blocked. Any ideas?
> 
>  
> 
> Thanks,
> 
> Krzysztof
> 
>  
> 
> From: Francois Retief [mailto:fgretief@gmail.com] 
> Sent: Friday, August 09, 2013 6:33 PM
> 
> 
> To: Sywula, Krzysztof M
> Subject: Re: Yocto toolchain for Windows
> 
>  
> 
> Hi Krzysztof,
> 
> Yup, that is the same point where I am stuck at the moment. I sent an email to oe-core mailing list about this issue.
> 
> http://lists.openembedded.org/pipermail/openembedded-core/2013-August/082509.html
> 
> Hoping for a response from the OE community soon.
> 
> Cheers,
> 
>   Francois
> 
>  
> 
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core@lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-core


[-- Attachment #2: Type: text/html, Size: 21993 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Yocto toolchain for Windows
  2013-08-13 16:17           ` Khem Raj
@ 2013-08-13 20:11             ` Richard Purdie
  2013-08-13 20:21               ` Khem Raj
  2013-08-14  0:00               ` Zhang, Jessica
  0 siblings, 2 replies; 6+ messages in thread
From: Richard Purdie @ 2013-08-13 20:11 UTC (permalink / raw)
  To: Khem Raj; +Cc: openembedded-core, Sywula, Krzysztof M

On Tue, 2013-08-13 at 09:17 -0700, Khem Raj wrote:
> On Aug 12, 2013, at 6:34 AM, Francois Retief <fgretief@gmail.com>
> wrote:

> > My understanding is that MinGW is the libc library for Win32
> > environments. So we need to "replace" eglibc with mingw for all code
> > that execute on the Win32 platform.  In the case of OpenEmbedded, it
> > is all packages that start with "nativesdk-" when is
> > SDKMACHINE="x86_64-mingw32".
> > 
> > 
> > Over the weekend I worked on this by disabling the eglibc recipes
> > and seeing what packages are missing.  The eglibc recipe provides
> > the "virtual/nativesdk-libc" package. My understanding is that this
> > virtual package must be implemented by MingGW.  In the process I
> > also found that pthreads-win32 was needed and added a recipe for
> > this.
>
> 
> Not really but if you stub eglibc from nativesdk out then make sure
> the host libc is plugged in correctly at all places where its
> expected. Its safer to let it
> build its own nativesdk eglibc. Since we also modify the shared
> library load paths in dynamic linker to use own nativesdk libraries
> first if available

Think about this for a second Khem - we're building a gcc which will run
on windows. Having a nativesdk-eglibc is therefore not desirable or even
possible, we need the mingw runtime instead.

I looked into this and NLS is enabled for nativesdk so it was trying to
build eglibc for libiconv and libintl. I've hacks on my branch to force
NLS off and use the libs as uclibc does. The takeaway of this is we
really need to make NLS properly configurable for nativesdk and then
this becomes much easier to solve.

I pushed some updates onto my branch and meta-toolchain now builds a
nice looking SDK tarball with ipk packaging, rpm for some reason has
missing files (some problem with smart). Whether the compiler there
works or is useful on windows I have no idea.

I've probably done all I plan to do with this which was really a bit of
fun for me to prove what is/is not possible. I'd be interested if anyone
tries using it though.

Cheers,

Richard



^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Yocto toolchain for Windows
  2013-08-13 20:11             ` Richard Purdie
@ 2013-08-13 20:21               ` Khem Raj
  2013-08-14  0:00               ` Zhang, Jessica
  1 sibling, 0 replies; 6+ messages in thread
From: Khem Raj @ 2013-08-13 20:21 UTC (permalink / raw)
  To: Richard Purdie; +Cc: openembedded-core, Sywula, Krzysztof M


On Aug 13, 2013, at 1:11 PM, Richard Purdie <richard.purdie@linuxfoundation.org> wrote:

> On Tue, 2013-08-13 at 09:17 -0700, Khem Raj wrote:
>> On Aug 12, 2013, at 6:34 AM, Francois Retief <fgretief@gmail.com>
>> wrote:
> 
>>> My understanding is that MinGW is the libc library for Win32
>>> environments. So we need to "replace" eglibc with mingw for all code
>>> that execute on the Win32 platform.  In the case of OpenEmbedded, it
>>> is all packages that start with "nativesdk-" when is
>>> SDKMACHINE="x86_64-mingw32".
>>> 
>>> 
>>> Over the weekend I worked on this by disabling the eglibc recipes
>>> and seeing what packages are missing.  The eglibc recipe provides
>>> the "virtual/nativesdk-libc" package. My understanding is that this
>>> virtual package must be implemented by MingGW.  In the process I
>>> also found that pthreads-win32 was needed and added a recipe for
>>> this.
>> 
>> 
>> Not really but if you stub eglibc from nativesdk out then make sure
>> the host libc is plugged in correctly at all places where its
>> expected. Its safer to let it
>> build its own nativesdk eglibc. Since we also modify the shared
>> library load paths in dynamic linker to use own nativesdk libraries
>> first if available
> 
> Think about this for a second Khem - we're building a gcc which will run
> on windows. Having a nativesdk-eglibc is therefore not desirable or even
> possible, we need the mingw runtime instead.

Yes you are right. however I was thinking somehow mingw could run eglibc but now I realize I was
thinking more like cygwin env

> 
> I looked into this and NLS is enabled for nativesdk so it was trying to
> build eglibc for libiconv and libintl.

hmmm ok we have recipes for libiconv and proxy-libintl ( in meta-oe right now)
we can add nativesdk variants of them and then use the PREFERRED_PROVIDER magic


> I've hacks on my branch to force
> NLS off and use the libs as uclibc does. The takeaway of this is we
> really need to make NLS properly configurable for nativesdk and then
> this becomes much easier to solve.

that too.

> 
> I pushed some updates onto my branch and meta-toolchain now builds a
> nice looking SDK tarball with ipk packaging, rpm for some reason has
> missing files (some problem with smart). Whether the compiler there
> works or is useful on windows I have no idea.


cool will take a look at your branch

> 
> I've probably done all I plan to do with this which was really a bit of
> fun for me to prove what is/is not possible. I'd be interested if anyone
> tries using it though.

I think its a good addition to core. we should give it some soak time and pick
the bits may be for 1.6 timeframe.

> 
> Cheers,
> 
> Richard
> 



^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Yocto toolchain for Windows
  2013-08-13 20:11             ` Richard Purdie
  2013-08-13 20:21               ` Khem Raj
@ 2013-08-14  0:00               ` Zhang, Jessica
  2013-08-14  9:27                 ` Richard Purdie
  1 sibling, 1 reply; 6+ messages in thread
From: Zhang, Jessica @ 2013-08-14  0:00 UTC (permalink / raw)
  To: Richard Purdie, Khem Raj
  Cc: Sywula, Krzysztof M, openembedded-core@lists.openembedded.org

[-- Attachment #1: Type: text/plain, Size: 3353 bytes --]

Hi Richard,

I've tried the sdk on windows and here're the issues that I've run into:

1. in our sysroot all the libraries have .so we need to change them to .dll
2. seems the cross compiler i586-poky-linux-gcc.exe relies on
libiconv-2.dll, so I manually installed that dll.
3. Now when I run i586-poky-linux-gcc.exe, I'm getting "the application was
unable to start correctly (0xc000007b). Click OK  to close the application."
By doing some initial search on the error, it seems relate to 32/64 bit dll
mismatch.  You mentioned that 32bit windows binaries are generated, so can
we generate a 64bit for me to try since my windows box is a 64bit.

Cheers,
Jessica

-----Original Message-----
From: openembedded-core-bounces@lists.openembedded.org
[mailto:openembedded-core-bounces@lists.openembedded.org] On Behalf Of
Richard Purdie
Sent: Tuesday, August 13, 2013 1:11 PM
To: Khem Raj
Cc: openembedded-core@lists.openembedded.org; Sywula, Krzysztof M
Subject: Re: [OE-core] Yocto toolchain for Windows

On Tue, 2013-08-13 at 09:17 -0700, Khem Raj wrote:
> On Aug 12, 2013, at 6:34 AM, Francois Retief <fgretief@gmail.com>
> wrote:

> > My understanding is that MinGW is the libc library for Win32 
> > environments. So we need to "replace" eglibc with mingw for all code 
> > that execute on the Win32 platform.  In the case of OpenEmbedded, it 
> > is all packages that start with "nativesdk-" when is 
> > SDKMACHINE="x86_64-mingw32".
> > 
> > 
> > Over the weekend I worked on this by disabling the eglibc recipes 
> > and seeing what packages are missing.  The eglibc recipe provides 
> > the "virtual/nativesdk-libc" package. My understanding is that this 
> > virtual package must be implemented by MingGW.  In the process I 
> > also found that pthreads-win32 was needed and added a recipe for 
> > this.
>
> 
> Not really but if you stub eglibc from nativesdk out then make sure 
> the host libc is plugged in correctly at all places where its 
> expected. Its safer to let it build its own nativesdk eglibc. Since we 
> also modify the shared library load paths in dynamic linker to use own 
> nativesdk libraries first if available

Think about this for a second Khem - we're building a gcc which will run on
windows. Having a nativesdk-eglibc is therefore not desirable or even
possible, we need the mingw runtime instead.

I looked into this and NLS is enabled for nativesdk so it was trying to
build eglibc for libiconv and libintl. I've hacks on my branch to force NLS
off and use the libs as uclibc does. The takeaway of this is we really need
to make NLS properly configurable for nativesdk and then this becomes much
easier to solve.

I pushed some updates onto my branch and meta-toolchain now builds a nice
looking SDK tarball with ipk packaging, rpm for some reason has missing
files (some problem with smart). Whether the compiler there works or is
useful on windows I have no idea.

I've probably done all I plan to do with this which was really a bit of fun
for me to prove what is/is not possible. I'd be interested if anyone tries
using it though.

Cheers,

Richard

_______________________________________________
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core

[-- Attachment #2: smime.p7s --]
[-- Type: application/pkcs7-signature, Size: 9626 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Yocto toolchain for Windows
  2013-08-14  0:00               ` Zhang, Jessica
@ 2013-08-14  9:27                 ` Richard Purdie
  0 siblings, 0 replies; 6+ messages in thread
From: Richard Purdie @ 2013-08-14  9:27 UTC (permalink / raw)
  To: Zhang, Jessica
  Cc: Sywula, Krzysztof M, openembedded-core@lists.openembedded.org

On Wed, 2013-08-14 at 00:00 +0000, Zhang, Jessica wrote:
> Hi Richard,
> 
> I've tried the sdk on windows and here're the issues that I've run into:
> 
> 1. in our sysroot all the libraries have .so we need to change them to .dll

Which sysroot? The one for the target system should be using .so's since
we're targeting a Linux system.

> 2. seems the cross compiler i586-poky-linux-gcc.exe relies on
> libiconv-2.dll, so I manually installed that dll.

No surprise since the dynamic linking detection doesn't work for
windows. We can add a manual dependency to resolve that.

> 3. Now when I run i586-poky-linux-gcc.exe, I'm getting "the application was
> unable to start correctly (0xc000007b). Click OK  to close the application."
> By doing some initial search on the error, it seems relate to 32/64 bit dll
> mismatch.  You mentioned that 32bit windows binaries are generated, so can
> we generate a 64bit for me to try since my windows box is a 64bit.

I was confused, they are supposed to be windows 64 bit binaries (and
file under Linux says they are) so something other than what I
originally thought is wrong.

Cheers,

Richard



^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2013-08-14  9:27 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <6741EAAB26B57F4995668065CB62D86B33933627@IRSMSX102.ger.corp.intel.com>
     [not found] ` <CAFpw0gKhTFiKC8BwPhtULqmtkuzgYV3MVPOCLn64ibgGYjuaGA@mail.gmail.com>
     [not found]   ` <6741EAAB26B57F4995668065CB62D86B33933DFC@IRSMSX102.ger.corp.intel.com>
     [not found]     ` <CAFpw0gKiRwXD8gJhG+7XDSHSGEvZY3YBR5MxBZieVMYPd_sL1g@mail.gmail.com>
     [not found]       ` <6741EAAB26B57F4995668065CB62D86B33934034@IRSMSX102.ger.corp.intel.com>
2013-08-12 13:34         ` Yocto toolchain for Windows Francois Retief
2013-08-13 16:17           ` Khem Raj
2013-08-13 20:11             ` Richard Purdie
2013-08-13 20:21               ` Khem Raj
2013-08-14  0:00               ` Zhang, Jessica
2013-08-14  9:27                 ` Richard Purdie

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox