Thread overview
Compiling relocatable mingw gdc
Mar 06, 2008
Bill Baxter
Mar 06, 2008
Bill Baxter
March 06, 2008
This is mostly meant for Anders... a continuation of an off-NG mail exchange about trying to build mingw gdc from source.

So here's where I currently am

The Makefile is generating compile lines like this:

stage1/xgcc.exe -Bstage1/ -B/gdc/mingw32/bin/ -c   \
    -g0 -O2 -DIN_GCC   \
    -W -Wall -Wwrite-strings -Wstrict-prototypes \
    -Wmissing-prototypes -pedantic \
    -Wno-long-long -Wold-style-definition \
    -DHAVE_CONFIG_H -DGENERATOR_FILE
    -I. -I. \
    -I../../gcc-3.4.5-20060117-1/gcc \
    -I../../gcc-3.4.5-20060117-1/gcc/. \
    -I../../gcc-3.4.5-20060117-1/gcc/../include  \
    ../../gcc-3.4.5-20060117-1/gcc/genmodes.c -o genmodes.o

none of those -I's point to place where there are actually any system headers, and genmodes there tries to #include something which #includes <stdio.h> among other things.  The xgcc (boostrap compiler?) seems not to have any intrinsic knowlege of where system headers are.

I was reading the MinGW install instructions from the MinGW site, and they said "runtime and win32 headers are separate".  So I thought maybe I could fix things by downloading the mingw runtime and copying its include,lib,and bin dirs into the toplevel gcc-3.4.5-20060117-1 dir.

That sort of worked but then there's a conflict over "mem.h" which is in the MinGW runtime include dir and also in the dmd front end.  It was finding the runtime version when trying to compile gdc.  So I renamed the runtime version to _mem.h.  And that let me get past that.

Now I'm stuck on an ld error.  It can't find crt2.o --
-----------------
stage1/xgcc.exe -Bstage1/ -B/gdc/mingw32/bin/   \
     -g0 -O2 -DIN_GCC   \
     -W -Wall -Wwrite-strings \
     -Wstrict-prototypes -Wmissing-prototypes \
     -pedantic -Wno-long-long -Wold-style-definition \
     -DHAVE_CONFIG_H -DGENERATOR_FILE  -o genmodes.exe \
      genmodes.o errors.o ../libiberty/libiberty.a
c:\MinGW\bin\ld.exe: crt2.o: No such file: No such file or directory
-------------
I've got crt2.o in both:
  C:\mingw\lib
and
  ../gcc-3.4.5-20060117-1/lib/crt2.o

Apparently something about my environment doesn't match what the mingw make files are expecting.  In particular these -B/gdc/mingw32/bin paths look odd.  /gdc is a bogus directory to begin with (I'm using the fstab hack you pointed me to), and I don't have a dir like mingw32/bin anywhere even in my c:\mingw install.  That string "mingw32" as part of a path is included in the Makefile.  I'm not sure where it comes from. Maybe coming from --target=mingw32 flag passed to configure?

Any ideas appreciated.

--bb
March 06, 2008
Bill Baxter wrote:
> This is mostly meant for Anders... a continuation of an off-NG mail exchange about trying to build mingw gdc from source.
...
> I was reading the MinGW install instructions from the MinGW site, and they said "runtime and win32 headers are separate".  So I thought maybe I could fix things by downloading the mingw runtime and copying its include,lib,and bin dirs into the toplevel gcc-3.4.5-20060117-1 dir.

I redid the build again on Windows XP, and ran into two things that
I had forgotten all about since the pre-1.0 time when I last did it...

First, I couldn't get the setup to work with MinGW but only in Cygwin
(seems patch is silly). Second, something had hardcoded /usr/include.

My hackaround was to ln -s /mingw/include /usr/include while building,
which probably is totally wrong but I didn't feel like diving into it.

If everything is working alright, I'll package the pre-release up and
put it on the gdcwin site - maybe even with some building instructions.

--anders
March 06, 2008
Anders F Björklund wrote:
> Bill Baxter wrote:
>> This is mostly meant for Anders... a continuation of an off-NG mail exchange about trying to build mingw gdc from source.
> ...
>> I was reading the MinGW install instructions from the MinGW site, and they said "runtime and win32 headers are separate".  So I thought maybe I could fix things by downloading the mingw runtime and copying its include,lib,and bin dirs into the toplevel gcc-3.4.5-20060117-1 dir.
> 
> I redid the build again on Windows XP, and ran into two things that
> I had forgotten all about since the pre-1.0 time when I last did it...
> 
> First, I couldn't get the setup to work with MinGW but only in Cygwin
> (seems patch is silly). Second, something had hardcoded /usr/include.
> 
> My hackaround was to ln -s /mingw/include /usr/include while building,
> which probably is totally wrong but I didn't feel like diving into it.
> 
> If everything is working alright, I'll package the pre-release up and
> put it on the gdcwin site - maybe even with some building instructions.
> 
> --anders

Ok.  Great.

--bb