Cross-compiling D for wince
Vince
toto at toto.fr
Mon Jun 23 02:12:51 PDT 2008
Thanks for your feedback I will have a look.
Chad J a écrit :
> Hi Vincent!
>
> I think I've dealt with this before, but it was like 3 years ago. I've
> forgotten a lot about it since then.
>
> This might have been a symptom of the configure scripts passing the
> wrong version flags to the compiler. I think when I first started my
> port, it was not passing in version="Win32" but it needed to. At least
> making it do that made things way easier. Look at target-ver-syms.sh in
> the root of the gdc folder (that folder that you copy into your gcc
> source before compiling gdc -- ./gcc/d from the gcc source root). Diff
> that and maybe phobos/configure and phobos/configure.in against the ones
> that I made (link below). This may fix your problem, or fix a problem
> you are going to have in the future (unless David/gdc already made some
> changes for arm-wince).
>
> Here's a link to the old work I did before running out of time:
> http://post-boredom.net/arm-wince-pe-root/
>
> I think I made that off of v18 of gdc, or something one off from that.
> At any rate, you should be able to diff my files against an old version
> of gdc to see what I did to the config files and phobos source in
> particular. Heck, maybe you could even get away with diffing it against
> a new version of GDC.
>
> It's also great if you are able to build this from an unmodified cegcc.
> I remember being unable to do that because cegcc was version 4.1.x of
> gcc, and gdc wouldn't build with that at the time. If you can do that,
> it will be awesome and eliminate an entire class of changes I had to
> make to gcc at that time in order to make a vanilla gcc compiler compile
> to arm-wince correctly.
>
> Good luck with your cross-compiler!
> - Chad
>
> Vincent Richomme wrote:
>> Hi,
>>
>> I am trying to generate a D cross-compiler for wince from cegcc
>> project under cygwin.
>>
>>
>> For now I get an error when configuring libphobos, the problem is
>> about snprintf :
>> checking for snprintf... no
>>
>> How does configure check for snprintf ? How can I fix it ?
>>
>>
>> Configuring in arm-wince-cegcc/libphobos
>> configure: loading cache ./config.cache
>> checking build system type... i686-pc-cygwin
>> checking host system type... arm-wince-cegcc
>> checking target system type... arm-wince-cegcc
>> checking for a BSD-compatible install... /usr/bin/install -c
>> checking whether build environment is sane... yes
>> checking for gawk... gawk
>> checking whether make sets $(MAKE)... yes
>> checking for arm-wince-cegcc-strip... arm-wince-cegcc-strip
>> checking for arm-wince-cegcc-gcc...
>> /d/Professionnel/Projets/cegcc/src/build-cegcc/gcc/./gcc/xgcc
>> -B/d/Professionnel/Projets/cegcc/src/build-cegcc/gcc/./gcc/
>> -B/opt/cegcc/arm-wince-cegcc/bin/ -B/opt/cegcc/arm-wince-cegcc/lib/
>> -isystem /opt/cegcc/arm-wince-cegcc/include -isystem
>> /opt/cegcc/arm-wince-cegcc/sys-include
>> checking for C compiler default output file name... a.exe
>> checking whether the C compiler works... yes
>> checking whether we are cross compiling... yes
>> checking for suffix of executables... .exe
>> checking for suffix of object files... o
>> checking whether we are using the GNU C compiler... yes
>> checking whether
>> /d/Professionnel/Projets/cegcc/src/build-cegcc/gcc/./gcc/xgcc
>> -B/d/Professionnel/Projets/cegcc/src/build-cegcc/gcc/./gcc/
>> -B/opt/cegcc/arm-wince-cegcc/bin/ -B/opt/cegcc/arm-wince-cegcc/lib/
>> -isystem /opt/cegcc/arm-wince-cegcc/include -isystem
>> /opt/cegcc/arm-wince-cegcc/sys-include accepts -g... yes
>> checking for
>> /d/Professionnel/Projets/cegcc/src/build-cegcc/gcc/./gcc/xgcc
>> -B/d/Professionnel/Projets/cegcc/src/build-cegcc/gcc/./gcc/
>> -B/opt/cegcc/arm-wince-cegcc/bin/ -B/opt/cegcc/arm-wince-cegcc/lib/
>> -isystem /opt/cegcc/arm-wince-cegcc/include -isystem
>> /opt/cegcc/arm-wince-cegcc/sys-include option to accept ANSI C... none
>> needed
>> checking for arm-wince-cegcc-g++... arm-wince-cegcc-c++
>> -B/opt/cegcc/arm-wince-cegcc/bin/ -B/opt/cegcc/arm-wince-cegcc/lib/
>> -isystem /opt/cegcc/arm-wince-cegcc/include -isystem
>> /opt/cegcc/arm-wince-cegcc/sys-include
>> checking whether we are using the GNU C++ compiler... yes
>> checking whether arm-wince-cegcc-c++ -B/opt/cegcc/arm-wince-cegcc/bin/
>> -B/opt/cegcc/arm-wince-cegcc/lib/ -isystem
>> /opt/cegcc/arm-wince-cegcc/include -isystem
>> /opt/cegcc/arm-wince-cegcc/sys-include accepts -g... yes
>> checking for a BSD-compatible install... /usr/bin/install -c
>> checking whether make sets $(MAKE)... (cached) yes
>> checking If
>> /d/Professionnel/Projets/cegcc/src/build-cegcc/gcc/./gcc/gdc
>> -B/d/Professionnel/Projets/cegcc/src/build-cegcc/gcc/./gcc/
>> -B/opt/cegcc/arm-wince-cegcc/bin/ -B/opt/cegcc/arm-wince-cegcc/lib/
>> -isystem /opt/cegcc/arm-wince-cegcc/include -isystem
>> /opt/cegcc/arm-wince-cegcc/sys-include can compile D sources... yes
>> checking D GCC version... 4.1.0
>> checking how to run the C preprocessor...
>> /d/Professionnel/Projets/cegcc/src/build-cegcc/gcc/./gcc/xgcc
>> -B/d/Professionnel/Projets/cegcc/src/build-cegcc/gcc/./gcc/
>> -B/opt/cegcc/arm-wince-cegcc/bin/ -B/opt/cegcc/arm-wince-cegcc/lib/
>> -isystem /opt/cegcc/arm-wince-cegcc/include -isystem
>> /opt/cegcc/arm-wince-cegcc/sys-include -E
>> checking for egrep... grep -E
>> checking for ANSI C header files... yes
>> ...
>> checking for strtold... no
>> checking for glibc strerror_r... yes
>> checking for strerror_r... no
>> checking for tm_gmtoff... no
>> checking for timezone... no
>> checking for _timezone... yes
>> checking for snprintf... no
>> configure: error: No variant of snprintf.
>> make[1]: *** [configure-target-libphobos] Error 1
>> make[1]: Leaving directory
>> `/d/Professionnel/Projets/cegcc/src/build-cegcc/gcc'
>> make: *** [all] Error 2
>> make[1]: Entering directory
>> `/d/Professionnel/Projets/cegcc/src/build-cegcc/gcc'
>> make[2]: Entering directory
>> `/d/Professionnel/Projets/cegcc/src/build-cegcc/gcc/libiberty'
>> make[3]: Entering directory
>> `/d/Professionnel/Projets/cegcc/src/build-cegcc/gcc/libiberty/testsuite'
>> make[3]: Nothing to be done for `all'.
>> make[3]: Leaving directory
>> `/d/Professionnel/Projets/cegcc/src/build-cegcc/gcc/libiberty/testsuite'
>> make[2]: Leaving directory
>> `/d/Professionnel/Projets/cegcc/src/build-cegcc/gcc/libiberty'
>> make[2]: Entering directory
>> `/d/Professionnel/Projets/cegcc/src/build-cegcc/gcc/fixincludes'
>> make[2]: Nothing to be done for `all'.
>> make[2]: Leaving directory
>> `/d/Professionnel/Projets/cegcc/src/build-cegcc/gcc/fixincludes'
>> make[2]: Entering directory
>> `/d/Professionnel/Projets/cegcc/src/build-cegcc/gcc/intl'
>> make[2]: Nothing to be done for `all'.
>> make[2]: Leaving directory
>> `/d/Professionnel/Projets/cegcc/src/build-cegcc/gcc/intl'
>> make[2]: Entering directory
>> `/d/Professionnel/Projets/cegcc/src/build-cegcc/gcc/build-i686-pc-cygwin/libiberty'
>>
>> make[3]: Entering directory
>> `/d/Professionnel/Projets/cegcc/src/build-cegcc/gcc/build-i686-pc-cygwin/libiberty/testsuite'
>>
>> make[3]: Nothing to be done for `all'.
>> make[3]: Leaving directory
>> `/d/Professionnel/Projets/cegcc/src/build-cegcc/gcc/build-i686-pc-cygwin/libiberty/testsuite'
>>
>> make[2]: Leaving directory
>> `/d/Professionnel/Projets/cegcc/src/build-cegcc/gcc/build-i686-pc-cygwin/libiberty'
>>
>> make[2]: Entering directory
>> `/d/Professionnel/Projets/cegcc/src/build-cegcc/gcc/build-i686-pc-cygwin/fixincludes'
>>
>> make[2]: Nothing to be done for `all'.
>> make[2]: Leaving directory
>> `/d/Professionnel/Projets/cegcc/src/build-cegcc/gcc/build-i686-pc-cygwin/fixincludes'
>>
>> make[2]: Entering directory
>> `/d/Professionnel/Projets/cegcc/src/build-cegcc/gcc/libcpp'
>> test -f config.h || (rm -f stamp-h1 && make stamp-h1)
>> make[2]: Leaving directory
>> `/d/Professionnel/Projets/cegcc/src/build-cegcc/gcc/libcpp'
>> make[2]: Entering directory
>> `/d/Professionnel/Projets/cegcc/src/build-cegcc/gcc/gcc'
>> make \
>> CFLAGS="-g -O2 -W -Wall -Wwrite-strings -Wstrict-prototypes
>> -Wmissing-prototypes -Wold-style-definition -Wmissing-format-attribute
>> -fno-common " \
>> CONFIG_H="config.h auto-host.h
>> /d/Professionnel/Projets/cegcc/src/gcc/gcc/../include/ansidecl.h
>> /d/Professionnel/Projets/cegcc/src/gcc/gcc/config/i386/xm-cygwin.h" \
>> MAKEOVERRIDES= \
>> -f libgcc.mk all
>> make[3]: Entering directory
>> `/d/Professionnel/Projets/cegcc/src/build-cegcc/gcc/gcc'
>> make[3]: Nothing to be done for `all'.
>> make[3]: Leaving directory
>> `/d/Professionnel/Projets/cegcc/src/build-cegcc/gcc/gcc'
>> echo timestamp > stmp-multilib
>> make[2]: Leaving directory
>> `/d/Professionnel/Projets/cegcc/src/build-cegcc/gcc/gcc'
>> Checking multilib configuration...
>> multilib.out is unchanged
>> make[2]: Entering directory
>> `/d/Professionnel/Projets/cegcc/src/build-cegcc/gcc/arm-wince-cegcc/libssp'
>>
>> make "AR_FLAGS=rc" "CC_FOR_BUILD=gcc" "CFLAGS=-O2 -g -O2 "
>> "CXXFLAGS=-g -O2 " "CFLAGS_FOR_BUILD=-g -O2" "CFLAGS_FOR_TARGET=-O2 -g
>> -O2 " "INSTALL=/usr/bin/install -c" "INSTALL_DATA=/usr/bin/install -c
>> -m 644" "INSTALL_PROGRAM=/usr/bin/install -c"
>> "INSTALL_SCRIPT=/usr/bin/install -c" "JC1FLAGS=" "LDFLAGS="
>> "LIBCFLAGS=-O2 -g -O2 " "LIBCFLAGS_FOR_TARGET=-O2 -g -O2 " "MAKE=make"
>> "MAKEINFO=makeinfo --split-size=5000000 --split-size=5000000 "
>> "PICFLAG=" "PICFLAG_FOR_TARGET=" "SHELL=/bin/sh" "RUNTESTFLAGS="
>> "exec_prefix=/opt/cegcc" "infodir=/opt/cegcc/info"
>> "libdir=/opt/cegcc/lib" "prefix=/opt/cegcc"
>> "includedir=/opt/cegcc/include" "AR=arm-wince-cegcc-ar"
>> "AS=/d/Professionnel/Projets/cegcc/src/build-cegcc/gcc/./gcc/as"
>> "CC=/d/Professionnel/Projets/cegcc/src/build-cegcc/gcc/./gcc/xgcc
>> -B/d/Professionnel/Projets/cegcc/src/build-cegcc/gcc/./gcc/
>> -B/opt/cegcc/arm-wince-cegcc/bin/ -B/opt/cegcc/arm-wince-cegcc/lib/
>> -isystem /opt/cegcc/arm-wince-cegcc/include -isystem
>> /opt/cegcc/arm-wince-cegcc/sys-include" "CXX=arm-wince-cegcc-c++
>> -B/opt/cegcc/arm-wince-cegcc/bin/ -B/opt/cegcc/arm-wince-cegcc/lib/
>> -isystem /opt/cegcc/arm-wince-cegcc/include -isystem
>> /opt/cegcc/arm-wince-cegcc/sys-include"
>> "LD=/d/Professionnel/Projets/cegcc/src/build-cegcc/gcc/./gcc/collect-ld"
>> "LIBCFLAGS=-O2 -g -O2 "
>> "NM=/d/Professionnel/Projets/cegcc/src/build-cegcc/gcc/./gcc/nm"
>> "PICFLAG=" "RANLIB=arm-wince-cegcc-ranlib" "DESTDIR=" all-am
>> make[3]: Entering directory
>> `/d/Professionnel/Projets/cegcc/src/build-cegcc/gcc/arm-wince-cegcc/libssp'
>>
>> true "AR_FLAGS=rc" "CC_FOR_BUILD=gcc" "CFLAGS=-O2 -g -O2 "
>> "CXXFLAGS=-g -O2 " "CFLAGS_FOR_BUILD=-g -O2" "CFLAGS_FOR_TARGET=-O2 -g
>> -O2 " "INSTALL=/usr/bin/install -c" "INSTALL_DATA=/usr/bin/install -c
>> -m 644" "INSTALL_PROGRAM=/usr/bin/install -c"
>> "INSTALL_SCRIPT=/usr/bin/install -c" "JC1FLAGS=" "LDFLAGS="
>> "LIBCFLAGS=-O2 -g -O2 " "LIBCFLAGS_FOR_TARGET=-O2 -g -O2 " "MAKE=make"
>> "MAKEINFO=makeinfo --split-size=5000000 --split-size=5000000 "
>> "PICFLAG=" "PICFLAG_FOR_TARGET=" "SHELL=/bin/sh" "RUNTESTFLAGS="
>> "exec_prefix=/opt/cegcc" "infodir=/opt/cegcc/info"
>> "libdir=/opt/cegcc/lib" "prefix=/opt/cegcc"
>> "includedir=/opt/cegcc/include" "AR=arm-wince-cegcc-ar"
>> "AS=/d/Professionnel/Projets/cegcc/src/build-cegcc/gcc/./gcc/as"
>> "CC=/d/Professionnel/Projets/cegcc/src/build-cegcc/gcc/./gcc/xgcc
>> -B/d/Professionnel/Projets/cegcc/src/build-cegcc/gcc/./gcc/
>> -B/opt/cegcc/arm-wince-cegcc/bin/ -B/opt/cegcc/arm-wince-cegcc/lib/
>> -isystem /opt/cegcc/arm-wince-cegcc/include -isystem
>> /opt/cegcc/arm-wince-cegcc/sys-include" "CXX=arm-wince-cegcc-c++
>> -B/opt/cegcc/arm-wince-cegcc/bin/ -B/opt/cegcc/arm-wince-cegcc/lib/
>> -isystem /opt/cegcc/arm-wince-cegcc/include -isystem
>> /opt/cegcc/arm-wince-cegcc/sys-include"
>> "LD=/d/Professionnel/Projets/cegcc/src/build-cegcc/gcc/./gcc/collect-ld"
>> "LIBCFLAGS=-O2 -g -O2 "
>> "NM=/d/Professionnel/Projets/cegcc/src/build-cegcc/gcc/./gcc/nm"
>> "PICFLAG=" "RANLIB=arm-wince-cegcc-ranlib" "DESTDIR=" DO=all multi-do
>> # make
>> make[3]: Leaving directory
>> `/d/Professionnel/Projets/cegcc/src/build-cegcc/gcc/arm-wince-cegcc/libssp'
>>
>> make[2]: Leaving directory
>> `/d/Professionnel/Projets/cegcc/src/build-cegcc/gcc/arm-wince-cegcc/libssp'
>>
>> Configuring in arm-wince-cegcc/libphobos
>> configure: loading cache ./config.cache
>> checking build system type... i686-pc-cygwin
>> checking host system type... arm-wince-cegcc
>> checking target system type... arm-wince-cegcc
>> checking for a BSD-compatible install... /usr/bin/install -c
>> checking whether build environment is sane... yes
>> checking for gawk... gawk
>> checking whether make sets $(MAKE)... yes
>> checking for arm-wince-cegcc-strip... arm-wince-cegcc-strip
>> checking for arm-wince-cegcc-gcc...
>> /d/Professionnel/Projets/cegcc/src/build-cegcc/gcc/./gcc/xgcc
>> -B/d/Professionnel/Projets/cegcc/src/build-cegcc/gcc/./gcc/
>> -B/opt/cegcc/arm-wince-cegcc/bin/ -B/opt/cegcc/arm-wince-cegcc/lib/
>> -isystem /opt/cegcc/arm-wince-cegcc/include -isystem
>> /opt/cegcc/arm-wince-cegcc/sys-include
>> checking for C compiler default output file name... a.exe
>> checking whether the C compiler works... yes
>> checking whether we are cross compiling... yes
>> checking for suffix of executables... .exe
>> checking for suffix of object files... o
>> checking whether we are using the GNU C compiler... yes
>> checking whether
>> /d/Professionnel/Projets/cegcc/src/build-cegcc/gcc/./gcc/xgcc
>> -B/d/Professionnel/Projets/cegcc/src/build-cegcc/gcc/./gcc/
>> -B/opt/cegcc/arm-wince-cegcc/bin/ -B/opt/cegcc/arm-wince-cegcc/lib/
>> -isystem /opt/cegcc/arm-wince-cegcc/include -isystem
>> /opt/cegcc/arm-wince-cegcc/sys-include accepts -g... yes
>> checking for
>> /d/Professionnel/Projets/cegcc/src/build-cegcc/gcc/./gcc/xgcc
>> -B/d/Professionnel/Projets/cegcc/src/build-cegcc/gcc/./gcc/
>> -B/opt/cegcc/arm-wince-cegcc/bin/ -B/opt/cegcc/arm-wince-cegcc/lib/
>> -isystem /opt/cegcc/arm-wince-cegcc/include -isystem
>> /opt/cegcc/arm-wince-cegcc/sys-include option to accept ANSI C... none
>> needed
>> checking for arm-wince-cegcc-g++... arm-wince-cegcc-c++
>> -B/opt/cegcc/arm-wince-cegcc/bin/ -B/opt/cegcc/arm-wince-cegcc/lib/
>> -isystem /opt/cegcc/arm-wince-cegcc/include -isystem
>> /opt/cegcc/arm-wince-cegcc/sys-include
>> checking whether we are using the GNU C++ compiler... yes
>> checking whether arm-wince-cegcc-c++ -B/opt/cegcc/arm-wince-cegcc/bin/
>> -B/opt/cegcc/arm-wince-cegcc/lib/ -isystem
>> /opt/cegcc/arm-wince-cegcc/include -isystem
>> /opt/cegcc/arm-wince-cegcc/sys-include accepts -g... yes
>> checking for a BSD-compatible install... /usr/bin/install -c
>> checking whether make sets $(MAKE)... (cached) yes
>> checking If
>> /d/Professionnel/Projets/cegcc/src/build-cegcc/gcc/./gcc/gdc
>> -B/d/Professionnel/Projets/cegcc/src/build-cegcc/gcc/./gcc/
>> -B/opt/cegcc/arm-wince-cegcc/bin/ -B/opt/cegcc/arm-wince-cegcc/lib/
>> -isystem /opt/cegcc/arm-wince-cegcc/include -isystem
>> /opt/cegcc/arm-wince-cegcc/sys-include can compile D sources... yes
>> checking D GCC version... 4.1.0
>> checking how to run the C preprocessor...
>> /d/Professionnel/Projets/cegcc/src/build-cegcc/gcc/./gcc/xgcc
>> -B/d/Professionnel/Projets/cegcc/src/build-cegcc/gcc/./gcc/
>> -B/opt/cegcc/arm-wince-cegcc/bin/ -B/opt/cegcc/arm-wince-cegcc/lib/
>> -isystem /opt/cegcc/arm-wince-cegcc/include -isystem
>> /opt/cegcc/arm-wince-cegcc/sys-include -E
>> checking for egrep... grep -E
>> checking for ANSI C header files... yes
>> checking for sys/types.h... yes
>> checking for sys/stat.h... yes
>> ...
>> checking for snprintf... no
>> configure: error: No variant of snprintf.
>> make[1]: *** [configure-target-libphobos] Error 1
>> make[1]: Leaving directory
>> `/d/Professionnel/Projets/cegcc/src/build-cegcc/gcc'
>> make: *** [all] Error 2
More information about the D.gnu
mailing list