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