Cross-compiling D for wince

Chad J gamerChad at _spamIsBad_gmail.com
Mon Jun 23 16:28:42 PDT 2008


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