AW: Canadian Cross build for MinGW host

mario.gruber at space.unibe.ch mario.gruber at space.unibe.ch
Mon Feb 1 11:34:14 UTC 2016


> On 1/02/2016 7:52 AM, mario.gruber at space.unibe.ch wrote:
> > I'm trying to do a Cxc build of 4.11/rtems-sparc for MinGW under 
> > Ubuntu
> 15.10:
> >
> > FROM ubuntu:15.10
> >
> > RUN apt-get update \
> >  && apt-get install   -y python python2.7 python2.7-dev \
> >  && apt-get build-dep -y gcc g++ gdb \
> >  && apt-get install   -y wget unzip git \
> >  && apt-get install   -y mingw-w64
> >
> > RUN cd /tmp \
> >  && git clone git://git.rtems.org/rtems-source-builder.git \  && cd 
> > rtems-source-builder \  && git checkout -b 4.11 origin/4.11 \  && 
> > source-builder/sb-check \  && cd rtems \  && 
> > ../source-builder/sb-set-builder \ 
> > --log=rsb-sparc-rtems4.11-mingw.txt \ 
> > --prefix=/opt/sparc-rtems4.11-mingw \
> >  --host=i686-w64-mingw32 \
> >  --bset-tar-files \
> >  4.11/rtems-sparc
> >
> 
> This looks fine.
> 
> > RTEMS Source Builder - Set Builder, 4.11 (aa3fdad01a0d modified) 
> > Command Line: ../source-builder/sb-set-builder 
> > --log=rsb-sparc-rtems4.11-mingw.txt
> > --prefix=/opt/sparc-rtems4.11-mingw --host=i686-w64-mingw32 
> > --bset-tar-files 4.11/rtems-sparc
> >  Python: 2.7.10 (default, Oct 14 2015, 16:09:02) [GCC 5.2.1 
> > 20151010] Build Set: 4.11/rtems-sparc
> >
> >
> > It fails building the GDB simulators:
> >
> > make[3]: Entering directory 
> > '/tmp/rtems-source-builder/rtems/build/sparc-
> rtems4.11-gdb-7.9-i686-w64-mingw32-1/build-cxc/sim/erc32'
> > i686-w64-mingw32-gcc -DHAVE_CONFIG_H     -DPROFILE=1 -
> DWITH_PROFILE=-1         -DWITH_HOST_BYTE_ORDER=0 -
> DDEFAULT_INLINE=0           -DFAST_UART -I../../../gdb-7.9/sim/erc32/../.. -
> D__USE_MINGW_FSEEK  -I. -I../../../gdb-7.9/sim/erc32 -I../common - 
> I../../../gdb-7.9/sim/erc32/../common -I../../include -I../../../gdb- 
> 7.9/sim/erc32/../../include -I../../bfd 
> -I../../../gdb-7.9/sim/erc32/../../bfd - I../../opcodes 
> -I../../../gdb-7.9/sim/erc32/../../opcodes  -O2 -pipe  - 
> D__USE_MINGW_ACCESS -c -o sis.o -MT sis.o -MMD -MP -MF .deps/sis.Tpo 
> ../../../gdb-7.9/sim/erc32/sis.c
> > ../../../gdb-7.9/sim/erc32/sis.c: In function 'main':
> > ../../../gdb-7.9/sim/erc32/sis.c:239:25: error: 'F_GETFL' undeclared 
> > (first
> use in this function)
> >      termsave = fcntl(0, F_GETFL, 0);
> >                          ^
> > ../../../gdb-7.9/sim/erc32/sis.c:239:25: note: each undeclared 
> > identifier is reported only once for each function it appears in
> > Makefile:538: recipe for target 'sis.o' failed
> > make[3]: Leaving directory 
> > '/tmp/rtems-source-builder/rtems/build/sparc-
> rtems4.11-gdb-7.9-i686-w64-mingw32-1/build-cxc/sim/erc32'
> 
> This is POSIX code in the simulators not building on Windows.
> 
> >
> >
> > As far as I understand, fcntl() is not supported by MinGW.
> > I guess that RSB should not build the simulators for this reason, as 
> > I
> discovered the following in /rtems/config/4.11/rtems-sparc.bset:
> >
> > #
> > # If Windows (MinGW) do not build the simulator.
> > #
> > %define win32-gdb-disable-sim
> >
> > However, in the RSB logs I see that GDB configure gets invoked with 
> > '--
> enable-sim' instead of disabling it.
> >
> > === configuring in testsuite
> > (/tmp/rtems-source-builder/rtems/build/sparc-rtems4.11-gdb-7.9-i686-
> > w6
> > 4-mingw32-1/build-cxc/gdb/testsuite)
> > configure: running /bin/bash 
> > ../../../gdb-7.9/gdb/testsuite/configure --
> disable-option-checking '--prefix=/opt/sparc-rtems4.11-mingw'  
> '--with- system-zlib' '--verbose' '--disable-nls' 
> '--without-included-gettext' '--disable- win32-registry' '--disable-werror' '--enable-sim' '--without-zlib' '--with-expat'
> '--bindir=/opt/sparc-rtems4.11-mingw/bin' '--exec-prefix=/opt/sparc- 
> rtems4.11-mingw' '--includedir=/opt/sparc-rtems4.11-mingw/include' '-- 
> libdir=/opt/sparc-rtems4.11-mingw/lib' '--mandir=/opt/sparc-rtems4.11- 
> mingw/share/man' '--infodir=/opt/sparc-rtems4.11-mingw/share/info' '-- 
> program-transform-name=s&^&sparc-rtems4.11-&' '--build=x86_64-linux- 
> gnu' '--host=i686-w64-mingw32' '--target=sparc-rtems4.11'
> 'build_alias=x86_64-linux-gnu' 'host_alias=i686-w64-mingw32'
> 'target_alias=sparc-rtems4.11' 'CC=i686-w64-mingw32-gcc' 'CFLAGS=-O2 - 
> pipe  -D__USE_MINGW_ACCESS' 'LDFLAGS=-static-libstdc++ -static-libgcc 
> -
> L/tmp/rtems-source-builder/rtems/build/tmp/sb-root/4.11/rtems-
> sparc/opt/spa!
>  rc-rtems4.
> 1
> >  1-mingw/lib -Wl,--stack,12582912' 'MAKEINFO=makeinfo 
> > --split-size=5000000' 'YACC=bison -y' --cache-file=.././config.cache 
> > --srcdir=../../../gdb-7.9/gdb/testsuite
> > configure: loading cache .././config.cache
> >
> > Any comments are appreciated.
> 
> It seems something has broken. The simulators use to be disabled on 
> Windows and have been enabled. I thought the simulators had been fixed 
> but I must have been wrong. I would like to fix the simulators and 
> have them work on Windows.
> 
> Chris

The GDB simulators are enabled for powerpc as well, but build successfully:

=== configuring in ppc (/tmp/rtems-source-builder/rtems/build/powerpc-rtems4.11-gdb-7.9-i686-w64-mingw32-1/build-cxc/sim/ppc)
configure: running /bin/bash ../../../gdb-7.9/sim/ppc/configure --disable-option-checking '--prefix=/opt/powerpc-rtems4.11-mingw'  '--with-system-zlib' '--verbose' '--disable-nls' '--without-included-gettext' '--disable-win32-registry' '--disable-werror' '--enable-sim' '--enable-sim-hardware' '--enable-timebase' '--enable-sim-trace' '--without-zlib' '--with-expat' '--bindir=/opt/powerpc-rtems4.11-mingw/bin' '--exec-prefix=/opt/powerpc-rtems4.11-mingw' '--includedir=/opt/powerpc-rtems4.11-mingw/include' '--libdir=/opt/powerpc-rtems4.11-mingw/lib' '--mandir=/opt/powerpc-rtems4.11-mingw/share/man' '--infodir=/opt/powerpc-rtems4.11-mingw/share/info' '--program-transform-name=s&^&powerpc-rtems4.11-&' '--build=x86_64-linux-gnu' '--host=i686-w64-mingw32' '--target=powerpc-rtems4.11' 'build_alias=x86_64-linux-gnu' 'host_alias=i686-w64-mingw32' 'target_alias=powerpc-rtems4.11' 'CC=i686-w64-mingw32-gcc' 'CFLAGS=-O2 -pipe  -D__USE_MINGW_ACCESS' 'LDFLAGS=-static-libstdc++ -static-libgcc -L/tmp/rtems-source-builder/rtems/build/tmp/sb-root/4.11/rtems-powerpc/opt/powerpc-rtems4.11-mingw/lib -Wl,--stack,12582912' --cache-file=.././config.cache --srcdir=../../../gdb-7.9/sim/ppc

However, I get another blocker in the next package rtems-tools-4.11-1: 

config: tools/rtems-tools-4.11-1.cfg
package: rtems-tools-4.11-1
...
+ echo ==> %build:
==> %build:
+ pwd
+ build_top=/tmp/rtems-source-builder/rtems/build/rtems-tools-4.11-1
+ test x86_64-linux-gnu != i686-w64-mingw32
+ RT_HOST=-host=i686-w64-mingw32
+ cd rtems-tools-4.11
+ ./waf configure -host=i686-w64-mingw32 
+ --prefix=/opt/powerpc-rtems4.11-mingw
waf [commands] [options]

Main commands (example: ./waf build -j4)
  build    : executes the build
  clean    : cleans the project
...
+ ./waf
The project was not configured: run "waf configure" first!
shell cmd failed: /bin/sh -ex  /tmp/rtems-source-builder/rtems/build/rtems-tools-4.11-1/doit
error: building rtems-tools-4.11-1
  See error report: rsb-report-rtems-tools-4.11-1.txt

This is due to the -host command line argument, which is missing a hyphen.
I already sent a patch to the devel list, but did not file a PR.
https://lists.rtems.org/pipermail/devel/2016-January/013348.html

Mario


More information about the users mailing list